《白盒测试技术》PPT课件.ppt

上传人:wuy****n92 文档编号:69964644 上传时间:2023-01-13 格式:PPT 页数:38 大小:344KB
返回 下载 相关 举报
《白盒测试技术》PPT课件.ppt_第1页
第1页 / 共38页
《白盒测试技术》PPT课件.ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《《白盒测试技术》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《白盒测试技术》PPT课件.ppt(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、白盒测试技术 主讲人:张伟主讲人:张伟白盒测试n白盒测试是基于代码的测试。软件测试人员可以访问程序员的代码,并通过检查代码来测试,可以看到盒子里面的程序以及程序是如何运作的。白盒测试的优点和局限性n优点:相比白盒测试,更易于定位错误的原因和具体的位置。n局限性:不能查出程序中的设计缺陷不能查处是否遗漏了功能发现不了一些与数据相关的错误白盒测试分类n白盒测试分为静态白盒测试和动态白盒测试。n静态测试通过评审文档和阅读代码等方式测试软件。可以利用专门的静态测试工具分析代码中的缺陷,也可以人为去测试,但静态测试对测试人员的编码和测试等水平要求很高。常见的静态测试缺陷n数组越界n内存泄漏n除数为0n缓

2、冲区溢出n未初始化变量的误用n空指针的误用n函数参数错误n无限循环n代码不可达n等等动态白盒测试n常用的动态白盒测试方法有逻辑覆盖法、基本路径测试法等n逻辑覆盖法:以程序内部的逻辑结构为基础设计测试用例的方法。根据对逻辑结构的覆盖程度不同分为:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖逻辑覆盖的相关术语n语句覆盖:语句覆盖就是设计若干个测试用例,使被测试程序中的每条可执行语句至少执行一次。n判定覆盖(也称为分支覆盖):设计若干个测试用例,使被测程序中每个判定的取真分支和取假分支至少执行一次;n条件覆盖:设计足够多的测试用例,使被测程序中每个判定的每个条件的每个可能取值

3、至少执行一次;n判定-条件覆盖:设计足够多的测试用例,使被测程序中每个判定的每个条件的所有可能取值至少执行一次,并且每个判定的取真分支和取假分支也至少执行一次;n条件组合测试:设计足够多的测试用例,使被测程序中每个判定的所有可能的条件取值组合至少执行一次n路径覆盖:运行所测程序,要覆盖程序中所有可能的路径。下面以例子进行分析讲解nvoid DoWork(int x,int y,int z)nn int k=0,j=0;n if(x3)&(z5)n n j=x*y+10;/语句块2n n j=j%3;/语句块3ndowork函数的流程图X3&z5执行语句块执行语句块3FFTTabdce语句覆盖n

4、要实现要实现DoWork函数的语句覆盖,只需设计一个测试用例就函数的语句覆盖,只需设计一个测试用例就可以可以覆盖程序中的所有可执行语句覆盖程序中的所有可执行语句。测试用例测试用例输入为:输入为:x=4、y=5、z=5 程序程序执行的路径执行的路径是:是:abdn分析:分析:语句覆盖可以保证程序中的每个语句都得到执行,但语句覆盖可以保证程序中的每个语句都得到执行,但发发现不了判定中逻辑运算的错误现不了判定中逻辑运算的错误,即它并不是一种充分的检验,即它并不是一种充分的检验方法。例如在第一个判定方法。例如在第一个判定(x3)&(z5错误写为错误写为y0)if(10=Type)x=y*2;else

5、if(100=Type)x=y+10;else x=y-20;A.5 B.4 C.3 D.2条件覆盖n在实际程序代码中,一个在实际程序代码中,一个判定中通常都包含若干条件判定中通常都包含若干条件。条件覆盖的目的是设计若干测试用例,在执行被测程序条件覆盖的目的是设计若干测试用例,在执行被测程序后,要使后,要使每个判定中每个条件的可能值至少满足一次每个判定中每个条件的可能值至少满足一次。n对对DoWork函数的各个判定的函数的各个判定的各种条件取值加以标记。各种条件取值加以标记。对于第一个判定对于第一个判定(x3)&(z3 取真值记为取真值记为T1,取假值记为取假值记为-T1 条件条件z5):条件

6、条件x=4 取真值记为取真值记为T3,取假值记为取假值记为-T3 条件条件y5 取真值记为取真值记为T4,取假值记为取假值记为-T4条件覆盖(续)n根据条件覆盖的基本思想,要使上述根据条件覆盖的基本思想,要使上述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 cen分析:分析:上面这组测试用例不但覆盖了上面这组测试用例不但覆盖了4个条件的全部个条件的全部8种种情况,而

7、且将两个判定的情况,而且将两个判定的4个分支个分支b、c、d、e也同时覆也同时覆盖了,即同时达到了条件覆盖和判定覆盖。盖了,即同时达到了条件覆盖和判定覆盖。条件覆盖(续)n说明:说明:虽然前面的一组测试用例同时达到了条件覆盖和判虽然前面的一组测试用例同时达到了条件覆盖和判定覆盖,但是,定覆盖,但是,并不是说满足条件覆盖就一定能满足判定并不是说满足条件覆盖就一定能满足判定覆盖覆盖。如果设计了下表中的这组测试用例,则虽然满足了。如果设计了下表中的这组测试用例,则虽然满足了条件覆盖,但只是覆盖了程序中第一个判定的取假分支条件覆盖,但只是覆盖了程序中第一个判定的取假分支c 和第二个判定的取真分支和第二

8、个判定的取真分支d,不满足判定覆盖的要求不满足判定覆盖的要求。测试用例 执行路径 覆盖条件覆盖分支x=2、y=6、z=5 acd-T1、T2、-T3、T4 cdx=4、y=5、z=15 acdT1、-T2、T3、-T4 cd练习题针对下列程序段,对于(A,B)的取值,以下()测试用例组合能够满足条件覆盖的要求。if(A-10)=20 AND(B+20)10)THEN C=0if(A-10)=20 AND(B+20)10)THEN B=30A=50 B=-10 A=40 B=40A=30 B=-10A=30 B=30A.B.C.D.判定/条件覆盖n判定判定/条件覆盖条件覆盖实际上是将实际上是将判

