[发明专利]基于聚类和进化算法的软件测试用例自动生成方法有效
申请号: | 202111185743.7 | 申请日: | 2021-10-12 |
公开(公告)号: | CN114064453B | 公开(公告)日: | 2023-04-07 |
发明(设计)人: | 陈健;邓钦艺 | 申请(专利权)人: | 华南理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F18/23;G06N3/006 |
代理公司: | 广州市华学知识产权代理有限公司 44245 | 代理人: | 李斌 |
地址: | 510640 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 进化 算法 软件 测试 自动 生成 方法 | ||
本发明公开了一种基于聚类和进化算法的软件测试用例自动生成方法,包括步骤为:分析待测试程序,构造程序的控制流图、编码路径及初始化访问矩阵;初始化种群及算法参数;对种群个体进行K‑medoids聚类;进行簇间、簇内变异及交叉操作;对种群中个体逐一记录访问信息;根据访问矩阵计算访问矩阵代价函数,将种群个体参数转换为二进制,计算种群个体间的汉明距离及整体的适应度函数;更新种群内每个个体的变异算子并进行选择操作,选择后的新个体形成下一代;检测全部路径是否已覆盖完全或达到设定的最大循环数目,若不满足则返回重复执行;若满足,则输出覆盖待测试程序每条路径的测试用例集合。本发明实现了测试样例的自动生成,提高了软件测试效率。
技术领域
本发明属于软件测试领域,具体涉及一种基于聚类和进化算法的软件测试用例自动生成方法。
背景技术
随着测试技术的发展,测试种类和方法逐渐增多,测试效率也逐步提高。根据程序内部的差异,可以将软件测试的方式归类为黑盒测试和白盒测试。而根据测试用例的生成方式,可以分为人工测试和自动化测试。软件测试用例的自动生成,可以有效减少软件测试中的人、物力开销。软件测试是保障软件质量的重要手段,而测试用例设计的覆盖和效率尤为重要。其中测试用例覆盖标准主要分为语句覆盖、判定覆盖、条件覆盖、条件组合覆盖、路径覆盖等,五种覆盖标准发现错误的能力由弱到强。
现有的测试用例或者依靠测试人员的经验和手工生成,或者在新兴的自动生成方法中结合神经网络、启发式搜索算法等进行构建。近年来,一些如采用遗传算法、广度优先搜索算法、贪婪算法、模拟退火算法、深度信念网络等方法被应用于测试用例自动生成中。但在使用各种算法生成用例前,如果能更有针对性地对数据进行预分类、预处理,譬如当采用进化算法时人为干预“变异”和“选择”的方式,则能够在保留优秀个体的同时,增加种群的多样性,优化全局搜索能力,提高覆盖全部路径的生成用例的效率。同时,随着算法执行过程中,构造评估策略动态调整变异算子,可以有效增加种群的多样性。
但是现有方法也存在着缺陷,如基于人工生成的测试用例往往需要较高的成本且效率较低;采用启发式的搜索算法作为生成策略时,传统的进化算法往往会出现早熟收敛,无法保证种群多样性的问题,需要平衡算法的全局搜索和局部搜索能力;由于现有方法对于生成测试样例数据往往仅通过覆盖情况,计算适应度Fitness值进行个体评估,导致缺少对样例之间的相似性或相关性的挖掘。
发明内容
本发明的主要目的在于克服现有技术的缺点与不足,提供了一种基于聚类和进化算法的软件测试用例自动生成方法,该方法基于改良的DE差分进化算法,结合K-medoids聚类,使用访问矩阵和汉明距离构造代价函数,通过自适应变异算子,优化进化流程,能够快速搜索出覆盖全路径的测试用例,提高样例生成效率和质量。
为了达到上述目的,本发明采用以下技术方案:
本发明提供了一种基于聚类和进化算法的软件测试用例自动生成方法,包括下述步骤:
S1、分析待测试程序,构造程序的控制流图、编码路径Path及初始化访问矩阵visit;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华南理工大学,未经华南理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111185743.7/2.html,转载请声明来源钻瓜专利网。