第四大题——白盒测试各种覆盖方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

V oid test(int X,int A,int B)

{ if(A>1&&B=0)then X=X/A

If(A=2||X>1)then X=X+1 }

语句覆盖: 测试用例的输入为: 沿路径ace 执行; 1. A=2,B=0,X=3

执行路径ace

就可达到“语句覆盖”标准

如果第一个条件语句中的&&错误地编写成||,上面的测试用例是不能发现这个错误的;又如第三个条件语句中X >1误写成X >0,这个测试用例也不能暴露它,此外,沿着路径abd 执行时,X 的值应该保持不变,如果这一方面有错误,上述测试数据也不能发现它们 判断覆盖(分支覆盖): ① 沿路径ace 执行 ② 沿路径abd 执行 测试用例的输入为:

③ A=1,B=0,X=3 (沿路径acd 执行)

; ④ A=0,B=1,X=0(沿路径abe 执行) ;

d

条件覆盖:

为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有: A>1、A≤1、B=0、B≠0

等各种结果出现,以及在b点有:

A=2、A≠2、X>1、X≤1

等各种结果出现。

现在只需设计以下两个测试用例就可满足这一标准:

1.A=2,B=0,X=4 (沿路径ace执行);

2. A=1,B=1,X=3 (沿路径abd执行)。

3. A=3, B=0,X=1

条件覆盖”并不包含“判断覆盖”,如对语句IF(A AND B)THEN S 设计测试用例使其满足"条件覆盖",即使A为真并使B为假,以及使A为假而且B为真,但是它们都未能使语句S得以执行。

判断/条件覆盖

根据定义只需设计以下两个测试用例便可以覆盖8个条件值以及4个判断分支。

①A=2,B=0,X=4 (沿ace路)

②A=1,B=1,X=1 (沿abd路径)

它测试了所有条件的取值,但是实际上某些条件掩盖了另一些条件。

例如:对于条件表达式(A>1&&B=0)来说,必须两个条件都满足才能确定表达式为真。

如果(A>1)为假则一般的编译器不在判断是否B=0了。对于第二个表达式(A=2||X>1)来说,若A=2测试结果为真,就认为表达式的结果为真,这时不再检查X>1)条件了。

因此,采用分支/条件覆盖,逻辑表达式中的错误不一定能够查出来了。

条件组合覆盖

使得下面8种条件组合都能够出现

上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路径,例如路径acd就没有执行,因此,条件组合覆盖标准仍然是不彻底.

路径测试:

下面的测试用例则可对程序进行全部的路径覆盖。

控制流程图程序控制图

5个独立路径:

路径1:1,8

路径2:1,2,3,6,8

路径3:1,2,4,5,7,8 路径4:1,2,5,7,8

路径5:1,4,7,8

相关文档
最新文档