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