天天看点

软件测试第一课

软件测试 就是使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

为什么要做软件测试?

•一个糟糕的测试程序可能导致任务的失败,影响操作的性能和可靠性,导致维护阶段的成本提高。

•一个好的测试程序是项目的主要成本。

•一个好的测试程序可以极大地帮助你定义需求和设计。

•一个好的测试可以迫使你在工作时必须面对和处理问题,使得修改缺陷成本降低。

•一个好的测试不能弥补一个糟糕的软件项目,但是的确有助于发现许多问题,并且至少使得你尽早知道你处在问题当中。

软件测试的目的

1、发现被测对象与用户需求之间的差异,即缺陷。

2、通过测试活动发现并解决缺陷,增加人们对软件质量的信心。

3、通过测试活动了解被测对象的质量状况,为决策提供数据依据。

4、通过测试活动积累经验,预防缺陷出现,降低产品失败风险。

软件测试的原则

1.测试证明软件存在缺陷

无论何种测试活动,其目的都是为了证明软件存在缺陷,无法证明软件不存在缺陷。通过测试活动可以减少软件中存在未被发现缺陷的可能性,降低漏测风险,但即使通过测试未能发现任何缺陷,亦不能证明被测对象不存在缺陷。在实际工作中,开发人员在测试工程师不能发现缺陷后,经常会说被测对象已经没有任何问题了,这种观点是极其错误的。

  1. 不可能执行穷尽测试

软件是运行在硬件基础上的逻辑实体,在复杂多变的环境中,任何运行环境发生变化都可能导致缺陷的产生,除了小型系统,利用穷举法进行测试是不可能的。通过风险分析、被测对象测试点优先级分析、软件质量模型及不同测试方法的运用来确定测试关注点,从而替代穷尽测试,提高测试覆盖率。

  1. 测试应尽早启动、尽早介入

防患于未然,缺陷越早发现,修复的成本越低。为了尽早发现缺陷,在软件系统生产生命周期中,测试(评审)活动应尽早介入。通常情况下从项目立项开始,每个阶段都进行评审活动。

  1. 缺陷存在群集现象

一个软件系统的重要功能往往占系统的20%左右,但这20%功能的复杂度可能是系统的80%左右(二八原理),出错的概率大大增加。测试过程中人力、时间、资源分配比例应根据系统业务功能的优先级匹配,并在测试活动结束后,根据缺陷分布情况进行调整。通常情况下,少数模块可能包含大部分在测试过程中发现的缺陷。在实际测试过程中,不可能均分测试资源,需考虑测试投入及风险控制,可使用基于风险或操作剖面的测试策略重点测试。

•5. 杀虫剂悖论

害虫经过几轮药物毒杀后,其后代将产生抗体,杀虫剂不再有效。同样的道理,测试用例经过多次迭代测试后,将不能再发现缺陷。为了解决“杀虫剂悖论”,测试用例需定期评审、及时调整,可根据软件质量特性结合被测对象的业务场景,设计新的测试用例来测试,从而发现更多潜在的缺陷。

•6. 不同的测试活动依赖于不同的测试背景

不同的测试背景、测试目标,需开展不同的测试活动。例如,电子商务业务系统与金融证券产品的测试方法可能不一样,安全性测试与兼容测试性测试方法不一样。针对不同的测试背景,采用恰当高效的测试活动,是实施有效测试活动的一个重要环节。

  1. 不存在缺陷的谬论

当被测对象无法满足用户需求时,即使该系统无任何缺陷,也不能称为高质量的软件。不能满足用户期望的系统即是无用系统。系统无用时,发现与修改缺陷是毫无意义的。实施测试活动时,一定要考虑用户背景。一部时尚酷炫的手机操作对于老年人而言可能显得费解,即使功能无任何问题,但解决不了老年人的易学易用性问题。