软件测试:实践者方法
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.3 测试的时机

对于一个具有确定状态的软件系统,在其生命周期过程中,通过测试,能够检出绝大部分缺陷,使缺陷率下降至一个可以接受的水平。而事实上,软件生命周期过程中,任何阶段的任一过程活动,尤其是升级维护,可能因为需求调整、设计变更、代码更改、数据更新、环境变化等引入新的错误,即便是测试过程中的错误分类、错误隔离、错误排除等过程活动,也可能引入新的错误。软件生命周期过程中,软件缺陷率随变更而变化且呈如图2-7所示的变化态势。

图2-7 软件生命周期过程中软件缺陷率的变化态势

软件生命周期过程中的任一阶段,如果缺陷未能及时检出,会向下传递、蔓延并放大,具有传染性。任何用于防止或检出缺陷的工作,都会残留更为微妙的缺陷,且检出这类缺陷将更加困难,此乃软件测试中的“杀虫剂”效应。统计表明,如果一个需求错误未能及时检出,交付阶段检出该错误的成本将增长50~100倍。软件缺陷传递放大模型如图2-8所示。

图2-8 软件缺陷传递放大模型

假设模型中的缺陷放大因子为α,在开发过程中某个阶段,通过评审、测试等工作,缺陷检出率为,所有被检出缺陷均能及时而彻底地被排除,那么在通过该阶段之后传递到下一阶段的软件缺陷数为

(2-1)

由此可见,软件测试不仅仅是基于开发模型的阶段产品验证以及最终产品的验证确认,也是基于软件质量风险及其传递的动态验证。