在实施测试活动时,测试工程师需遵循软件测试的基本原则。经过软件工程、软件测试理论几十年的发展与总结,概括出7条软件测试基本原则。
5.7.1 测试证明软件存在缺陷
无论何种测试活动,其目的都是为了证明软件存在缺陷。通过测试活动可以减少软件中存在未被发现缺陷的可能性,降低漏测风险,但即使通过测试未能发现任何缺陷,亦不能证明被测对象不存在缺陷。
在实际工作中,开发人员在测试工程师不能发现缺陷后,经常会说被测对象已经没有任何问题了,这种观点是极其错误的。
5.7.2 不可能执行穷尽测试
软件是运行在硬件基础上的逻辑实体,在复杂多变的环境中,任何运行环境发生变化都可能导致缺陷的产生,除了小型系统,利用穷举法进行测试是不可能的。
通过风险分析、被测对象测试点优先级分析、软件质量模型及不同测试方法的运用来确定测试关注点,从而穷尽测试,提高测试覆盖率。
5.7.3 测试应尽早启动、尽早介入
防患于未然,缺陷越早发现,修复的成本越低。为了尽早发现缺陷,在软件系统生产生命周期中,测试(评审)活动应尽早介入。通常情况下从项目立项开始,每个阶段都进行评审活动。
5.7.4 缺陷存在群集现象
引用经济学中的二八原则,一个软件系统的核心业务及功能往往只占系统的20%左右,但这20%模块的缺陷数量可能占了整个系统的80%左右。
测试过程中人力、时间、资源分配比例应根据系统业务功能的优先级匹配,并在测试活动结束后,根据缺陷分布情况再进行调整。在实际测试过程中,不可均分测试资源,需考虑测试投入及风险控制,可使用基于风险或操作剖面的测试策略重点测试。
5.7.5 杀虫剂悖论
害虫经过几轮药物杀后,其后代将产生抗体,杀虫剂不再有效。同样的道理,测试用例经过多次迭代测试后,将不能再发现缺陷。
为了解决“杀虫剂悖论”,测试用例需定期评审、及时调整,可根据软件质量特性结合被测对象的业务场景,设计新的测试用例来测试,从而发现更多潜在的缺陷。
5.7.6 不同的测试活动依赖于不同的测试背景
不同的测试背景、测试目标,需开展不同的测试活动。
例如,电子商务业务系统与金融证券产品的测试方法可能不一样,安全性测试与兼容测试性测试方法不一样。针对不同的测试背景,采用恰当的测试活动,是实施有效测试活动的一个重要环节。
5.7.7 不存在缺陷的谬论
当被测对象无法满足用户需求时,即使该系统无任何缺陷,也不能称为高质量的软件。不能满足用户期望的系统即是无用系统。
系统无用时,发现与修改缺陷是毫无意义的。实施测试活动时,一定要考虑用户背景。一部时尚酷炫的手机操作对于老年人而言可能显得费解,即使功能无任何问题,但解决不了老年人的易学易用性问题。
在实施测试活动时,测试工程师需要时刻关注测试目的及所需遵循的原则,利用测试目的及原则指导测试计划、方案及执行过程,从而提高测试效率。