第4章白盒测试一_第1页
第4章白盒测试一_第2页
第4章白盒测试一_第3页
第4章白盒测试一_第4页
第4章白盒测试一_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

第四章白盒测试4.1

程序结构分析

程序框图控制流图控制流图节点:代替操作、条件判断及汇合点控制流线或弧:控制的顺序

1234512345acbdef程序框图控制流图对程序的要求不应包含:(1)转向并不存在的标号(2)没有用的语句标号(3)从程序入口无法到达的语句(4)不能到达停机语句的语句程序第三种情况的检测方法Begin

清栈; 为入口节点做标记; 入口节点入栈;

while栈非空do begin n:=栈顶节点; 出栈; 为所有未标记的n的后继做标记且进栈;

endEnd处理后,未做标记的节点为不可达语句15432入口1324数据流分析定义:变量被语句定义:某一语句执行时能改变变量V的值,则称V是被该语句定义的。变量被语句引用:某一语句的执行应用了内存变量V的值,则称变量被语句引用。

例语句:X:=Y+Z

定义了变量X,引用了Y,Z语句:ifY>Zthen…

引用了Y和Z语句:READX定义了XWRITEX引用了X语句的执行也可以使变量失去定义,成为无意义。

循环语句中循环变量在正常出口时, 就变成无意义。1237111048569节点被定义变量被引用变量

1X,Y,Z

2XW,X

3X,Y

4Y,Z

5YV,Y

6ZV,Z

7VX

8WY

9ZV

10ZZ

11Z语句2使用变量W,但在此之前并未定义语句5,6使用变量V,在第一次执行循环时也未定义语句6对Z的定义从未使用语句8对W的定义从未使用程序中存在的两个错误和两个异常两个错误语句2使用变量W,但在此之前并未定义语句5,6使用变量V,在第一次执行循环时也未定义两个异常语句6对Z的定义从未使用语句8对W的定义从未使用可达性定义语句i对变量V的定义,表示为Vi如果在控制流图中一条路径并未对变量V定义,那么该路经就是变量V的明确定义如果从节点i到节点j的入口(或出口),变量V有一明确定义路径,定义Vi便说是达到了节点j的入口(或出口)。对任意一个节点i,si:表示达到i的入口的变量定义的集合ti:表示达到i的出口的变量定义的集合pi:是节点保存的所有定义的集合ci:是节点中生成的定义的集合

ti=(si∩pi)∪ci

达到节点i的顶点的定义集合是达到其前趋出口的定义的集合若xi表示节点i前趋的集合,则可表示成:

有n个节点,则可以得到一个方程组 设初始si=di,依次对s1,s2,s3,…求解方程 当s的值不再改变时,就得到了所有解 每个si的集合可用一个二进制向量表示,程序中的每个变量定义对应于向量的分量。如果对应的定义属于si,则该分量取值为1,否则为0。

pi和di也用同样的方法表示x1x2y1y5z1z6z9z10v7w82111311456711819110111算法BeginFori=1tondosi=diCHANGE=true;WhileCHANGEdo Begin fori=1tondo Begin Temp= ifTemp≠si then{CHANGE=true;si=temp} endEndEndx1x2y1y5z1z6z9z10v7w821113111111141111111511111116111111171111111181111111191111111110111111111111111说明引用未定义变量:对每一个节点,依次考虑语句引用的每一个变量,如果没有定义到达,就是一个错误。1.节点2,引用了W,但是W的定义并没有达到节点2,所以有一个错误。2.节点5,6引用了变量V,表中可达,但第一次使用时没有赋值,无法查出。未曾使用的定义:对每一个变量V的定义,依次查看V达到的每一个节点,如果没有引用变量的相应语句,就是一个异常3.定义Z6,可以到达7,8,9,然而没有语句引用4.定义W8,没有被语句引用找出程序语句之间的隐含信息,以便于错误定位。例:求M,N的商,Q为商,R为余数语句Begin1Q:=02R:=M3WhileR>=Ndobegin4Q:=Q+15R:=R-Nendend信息流分析每一条语句执行时与输入变量和输出变量之间的关系MN12●3●●4●●5●●QR1●2●●3●●4●5●●QRM●●N●●程序排错程序验证结果分析信息流分析应用于

