《软件工程理论与实践》-第十一章_第1页
《软件工程理论与实践》-第十一章_第2页
《软件工程理论与实践》-第十一章_第3页
《软件工程理论与实践》-第十一章_第4页
《软件工程理论与实践》-第十一章_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第11章结构化软件测试技术

【目标】

本章的目标是介绍结构化软件的侧试技术。读完本章,读者将了解以下内容。白盒侧试技术;黑盒侧试技术。下一页返回第11章结构化软件测试技术

结构化测试技术是针对采用结构化分析、结构化设计和编码实现的软件进行测试的技术。结构化测试技术包括:白盒测试技术(且1节)、黑盒测试技术(11.2节)等上一页下一页返回11.1白盒测试

白盒测试又称为结构测试,是根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。白盒测试把测试对象看成一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。正如上一章所讲的,不管是白盒测试,还是黑盒测试,都不可能进行穷尽式测试。因为可能的测试输入数据数目往往达到天文数字。在测试阶段既然穷举测试不可行,为了节省时间和资源,提高测试效上一页下一页返回11.1白盒测试

率,就必须要从数量极大的可用测试用例中精心地挑选少量的测试数据,使得采用这些测试数据能够达到最佳的测试效果,能够高效率地把隐藏的错误揭露出来。本节讲述利用白盒测试技术测试软件时设计测试用例的典型技术,包括逻辑覆盖和基本路径测试。上一页下一页返回11.1白盒测试

11.1.1逻辑覆盖

逻辑覆盖法是以程序内部的逻辑结构为基础的设计测试用例的技术。从覆盖源程序语句和路径的详尽程度分析,有以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。为了描述方便,下面的介绍将以图11.1所示的程序流程图为例。图中,用L1,L2和L3分别表示3条不同的路径。1.语句覆盖语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。上一页下一页返回11.1白盒测试

为了使每条语句都被执行到,需要至少两条测试用例。

(1)x=50,y=50,执行路径L1.(2)x=70,y=90,执行路径L2.

语句覆盖可以很直观地从源代码得到测试用例,无须细分每条判定表达式。但是,由于这种测试方法仅仅针对程序逻辑中显式存在的语句,对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。另外,语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。

2.判定覆盖判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即程序中的每个分支至少执行一次。每个判断取真、取假至少执行一次。上一页下一页返回11.1白盒测试

满足判定覆盖的测试用例需要有3组数据。

(1)x=80,y=80,执行路径L1.(2)x=90,y=50,执行路径L2.(3)x=50,y=50,执行路径L3.

判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。但是,判定语句往往是由多个逻辑条件组合而成(如判定语句中包含AND,OR、CASE),若仅仅判断其整体最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

上一页下一页返回11.1白盒测试

3.条件覆盖条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

满足条件覆盖的测试用例需要两组数据。

(1)x=90,y=40,执行路径L3.(2)x=60,y=90,执行路径L2.

条件覆盖考虑了单个判定中的每个条件,增加了对符合判定情况的测试。但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真、一次为假,而不考虑整体的判定结果。上一页下一页返回11.1白盒测试

4.判定/条件覆盖设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。满足判定/条件覆盖的测试用例需要有4组数据。

(1)x=90,y=90,执行路径L1(2)x=50,y=50,执行路径L3(3)x=90,y=60,执行路径L2(4)x=60,y=90,执行路径L2

判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。但是,判定/条件覆盖准则的缺点是未考虑条件的组合情况。上一页下一页返回11.1白盒测试

5.条件组合覆盖要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。满足条件组合覆盖的测试用例需要有7组数据。(1)x=90,y=90,执行路径L1(2)x=90,y=60,执行路径L2(3)x=90,y=30,执行路径L3(4)x=60,y=90,执行路径L2(5)x=30,y=90,执行路径L3(6)x=70,y=70,执行路径L3(7)x=50,v=50,执行路径L3上一页下一页返回11.1白盒测试

条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则,是针对判定和条件最严格的覆盖标准。但是,条件组合覆盖线性地增加了测试用例的数量。

