1 / 13
文档名称:

逻辑覆盖测试.ppt.ppt

格式:ppt   页数:13页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

逻辑覆盖测试.ppt.ppt

上传人:jewfhh 2015/9/14 文件大小:0 KB

下载得到文件列表

逻辑覆盖测试.ppt.ppt

文档介绍

文档介绍:逻辑覆盖法
void DoWork (int x,int y,int z)
{
int k=0,j=0;
if ( (x>3)&&(z<10) )
{ k=x*y-1;
j=sqrt(k);
} //语句块1
if ( (x==4)||(y>5) )
{ j=x*y+10; } //语句块2
j=j%3; //语句块3
}
逻辑覆盖法(续)
X>3 && z<10
执行语句块1
执行语句块2
X==4 || y>5
执行语句块3
F
F
T
T
a
b
d
c
e
语句覆盖
要实现DoWork函数的语句覆盖,只需设计一个测试用例就可以覆盖程序中的所有可执行语句。
测试用例输入为:{ x=4、y=5、z=5 }
程序执行的路径是:abd
分析:
语句覆盖可以保证程序中的每个语句都得到执行,但发现不了判定中逻辑运算的错误,即它并不是一种充分的检验方法。例如在第一个判定((x>3)&&(z<10))中把“&&”错误的写成了“||”,这时仍使用该测试用例,则程序仍会按照流程图上的路径abd执行。可以说语句覆盖是最弱的逻辑覆盖准则。
判定覆盖
要实现DoWork函数的判定覆盖,需要设计两个测试用例。
测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5}
程序执行的路径分别是:abd;ace
分析:
上述两个测试用例不仅满足了判定覆盖,同时还做到语句覆盖。从这点看似乎判定覆盖比语句覆盖更强一些,但仍然无法确定判定内部条件的错误。例如把第二个判定中的条件y>5错误写为y<5,使用上述测试用例,照样能按原路径执行而不影响结果。因此,需要有更强的逻辑覆盖准则去检验判定内的条件。
条件覆盖
在实际程序代码中,一个判定中通常都包含若干条件。条件覆盖的目的是设计若干测试用例,在执行被测程序后,要使每个判定中每个条件的可能值至少满足一次。
对DoWork函数的各个判定的各种条件取值加以标记。
对于第一个判定( (x>3)&&(z<10) ):
条件x>3 取真值记为T1,取假值记为-T1
条件z<10 取真值记为T2,取假值记为-T2
对于第二个判定( (x==4)||(y>5) ):
条件x==4 取真值记为T3,取假值记为-T3
条件y>5 取真值记为T4,取假值记为-T4
条件覆盖
根据条件覆盖的基本思想,要使上述4个条件可能产生的8种情况至少满足一次,设计测试用例如下:
测试用例
执行路径
覆盖条件
覆盖分支
x=4、y=6、z=5
abd
T1、T2、T3、T4
bd
x=2、y=5、 z=15
ace
-T1、-T2、
-T3、-T4
ce
分析:上面这组测试用例不但覆盖了4个条件的全部8种情况,而且将两个判定的4个分支b、c、d、e也同时覆盖了,即同时达到了条件覆盖和判定覆盖。
条件覆盖
说明:虽然前面的一组测试用例同时达到了条件覆盖和判定覆盖,但是,并不是说满足条件覆盖就一定能满足判定覆盖。如果设计了下表中的这组测试用例,则虽然满足了条件覆盖,但只是覆盖了程序中第一个判定的取假分支c 和第二个判定的取真分支d,不满足判定覆盖的要求。
测试用例
执行路径
覆盖条件
覆盖分支
x=2、y=6、z=5
acd
-T1、T2、
-T3、T4
cd
x=4、y=5、z=15
acd
T1、-T2、
T3、-T4
cd
判定/条件覆盖
判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种方法,即:设计足够的测试用例,使得判定中每个条件的所有可能取值至少满足一次,同时每个判定的可能结果也至少出现一次。
根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便可以覆盖4个条件的8种取值以及4个判定分支。
测试用例
执行路径
覆盖条件
覆盖分支
x=4、y=6、z=5
abd
T1、T2、
T3、T4
bd
x=2、y=5、z=15
ace
-T1、-T2、
-T3、-T4
ce
判定/条件覆盖
分析:从表面上看,判定/条件覆盖测试了各个判定中的所有条件的取值,但实际上,编译器在检查含有多个条件的逻辑表达式时,某些情况下的某些条件将会被其它条件所掩盖。因此,判定/条件覆盖也不一定能够完全检查出逻辑表达式中的错误。
例如:对于第一个判定(x>3)&&(z<10)来说,必须x>3和z<10这两个条件同时满足才能确定该判定为真。如果x>3为假,则编译器将不再检查z<10这个条件,那么即使这个条件有错也无法被发现。对于第二个判定(x==4)||(y>5)来说,若条件x==4满足,就认为该判定为真,这时将不会再检查y>5,那么同样也无法发现这个条件中的错误。