测试用例之路径覆盖_第1页
测试用例之路径覆盖_第2页
测试用例之路径覆盖_第3页
测试用例之路径覆盖_第4页
全文预览已结束

下载本文档

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

文档简介

路径覆盖测试吕金和(沈阳市电化教育馆,辽宁沈阳110032)摘要随着软件的广泛应用及其规模和复杂度不断地提高,软件测试的方法也有许多。本文讨论了完全路径覆盖测试方法和基于控制流图的路径测试的改进方法。关键词完全路径覆盖;基于控制流图1引言软件测试的步骤是单元测试、集成测试、系统测试、确认测试和回归测试。单元测试是软件测试的基本组成部分,也是最重要的部分之一。而单元测试主要采用的是白盒测试的技术。白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。一般用来分析程序的内部结构。它依赖于对程序细节的严密验证,针对特定条件和循环设计测试用例,对程序的逻辑路径进行测试。通过在程序的不同点检验程序状态,来判定其实际情况是否和预期的状态相一致。用这种方法进行程序测试时,测试者可以看到被测程序,并利用其分析程序的内部构造。因此,白盒测试要求对被测程序的结构特性做到一定程度的覆盖,并以软件中的某类成分是否都已经得到测试为准则来判断软件测试的充分性,也称为基于覆盖的测试技术。例如,语句覆盖是一种逻辑覆盖准则,它要求选择测试数据使得程序中所有语句都得到运行,并根据是否所有语句都得到了运行来决定测试是否可以终止。到目前为止,已提出了几十种覆盖技术。在这些覆盖的技术中,覆盖率最高的就是路径覆盖技术。路径覆盖,要求程序的每条可能路径都至少执行一次,如果程序中有环,则要求每个环至少经过一次。一般来说,语句覆盖是很弱的逻辑覆盖标准,判断覆盖比语句覆盖强,条件覆盖通常比判定覆盖强,判定一条件覆盖是判定覆盖和条件覆盖的综合,条件组合覆盖则比前面几种覆盖标准要强,但并不一定比路径覆盖强,下面我们讨论的完全路径覆盖测试方法和基于控制流图的路径测试的改进方法研究。2完全路径覆盖测试方法虽然路径覆盖是覆盖率最高的,但是,简单的程序路径数量很少,而复杂的程序路径数量巨大,要实现路径覆盖几乎不可能,即测试量过大;另外,即使满足了程序结构一般意义上的路径覆盖,仍然不能保证被测程序的正确性,即测试不足。如果要求测试更加充分,则要求增加更多的测试用例来提高覆盖率,测试量会更大,于是,测试中就产生了测试量过大和测试不足这一对矛盾。对于独立路径数的计算可以采用下面的方法:第一步,从流图中找出程序所有的必经节点(流图中任何独立路径都必定经过的节点叫做必经节点),记作IV(i),其中i为整数且0<=i<=N。第二步,从流图中找出从必经节点N(i)到必经节点N(i+1)的独立路径数W(i),其中i为整数且0<=i<N。第三步,重复上一步,直到程序结尾。第四步,根据乘法法则,独立路径数=W(i),其中i为整数且0<=i<N,即独立路径数=W(0)*W(1)* *W(N一1)。完全路径是指所有独立路径的集合,非完全路径就是所有独立路径集合的真子集。由于程序中可能会包含有多个条件的判定,所以程序流程图可能包含有隐含路径,从而有程序流图转换成的对应流图可能包含有隐藏路径。如图1、图2所示。

消除隐含路径的办法就是将含有多个条件的判定分为多个判定。即把图1的程序流图转换成如图3所示,图4是其对应的流图。图4中,节点1,4,7为必经节点,W(0)=3,W(1)=3,所以独立路径数=3*3=9。由此,要达到完全路径覆盖就需要设计9个测试用例,从而使得测试量更加庞大。根据线性代码序列与跳转的测试覆盖准则,将程序在必经节点处割断,分别对每一段程序进行完全路径覆盖的充分测试。对于被割断的程序片断,由于没有参数人口,可以在程序片断的开头增加代码对参数进行初始化。从而达到完全测试,缓解测试量过大与测试不足的矛盾。图1程序流图图2图1对应的流图

图3没有隐含路径的程序流图图4图3的对应流图图3没有隐含路径的程序流图图4图3的对应流图总结完全路径覆盖的具体步骤如下:第一步,将判定语句的条件进行分离,细化程序流程图,使其不含隐含路径。第二步,根据程序流程图画出流图,找出必经节点,必经节点数为N。第三步,将程序流程图在必经节点处割断,将整个程序分解为N+1个程序片断。第四步,找出程序片断i的完全路径,为程序片断i的每条独立路径设计用例,其中:1<=i<=N+l。第五,结合所设计的测试用例,将程序片断i的参数初始化,其中1<=i<=N+1。第六步,将测试用例付诸测试,重复第四步至第六步,直到i=N+1。3基于控制流图的路径测试的改进方法研究根据测试的目标,选择一个有一定效果且开销较小的覆盖准则,或者是根据一定的标准,选择所有完整逻辑路径中的一个有限子集来进行测试,用最小的测试用例,发现程序中最多的错误。采用自动机的思想和理论改进,可以生成少的测试用例,而达到所有路径的覆盖。首先在程序的控制流图上,每条路径给一个标示,如e1,e2,e3,...,ek等,其中e0为惟一的入f_=_1弧,e为最后一个唯一的出口弧。通过转化可以将控制流程图转换成只含有路径的自动机,根据自动机可以求出从eO到e的n(nN1)条路径。具体步骤如下:第一步,输入:程序源代码程序。第二步,输出:含有从e0到e的n(nN1)条路径。第三步,根据程序块的概念将程序源代码转换成相应的控制流程图。第四步,在每条弧上标注el,e2,...,em(m为弧的总条数)。第五步,为了便于算法的实现,增加了两个空结点,其中一个s结点作为整个程序控制流程图的起始结点,其入度为0,出度为1,并与e0进行相连;en+l结点作为整个程序控制流程图的终止结点,其入度为1,出度为0,并与e进行相连。如果,一个控制流程图的结点数为n,则经过变换总的结点数为n+2。第六步,根据表1的转换规则将控制流程图转换成以弧为结点的自动机M。第七步,覆盖路径的寻找,寻找e0到e的n(nN1)条路径。寻找回边。并将回边构成的结点抽象成一个子结点,重复做①,直到所有的回边均抽象成子结点。将自动机_)If转换成等价的M’。在自动机M’上得到从e0到e的n(nN1)条独立路径。4总结以上只介绍了两种了路径覆盖的测试方法,路径覆盖测试作为覆盖率最高的一种测试方法,对其完善和简化,将提高软件测试的完备性以及软件测试的效率。参考文献宫云战.软件测试;国防工业出版社出版2006年1月贺青春,叶柏龙.完全路径

温馨提示

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

评论

0/150

提交评论