6.路径覆盖设计足够的测试用例,覆盖程序中所有可能的路径。满足路径覆盖的测试用例需要有4组数据。

(1)x=80,y=80,执行路径L1(2)x=50,y=50,执行路径L3(3)x=50,y=90,执行路径L2(4)x=90,y=50,执行路径L2

上一页下一页返回11.1白盒测试

需要指出的是测试数据(3)和(4)是属于不同的分支情况,在路径覆盖里要全部选到。由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。上一页下一页返回11.1白盒测试

11.1.2基本路径覆盖

基本路径覆盖是由TomMcCabc提出的一种白盒测试技术。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。基本路径测试法认为程序的复杂性主要是由选择条件和循环条件引起的。设计出的测试用例能保证程序中每条语句至少执行一次,而且每个条件取真和取假情况均会测试到。包括以下4个步骤和1个工具方法。

1)程序的控制流图描述程序控制流的一种图示方法。程序的控制流图有两种图形符号一圆圈和箭头。圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句,箭头称为边或连接,代表控制流。上一页下一页返回11.1白盒测试

2)程序环路复杂度

McCabc复杂性度量,等于程序控制流图中的区域数或源程序中的单条件判定结点数加1。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。

3)确定独立路径的基本集合根据环路复杂度选择独立路径集合。

4)准备测试用例选择测试用例,确保基本路径集中的每一条路径的执行。工具方法是一个图形矩阵,在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。上一页下一页返回11.1白盒测试

在将程序流程图简化成控制流图时,应注意:在选择或多分支结构中,分支的汇聚处应有一个汇聚结点;如果判断中的条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。边和结点圈定的区域称为区域。计算环路复杂度时,控制流图中的区域数包括图形外的区域,即封闭区域数加一个开区域。下面以第8章的普调工资为例(如图8.7所示)来说明利用基本路径法选择测试用例的过程。

1)将过程描述转换成控制流图图8.7中,存在多条件的判定(对职务的判定),首先需要转换为单条件判定的组合。上一页下一页返回11.1白盒测试

转换后的结果如图11.2所示。

图11.3所示为与图8.7对应的控制流图。

2)计算环路复杂度环路复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目,为了确保所有语句至少执行一次的测试数量的上界。图11.3中的封闭区域有7个,加上最外面的开区域,共有8个区域。根据环路复杂度的计算方法,该图的复杂度为8。

3)确定独立路径的基本集合一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。根据上面的计算方法,可得出8个独立的路径。独立路径的选择有多种方法,下面给出了一组独立路径。上一页下一页返回11.1白盒测试

路径1:1--2--3--4--6--14--16--17--18路径2:1--2--3--4--6--14--16--17--2。。。路径3:1--2--3--4--7--10--14--16--17--18路径4:1--2--3--4--7--11--14--16--17—18路径5:1--2--3--5--8--15--16--17--18路径6:1--2--3--5--9--12--15--16--17--18路径7:1--2--3--5--9--13--15--16--17—18路径8:1--2--3--5--9--13--15--16--3。。

路径后面带有省略号表示可以后接控制结构其余部分的任意路径。图中的判断结点3表示性别,4和5表示职务是处长,7和9表示职务是科长,16表示表里是否多于一个员工,17表示表里是否多于一个部门。上一页下一页返回11.1白盒测试

4)准备测试用例为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到。令X表示部门数,Y表示当前处理部门的员工数(原程序里假定至少有一个部门,且每个部门至少有一个员工),Z表示当前处理员工的性别,W表示当前处理员工的职务。满足上面例子基本路径集的测试用例如下。路径1:1--2--3--4--6--14--16--17--18测试用例:X=1,Y=1,G=.‘女”,W=.‘处长”预期结果:员工的工资额增加8路径2:1--2--3--4--6--14--16--17--2。。。测试用例:X=2,Y=1,G=“女”,w“处长”预期结果:当前处理的员工工资额增加8上一页下一页返回11.1白盒测试

