计算机白盒测试法_第1页
计算机白盒测试法_第2页
计算机白盒测试法_第3页
计算机白盒测试法_第4页
计算机白盒测试法_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.6白盒测试技术测试方案包括具体的测试目的,应该输入的测试数据和预期的结果。通常又把测试数据和预期的输出结果称为测试用例。设计测试方案的根本目标:确定一组最可能发现某个错误或某类错误的测试数据。白盒测试法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。本节讲述在用白盒方法测试软件时设计测试数据的典型技术。学习内容逻辑覆盖的概念逻辑覆盖的分类语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖点覆盖边覆盖路径覆盖覆盖法之间的关系教学目标理论环节学习理解白盒测试方法的根本概念学习理解白盒测试的覆盖理论实践环节通过案例运用学习掌握覆盖问题的解决方法逻辑覆盖的概念逻辑覆盖,是以程序内在逻辑结构为根底的测试,是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。7.6.1逻辑覆盖逻辑覆盖法的分类根据覆盖目标的不同,逻辑覆盖又可分为:语句覆盖判定覆盖条件覆盖判定/条件覆盖组合覆盖路径覆盖voidDoWork(intx,inty,intz){intk=0,j=0;if((x>3)&&(z<10)){k=x*y-1;j=sqrt(k);}//语句块1if((x==4)||(y>5)){j=x*y+10;}//语句块2j=j%3;//语句块3}程序举例程序流程图X>3&&z<10执行语句块1执行语句块2X==4||y>5执行语句块3FFTTabdcef语句覆盖语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。语句覆盖要实现DoWork函数的语句覆盖,只需设计一个测试用例就可以覆盖程序中的所有可执行语句。测试用例输入为:{x=4、y=5、z=5}程序执行的路径是:abdfX>3&&z<10执行语句块1执行语句块2X==4||y>5执行语句块3FFTTabdcef||结果如何呢?(X>3&&z<10)∩(X==4||y>5)语句覆盖分析:语句覆盖可以保证程序中的每个语句都得到执行,但发现不了判定中逻辑运算的错误,即它并不是一种充分的检验方法。例如在第一个判定((x>3)&&(z<10))中把“&&〞错误地写成了“||〞,这时仍使用该测试用例,那么程序仍会按照流程图上的路径abdf执行。可以说语句覆盖是最弱的逻辑覆盖准那么。判定覆盖判定覆盖:通过执行足够多的测试用例,使得程序中的每个判定至少都获得一次“真〞值和“假〞值,也就是使程序中的每个取“真〞分支和取“假〞分支至少均经历一次,也称为“分支覆盖〞。判定覆盖要实现DoWork函数的判定覆盖,需要设计两个测试用例。测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5}程序执行的路径分别是:abdf;acefX>3&&z<10执行语句块1执行语句块2X==4||y>5执行语句块3FFTTabdcefy<5结果如何呢?判定覆盖分析:上述两个测试用例不仅满足了判定覆盖,同时还做到语句覆盖。从这点看似乎判定覆盖比语句覆盖更强一些,但仍然无法确定判定内部条件的错误。例如把第二个判定中的条件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=5abdfT1、T2、T3、T4bdx=2、y=5、z=15acef-T1、-T2、-T3、-T4ce分析:上面这组测试用例不但覆盖了4个条件的全部8种情况,而且将两个判定的4个分支b、c、d、e也同时覆盖了,即同时到达了条件覆盖和判定覆盖。条件覆盖〔续〕说明:虽然前面的一组测试用例同时到达了条件覆盖和判定覆盖,但是,并不是说满足条件覆盖就一定能满足判定覆盖。如果设计了下表中的这组测试用例,那么虽然满足了条件覆盖,但只是覆盖了程序中第一个判定的取假分支c和第二个判定的取真分支d,不满足判定覆盖的要求。测试用例执行路径覆盖条件覆盖分支x=2、y=6、z=5acdf-T1、T2、-T3、T4cdx=4、y=5、z=15acdfT1、-T2、T3、-T4cd判定/条件覆盖判定/条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况〔真/假〕至少出现一次,并且每个判定本身的判定结果〔真/假〕也至少出现一次。——满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。判定/条件覆盖判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种方法,即:设计足够的测试用例,使得判定中每个条件的所有可能取值至少满足一次,同时每个判定的可能结果也至少出现一次。根据判定/条件覆盖的根本思想,只需设计以下两个测试用例便可以覆盖4个条件的8种取值以及4个判定分支。测试用例执行路径覆盖条件覆盖分支x=4、y=6、z=5abdfT1、T2、T3、T4bdx=2、y=5、z=15acef-T1、-T2、-T3、-T4ce判定/条件覆盖X>3&&z<10执行语句块1执行语句块2X==4||y>5执行语句块3FFTTabdcef判定/条件覆盖〔续〕分析:从外表上看,判定/条件覆盖测试了各个判定中的所有条件的取值,但实际上,编译器在检查含有多个条件的逻辑表达式时,某些情况下的某些条件将会被其它条件所掩盖。因此,判定/条件覆盖也不一定能够完全检查出逻辑表达式中的错误。例如:对于第一个判定(x>3)&&(z<10)来说,必须x>3和z<10这两个条件同时满足才能确定该判定为真。如果x>3为假,那么编译器将不再检查z<10这个条件,那么即使这个条件有错也无法被发现。对于第二个判定(x==4)||(y>5)来说,假设条件x==4满足,就认为该判定为真,这时将不会再检查y>5,那么同样也无法发现这个条件中的错误。组合覆盖组合覆盖:通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。

——满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖。组合覆盖组合覆盖的目的是要使设计的测试用例能覆盖每一个判定的所有可能的条件取值组合。对DoWork函数中的各个判定的条件取值组合加以标记:1、x>3,z<10记做T1T2,第一个判定的取真分支2、x>3,z>=10记做T1-T2,第一个判定的取假分支3、x<=3,z<10记做-T1T2,第一个判定的取假分支4、x<=3,z>=10记做-T1-T2,第一个判定的取假分支5、x==4,y>5记做T3T4,第二个判定的取真分支6、x==4,y<=5记做T3-T4,第二个判定的取真分支7、x!=4,y>5记做-T3T4,第二个判定的取真分支8、x!=4,y<=5记做-T3-T4,第二个判定的取假分支组合覆盖根据组合覆盖的根本思想,设计测试用例如下:测试用例执行路径覆盖条件覆盖组合号x=4、y=6、z=5abdfT1、T2、T3、T41和5x=4、y=5、z=15acdfT1、-T2、T3、-T42和6x=2、y=6、z=5acdf-T1、T2、-T3、T43和7x=2、y=5、z=15acef-T1、-T2、-T3、-T44和8分析:上面这组测试用例覆盖了所有8种条件取值的组合,覆盖了所有判定的真假分支,但是却丧失了一条路径abef。覆盖法之间的关系组合覆盖判断/条件覆盖判断覆盖条件覆盖语句覆盖练习:设计以下伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT(A,B,C)IFA>5THENX=10ELSEX=1ENDIFIFB>10THENY=20ELSEY=2ENDIFIFC>15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP语句覆盖的测试用例序号判定输入预期的输出123ABCXYZ1FFF1111232TTT204060102030路径覆盖的测试用例序号判定输入预期的输出123ABCXYZ1FFF1111232FFT116012303FTF140112034FTFF201110236TFT20160102307TTF20401102038TTT204060102030设计以下伪码程序的分支覆盖和条件组合覆盖测试用例STARTINPUT(A,B,C,D)IF(A>0)AND(B>0)THENX=A+BELSEX=A-BENDIF(C>A)AND(D<B)THENY=C-DELSEY=C+DENDPRINT(X,Y)STOP分支覆盖序号判定输入预期的输出12ABCDXY1FF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论