程序排错结果分析程序验证4.2逻辑覆盖测试测试到何种程度—测试数据设计准则语句覆盖判定覆盖条件覆盖判定-条件覆盖路径覆盖举例(A>1)AND(B=0)(A=2)OR(X>1)

X=X/A

X=X+1FTFTacbde语句覆盖使程序中的每一条可执行语句至少执行一次

ABX执行路径Case1203aceCase2213abe

判定覆盖使程序中的每个判断的取真分支和取假分支至少经历一次,即判断的真假值均被满足,又称为分支覆盖。

ABX执行路径Case1203aceCase3101abdCase4303acdCase5211abe条件覆盖:使程序的判定中每个条件的真假取值至少满足一次例中设条件A>1B=0A=2X>1T1T2T3T4取真表为取假表为〒1〒2〒3〒4ABX经历覆盖分支覆盖条件203101211aceabdabecebdbeT1T2T3T4〒1T2〒3〒4T1〒2T3〒4另一例:2分支4条件8取值ABX经历覆盖分支覆盖条件103211abeabebebe〒1T2〒3T4T1〒2T3〒4判定/条件覆盖:判定中每个条件的所有可能取值至少满足一次,每个判定的分支至少执行一次。上例中需考虑4个条件的8种组合②A>1,B≠0T1〒2①A>1,B=0T1T2③A≤1,B=0〒1T2④A≤1,B≠0〒1〒2⑥A=2X≤1T3〒4⑤A=2X>1T3T4⑦A≠2X>1〒3T4⑧A≠2X≤1〒3〒4ABX覆盖组号经历覆盖条件203211102111①⑤②⑥③⑦④⑧aceaceabeabdT1T2T3T4T1〒2T3〒4〒1T2〒3T4〒1〒2〒3〒4(事实上3组已够,第一组冗余)路径覆盖设计足够多的测试用例,覆盖程序中的每条可能路经。

ABX执行路径203ace101abd211abe301acd带有循环的路径覆盖简化循环的假设不进入循环只进入一次循环1234657acghbfdei8j不进入循环的路径表达式和状态序列路径表达式状态序列

abefj

1-2-3-5-7-8

acgj

1-2-6-7-8只进入一次循环abdhbefj1-2-3-4-2-3-5-7-8abdhcgj1-2-3-4-2-6-7-8acgibefj1-2-6-7-2-3-5-7-8acgicgj1-2-6-7-2-6-7-8abdhbefibefj1-2-3-4-2-3-5-7-2-3-5-7-8abdhbeficgj1-2-3-4-2-3-5-7-2-6-7-8abdhcgibefj1-2-3-4-2-6-7-2-3-5-7-8abdhcgicgj1-2-3-4-2-6-7-2-6-7-8acgibdhbefj1-2-6-7-2-3-4-2-3-5-7-8acgibdhcgj1-2-6-7-2-3-4-2-6-7-8

(1)条件测试路径选择

当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构。对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例;对于连锁型分支结构,若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径。循环测试路径选择循环分为4种不同类型:简单循环、连锁循环、嵌套循环和非结构循环。

(1)简单循环①零次循环:从循环入口到出口

②一次循环:检查循环初始值

③二次循环:检查多次循环

④m次循环:检查在多次循环时最大次数循环、比最大次数多一次、少一次的循环。例:求最小值k=i;for(j=i+1;j<=n;j++)

if(A[j]<A[k])k=j;

k=i;j=i+1;j<=n?A[j]<A[k]?k=jj++fdcabe测试用例选择

①对最内层循环做简单循环的全部测试。所有其它层的循环变量置为最小值;

②逐步外推,对其外面一层循环进行测试。测试时保持所有外层循环的循环变量取最小值,所有其它嵌套内层循环的循环变量取“典型”值。

③反复进行,直到所有各层

温馨提示

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

评论

0/150

提交评论