第六讲_动态白盒测试(续).ppt

第六讲_动态白盒测试(续)

动态白盒测试 路径 该控制流程图有4条不同的。4条路径可表示为: L1(a→c→e)简写ace 、L2(a→b→d)简写abd L3(a→b→e)简写abe 、L4(a→c→d)简写acd 小结 学习了 动态白盒测试 复杂度与缺陷预测 控制流程图:结点/分支/过程块/链 路径 1 2 3 6 4 5 7 X5 and Y3 其中:节点1、节点3、节点5、节点6、节点7为过程块 节点2为分支,节点4为结点 建立被测对象模型 以下为一个程序流程图,其中该例子中有两个判断, 每个判断都包含复合条件的逻辑表达式。 (A?1)?(B=0) (A=2)?(X?1) X=X/A X=X+1 a b c d e F T T F 举例 其控制流程图 (A?1) ? (B=0) X=X/A (A=2) ? (X?1) X=X+1 T T a c b d e 结点1 结点2 ? 执行所有可能的穿过程序的控制流程路径。 一般来说,这一测试严格地限制为所有可能的入口/出 口路径。如果遵循这一规定,则我们说达到了100%路径覆盖 率。在路径测试中,该策略是最强的,但一般是不可实现的。 针对该例子,要想实现路径覆盖,可选择以下一组测试 用例(规定测试用例的设计格式为:【输入的(A,B,X), 输出的(A,B,X)】)。 测 试 用 例 覆盖路径 【(2,0,4),(2,0,3)】 L1 【(1,1,1),(1,1,1)】 L2 【(1,1,2),(1,1,3)】 L3 【(3,0,3),(3,0,1)】 L4 路径测试 ? 至少执行程序中所有语句一次。 如果遵循这一规定,则我们说达到了100%语句覆盖率(用C1表达)。 在该例子中,只要设计一种能通过路径ace的测试用例, 就覆盖了所有的语句。所以可选择测试用例如下: 【(2,0,4),(2,0,3)】 覆盖L1 语句覆盖是最弱的逻辑覆盖准则。 问题:就该程序而言,如果两个判断的逻辑运算写错, 例如,第一个判断中的逻辑运算符“∧”错写成了“∨”,或 者第二个判断中的逻辑运算符“∨”错写成了“∧”,利用上面 的测试用例,仍可覆盖所有4个可执行语名,而发现不了判 断中逻辑运算符出现的错误。 语句测试 ? 至少执行程序中每一分支一次。 如果遵循这一规定,则我们说达到了100%分支覆盖率(用C2表示) 分支覆盖是一种比语句覆盖稍强的逻辑覆盖。但若程序中分支的判定是由几个条件联合构成时,它未必能发现每个条件的错误。 例如对于以上例子,如果选择路径L1和L2,就可得到实现 分支覆盖的测试用例: 【(2,0,4),(2,0,3)】 覆盖L1 【(1,1,1),(1,1,1)】 覆盖L2 如果选择路径L3和L4,还可得另一组可用的测试用例: 【(2,1,1),(2,1,2)】 覆盖L3 【(3,0,3),(3,1,1)】 覆盖L4 问题:分支覆盖还不能保证一定能查出在判断的条件中存在的错误。例如,在该例子中,若第二个分支X1错写成X1,利用上述两组测试用例进行测试,无法查出这一错误。因此,需要更强的逻辑覆盖准则去检验判定的内部条件。 分支测试 ?条件组合测试是一种具有更强逻辑覆盖的测试。 条件组合测试,就是设计足够的测试用例,使每个判定 中的所有可能的条件取值组合至少执行一次。如果遵循这一 规定,则我们说就实现了条件组合覆盖。只要满足了条件组 合覆盖,就一定满足分支覆盖。 在条件组合覆盖技术发展过程中,最初,在设计测试用 例时,人们只考虑使分支中各个条件的所有可能结果至少出 现一次。但发现该测试技术未必能覆盖全部分支。例如,在 上图的例子中,程序段中有四个条件:A1,B=0,A=2,X1。 条件A>1 取真值标记为T1,取假值标记为F1 条件B=0 取真值标记为T2,取假值标记为F2 条件A=2 取真值标记为T3,取假值标记为F3 条件X>1 取真值标记为T4,取假值标记为F4 在设计测试用例时,要考虑如何选择测试用例实现T1、 F1、T2、F2、T3、F3、T4、F4的全部覆盖: 条件组合测试 例如,可设计如下测试用例实现条件覆盖: 测 试 用 例 通过路径 条件取值 覆盖分支 【(1

文档评论(0)

1亿VIP精品文档

相关文档