白盒测试用例设计方法_第1页
白盒测试用例设计方法_第2页
白盒测试用例设计方法_第3页
白盒测试用例设计方法_第4页
白盒测试用例设计方法_第5页
全文预览已结束

下载本文档

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

文档简介

1/1白盒测试用例设计方法1白盒测试用例设计方法

1.1白盒测试简介

白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,一般多发生在单元测试阶段。白盒测试方法主要包括逻辑覆盖法,基本路径法,程序插装等。

这里重点介绍一下常用的基本路径法,对于逻辑覆盖简单介绍一下覆盖准则。

1.2基本路径法

在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出独立路径集合,从而设计测试用例,设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。

在介绍基本路径测试方法(又称独立路径测试)之前,先介绍流图符号:

图1

如图1所示,每一个圆,称为流图的节点,代表一个或多个语句,流程图中的处理方框序列和菱形决策框可映射为一个节点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个节点,即使该节点并不代表任何语句,例如,图2中两个处理方框交汇处是一个节点,边和节点限定的范围称为区域。

图2

任何过程设计表示法都可被翻译成流图,下面显示了一段流程图以及相应的流图。

注意,程序设计中遇到复合条件时(逻辑or,and,nor等),生成的流图变得更为复杂,如(c)流图所示。此时必须为语句IFaORb中的每一个a和b创建一个独立的节点。

(c)流图

独立路径是指程序中至少引进一个新的处理语句集合,采用流图的术语,即独立路径必须至少包含一条在定义路径之前不曾用到的边。例如图(b)中所示流图的一个独立路径集合为:

路径1:1-11

路径2:1-2-3-4-5-10-1-11

路径3:1-2-3-6-8-9-10-1-11

路径4:1-2-3-6-7-9-10-1-11

上面定义的路径1,2,3和4包含了(b)流图的一个基本集,如果能将测试设计为强迫运行这些路径,那么程序中的每一条语句将至少被执行一次,每一个条件执行时都将分别取true和false(分支覆盖)。应该注意到基本集并不唯一,实际上,给定的过程设计可派生出任意数量的不同基本集。如何才能知道需要寻找多少条路径呢?可以通过如下三种方法之一来计算独立路径的上界:

1.V=E-N+2,E是流图中边的数量,N是流图节点数量。

2.V=P+1,P是流图中判定节点的数量

3.V=R,R是流图中区域的数量

例如,(b)流图可以采用上述任意一种算法来计算独立路径的数量

1.V=11条边-9个节点+2=4

2.V=3个判定节点+1=4

3.流图有4个区域,所以V=4

由此为了覆盖所有程序语句,必须设计至少4个测试用例使程序运行于这4条路径。

在采用基本路径测试方法中,获取测试用例可参考以下方式:

?通过非路径分析得到的测试用例;

?找到尚未测试过的路径并生成相应的测试用例;

?指定特定路径生成相应的测试用例。

?对程序中的循环作了执行了零次和一次的限制,这样程序路径的数目就是有限的。

?如果程序的数目有限,就可采用枚举法得到所有的路径。

?完成若干测试用例后,就可以知道所测路径是哪些,尚有哪些待测路径。

?在指出要测试的路径以后,可以自动生成相应的测试用例。

1.3逻辑覆盖

1.3.1循环测试简介

逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它的主要方法有:语句覆盖;判定覆盖;条件覆盖;判定—条件覆盖;条件组合覆盖;路径覆盖。举例如下:

1.3.2语句覆盖

语句覆盖:语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

在图例中,正好所有的可执行语句都在路径L1上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。

测试用例的设计格式如下:【输入的(A,B,X),输出的(A,B,X)】为图例设计满足语句覆盖的测试用例是:【(2,0,4),(2,0,3)】

覆盖ace【L1】

1.3.3判定覆盖

判定覆盖:判定覆盖又称为分支覆盖。就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。对于图例,如果选择路径L1和L2,就可得满足要求的测试用例:

【(2,0,4),(2,0,3)】覆盖ace【L1】【(1,1,1),(1,1,1)】覆盖abd【L2】

如果选择路径L3和L4,还可得另一组可用的测试用例:

