- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
路 径 覆 盖 测 试
吕金和
(沈阳市电化教育馆,辽宁? 沈阳 110032)
?
??? 摘? 要? 随着软件的广泛应用及其规模和复杂度不断地提高,软件测试的方法也有许多。本文讨论了完全路径覆盖测试方法和基于控制流图的路径测试的改进方法。
??? 关键词? 完全路径覆盖;基于控制流图
?
1? 引言
??? 软件测试的步骤是单元测试、集成测试、系统测试、确认测试和回归测试。单元测试是软件测试的基本组成部分,也是最重要的部分之一。而单元测试主要采用的是白盒测试的技术。
??? 白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。一般用来分析程序的内部结构。它依赖于对程序细节的严密验证,针对特定条件和循环设计测试用例,对程序的逻辑路径进行测试。通过在程序的不同点检验程序状态,来判定其实际情况是否和预期的状态相一致。
??? 用这种方法进行程序测试时,测试者可以看到被测程序,并利用其分析程序的内部构造。因此,白盒测试要求对被测程序的结构特性做到一定程度的覆盖,并以软件中的某类成分是否都已经得到测试为准则来判断软件测试的充分性,也称为基于覆盖的测试技术。例如,语句覆盖是一种逻辑覆盖准则,它要求选择测试数据使得程序中所有语句都得到运行,并根据是否所有语句都得到了运行来决定测试是否可以终止。到目前为止,已提出了几十种覆盖技术。
??? 在这些覆盖的技术中,覆盖率最高的就是路径覆盖技术。路径覆盖,要求程序的每条可能路径都至少执行一次,如果程序中有环,则要求每个环至少经过一次。一般来说,语句覆盖是很弱的逻辑覆盖标准,判断覆盖比语句覆盖强,条件覆盖通常比判定覆盖强,判定一条件覆盖是判定覆盖和条件覆盖的综合,条件组合覆盖则比前面几种覆盖标准要强,但并不一定比路径覆盖强,
??? 下面我们讨论的完全路径覆盖测试方法和基于控制流图的路径测试的改进方法研究。
2 完全路径覆盖测试方法
??? 虽然路径覆盖是覆盖率最高的,但是,简单的程序路径数量很少,而复杂的程序路径数量巨大,要实现路径覆盖几乎不可能,即测试量过大;另外,即使满足了程序结构一般意义上的路径覆盖,仍然不能保证被测程序的正确性,即测试不足。如果要求测试更加充分,则要求增加更多的测试用例来提高覆盖率,测试量会更大,于是,测试中就产生了测试量过大和测试不足这一对矛盾。
??? 对于独立路径数的计算可以采用下面的方法:
??? 第一步,从流图中找出程序所有的必经节点(流图中任何独立路径都必定经过的节点叫做必经节点),记作Ⅳ(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的对应流图
??? 总结完全路径覆盖的具体步骤如下:
??? 第一步,将判定语句的条件进行分离,细化程序流程图,使其不含隐含路径。
??? 第二步,根据程序流程图画出流图,找出必经节点,必经节点数为N。
??? 第三步,将程序流程图在必经节点处割断,将整个程序分解为N+1个程序片断。
??? 第四步,找出程序片断i的完全路径,为程序片断i的每条独立路径设计用例,其中:1 = i = N+l。
??? 第五,结合所设计的测试用例,将程序片断i的参数初始化,其中1 = i = N+1。
??? 第六步,将测试用例付诸测试,重复第四步至第六步,直到i = N+1。
3 基于控制流图的路径测试的改进方法研究
??? 根据测试的目标,选择一个有一定效果且开销较小的覆盖准则,或者是根据一定
文档评论(0)