[发明专利]一种基于遗传算法的MC/DC测试数据自动生成方法有效
| 申请号: | 201110265194.4 | 申请日: | 2011-09-08 |
| 公开(公告)号: | CN102323906A | 公开(公告)日: | 2012-01-18 |
| 发明(设计)人: | 高峰;刘厂;赵玉新;李刚 | 申请(专利权)人: | 哈尔滨工程大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/12 |
| 代理公司: | 北京永创新实专利事务所 11121 | 代理人: | 官汉增 |
| 地址: | 150001 黑龙江*** | 国省代码: | 黑龙江;23 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 遗传 算法 mc dc 测试数据 自动 生成 方法 | ||
技术领域
本发明属于软件测试技术领域,具体涉及一种基于遗传算法的MC/DC测试数据自动生成方法,特别涉及工程测试中满足MC/DC覆盖(修正条件判定覆盖)的测试数据自动生成方法。
背景技术
测试数据自动生成技术是指通过特定的算法依据软件的规约或者程序结构自动构造测试输入数据,其目的在于减轻测试人员所必须付出的大量劳动,降低手工测试的高额成本,同时提高测试过程的可信赖程度。遗传算法是一种模拟生物进化过程和机制求解极值问题的自适应人工智能技术,在解决大空间、非线性等高复杂度问题时具有独特的优势。
动态执行程序生成测试数据的思想最初由Miller和Spooner提出,后来的学者做了大量的进一步研究。1992年,Xanthakis首先将遗传算法应用于测试用例生成,它采用编码技术将D映射到基因空间G,并通过选择、交叉、变异等遗传操作和优胜劣汰的自然选择确定搜索方向。交叉和变异操作为种群引入新的信息,从而更有利于找到全局最优解,避免了以往算法往往容易陷入局部极值的问题,能够生成满足所有分支判定准则的测试数据。在国内,1996到1998年,荚伟、高仲仪等发表多篇论文,讨论将遗传算法应用于基于路径覆盖的Ada软件结构测试数据的自动生成,并得出遗传算法比爬山法和随机法生成测试数据的效率高的结论。2001年,汪浩等给出了遗传算法的形式化的表示和一个基于此算法的测试数据生成系统原型。2003年,景志远从数学的角度分析了将MGA和遗传K均值等改进的算法应用于测试用例的自动生成。2006年,程烨在学位论文将遗传算法用于路径覆盖测试数据自动生成,并开发了相应的工具模型。2008年,吕珊珊在她的学位论文中使用神经网络和遗传算法生成基于输入域的测试数据。总的来说,现在国内外的研究学者多采用遗传算法或者遗传算法的改进算法作为核心算法来生成测试数据。但上述均是选择逻辑结构相对简单的语句覆盖或分支覆盖生成测试用例,使其在实际的工程领域无法得到广泛的应用。
发明内容
针对现有技术中存在的问题,本发明提出一种基于遗传算法的MC/DC测试数据自动生成方法。针对遗传算法中传统适应度函数仅依靠控制流图中节点间的控制依赖关系,没有考虑被测程序内部的数据依赖关系的缺陷,提出使用链接法思想收集直接或者通过数据依赖间接影响问题节点遍历的控制节点,并将其与表征控制依赖关系见长的传统适应度函数相结合,构造一个新的适应度函数,以此来克服传统的适应度函数因忽略程序内部的数据依赖关系而造成的引导信息缺乏、搜索退化的问题。在此基础上设计实现了基于遗传算法的满足MC/DC准则的测试数据自动生成方法。MC/DC准则强调单个变量对于最后表达式真假的影响的能力,要求每一个条件都要独立的影响判定表达式的结果,对逻辑关系复杂且安全性要求较高的软件系统进行测试时具有很大的实用价值。
本发明提出一种基于遗传算法的MC/DC测试数据自动生成方法,具体包括以下几个步骤:
步骤一:对被测程序进行静态分析,产生控制流图、数据流图、抽象语法树和抽象分析树。
步骤二:生成MC/DC测试用例预期结果集。
步骤2.1:从抽象分析树中提出条件节点,这些条件节点构成了抽象分析树的叶子,每一个叶子就是一个变量,用N表示提取的叶子变量的个数。
步骤2.2:构建真值表,对N个叶子变量,有2N种排列组合。
步骤2.3:用数字0和1填充真值表。
步骤2.4:针对真值表中的每一行:
步骤2.5.1:将真值表当前行中的布尔值对应分配给抽象分析树的每一个叶子变量;
步骤2.4.2:自底向上评价各个条件节点的布尔值,直到抽象分析树的顶端,最终所得的抽象分析树的顶端的条件节点的布尔值就是这个判定语句的输出结果值;
步骤2.4.3:用输出结果值填充真值表的输出列。
步骤2.5:针对每一个叶子变量,寻找其测试用例,并添加到每个叶子变量的MC/DC测试用例集中:
步骤2.5.1:为每一个叶子变量建立一对空的MC/DC测试用例集;
步骤2.5.2:在真值表中,寻找其他叶子变量值固定,只有目标叶子变量改变的两行;
步骤2.5.3:比较步骤2.5.2中的两行的输出结果值,如果两行的输出结果值不同,则这两行就是目标叶子变量的一对测试用例,将这两行以成对的形式添加到步骤2.5.1中建立的MC/DC测试用例集中。
步骤2.6:将每一个叶子变量的MC/DC测试用例集合并,得到测试用例集,并最小化测试用例集。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110265194.4/2.html,转载请声明来源钻瓜专利网。





