[发明专利]基于遗传方法和符号执行的组合加速测试用例生成方法有效
申请号: | 201811084639.7 | 申请日: | 2018-09-18 |
公开(公告)号: | CN109344057B | 公开(公告)日: | 2021-06-29 |
发明(设计)人: | 杨顺昆;苟晓冬;李红曼;边冲;刘文静;林欧雅;李大庆;佘志坤 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京慧泉知识产权代理有限公司 11232 | 代理人: | 王顺荣;唐爱华 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 遗传 方法 符号 执行 组合 加速 测试 生成 | ||
1.一种基于遗传方法和符号执行的组合加速测试用例生成方法,其特征在于:其实施步骤如下:
步骤1:获取软件测试的待测程序;
步骤2:基于遗传方法生成第一测试用例,根据适应度函数进行选择、变异和交叉操作,直到达到种群进化的终止条件;获取所述第一测试用例的终止覆盖率,记为第一覆盖率;
步骤3: 获取所述第一测试用例能达到的路径,记为第一路径集合;获取所述待测程序的所有能执行路径,记为第二路径集合;
步骤4:对比所述第一路径集合和所述第二路径集合,确定出所述第一测试用例未覆盖路径记为第三路径集合;
步骤5:基于所述第三路径集合确定一条目标路径,使用符号执行方法,求解出所述目标路径对应的取值组合;
步骤6:基于所述取值组合,使用遗传方法生成第二测试用例,测试所述第二测试用例的终止覆盖率,记为第二覆盖率;
步骤7:结合所述第一覆盖率和所述第二覆盖率,对所述测试用例进行评估,在覆盖率不达标的情况下重复所述步骤2-6;
其中,在步骤1中所述的获取软件测试的待测程序,具体实施步骤如下:采用西门子测试程序集作为待测程序;待测程序要求分支多,判定多的特点,为防止偶然性的发生,能将待测程序集中的程序运行多次取平均值,得到所述程序的基本属性,所述基本属性包括:过程数、总行数、圈复杂数和终止覆盖率;
其中,在步骤2中所述的基于遗传方法生成第一测试用例,根据适应度函数进行选择、变异和交叉操作,直到达到种群进化的终止条件;获取所述第一测试用例的终止覆盖率,记为第一覆盖率,具体步骤如下:将待测程序和方法信息加入到应用程序中,进行测试用例的生成,所述应用程序能返回所述测试用例的覆盖率值到适应度函数中,所述遗传方法基于所述适应度函数进行选择、变异和交叉操作,生成下一代染色体群,循环该操作直到达到种群进化的终止条件,记录测试用例的覆盖值为第一覆盖率;其中所述终止条件的设定过程包括:在进化过程中,记录进化的种群代数和对应的种群覆盖率,当进化代数从一代数起;m增加n代后,覆盖率不再提升,也即是进化m+n代后的测试用例的覆盖率与进化m代后的测试用例的覆盖率相同,设定在进化m+n代时进化终止,开始执行符号执行求解以及后续的步骤;或者该终止条件的设定过程为:基于大量的基于遗传方法的生成测试用例实例的样本数据,估计遗传方法达到一代数时覆盖率不再提升的进化代数,将该代数设定为终止条件,也即是,当进化到该代数时,停止遗传方法生成测试用例,开始执行符号执行求解以及后续的步骤;其中,在测试用例生成之前,先对待测程序进行逻辑流程分析,基于一预定规则推导出程序中输入变量的取值范围,也即是输入空间,对应地,遗传方法初始种群采用在输入空间内随机生成的方式,覆盖率类型选取分支覆盖;
其中,在步骤3中所述的获取所述第一测试用例可达到的路径,记为第一路径集合;获取所述待测程序的所有可执行路径,记为第二路径集合,具体步骤如下: 选用任意一种编程语言和静态分析工具,通过执行函数调用语句,获得所述第一测试能达到的路径以及所述待测程序的所有能执行路径,分别记为第一路径集合和第二路径集合;
其中,在步骤4中所述的对比所述第一路径集合和所述第二路径集合,确定出所述第一测试用例未覆盖路径记为第三路径集合,具体步骤如下:通过将第一路径集合和第二路径集合导入分析工具中,进行两个集合间的对比、筛选以及处理,获得第二路径集合中除所述第一路径集合以外的路径,也即是所述第一测试用例未覆盖的路径;
其中,在步骤5中所述的基于所述第三路径集合确定一条目标路径,使用符号执行方法,求解出所述目标路径对应的取值组合,具体步骤如下:从所述第三路径集合中获取一条短路径作为目标路径,采用有向图求得最短路径并输出该路径,记为目标路径,将目标路径中对应的变量、输入数据以及约束条件使用符号表示,并与抽象符号表项建立一一对应关系,将所述符号构成约束集合,求解出满足约束集合中的所有条件的取值组合,所述取值组合是一组及复数组;求解约束集合包括:对路径的预判、约束表达式的化简、约束集合的化简以及未执行路径的保存;其中,对路径的预判用于防止路径爆炸;采用优化方法将约束条件转化为命题逻辑形式,然后再调用求解器求解,得到满足约束条件的取值组合;
其中,在步骤6中所述的基于所述取值组合,使用遗传算方法生成第二测试用例,测试所述第二测试用例的终止覆盖率,记为第二覆盖率,具体步骤如下:选取一组取值组合,作为遗传方法中初始种群,进行测试用例的生成,在生成过程中,获得第二测试用例的终止覆盖率,记为第二覆盖率;该测试用例生成步骤终止的条件是所生成的测试用例满足代码覆盖准则及迭代次数达到预设值;
其中,在步骤7中所述的结合所述第一覆盖率和所述第二覆盖率,对所述测试用例进行评估,在覆盖率不达标的情况下重复所述步骤2-6,具体步骤如下:记第一覆盖率为p1,记第二覆盖率为p2,记通过上述2-6步骤后的测试用例的最终覆盖率为p,将所述p1、p2与p进行对比,获取基于符号执行生成的测试用例的覆盖率的增加情况,将最终覆盖率p与预期覆盖率进行对比,在覆盖率p不达标的情况下重复步骤2-6,直到生成的测试用例达到预期的覆盖率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811084639.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种测试方法以及测试装置
- 下一篇:一种小程序自动化测试方法