9、定覆盖和条件覆盖结合起来判定覆盖和条件覆盖结合起来的一种方法,即:设计足够的测试用例,使得的一种方法,即:设计足够的测试用例,使得判定中每个判定中每个条件的所有可能取值至少满足一次条件的所有可能取值至少满足一次,同时,同时每个判定的可能每个判定的可能结果也至少出现一次结果也至少出现一次。n根据判定根据判定/条件覆盖的基本思想,只需设计以下两个测试条件覆盖的基本思想,只需设计以下两个测试用例便用例便可以覆盖可以覆盖4个条件的个条件的8种取值以及种取值以及4个判定分支个判定分支。测试用例 执行路径 覆盖条件覆盖分支x=4、y=6、z=5 abdT1、T2、T3、T4 bdx=2、y=5、z=15a

10、ce-T1、-T2、-T3、-T4 ce判定/条件覆盖(续)n分析:分析:从表面上看,判定从表面上看,判定/条件覆盖测试了各个判定中的条件覆盖测试了各个判定中的所有条件的取值,但实际上,编译器在检查含有多个条件所有条件的取值,但实际上,编译器在检查含有多个条件的逻辑表达式时,某些情况下的的逻辑表达式时,某些情况下的某些条件将会被其它条件某些条件将会被其它条件所掩盖所掩盖。因此,。因此,判定判定/条件覆盖也不一定能够完全检查出条件覆盖也不一定能够完全检查出逻辑表达式中的错误逻辑表达式中的错误。例如:例如:对于第一个判定对于第一个判定(x3)&(z3和和z3为假,则编译器将不再检查为假,则编译器将

11、不再检查z5)来来说,说,若条件若条件x=4满足,就认为该判定为真,这时将不会再满足,就认为该判定为真,这时将不会再检查检查y5,那么同样也无法发现这个条件中的错误。,那么同样也无法发现这个条件中的错误。组合覆盖n组合覆盖的目的是要使设计的测试用例能覆盖组合覆盖的目的是要使设计的测试用例能覆盖每一个判定每一个判定的所有可能的条件取值组合的所有可能的条件取值组合。n对对DoWork函数中的各个判定的条件取值组合加以标记:函数中的各个判定的条件取值组合加以标记:1、x3,z3,z=10 记做记做T1-T2,第一个判定的取假分支第一个判定的取假分支 3、x=3,z10 记做记做-T1 T2,第一个判

12、定的取假分支第一个判定的取假分支 4、x=10 记做记做-T1-T2,第一个判定的取假分支第一个判定的取假分支 5、x=4,y5 记做记做T3 T4,第二个判定的取真分支第二个判定的取真分支 6、x=4,y5 记做记做-T3 T4,第二个判定的取真分支第二个判定的取真分支 8、x!=4,y8 AND Y5X0 OR Y0引用语句1引用语句2NYNYX16 OR Y10引用语句3NY基本路径测试方法n路径测试就是从一个程序的路径测试就是从一个程序的入口开始入口开始,执行所经历的各个执行所经历的各个语句的完整过程语句的完整过程。从广义的角度讲,任何有关路径分析的。从广义的角度讲,任何有关路径分析的

