基于控制流和数据流的测试充分性评价-课件_第1页
基于控制流和数据流的测试充分性评价-课件_第2页
基于控制流和数据流的测试充分性评价-课件_第3页
基于控制流和数据流的测试充分性评价-课件_第4页
基于控制流和数据流的测试充分性评价-课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

基于控制流和数据流的测试充分性评价第6章FoundationsofSoftwareTesting1ppt课件6.1测试充分性基础充分性:用来度量一个给定的测试集是否能验证软件P满足其需求。C:如果针对R中的每一个需求r,测试集T中至少有一个测试用例测试证明了P满足r,则认为T针对(P,R)是充分的。对每一个测试准则C,我们都导出一个有限集,称之为覆盖域,记为。(依赖于代码或需求)测试准则C的包括:基于控制流的覆盖准则和基于数据流的覆盖准则。一个充分的测试集有可能不能发现软件中最明显的错误。2ppt课件6.1通过度量充分性来增强测试例6.1考虑编写程序sumProduct,其需求如下:R1:输入两个整数x和y。R2.1:若x<y,求x与y之和,并输出结果。R2.2:若x≥y,求x与y之积,并输出结果。测试集T={t:<x=2,y=3>}对于充分性不足的测试集,通过增加新的测试用例,对其进行测试增强,借此提高发现软件错误的几率。3ppt课件6.1测试充分性基础若程序包含循环结构,则只要T遍历过循环体0次和1次即可。覆盖域的有效性可以通过对软件执行测试用例,观察具体的元素是否确实被覆盖了来验证。然而无效性却不能通过执行有限个数的测试用例来验证。对于更复杂的程序,确定一个元素是否有效是很困难的,因此,通过用t测试P试图覆盖元素e以增强测试集可能会失败。如果覆盖域中存在无效元素,那么一个测试集覆盖域中的所有有效元素时就说该测试集是充分的。因此,在有无效元素的情况下,覆盖率小于1时,测试也可能是充分的。4ppt课件6.1测试充分性基础1begin2intx,y;3intz;4input(x,y);z=0;5if(x<0andy<0){6z=x*x;7if(y≥0)z=z+1;8}9elsez=x*x*x;10output(z);11end5ppt课件6.2.1

语句覆盖和块覆盖基本思想是:设计若干测试用例,运行被测程序,使程序中每个可执行语句(块)至少执行一次。针对c语言,当定义基本控制流的测试充分性准则时,把所有的声明性语句都当作执行语句。基本块:只有一个输入点和一个输出点的一组连续语句。16ppt课件例:实现一个简单的数学运算

inta,b;doublec;scanf(“%d,%d,%f”,&a,&b,&c)If(a>0Andb>0)c=c/a;If(a>1orc>1)c=c+1;c=b+c7ppt课件语句覆盖只需设计一个测试用例:a=2,b=1,c=6;即达到了语句覆盖。8ppt课件语句覆盖优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。缺点:由于这种测试方法仅仅针对程序逻辑中显示存在的语句,但对于隐藏的条件是无法测试的。语句覆盖是最弱的逻辑覆盖。9ppt课件6.2.2条件和判定任何计算结果为真或假的表达式就是一个条件,这种表达式也称作谓词。一个条件可能是简单的或复合的。简单条件除了用运算符外,它由变量和至多一个关系运算符构成;复合条件由两个或多个简单条件经一个或多个布尔运算符连接而成。任何一个条件都可在适当的上下文环境下当作一个判定。(if,while,switch)一个判定有三种可能的输出:真、假和未定义。10ppt课件6.2.3判定覆盖基本思想是:设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。11ppt课件6.2.3判定覆盖a=2,b=1,c=6可覆盖判断M的Y分支和判断Q的Y分支;

a=-2,b=-1,c=-3可覆盖判断M的N分支和判断Q的N分支

