1、设计测试方案,设计测试方案(Plan of testing),主要技术:1、逻辑覆盖(Logical coverage) 2、控制结构测试3、等价划分,任务:预定要测试的功能 设计输入的测试数据(test cases) 列出预期结果(expected output),Test case : A=2 , B=0 , X=4.,覆盖程度由弱到强顺次为: 语句覆盖:每个语句至少执行一次。,1 .逻辑覆盖,判定覆盖(Branch coverage):在的基础上,每个判定的每个分支至少执行一次。,Test cases:A=3 , B=0 , X=3A=2 , B=1 , X=1, 条件覆盖(Condit
2、ion coverage):在的基础上,使每个判定表达式的每个条件都取到各种可能的结果。,Test cases:A=2 , B=0 , X=4(满足A1, B=0; A=2, X1)A=1, B=1, X=1(满足A1, B0; A 2, X1),问:条件覆盖 ? 判定覆盖,答: 不一定。 反例: A=2, B=0, X=1 A=1, B=1, X=2,判定/条件覆盖:即判定覆盖条件覆盖, 条件组合覆盖:每个判定表达式中条件的各种可能组合都至少出现一次。,全部可能的条件组合为: A1, B=0 A1, B 0 A1, B=0 A1, B 0 A=2, X1 A=2, X 1 A 2, X1 A
3、 2,X 1,Test cases: A=2, B=0, X=4 (T T) A=2. B=1, X=1 (F T) A=1, B=0, X=2 (F T) A=1, B=1, X=1 (F F),考察control flow graph 的角度,还可考虑下述覆盖: 点覆盖, 边覆盖,= 语句覆盖, 路径覆盖(Path coverage): 每条可能的路径都至少执行一次,若图中有环,则每个环至少经过一次。,=判定覆盖,Test cases: A=1 , B=1 , X=1 A=1 , B=1 , X=2 A=3 , B=0 , X=1 A=2 , B=0 , X=4, 路径覆盖 条件组合覆盖,
4、2.控制结构测试:基本路径、条件、循环,1). 基本路径测试基本路径测试是Tom McCabe提出的一种白盒测试技术。,首先计算程序的环形复杂度用该复杂度为指南定义执行路径的基本集合从该基本集合导出的测试用例可以保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。,3.等价划分 适用于黑盒测试,问题:是如何选择适当的子集,使其发现最多的错误。解决上述问题的办法:是把所有可能的输入数据划分为若干等价类,这样就有可能得到一种假设,即测试某个等价类的代表值就等价于对这一类其他值的测试。等价划分技术是用来设计发现错误种类的测试用例,以减少必须设计的测试用例总数。, 根据划分经
5、验,划分等价类 当规定了输入范围时:, 当规定了输入的一组值,且对不同值做不同处理时,无效类 有效类 无效类, 当规定了输入的规则时: 例:(PASCAL) 语言规定,每个语句以“ ;” 结 束 有效类1个;无效类若干(以“ ,”结束、以“ :”结束、以空格结束等等) 当输入为整型时:有效类可分为Z+、0、Z 三种 当处理表格时:有效类可分为空表、含一项的表、含多项的表等注: 以上经验亦适用于输出数据; 不需要测试编译程序肯定能发现的错误。, 设计步骤 设计一个新方案以尽可能多地覆盖尚未被覆盖的有效等价类;重复这一步骤直到所有有效类都被覆盖为止。 设计一个新方案以覆盖一个且仅一个尚未被覆盖的无效等价类;重复这一步骤直到所有无效类都被覆盖为止。(通常程序执行一个错误后即不继续检测其它错误,故每次只测一个无效类),4、实用策略(Practical Strategies) 黑盒设计 白盒补充 在任何情况下都应该使用边界值分析的方法; 必要时用等价划分法补充; 必要时再用错误推测法补充; 对照程序逻辑,检查测试方案。可根据对程序可靠性的要求采用不同的逻辑覆盖标准,必要时补充一些测试方案。注: 即使用上述综合策略设计测试方案,仍不能保证发现一切错误。例如Lucent公司经过包括逐行检查源代码在内的多方面测试之后,其软件能达标运行的成功率为 80%。,