第1部分 经典测试设计
在问题驱动的软件测试设计中,经典测试设计主要解决如下问题:
(1)如何有效减少测试用例数目。
(2)如何避免测试用例之间的冗余。
(3)如何满足测试覆盖率的要求。
在有限的测试时间和测试资源的情况下,为了有效地减少测试用例的数目且保证测试的覆盖率,测试人员需要科学地选择测试对象的逻辑路径和输入数据的组合。为了更加科学地分析、设计和选择合适的测试子集,从而保证在减少测试用例数目的同时满足测试覆盖率的目标,测试人员需要掌握一系列的软件测试设计技术,这就是本部分“经典测试设计”的初衷和主要目的。
软件测试不仅仅只是运行测试对象进行相关的检查活动,也不应该只是软件开发生命周期的一个阶段。而应该贯穿于整个软件开发过程,因此本部分关于经典测试设计的内容将覆盖静态测试和动态测试两大部分。
发现测试对象中的缺陷是软件测试的一个重要目的,缺陷发现和修复得越早,其需要的成本越低。并且在早期发现和修复缺陷,可以防止将缺陷引入到开发的下个阶段,从而避免缺陷的“雪崩”效应;另外,尽早发现和修复缺陷也可以对后续的开发活动起到缺陷预防的作用。例如,测试人员在评审需求规格说明的过程中,针对描述不正确的需求提交了缺陷报告,相关人员据此对该缺陷进行了及时的修复。这样该错误就不会遗留到后续的设计规格说明和软件代码中,从而降低缺陷的修复成本。因此静态测试是测试人员在软件开发生命周期中可以选择的一个重要测试技术,特别是在开发过程的早期。
除了静态测试,动态测试也是测试人员在测试过程中需要完成的重要活动。测试人员以经典测试设计为基础,可以更加科学地选择测试对象的输入及输入组合设计测试用例。采用经典测试技术设计测试用例,不仅可以减少测试用例数目并满足测试覆盖率的目的;同时也可以有效地发现测试对象中的缺陷,不断提高和改进测试效率和测试有效性。经典测试设计的主要内容如图1-1所示。
图1-1 经典测试设计结构
这个部分主要从静态测试和动态测试(基于结构的测试和基于规格说明的测试)两个角度,来阐述相关的测试技术和方法。
1