。这两组测试用例可覆盖所有判定的真假分支。判断M判断Q12ppt课件6.2.3判定覆盖【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。13ppt课件6.2.4条件覆盖基本思想是:设计若干测试用例,执行被测程序以后要使每个判断中每个条件的可能取值至少满足一次。114ppt课件6.2.4条件覆盖判断M表达式:设条件a>0

取真记为T1

假F1

条件b>0

取真记为

T2

假F2判断Q表达式:设条件a>1

取真记为T3

假F3

条件c>1

取真记为T4

假F4判断M判断Q15ppt课件6.2.4条件覆盖

测试用例覆盖条件具体取值条件a=2,b=-1,c=-2T1,F2,T3,F4a>0,b<=0,a>1,c<=1a=-1,b=2,c=3F1,T2,F3,T4a<=0,b>0,a<=1,c>1它覆盖了判定M的N分支和判断Q的Y分支。我们用条件覆盖设计的思想就是让测试用例能覆盖T1、T2、T3、T4、F1、F2、F3、F4。16ppt课件6.2.4条件覆盖

【优点】:增加了对条件判定情况的测试,增加了测试路径。【缺点】:条件覆盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断M的Y分支和判断Q的N分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。17ppt课件6.2.5条件/判定覆盖

基本思想是:设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。118ppt课件判断M判断Q6.2.5条件/判定覆盖按照条件/判定覆盖的要求,我们设计的测试用例要满足如下条件:所有条件可能至少执行一次取值;所有判断的可能结果至少执行一次。要满足T1、T2、T3、T4F1、F2、F3、F419ppt课件6.2.5条件/判定覆盖测试用例覆盖条件覆盖判断a=2,b=1,c=6T1,T2,T3,T4M的Y分支和Q的Y分支a=-1,b=-2,c=-3F1,F2,F3,F4M的N分支和Q的N分支判断M判断Q要满足T1、T2、T3、T4F1、F2、F3、F420ppt课件6.2.5条件/判定覆盖【优点】:能同时满足判定、条件两种覆盖标准。【缺点】

:条件/判定覆盖准则的缺点是未考虑条件的组合情况。21ppt课件6.2.6多重条件覆盖基本思想是:设计足够的测试用例,使得所有可能的条件取值组合至少执行一次122ppt课件6.2.6多重条件覆盖按照条件组合覆盖的基本思想,对于前面的例子,我们把每个判断中的所有条件进行组合,设计组合条件如表所示,而我们设计的测试用例就要包括所有的组合条件。编号覆盖条件取值判定条件取值具体条件取值1T1,T2M取Ya>0,b>02T1,F2M取Na>0,b<=03F1,T2M取Na<=0,b>04F1,F2M取Na<=0,b<=05T3,T4Q取Ya>1,c>16T3,F4Q取Ya>1,c<=17F3,T4Q取Ya<=1,c>18F3,F4Q取Na<=1,c<=123ppt课件6.2.6多重条件覆盖测试用例覆盖条件覆盖判断覆盖组合a=2,b=1,c=6T1,T2,T3,T4M取Y分支,Q取Y分支1,5a=2,b=-1,c=-2T1,F2,T3,F4M取N分支,Q取Y分支2,6a=-1,b=2,c=3F1,T2,F3,T4M取N分支,Q取Y分支3,7a=-1,b=-2,c=-3F1,F2,F3,F4M取N分支,Q取N分支4,824ppt课件6.2.6多重条件覆盖【优点】:条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。【缺点】:线性地增加了测试用例的数量。(要求覆盖复合条件中所有简单条件的真值)25ppt课件6.2.7路径覆盖基本思想是:设计所有的测试用例,来覆盖程序中的所有可能的执行路径。126ppt课件6.2.7路径覆盖测试用例覆盖组合覆盖路径a=2,b=1,c=61,51-2-4a=1,b=1,c=-31,81-2-5a=-1,b=2,c=34,71-3-4a=-1,b=-2,c=-34,81-3-527ppt课件6.2.7路径覆盖【优点】

:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。【缺点】

:需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。28ppt课件29ppt课件

