软件测试第3章-白盒测试-教学PPT课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件测试第3章-白盒测试-教学PPT课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 教学 PPT 课件
- 资源描述:
-
1、第第3章章 白白盒测试盒测试 逻辑覆盖法 插桩法3.1 逻辑覆盖法逻辑覆盖法是最常用的白盒测试方法,它包括以下5种方法:语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖3.1.1 语句覆盖语句覆盖(Statement Coverage)又称行覆盖、段覆盖、基本块覆盖,它是最常见的覆盖方式。3.1.1 语句覆盖语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句,这里的执行语句不包括头文件、注释、空行等。3.1.1 语句覆盖语句覆盖在多分支的程序中,只能覆盖某一条路径,使得该路径中的每一个语句至少被执行一次,但不会考虑各种分支组合情况。3.1.1 语句覆盖在代码中,AN
2、D表示逻辑运算&,OR表示逻辑运算|,第12行代码表示如果x0成立并且y2成立或者z0成立,则执行z=z+(x+y)语句。示例代码示例代码IF x0 AND y2 OR z0 /条件2 z=z+(x+y)3.1.1 语句覆盖在代码运行流程图中,a、b、c、d、e表示程序执行分支。在语句覆盖测试用例中,使程序中每个可执行语句至少被执行一次。3.1.1 语句覆盖设计测试用例:Test1:x=1 y=-1 z=2执行测试用例,程序运行路径为acd。可以看出程序中acd路径上的每个语句都能被执行。但是语句覆盖对多分支的逻辑无法全面反映,仅仅执行一次不能进行全面覆盖,因此,语句覆盖是弱覆盖方法。3.1.
3、1 语句覆盖语句覆盖虽然可以测试执行语句是否被执行到,但却无法测试程序中存在的逻辑错误。例如,如果上述程序中的逻辑判断符号“AND”误写了“OR”,使用测试用例Test1同样可以覆盖acd路径上的全部执行语句,但却无法发现错误。同样,如果将x0误写成x=0,使用同样的测试用例Test1也可以执行acd路径上的全部执行语句,但却无法发现x=0的错误。3.1.1 语句覆盖语句覆盖无需详细考虑每个判断表达式,可以直观地从源程序中有效测试执行语句是否全部被覆盖,由于程序在设计时,语句之间存在许多内部逻辑关系,而语句覆盖不能发现其中存在的缺陷,因此语句覆盖并不能满足白盒测试的测试所有逻辑语句的基本需求。
4、3.1.2 判定覆盖判定覆盖(Decision Coverage)又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。3.1.2 判定覆盖判定覆盖的作用是使真假分支均被执行,虽然判定覆盖比语句覆盖测试能力强,但仍然具有和语句覆盖一样的单一性。3.1.2 判定覆盖以3.1.1节程序为例,设计判定覆盖测试用例。测试用例测试用例x xy yz z执行语句路径执行语句路径test1test12-11acdtest2test2-31-1abdtest3test33-15acetest4test431-1abe3.1.2 判定覆盖上述4个测试用例覆盖了ac
5、d、abd、ace、abe四条路径,使得每个判定语句的取值都满足了各有一次“真”与“假”。相比于语句覆盖,判定覆盖的覆盖范围更广泛。判定覆盖虽然保证了每个判定至少有一次为真值,有一次为假值。3.1.2 判定覆盖判定覆盖并没有考虑到程序内部取值的情况。例如,测试用例test4,没有将x2作为条件进行判断,仅仅判断了z0的条件。此外,若将判定条件z0误写成z1 OR c1、c1、c0 x0S1x2S3x0 x0-S1x2-S3y0y0S4y0y0-S2z0取真值(即x0成立)的情况,-S1标记x0取假值(即x0不成立)的情况。同理,使用S2、S3、S4标记y2、z0取真值,使用-S2、-S3、-S
6、4标记y2、z0取假值,最后得到执行条件判断语句的8种状态3.1.3 条件覆盖设计测试用例时,要保证每种状态都至少出现一次。设计测试用例的原则是尽量以最少的测试用例达到最大的覆盖率。测试用例测试用例x xy yz z条件标记条件标记执行路径执行路径Test1Test1315S1、-S2、S3、S4abeTest2Test2-31-1-S1、-S2、-S3、-S4abdTest3Test33-11S1、S2、S3、-S4ace3.1.3 条件覆盖从条件覆盖的测试用例可知,使用3个测试用例就达到了使每个逻辑条件取真值与取假值都至少出现了一次,但从测试用例的执行路径来看,条件分支覆盖的状态下仍旧不能
7、满足判定覆盖,即没有覆盖acd路径。相比于语句覆盖与判定覆盖,条件覆盖达到了逻辑条件的最大覆盖率,但却不能保证判定覆盖,仍旧不能满足白盒测试覆盖所有分支的需求。3.1.4 判定-条件覆盖判定-条件覆盖(Condition/Decision Coverage)要求设计足够多的测试用例,使得判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次。例如,对于判定语句if(a1 AND c1、c1、c1 AND c0、y2、z0,我们依然用S1、S2、S3、S4标记这四个条件成立,而-S1、-S2、-S3、-S4标记这些条件不成立。由于这四个条件每个条件都有取“真”、“假
8、”两个值,因此所有条件结果的组合有24=16种3.1.5 条件组合覆盖序号序号组合组合含义含义1 1S1、S2、S3、S4x0成立,y2成立,z0成立。2 2-S1、S2、S3、S4x0不成立,y2成立,z0成立。3 3S1、-S2、S3、S4x0成立,y2成立,z0成立。4 4S1、S2、-S3、S4x0成立,y2不成立,z0成立。5 5S1、S2、S3、-S4x0成立,y2成立,z0不成立。6 6-S1、-S2、S3、S4x0不成立,y2成立,z0成立。7 7-S1、S2、-S3、S4x0不成立,y2不成立,z0成立。8 8-S1、S2、S3、-S4x0不成立,y2成立,z0不成立。9 9
9、S1、-S2、-S3、S4x0成立,y2不成立,z0成立。1010S1、S2、-S3、-S4x0成立,y2不成立,z0不成立。1111S1、-S2、S3、-S4x0成立,y2成立,z0不成立。1212-S1、-S2、-S3、S4x0不成立,y2不成立,z0成立。1313-S1、-S2、S3、-S4x0不成立,y2成立,z0不成立。1414S1、-S2、-S3、-S4x0成立,y2不成立,z0不成立。1515-S1、S2、-S3、-S4x0不成立,y2不成立,z0不成立。1616-S1、-S2、-S3、-S4x0不成立,y2不成立,z0不成立。3.1.5 条件组合覆盖经过分析可以发现,第2、6、
10、8、13这4种情况是不存在的,这几种情况要求x0不成立,x2成立,这两种结果相悖,因此最终图3-1的所有条件组合情况有12种,根据这12种情况设计测试用例。3.1.5 条件组合覆盖条件覆盖测试用例序号序号组合组合测试用例测试用例条件条件1 1条件条件2 2覆盖路径覆盖路径xyztest1test1S1、S2、S3、S43-1511acetest2test2S1、-S2、S3、S431501abetest3test3S1、S2、-S3、S41-1311acetest4test4S1、S2、S3、-S43-1111acetest5test5-S1、S2、-S3、S4-5-2101abetest6t
11、est6S1、-S2、-S3、S411101abetest7test7S1、S2、-S3、-S41-1110acdtest8test8S1、-S2、S3、-S461-201abetest9test9-S1、-S2、-S3、S4-11101abetest10test10S1、-S2、-S3、-S411-200abdtest11test11-S1、S2、-S3、-S4-2-1-300abdtest12test12-S1、-S2、-S3、-S4-31-100abd3.1.5 条件组合覆盖与判定-条件覆盖相比,条件组合覆盖包括了所有判定-条件覆盖,因此它的覆盖范围更广。但是当程序中条件比较多时,条件组
12、合的数量会呈指数型增长,组合情况非常多,要设计的测试用例也会增加,这样反而会使测试效率降低。3.1.6 实例:三角形逻辑覆盖问题根据三角形三边的关系可将三角形分为4种类型:不构成三角形、一般三角形、等腰三角形、等边三角形。根据该原则实现一个判断三角形的程序。三角形逻辑覆盖3.1.6 实例:三角形逻辑覆盖问题INT A B C/三角形的三边IF(A+BC)&(A+CB)&(B+C)A)/是否满足三角形成立条件 IF(A=B)&(B=C)/等边三角形 等边三角形 ELSE IF(A=B)|(B=C)|(A=C)/等腰三角形 等腰三角形 ELSE/一般三角形 一般三角形ELSE 不是三角形 END3
展开阅读全文