13、测试都可以被称为路径测试。测试都可以被称为路径测试。n完成路径测试的完成路径测试的理想情况是做到路径覆盖理想情况是做到路径覆盖,但对于,但对于复杂性复杂性大的程序要做到所有路径覆盖大的程序要做到所有路径覆盖(测试所有可执行路径)(测试所有可执行路径)是是不可能的(存在选择结构和循环结构)不可能的(存在选择结构和循环结构)。n在不能做到所有路径覆盖的前提下,需要对在不能做到所有路径覆盖的前提下,需要对路径数量进行路径数量进行压缩压缩,如果可以保证程序中的,如果可以保证程序中的每个可执行语句可以至少运每个可执行语句可以至少运行一次行一次,则这种测试方法就是通常所说的,则这种测试方法就是通常所说的基

14、本路径测试方基本路径测试方法法。(达到语句覆盖)(达到语句覆盖)基本路径测试方法(续)n基本路径测试方法是在基本路径测试方法是在控制流图的基础控制流图的基础上,通过分析控制上,通过分析控制结构的结构的环形复杂度环形复杂度,导出,导出执行路径的基本集执行路径的基本集,再从,再从该基本该基本集设计测试用例集设计测试用例。基本路径测试方法包括以下。基本路径测试方法包括以下4个步骤:个步骤:(1)画出程序的控制流图画出程序的控制流图。(2)计算程序的)计算程序的环形复杂度环形复杂度,导出程序基本路径集中的,导出程序基本路径集中的独立独立路径条数路径条数,这是确定程序中,这是确定程序中每个可执行语句至少

15、执行一次每个可执行语句至少执行一次所必须的测试用例数目的上界所必须的测试用例数目的上界。(3)导出基本路径集,)导出基本路径集,确定程序的独立路径确定程序的独立路径。(4)根据()根据(3)中的独立路径,)中的独立路径,设计测试用例设计测试用例的输入数据和的输入数据和预期输出。预期输出。控制流图n控制流图(可简称流图)控制流图(可简称流图)是对是对程序流程图程序流程图进行进行简化后简化后得到得到的,它可以更加突出的表示的,它可以更加突出的表示程序控制流程序控制流的结构。的结构。n控制流图中包括两种图形符号:节点控制流图中包括两种图形符号:节点和和控制流线控制流线。节点由带标号的圆圈表示,可代表

16、一个或多个语句、一个节点由带标号的圆圈表示,可代表一个或多个语句、一个处理框序列和一个条件判定框(假设不包含复合条件)。处理框序列和一个条件判定框(假设不包含复合条件)。控制流线控制流线由带箭头的弧或线表示由带箭头的弧或线表示,可称为边。它代表程序,可称为边。它代表程序中的控制流。中的控制流。n对于复合条件,则可将其对于复合条件,则可将其分解为多个单个条件分解为多个单个条件,并映射成,并映射成控制流图。控制流图。流程图转换为流图l一个节点包含1个或多个连续的无分支语句l节点不允许含有符合节点lA和B叫做谓词节点环路复杂度n环路复杂度也叫圈复杂度,其值等于流程图中的区域个数,利用圈复杂度可以确定

17、程序基本路径集合的独立路径数。n圈复杂度的计算公式有两个:1、圈复杂度=流图边数-节点数+22、圈复杂度=流图中谓词节点数+1基本路径测试方法(续)void Sort(int iRecordNum,int iType)1 2 int x=0;3 int y=0;4 while(iRecordNum-0)5 6 If(iType=0)7x=y+2;8 else9 If(iType=1)10 x=y+10;11 else12 x=y+20;13 14 基本路径测试方法(续)n画出控制流图:如右图所示n计算环形复杂度:10(条边)-8(个节点)+2=4n导出独立路径(用语句编号表示)路径1:414

18、路径2:46714 路径3:4691013414 路径4:4691213414467910121314基本路径测试方法(续)输入数据预期输出测试用例1irecordnum=0itype=0 x=0y=0测试用例2irecordnum=1itype=0 x=0y=0测试用例3irecordnum=1itype=1x=10y=0测试用例4irecordnum=1itype=2x=0y=20n设计测试用例:循环测试方法n从本质上说,循环测试的目的就是从本质上说,循环测试的目的就是检查循环检查循环结构的有效性结构的有效性。n通常,循环可以划分为简单循环、嵌套循环、串接循环和通常,循环可以划分为简单循环

19、、嵌套循环、串接循环和 非结构循环非结构循环4类。类。(1)测试简单循环测试简单循环。设其循环的最大次数为。设其循环的最大次数为n,可采用以下,可采用以下测试集:测试集:跳过整个循环;跳过整个循环;只循环一次;只循环一次;只循环两次;只循环两次;循环循环 m 次,其中次,其中m0)&(Y-0)If(A-0|B-0)输出A*B;/执行语句1else return;2、在三角形问题中,要求输入三个边长:a,b,c。当三边不可能构成三角形时提示错误,可构成三角形时计算三角形的周长。若是等腰三角形打印“等腰三角形”,若是等边三角形,则打印“等边三角形”。画出相应的程序流程图,并采用基本路径测试方法为该程序设计测试用例。课后复习n掌握逻辑覆盖法和基本路径法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com