买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
摘要:本发明属于软件测试领域,涉及一种用于自动生成检测求解器性能缺陷的测试用例的技术,具体为一种基于多目标遗传算法的求解器性能缺陷检测方法。本发明通过使用多目标搜索算法,最大化目标求解器与基准求解器的运行时间差、目标求解器的代码覆盖率来增加搜索过程中的引导信息,缩小发现性能缺陷所需的时间;通过最小化测试用例的复杂度,防止测试用例的体积过度膨胀;同时使用动态追踪文件来计算测试用例间的相似性,保证生成结果集的多样性,使得算法可以寻找到更多的潜在的性能缺陷。本方法适用于求解器开发的每个版本,可以帮助开发人员发现求解器开发过程中的性能缺陷,有效减少由于求解器自身性能缺陷导致在使用过程中出现的不可遇见的错误。
主权项:1.一种基于多目标遗传算法的求解器性能缺陷检测方法,其特征在于,具体步骤如下:步骤1:插桩编译目标求解器具体为:由于在算法运行中需要计算测试用例的代码语句覆盖率,所以需要使用代码覆盖率检测工具对目标求解器进行插桩编译;代码覆盖率检测工具可以生成程序中每个语句执行的精确计数;插桩编译并不会影响目标求解器的正常运行,只是会在运行过后生成包含语句执行次数信息的文件,用在步骤7中统计测试用例的代码语句覆盖率;步骤2:随机生成种子测试文件集,构成初代种群具体为:随机生成符合SMT语法规则的测试用例文件,测试用例文件构成初代种群,即种群中的每个个体都是一个测试文件;种群的大小则代表种群中共包含测试文件的数目;步骤3:通过二元锦标赛选择的方法对初代种群中的种子测试文件进行筛选具体为:使用二元锦标赛选择方法筛选出初代种群中表现优良的测试文件;二元锦标赛的方法是每次从种群中取出两个测试文件,初代的筛选会选取其中使得目标求解器运行时间更长的一个作为表现优良的测试文件;步骤4:种群内优良测试文件进行交叉变异,生成子代种群具体为:选择出优良测试文件后,通过交叉算子和变异算子生成新的测试文件构成子代种群;每次从表现优良测试文件中选取出待操作测试文件,然后通过交叉率和变异率判断该测试文件该进行哪种操作生成新的测试文件,操作不断地进行,直到新的测试文件数目到达规定的种群数目;交叉算子选取两个测试文件交换彼此的断言语句,交叉算子为:为了确保足够的交叉量,选取两个测试文件中断言语句一部分进行交换;如果父母测试文件的断言数量没到到达交换的数量,则交换其中的一条断言语句,即要保证每个测试用例最少有一条断言语句;变异算子是针对单个测试文件操作,变异算子包含:新建变量、删除变量、添加断言语句、删除断言语句、替换断言语句中的符串和数字、替换替换断言语句中的函数以及替换类型相同的节点;步骤5:判断算法是否收敛或者到达算法最大迭代次数具体为:判断是否到达算法的最大迭代次数或者算法是否收敛,如果没有则跳转到步骤6,进行算法的迭代;如果已经到达了最大的迭代次数或者算法以及收敛,则跳转到步骤11;算法收敛是指种群的平均适应度在一定的代数内已经没有改变;步骤6:合并父代中的优良测试文件和子代种群的测试文件,产生新的种群具体为:将父代中的优良测试文件和子代种群中的测试文件合并成为新的测试文件集合,即新的种群,进行下一次迭代操作;步骤7:对种群中的测试文件进行适应度评估,分别计算求解器运行时间差、代码覆盖率和测试用例的复杂度具体为:对种群中的每个测试文件进行适应度函数评估,算法中使用三个优化目标指标:第一个优化目标是目标求解器与基准求解器的运行时间差,在指定的超时时间下,使用目标求解器和基准求解器分别运行测试用例,统计两者的用时;使用目标求解器与基准求解器的运行时间差作为第一个适应度得分,在这过程中会生成代码覆盖信息文件和动态跟踪文件;第二个优化目标是目标求解器的代码语句覆盖率,通过代码覆盖信息文件中包含的代码语句执行信息,计算该测试用例运行时目标求解器的代码语句覆盖率,即统计该测试用例执行时覆盖到的代码语句数目和目标求解器总代码语句数的比例,作为第二个适应度得分;第三个优化目标是为了防止测试用例过度膨胀,通过最小化计算测试用例的复杂度,来使得测试用例的保持一个较小的体积;测试用例的复杂度受到测试用例中断言语句的语句数目和语句内节点的嵌套深度影响,具体的计算方法是使用加权分数,处在第n层的节点积n分,遍历每个语句中的所有节点计算加权分数和作为第三个适应度;通过本步骤的操作,每个测试用例都会获得一个三元元组作为适应度得分,参加步骤8的排序;步骤8:对种群中的测试用例进行非支配的帕累托排序,并计算测试用例间的拥挤距离具体为:进行非支配帕累托排序:首先从种群中选取出所有的非支配的测试用例集合作为一个帕累托前沿面;然后将这些测试用例从种群中剔除,再次选取出非支配的测试用例组成新的帕累托前沿面,重复该操作直到所有的测试用例都被加入到帕累托前沿面上;再使用步骤7中每个测试用例在目标求解器运行时生成的动态追踪文件计算测试用例间的拥挤距离,用于步骤9中的选择操作;步骤9:选择种群中表现优良测试用例具体为:使用基于支配的二元锦标赛选择筛选优良的测试用例;经过非支配帕累托排序后,每个测试用例具有两个属性:非支配排序和拥挤距离;当测试用例I和测试用例J进行比较时遵守如下规则:测试用例I的非支配排序优于测试用例J,测试用例I胜出;测试用例I与测试用例J的非支配排序相同,但是测试用例I的拥挤距离大于测试用例J,测试用例I胜出;重复选择操作,直到表现优良的测试用例的数目达到指定的种群大小,构成新的种群;步骤10:对表现优良测试用例进行交叉变异,产生新的子种群具体为:与步骤4操作相同,得到新的子种群;步骤11:对生成的测试文件进行验证,筛选出触发性能缺陷的测试用例具体为:在足够长的超时时间下让目标求解器重新执行种群中的测试文件;如果测试文件依旧无法被求解,那么将其加入到最终的结果集中;结果集中的测试用例会触发求解器的性能缺陷,算法结束。
全文数据:
权利要求:
百度查询: 大连理工大学 一种基于多目标遗传算法的求解器性能缺陷检测方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。