[发明专利]一种基于支配关系的测试用例生成方法与装置有效
申请号: | 202010868410.3 | 申请日: | 2020-08-26 |
公开(公告)号: | CN112052166B | 公开(公告)日: | 2021-05-18 |
发明(设计)人: | 吉顺慧;刘凡;张鹏程 | 申请(专利权)人: | 河海大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/12 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 孟红梅 |
地址: | 210024 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 支配 关系 测试 生成 方法 装置 | ||
本发明公开了一种基于支配关系的测试用例生成方法与装置,以生成满足all‑uses数据流测试准则的测试用例,包括:基于构建的待测试程序的控制流图CFG模型分析程序的数据流,计算程序中的定义‑使用对;定义基于支配关系的适应度函数,利用面向多目标的遗传算法生成满足all‑uses准则的测试用例集。本发明的有益效果为:面向all‑uses数据流测试准则,提出了有效的测试用例生成方法。定义了基于支配关系的适应度函数,在分析测试用例对定义‑使用对的覆盖程度中考虑了杀死定义的存在可能性,且考虑了定义结点和使用结点在执行路径中的先后顺序,可以更有效地指导遗传算法搜索出输入域内覆盖所有定义‑使用对的测试用例,从而满足all‑uses测试准则。
技术领域
本发明涉及软件测试领域,尤其是一种基于支配关系的测试用例生成方法与装置。
背景技术
软件测试的一项关键工作是针对给定的充分性覆盖准则进行测试用例的设计。尽管all-paths准则是最强的覆盖准则,但它并不能检测程序中所有的缺陷,且当程序中存在循环时有可能存在无限多的路径,这种情况下通过测试覆盖所有路径是很难实现的。程序正确性最基本的要求是,对于任意给定的输入都可以得到期望的输出。输入与输出之间的关联是通过程序中一系列的变量定义和使用关联来实现的,可以认为控制流的设计是为了实现正确的数据流。因此,进行数据流测试是非常重要的。然而,针对数据流准则的测试研究还相对比较少。all-uses准则是一种常用的数据流测试准则,它要求测试用例可以执行覆盖程序中变量的每个定义到它的每个使用的至少一条路径,即要求测试覆盖程序中所有的定义-使用对。
通过定义合适的适应度函数来描述测试用例对测试目标的覆盖程度,测试用例生成问题可以被建模为一个函数优化问题。遗传算法是一种常用的解决方法,其利用适应度函数指导有效输入域内的最优解搜索。现有的适应度函数针对数据流测试目标,可以计算测试用例对测试目标的接近度,进而比较测试用例的好坏。然而该函数认为对于变量的定义-使用对而言,某测试用例的执行路径若覆盖了定义结点和使用结点的所有支配结点,则一定覆盖定义-使用对,忽略了执行路径中杀死定义的存在可能性考虑。另外,该函数没有考虑定义结点和使用结点在执行路径中的先后顺序,导致针对某些测试目标产生不正确的解决方案,使其无法在测试中被覆盖。因此,定义合适的适应度函数非常重要,直接决定遗传算法能否在输入域内搜索出覆盖定义-使用对的有效解。如何定义适应度函数,进而如何采用遗传算法生成满足all-uses准则的测试用例集是我们关注的问题。
发明内容
发明目的:本发明的目的在于提供一种基于支配关系的测试用例生成方法,通过定义合适的适应度函数,指导遗传算法通过搜索生成满足all-uses准则的测试用例集。
技术方案:为实现上述发明目的,本发明提供的一种基于支配关系的测试用例生成方法,包括:基于构建的待测试程序的控制流图CFG模型分析程序的数据流,计算程序中的定义-使用对;定义基于支配关系的适应度函数,利用面向多目标的遗传算法生成满足all-uses准则的测试用例集;其中测试用例x关于变量var的定义-使用对(var,d,u)基于支配关系的适应度函数表示为:
其中,p(x)表示测试用例x的执行路径,d、u分别是变量var的定义结点和使用结点;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于河海大学,未经河海大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010868410.3/2.html,转载请声明来源钻瓜专利网。