图深度优先搜索方法在最小长度优化中的应用.docxVIP

图深度优先搜索方法在最小长度优化中的应用.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图深度优先搜索方法在最小长度优化中的应用 高质量的软件开发需要测试工作的帮助。白箱测试是提高软件质量的必要方法。基本路径测试法是白盒测试中最常见的一种。在这种方法中,为了减少手动生成引起注意的错误的可能性,有必要使用机械方法生成测试用例。本算法采用路径复杂性原理,计算初始路径数,并利用基本路径配置的充分性和完整性。本算法可以自动生成基路集,并使用最短的路径匹配机制,确保生成的每条基本路径作为最小长度测试序列,以达到优化结果集的目的。 1 基于基本路径的自动生成算法 1.1 相关概念 1 程序路径定义 从程序控制流图(CFG)的角度来说,程序路径是指从起始结点到终止结点所经过的一系列边形成的边序列,也可以使用结点序列描述,本文采用后者进行程序实现. 2 独立路径 至少包含一条在其它路径中未出现过的边. 3 基本路径或称《基本路径无边 基本路径集中每一条路径都是一条独立路径且CFG中所有的边都被访问过.基本路径集中的元素是基本路径,每条基本路径至少含有一条其它基本路径未包含的边. 4 序列和最短复用路径 CFG中任一结点出发到达终止结点所经过的边序列(或结点序列),CFG中每个结点均有若干条复用路径.最短复用路径是指某结点的复用路径集中长度最小的元素称为该结点的最短复用路径. 5 圈复杂度校核 对于结构化程序而言,圈复杂度定义为V(G)=E-N+2P.其中,V(G)表示圈复杂度,E表示控制流图的边的数量,N表示控制流图的节点数,P表示控制流图中相连接的部分(因为程序控制流图都是连通的,所以P为1),圈复杂度取值代表了基本路径理论数目值. 1.2 访问控制流图的生成 算法的核心思想是:根据程序流程图构造程序控制流图,使用程序控制流图的结点序列表示路径,并构造对应的矩阵表示;结合边访问标志集合使用图深度优先搜索方法对控制流程图进行遍历,利用回滚机制避免程序控制流中环造成的不收敛,完成访问控制流图中所有边的要求;引入结点复用路径最小长度记忆机制对基本路径进行优化,获得最小长度测试序列的优化基本路径集合. 1.3 复配点基本路径组合duplicatepath 1)流程图矩阵FlowChartMatrix,二维数组FCM,全程不变化,取值含义(0:无边、1:有边); 2)边访问标志EdgeVisitFlag,二维数组EVF,初始值全为0,取值含义(0:未访问、1:已访问、2:未访问-回滚后); 3)复用路径DuplicatePath,二维数组DP,初始值全为0; 4)复用路径长度DuplicatePathLength,一维数组DPL,初始值全为0,取值含义(0:无复用路径、N:复用路径结点数目); 5)结点访问标志NodeVisitFlag,一维数组NVF,初始值全为0,取值含义(0:未访问、1:已访问); 6)结点出度数NodeOutNumber,一维数组NON,初始值为结点对应出度,取值含义(0:无未访问边、N:有N条未访问边); 7)基本路径集合BasePathSet,二维数组BPS,初始值全为0; 8)基本路径长度BasePathLength,一维数组BPL,初始值全为0,取值含义(0:基本路径长度为0、N:基本路径长度为N). 1.4 转基本路径集优化模块t 算法分为3个部分:初始化工作模块、算法主业务流程模块、基本路径集优化模块. 初始化工作模块:对前述数据结构中的各个数组进行初始赋值、CFG的初始结点进入堆栈作为堆栈工作的初始值(堆栈主要完成对CFG图中结点的处理)、CFG结点分类(初始符号、终结符号、内部符号)、计算每个结点的出度、计算基本路径的数目理论值、实际基本路径的数目赋初值0. 算法主业务流程模块:依据边访问标志利用堆栈获取边的前驱结点,并使用控制矩阵获取边的后继结点,对所有未访问边进行处理,具体程序如下. 1)读栈顶结点元素NodeH,设置NodeH结点访问标志NVF; 2)判断所读结点NodeH是否为终结符号,若为终结符号则转步骤3,否则转步骤6; 3)使用指针读取栈顶到栈底的结点序列输出一条路径(此过程没有出栈动作,只是读取动作)、设置路径上每个结点的复用路径(对于路径结点序列上的每一个结点Nodei,在输出的路径上从Nodei到终结点所经过的结点序列为Nodei的复用路径NodeiDP,将NodeiDP与Nodei原来的复用路径进行长度比较,若新产生的NodeiDP长度比原来复用路径长度小则替换之,否则保留原有的复用路径); 4)读栈顶结点元素NodeH,判断NodeH作为前驱的边集中是否存在未访问过的边.若存在则转步骤1,否则栈顶元素出栈处理; 5)判断堆栈是否为空.若堆栈不为空则转步骤4,否则转基本路径集优化模块. 6)判断NodeH为前驱的边集中是否存在未访问过的边ArcHT且该边ArcHT的后继No

文档评论(0)

187****7209 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档