【(2,1,1),(2,1,2)】覆盖abe【L3】【(3,0,3),(3,0,1)】覆盖acd【L4】

()()()()()

AX

BAX≤≤≠≠≤11021andorandand

1.3.4条件覆盖

条件覆盖:条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。

在图例中,我们事先可对所有条件的取值加以标记。例如,对于第一个判断:

条件A>1取真为,取假为;条件B=0取真为,取假为。对于第二个判断:

条件A=2取真为,取假为;条件X>1取真为,取假为。

测试用例覆盖分支条件取值

【(2,0,4),(2,0,3)】L1(c,e)【(1,0,1),(1,0,1)】L2(b,d)【(2,1,1),(2,1,2)】L3(b,e)或

测试用例

覆盖分支

条件取值

【(1,0,3),(1,0,4)】L3(b,e)

【(2,1,1),(2,1,2)】L3(b,e)

1.3.5判定-条件覆盖

判定-条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的所有可能取值至少执行一次。

例如:

测试用例覆盖分支条件取值

【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)(A=2)and(B=0)or(A>1)and(B=0)and(X/A>1);(A≤1)and(X≤1)or(B≠0)and(A≠2)and(X≤1)

4321TTTT4321TTTT4321TTTT4321TTTT4321TTTT4321TTTT1T1T2T2T3T3T4T4T4321TTTT

1.3.6条件组合覆盖

条件组合覆盖:条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。

例:①A>1,B=0作②A>1,B≠0作③A≯1,B=0作

④A≯1,B≠0作⑤A=2,X>1作⑥A=2,X≯1作⑦A≠2,X>1作⑧A≠2,X≯1作

测试用例覆盖条件

覆盖组合【(2,0,4),(2,0,3)】(L1)①,⑤

【(2,1,1),(2,1,2)】(L3)4321TTTT②,⑥【(1,0,3),(1,0,4)】(L3)4321TTTT③,⑦【(1,1,1),(1,1,1)】(L2)4321TTTT④,⑧

1.3.7路径覆盖

路径覆盖:路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。

测试用例通过路径覆盖条件【(2,0,4),(2,0,3)】ace(L1)4321TTTT

【(1,1,1),(1,1,1)】abd(L2)4321TTTT【(1,1,2),(1,1,3)】abe(L3)4321TTTT【(3,0,3),(3,0,1)】acd(L4)4321TTTT

21TT21TT21TT21TT43TT43TT43TT43TT4

321TTTT

循环测试主要关注循环体结构的正确性,对循环变量运用类似于边界值测试的方法以验证循环体结构的正确性。

循环测试主要由四种不同类型的循环结构

简单循环;

嵌套循环;

连接循环;

非结构循环

1.4.1简单循环

如果n是循环次数,那么测试用例应包括

直接跳过循环体;

只执行一遍循环体;

连续执行两遍循环体;

如果循环次数为n,执行m(mR)

Q=Q-R;

elseR=R-Q;

}

returnQ;

}

为了记录改程序中语句的执行次数,我们使用插桩技术插入如下语句:

C(i)=C(i)+1,i=1,2,(6)

插桩之后的流程图如下:

在程序入口处插入对

计数器C(i)的初始化

语句

在程序出口处加

入打印语句

图中虚线框中的内容并不是源程序的内容,而是我们为了记录语句的执行次数而插入的。虚线框中的程序就是为了完成计数。形式就是

C(n)=C(n)+1;n=1,2,3,……,n;

该程序从入口开始,到出口执行结束。凡经历的计数语句都能记录下该程序点的执行次数。

如果我们在程序的入口处还插入了对计数器C(i)初始化的语句,在出口处插入了打印这些计数器的语句,就构成了完整的插桩程序。它就能记录并输出在各程序点上语句的实际执行次数。

下图为插桩之后的程序,箭头所指为插入的语句。源程序的语句已略去。

设计插桩程序时需要考虑的问题包括:

(1)探测哪些信息。

这个问题需要具体问题具体分析。

(2)在程序的什么部位设置探测点。

针对这个问题,在手机测试中,通常在下列一些部位设置探测点:

程序块的第1个可执行语句之前

for,do,do-while,dountil等循环语句处

温馨提示

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

评论

0/150

提交评论