从前面的例子我们可以看到,采用任何一种覆盖方法都不能满足我们的要求,所以,在实际的测试用例设计过程中,可以根据需要将不同的覆盖方法组合起来使用,以实现最佳的测试用例设计。30ppt课件条件组合覆盖结合路径覆盖测试用例覆盖条件覆盖路径覆盖组合a=2,b=1,c=6T1,T2,T3,T4P1:(1-2-4)1,5a=1,b=1,c=-3T1,T2,F3,F4P2:(1-2-5)1,8a=-1,b=2,c=3F1,F2,F3,T4P3:(1-3-4)4,7a=-1,b=-2,c=-3F1,F2,F3,F4P4:(1-3-5)4,8a=2,b=-1,c=-2T1,F2,T3,F4P3:(1-3-4)2,6a=-1,b=2,c=3F1,T2,F3,T4P3:(1-3-4)3,731ppt课件6.3数据流概念数据流图:把数据源、数据接受、数据存储和数据处理作为节点描述的一个图形,数据之间的逻辑体现为节点之间的边。数据流测试:根据代码中变量的使用情况进行的测试,主要关注软件中的数据定义和使用。32ppt课件6.3定义和使用定义:将数据存储起来,存储单元的内容改变使用:将数据取出来,存储单元的内容不变33ppt课件6.3.2c-use和p-usec-use(c表示计算):1.变量被用在赋值语句的表达式、输出语句中;(z=x+1;output(x);)2.变量被被当作参数传递给调用函数;(foo(x*x))3.变量被用在下标表达式中.(A[i]=2*x)p-use(p表示谓词):

变量被用在分支语句的条件表达式中。

(if(z>0)output(z);)34ppt课件6.3.3全局和局部的定义与使用一个变量可能在同一个基本块中被定义、使用和重定义。考虑如下含有3条语句的基本块:

p=y+z;x=p+1;p=z*z;

这个基本块定义了p,使用了p,并且还重定义了p。p的第一个定义是局部的,这个定义被同一基本块中的第二个定义屏蔽了,因此,它的值未能超越此基本块。p的第二个定义则是全局的。注:在本章中,我们只关心全局定义和使用,局部定义与使用在研究基于数据流的测试充分性时没有意义。35ppt课件6.3.4数据流图

程序的数据流图(DFG)也称为def-use图,它勾画了程序中变量在不同基本块间的定义流。:定义在基本块i中的变量的集合。程序中的变量声明、赋值语句、输入语句和传址调用都可以用来定义变量。:在基本块i中有的变量的集合。:在基本块i中有的变量的集合。例:p=y+z;foo(p+q,number);//传值参数

A[i]=x+1;if(x>y){......}36ppt课件6.3.4数据流图

构造数据流图的过程:步骤1

计算P中每个基本块i的、和。步骤2

将结点集N中的每个结点i与、和关联起来。步骤3

针对每个具有非空集并且在条件C处结束的结点i,如果条件C为真时执行的是边(i,j),C为假时执行的是边(i,k),分别将边(i,j),(i,k)与C,!C关联起来。

37ppt课件1begin2intx,y;3intz;4input(x,y);z=0;5if(x<0andy<0){6z=x*x;7if(y≥0)z=z+1;8}9elsez=x*x*x;10output(z);11end38ppt课件6.3.5def-clear路径def-clear路径:假设变量x在结点i中定义,在结点j中使用,考虑路径p=(i,n1,n2,...,nk,j),k≥0,路径p从结点i开始,结束于结点j,并且结点i、j在子路径n1,n2,...,nk中未出现,如果变量x没有在子路径n1,n2,...,nk中被重定义,称p是变量x的def-clear路径。在这种情况下,也称x在结点i处的定义,即di(x)在结点j处是活跃的。39ppt课件6.3.6def-use对def-use对勾画了变量的一次特定的定义和使用。我们只关心两种类型的

温馨提示

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

评论

0/150

提交评论