- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于AOE网软件关键路径覆盖测试
基于AOE网软件关键路径覆盖测试
摘要:嵌入式软件的复杂度越来越高。作为软件可靠性测试的一种重要方法,完全路径覆盖在实际项目测试中越来越不现实。针对这种现状,提出了一种易于操作的关键路径覆盖测试方法。该方法利用AOE网生成全路径矩阵(APM)算法求出待测程序的关键路径,然后利用自动化测试工具对程序进行线性代码与跳转(LCSAJ)分析,最后在其辅助下完成关键路径覆盖测试。实验结果表明:在保障软件可靠性的前提下,该方法节约了测试成本,显著提升了测试效率,具有一定的工程应用价值。
关键词:AOE网;关键路径;邻接矩阵;APM矩阵
中图分类号:TP306
文献标识码:A 文章编号:1672-7800(2015)003-0026-04
0 引言
嵌入式软件在嵌入式系统中越来越重要,嵌入式软件的可靠性成为软件开发中的重要因素。路径覆盖作为软件可靠性测试的重要指标,在嵌入式软件测试中应用越来越广泛。然而,由于工程中的代码逻辑复杂分支繁多,完全的路径覆盖测试用例个数会随着程序中分支的增加呈指数级增长[1],造成测试成本过高。为了兼顾软件可靠性和测试成本,从众多路径中选出关键路径进行测试成为近年来嵌入式软件测试研究的重要课题。
传统的关键路径求解算法往往是分别求出所有路径的最早发生时间和最迟发生时间,以及每项路径的最早开始时间和最迟开始时间,然后判断哪些路径是关键路径,算法过程复杂。对此,一些研究人员对传统的算法进行了改进,文献[2]在广度优先搜索的基础上,给出了一种求解关键路径的算法。该算法采用图的十字链表结构形式,不需要拓扑排序来求解关键路径。然而,此算法需要对图进行3次广度优先搜索才能输出所有关键活动,而且不能将所有的关键路径输出。文献[3]在深度优先搜索的基础上,求出从源点到汇点的所有路径,经过分析比较求取关键路径。由于在求解过程中需要进行多次递归回溯,算法的执行效率较低。同时,传统的路径覆盖测试用例设计,是通过人工分析各个判定中的条件来确定用例中各个变量的取值,对于程序较为复杂的判定,这种方法往往效率较低,而且容易出错。
针对上述问题,本文提出了一种全新的关键路径覆盖测试方法。首先利用程序的AOE网的邻接矩阵生成矩阵APM算法,求解出待测程序的关键路径,然后,基于LCSAJ的概念设计相应的测试用例。这种方法不但可以输出所有关键路径,而且提高了关键路径的生成效率。同时,由于存在大量的测试工具可以进行LCSAJ分析,因此可以快速准确地完成测试用例的设计。总之,这种方法在保证软件的可靠性前提下,不仅合理地分配了测试资源,而且大大提高了测试的自动化程度。
1 基本概念
1.1 关键路径
控制关系是一个程序正常运行的关键因素,通常用控制流程图来表征。控制流图中有两个要素,如图1所示,结点以标有编号的圆圈表示,代表一个或多个无分支的语句;控制流以箭头表示,表征控制的顺序[4]。为了评估程序的控制结构,控制流图中的连接加入连接权值a~e,通常把这种带权值的控制流图称为AOE网。AOE网中入度为零的点称为源点,出度为零的点称为汇点。通常AOE网中从源点出发到汇点结束的有序结点序列称为该AOE网的路径。路径中连接权值的和称为路径长度。通常,一个AOE网中最长的路径就叫关键路径。
AOE网也可以表示成矩阵的形式,称为AOE网的邻接矩阵。一个邻接矩阵是一个方阵,其行列数目为AOE网中的结点数,行列依次对应被标识的结点,矩阵元素对应到相应结点间的连接。元素a~e的值代表连接权值。图1对应的邻接矩阵如图2所示。
1.2 线性代码与跳转
LCSAJ(linear coded sequence and jump)是指可执行代码的线性序列,这个序列的开始可以是程序的开始或控制流中可能跳转的一个起点,它的终点可以是一个明确的控制流跳转点或程序的结束[5]。这个线性代码序列可以由一个或多个连续的基本模块组成。因此,为了控制流执行线性代码序列和跳转,必须有相应的代码满足相关条件。一个LCSAJ由3个要素――开始行、结束行、跳转目的行组成。程序的一条路径可能由几个首尾相连LCSAJ组成,其中第一个LCSAJ起点为程序起点,最后一个LCSAJ的终点为程序终点。
路径的执行关键就是代码中每一个谓词条件的选取。基于LCSAJ概念,将源代码分割成若干子代码段,通过组合即可实现相应的路径覆盖。现在有许多测试工具可供LCSAJ分析,故可借助这些工具得到相关路径对应的谓词取值组合,进而准确迅速地完成指定路径的覆盖测试。
2 求解关键路径
2.1 权值确定算法
2.1.1 权值影响因子
(1)分支执行概率。嵌入式软件往往有实际的应用背景,因此当程序运行到判决结点时,不同的分支
文档评论(0)