[发明专利]一种面向程序状态的故障分类方法、变异测试方法及设备有效
申请号: | 201810204976.9 | 申请日: | 2018-03-13 |
公开(公告)号: | CN108664391B | 公开(公告)日: | 2021-03-23 |
发明(设计)人: | 王雅文;林欢;宫云战;金大海 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹;吴欢燕 |
地址: | 100876 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 程序 状态 故障 分类 方法 变异 测试 设备 | ||
本发明提供一种面向程序状态的故障分类方法、变异测试方法及设备。所述方法包括:基于待测源程序的语法对应的变异算子,为所述待测源程序的每条语句构造故障节点集和状态变异点集;基于所述故障节点集、所述状态变异点集、所述每条语句的状态变异之间的触发关系和传播关系,构造所述待测源程序的变异流图;根据所述变异流图的直接后向支配关系,构造故障类支配树,以对所述待测源程序进行故障分类。本发明从一般性的故障测试原理出发,对故障程序进行分类排序,同时支持多种类型的变异算子,具有较好的可扩展性,进而减少测试次数、优化故障集、简化故障分析成本,可以提升变异测试效率。
技术领域
本发明涉及软件变异测试领域,更具体地,涉及一种面向程序状态的故障分类方法、变异测试方法及设备。
背景技术
变异测试是一类面向故障的测试评估技术,它通过为被测代码生成一组故障程序,运行测试,来检查测试用例集对程序故障的检测能力。然而变异测试面临的一个问题是,可能生成大量的变异体(故障程序),从而导致评估过程缓慢、需要消耗大量的计算资源和测试成本。为了优化测试效率,已有的研究方案提出了三种解决方案:
1)变异采样:从程序的变异体全集中随机筛选一个数量较小的子集;该方法的缺陷是评估结果可靠性低;
2)选择变异:从所有故障类型(变异算子)中选择一个子集,生成故障程序;该方法的缺陷是移除一类故障,可能降低评估的有效性;
3)变异聚类:该方法将“行为相近”的故障聚为一类,对每一类故障只生成一个变异体,进而减少测试次数;该方法的缺陷是目前的研究缺少对“行为相似性”的建模和进一步地讨论。
面对上述问题,近年来的研究提出使用了故障的分类和去冗余技术,来减少测试次数;其核心思想是通过将行为相近的故障聚为一类,并通过蕴含关系识别出冗余的故障类,将其排除。所谓冗余故障,指的是其测试结果可以通过其它故障的测试结果推断出来的故障,这类故障本身没有进行测试的必要。然而Andras Marki的实验研究证明,目前的基于变异体冗余关系的优化策略存在下面的几大缺陷:
1)包含等价变异的比例较高,评估有效性差;等价变异指的是与原程序语法不同,但语义等价的故障程序,这类变异无法模拟真实的程序故障,在变异测试中需要排除这类等价变异;
2)静态识别冗余变异体是个不可解问题;动态识别冗余变异体要求增加更多的测试次数,与优化测试的目标本末倒置;
实验表明,故障的蕴含关系是稀疏的,因此只有少量的故障可以被删减,目前的技术对变异测试的优化效率并不高。
发明内容
本发明提供一种克服上述问题或者至少部分地解决上述问题的面向程序状态的故障分类方法、变异测试方法及设备。
根据本发明的第一方面,提供一种面向程序状态的故障分类方法,包括:
基于待测源程序的语法对应的变异算子,为所述待测源程序的每条语句构造故障节点集和状态变异点集;
基于所述故障节点集、所述状态变异点集、所述每条语句的状态变异之间的触发关系和传播关系,构造所述待测源程序的变异流图;
根据所述变异流图的直接后向支配关系,构造故障类支配树,以对所述待测源程序进行故障分类。
根据本发明的第二方面,还提供一种面向程序状态的变异测试方法,包括:
为待测源程序构造本发明第一方面所述的故障类支配树;
自上而下遍历故障类支配树的每个故障类,对所述每个故障类进行测试和变异评估,以对所述待测源程序进行变异测试
根据本发明的第三方面,还提供一种面向程序状态的故障分类设备,包括:
至少一个处理器;以及
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810204976.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种内存泄露检测方法及设备
- 下一篇:一种应用测试方法、装置、终端及存储介质