欢迎来到天天文库
浏览记录
ID:50386206
大小:583.50 KB
页数:15页
时间:2020-03-13
《软件测试逻辑覆盖.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1内容(1)逻辑覆盖语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖路径覆盖2逻辑覆盖voidDoWork(intx,inty,intz){intk=0,j=0;if((x>3)&&(z<10)){k=x*y-1;j=sqrt(k);}//语句块1if((x==4)
2、
3、(y>5)){j=x*y+10;}//语句块2j=j%3;//语句块3}3逻辑覆盖X>3&&z<10执行语句块1执行语句块2X==4
4、
5、y>5执行语句块3FFTTabdce4逻辑覆盖语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。要实现DoWork函数
6、的语句覆盖,只需设计一个测试用例就可以覆盖程序中的所有可执行语句。测试用例输入为:{x=4、y=5、z=5}程序执行的路径是:abd分析:语句覆盖可以保证程序中的每个语句都得到执行,但发现不了判定中逻辑运算的错误,即它并不是一种充分的检验方法。例如在第一个判定((x>3)&&(z<10))中把“&&”错误的写成了“
7、
8、”,或者把x>3误写成x>2,这时仍使用该测试用例,则程序仍会按照流程图上的路径abd执行。可以说语句覆盖是最弱的逻辑覆盖准则。5逻辑覆盖判定覆盖:通过执行足够的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值,也
9、就是使程序中的每个取“真”分支和取“假”分支至少均经历一次,也称为“分支覆盖”。要实现DoWork函数的判定覆盖,需要设计两个测试用例。测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5}程序执行的路径分别是:abd;ace分析:上述两个测试用例不仅满足了判定覆盖,同时还做到语句覆盖。从这点看似乎判定覆盖比语句覆盖更强一些,但仍然无法确定判定内部条件的错误。例如把第二个判定中的条件y>5错误写为y<5,使用上述测试用例,照样能按原路径执行而不影响结果。因此,需要有更强的逻辑覆盖准则去检验判定内的条件。6逻辑覆盖条件覆盖:设
10、计足够多的测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次。在实际程序代码中,一个判定中通常都包含若干条件。条件覆盖的目的是设计若干测试用例,在执行被测程序后,要使每个判定中每个条件的可能值至少满足一次。对DoWork函数的各个判定的各种条件取值加以标记。对于第一个判定((x>3)&&(z<10)):条件x>3取真值记为T1,取假值记为-T1条件z<10取真值记为T2,取假值记为-T2对于第二个判定((x==4)
11、
12、(y>5)):条件x==4取真值记为T3,取假值记为-T3条件y>5取真值记为T4,取假值记为-T4
13、7逻辑覆盖根据条件覆盖的基本思想,要使上述4个条件可能产生的8种情况至少满足一次,设计测试用例如下:测试用例执行路径覆盖条件覆盖分支x=4、y=6、z=5abdT1、T2、T3、T4bdx=2、y=5、z=15ace-T1、-T2、-T3、-T4ce分析:上面这组测试用例不但覆盖了4个条件的全部8种情况,而且将两个判定的4个分支b、c、d、e也同时覆盖了,即同时达到了条件覆盖和判定覆盖。8逻辑覆盖说明:虽然前面的一组测试用例同时达到了条件覆盖和判定覆盖,但是,并不是说满足条件覆盖就一定能满足判定覆盖。如果设计了下表中的这组测试用例,则虽然满足
14、了条件覆盖,但只是覆盖了程序中第一个判定的取假分支c和第二个判定的取真分支d,不满足判定覆盖的要求。测试用例执行路径覆盖条件覆盖分支x=2、y=6、z=5ace-T1、T2、-T3、T4cex=4、y=5、z=15aceT1、-T2、T3、-T4ce9逻辑覆盖判定/条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次——满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种方法,即:设计足
15、够的测试用例,使得判定中每个条件的所有可能取值至少满足一次,同时每个判定的可能结果也至少出现一次。根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便可以覆盖4个条件的8种取值以及4个判定分支。测试用例执行路径覆盖条件覆盖分支x=4、y=6、z=5abdT1、T2、T3、T4bdx=2、y=5、z=15ace-T1、-T2、-T3、-T4ce10逻辑覆盖分析:从表面上看,判定/条件覆盖测试了各个判定中的所有条件的取值,但实际上,编译器在检查含有多个条件的逻辑表达式时,某些情况下的某些条件将会被其它条件所掩盖。因此,判定/条件覆盖也不一定能
16、够完全检查出逻辑表达式中的错误。例如:对于第一个判定(x>3)&&(z<10)来说,必须x>3和z<10这两个条件同时满足才能确定该判定为真。如果x>3为假,则编译
此文档下载收益归作者所有