路径3:1--2--3--4--7--10--14--16--17—18测试用例:X=1,Y=1,G=.‘女”,w=.‘科长”预期结果:员工的工资额增加6路径4:1--2--3--4--7--11--14--16--17—18测试用例:X=1,Y=1,G=.‘女”,W=“科员”预期结果:员工的工资额增加4路径5:1--2--3--5--8--15--16--17—18测试用例:X=1,Y=1,G=.‘男”,w=.‘处长”预期结果:员工的工资额增加9上一页下一页返回11.1白盒测试

路径6:1--2--3--5--9--12--15--16--17—18测试用例:X=1,Y=1,G=.‘男”,w=‘科长”预期结果:员工的工资额增加7路径7:1--2--3--5--9--13--15--16--17—18测试用例:X=1,Y=1,G=.‘男”,w=.‘科员”预期结果:员工的工资额增加5路径8:1--2--3--5--9--13--15--16--3。。测试用例:X=1,Y=2,G=“男”,w=“科员”预期结果:当前处理的员工工资额增加5上一页下一页返回11.1白盒测试

执行完每一条测试用例,可以将实际结果和预期结果进行对比。当所有的测试用例都执行完后,就能保证程序中的每条语句至少执行一次,而且每个条件取真和取假情况均会测试到。导出控制流图和决定基本测试路径的过程均可以机械化,为了开发辅助基本路径测试的软件工具,称为图形矩阵的数据结构很有用。利用图形矩阵可以实现自动地确定控制流图的环路复杂度,即基本路径集的元素个数。一个图形矩阵是一个方阵,其行/列数控制流图中的结点数,每行和每列依次对应到一个被标识的结点,矩阵元素对应到结点间的连接(即边)。在图中,控制流图的每一个结点都用数字加以标识,每一条边都用字母加以标识。如果在控制流图中第i个结点到第1个结点有一个名为x的边相连接,则在对应的图形矩阵中第i行/第j列有一个非空的元素x上一页下一页返回11.1白盒测试

对每个矩阵项加入连接权值,图矩阵就可以用于在测试中评估程序的控制结构,连接权值为控制流提供了另外的信息。最简单的情况下,连接权值是1(存在连接)或0(不存在连接)。连接权值为1表示存在一个连接,在图中如果一行有两个或更多的元素1,则这行所代表的结点一定是一个判定结点,通过连接矩阵中有两个以上(包括两个)元素为1的个数,就可以得到确定该图环路复杂度的另一种算法。上一页返回11.2黑盒测试

黑盒测试又称为功能测试或数据驭动的测试。黑盒测试是把测试对象看成一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。如同白盒测试一样,黑盒测试同样无法实现穷尽式测试。本节讲述利用黑盒测试技术测试软件时设计测试用例的典型技术,包括等价类法和边界值分析法。下一页返回11.2黑盒测试

11.2.1等价类法

等价类设计方法是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例。等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定,测试某等价类的代表值就等于对这一类其他值的测试。等价类划分有两种不同的情况一有效等价类和无效等价类,设计时要同时考虑这两种等价类。

下面给出6条确定等价类的原则。

(1)在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价举上一页下一页返回11.2黑盒测试

(2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,则可以确立一个有效等价类和一个无效等价类。

(3)在输入条件是一个布尔量的情况下,可以确立一个有效等价类和一个无效等价类。

(4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可以确立,i个有效等价类和一个无效等价类。

(5)在规定了输入数据必须遵守的规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

(6)当已划分的等价类内各元素在程序处理中的方式不同时,则应将该等价类进一步划分为更小的等价类。上一页下一页返回11.2黑盒测试

在确立了等价类后,可建立等价类表,列出所有划分出的等价类。然后从划分出的等价类中按以下的3个原则设计测试用例。

(1)为每一个等价类规定一个唯一的编号。

(2)设计一个新的测试用例,使其覆盖尽可能多的尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。

(3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

例:程序规定,输入3个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形、等边三角形时,分别作计算。用等价类划分方法为该程序进行测试用例设计。

上一页下一页返回11.2黑盒测试

解:设a,b、c代表三角形的3条边。

(1)分析题目中给出的和隐含的对输入条件的要求:整数、3个数、正数

温馨提示

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

最新文档

评论

0/150

提交评论