[发明专利]基于语句占优关系和两阶段遗传算法的高阶变异测试方法有效
申请号: | 201310595506.7 | 申请日: | 2013-11-21 |
公开(公告)号: | CN103605605A | 公开(公告)日: | 2014-02-26 |
发明(设计)人: | 姚香娟;巩敦卫;郭仪昊;李鑫;张功杰;顾雅丽;王文亮;吴飞跃 | 申请(专利权)人: | 中国矿业大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 221116 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 语句 占优 关系 阶段 遗传 算法 变异 测试 方法 | ||
技术领域
本发明涉及计算机软件测试领域,设计了一种基于语句占优关系和两阶段遗传算法的高阶变异测试方法。该方法区别于已有方法的特色在于,基于语句之间的占优关系选择语句进行变异,从而保证所有变异语句可以被同时执行;另外,给出一种新的高阶变异体评价方法,对高阶变异体的优劣进行度量;最后,设计了一种包含两个交替进化过程的遗传算法来生成高质量的高阶变异体,从而揭示程序所包含的复杂缺陷。该方法不但可以减少高阶变异体的数量,还可以保证高阶变体具有好的性能,对提高高阶变异测试的有效性和可行性具有重要意义。
背景技术
对软件进行测试的目的是为了发现尽可能多的缺陷或错误。变变异测试是一种面向缺陷的软件测试方法,基本原理是:首先,采用变异算子对被测程序做微小的合乎语法的变动,例如,将关系运算符“>”替换为“<”,从而产生大量新程序,每个新程序称为一个变异体;然后,基于相同的测试数据运行源程序和变异体,并比较二者输出的异同。如果不同,就认为测试数据将该变异体杀死。
需要说明的是,并不是所有的变异体都能被杀死。总体来讲,导致变异体不能被杀死的原因有如下两个:(1)测试数据集不充分;(2)变异体在功能上等价于源程序,称这类变异体为等价变异体。只有当所有非等价变异体都被杀死,或者变异充分度已经达到预期要求,变异测试才结束。所谓测试数据集的变异充分度,是指被杀死的变异体数目与所有非等价变异体数目的比值。
变异测试具有排错能力强、方便灵活,以及自动化程度高等优点,既可用于生成测试数据,又可衡量测试数据集的检错能力。但是,已有变异测试方法需要消耗大量的计算资源;此外,一个活的变异体是否等价于源程序,属于不可判定问题。这些问题在一定程度上限制了变异测试的应用范围。
为减少变异测试的开销,Howden提出弱变异测试,通过观察程序执行变异节点后变量状态是否变化,决定变异体是否被杀死。尽管弱变异测试在一定程度上降低了变异体被杀死的难度,但变量状态的检测同样需要花费很大的代价。
另外,在传统的变异测试中,变异体都是通过对源程序的某一条语句进行修改得到的。Jia等认为,实际程序中存在的错误往往要复杂的多,只对程序作一处修改并不能真正模拟真实的错误或缺陷,因此,他们提出对程序作两处或更多处修改的高阶变异测试方法,但是,相应的变异体个数会成倍增加。鉴于此,Langdon等提出一种高阶变异体选择方法,该方法 把变异体的选择问题看成含有两个目标的优化问题,这两个目标分别是:变异体被杀死的难度尽可能的大和对源程序的改动尽可能的小。
Belli等人通过两种基本变异算子对低阶变异体和高阶变异体的性能进行分析。他们通过比较低阶变异体和高阶变异体的检错能力,肯定了缺陷之间存在交互作用。Harman等人通过实验证明,高阶变异体比低阶变异体更能逼近真实的程序错误。他们进一步指出,基于搜索的软件工程可以为生成高质量的高阶变异体提供有效途径。
虽然高阶变异体能够模拟更为复杂的程序缺陷,但是,高阶变异体的个数往往会成倍,甚至成指数增加,从而导致高阶变异的效率低下。另外,有些高阶变异容易被杀死,这样的高阶变异体并不会对提高变异测试的质量起到任何作用。如何提高高阶变异测试的效率和质量,需要进一步深入研究。
如果高阶变异体中的变异语句不能被同时执行,则不被执行的变异语句就不能发挥作用,从而不能真正体现高阶变异的效力。因此,本发明借助语句之间的占优关系来选择变异语句,从而确保所有变异语句能够被同时执行。另外,为了保证生成的高阶变异体具有好的性能,本发明给出了一种新的高阶变异体评价函数,以便生成比一阶变异体比更难杀死的高阶变异体,从而揭示程序所包含的复杂缺陷。最后,本发明设计了一种包含两个进化过程的遗传算法,来生成所需的高阶变异体。
发明内容
本发明提出一种基于语句占优关系和两阶段遗传算法的高阶变异测试方法。首先,基于语句之间的占优关系得到程序的占优关系树,并根据占优关系树来选择所要变异的语句,从而保证位于同一个高阶变异体中的所有变异语句都被执行。然后,给出高阶变异体的定量评价方法,从而把高阶变异体的生成问题转化为一个函数优化问题。最后,根据该优化问题的特点,提出一种两阶段进化遗传算法来生成比一阶变异体更难被杀死的高阶变异体。
本发明所要解决的技术问题:利用语句之间的占优关系解决高阶变异体的语句选择问题,从而保证高阶变异体的有效性;基于遗传算法提出一种包含两个进化过程的优化方法,生成比低阶变异体更难杀死的高阶变异体,从而揭示程序所包含的复杂缺陷。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310595506.7/2.html,转载请声明来源钻瓜专利网。