没有合适的资源?快使用搜索试试~ 我知道了~
基于故障检测上下文的等价变异体识别算法.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 2 浏览量
2022-06-10
08:14:18
上传
评论
收藏 1.51MB DOCX 举报
温馨提示
试读
38页
基于故障检测上下文的等价变异体识别算法.docx
资源推荐
资源详情
资源评论
摘 要 等价变异体识别一直是阻碍变异测试在工业界得以广泛应用的一
个关键难题.为此提出了一种基于故障检测上下文的等价变异体识别算
法.该算法通过静态分析技术抽取程序中与故障检测条件相关的代码上
下文信息,以构造故障检测上下文;接着,故障检测上下文被转换为
文档模型,经过一个文档表示学习网络进行编码;最后通过机器学习
模型将变异体分类为等价或非等价变异.在包含了 22 个 C 程序和 118
000 个变异体样本的训练集上,该算法取得 91%的分类精准度和
82%的召回率;同时在跨项目交叉验证中,机器学习模型取得了 77%
的精准度和 78%的召回率.该结果表明基于故障检测上下文的识别技术
能够有效地提高等价变异体分类的精准性和泛用性,为提高变异测试
技术的有效性提供了技术支持.
关键词 变异测试;等价变异体;故障检测上下文;机器学习;静态分
析
变异测试(mutation testing)是一种基于故障的软件测试分析方
法
[1]
,它通过向被测软件注入一组人工故障,以模拟软件开发过程中引
入的代码缺陷
[2]
.这些故障被进一步用于评估测试充分性
[3-5]
,并辅助测试
人员开发测试用例以提高测试质量
[6-8]
.相关研究
[9-10]
表明,相较结构化覆
盖准则
[11]
,该技术具有更强的检错能力.
在变异测试中,通过修改被测程序源代码的语法结构注入故障,
被修改后的故障程序称为变异体,而代码修改规则称为变异算子 .例如,
关系运算符替换算子(relational operator replacement, ROR)对关
系表达式 x<y 进行替换,生成包括 x≤y,x>y,x≥y,x==y 以及
x≠y 共 5 个变异体.在变异测试中,如果 1 个变异体 m 与被测程序 p
在测试输入 x 上的输出不同,则称变异体 m 被测试输入 x 杀死.
尽管变异测试能为被测程序生成大量变异体,然而并非所有变异
体对测试数据质量的提高都有帮助
[12-13]
.Ammann 等人
[14-18]
的研究表明:
现有的变异测试工具会生成超过 80%的无效变异体.这些无效变异体不
仅会增加测试成本和执行时间,同时还会降低变异分析的有效性,降
低测试质量.其中一类对变异测试影响较大的无效变异体是等价变异体
[19]
.
等价变异体指的是与原程序保持语义等价的变异体程序
[20]
.这类变
异体无法被任何的测试输入杀死,既不能有效地模拟故障缺陷,也无
法改进测试数据充分性.因此在测试前,需要将程序中的等价变异体识
别并移除.图 1 展示了一个示例程序以说明变异体的等价性:mutant-
1 和 mutant-2 将运算符“<”替换为“≤”生成故障程序.其中 mutant-1
是非等价变异体:它会导致数组下标 k 越界从而造成程序异常退出.而
mutant-2 是等价变异体:该变异体总是输出数组的最小值,与原程
序的输出完全一致,因而 mutant-2 无法被任意的测试用例杀死.
Fig. 1 Equivalent mutant and non-equivalent mutant
图
1
等价变异体与非等价变异体示例
长期以来,等价变异体识别是研究领域和工业界所面临的一个主
要难题.一方面,通过人工审查判断变异体的等价性平均需要 6~15
min
[21-23]
.另一方面,现有技术
[24-32]
无法有效识别等价变异体,存在 2 方面
不足:
1) 准确度低.现有技术使用不完整的故障特征来推断变异体的等价
性,导致识别技术产生大量的错分类样例
[24-28]
.
2) 扩展性差.以往的研究方法依赖于人工设计的推理规则,这些规
则只能识别少量的等价性模式,如不可达路径或数据流模式等.对于实
践中复杂多样的等价性模式,这类技术的可扩展性将受到限制
[33]
.
为了能提高识别的精准性和有效性,本文提出了基于故障检测上
下文的等价变异体识别算法.该算法通过抽取变异体的故障检测上下文
作为特征,并通过机器学习对复杂特征进行分析,从而实现等价变异
体的自动分类和识别.故障检测上下文包含了与故障检测过程相关的程
序切片.使用机器学习技术实现等价变异识别是基于 3 方面的考虑:
1) 等价变异体识别存在数据量大、故障特征复杂的问题.传统的逻
辑推理技术对复杂故障的分析能力有限;而统计学习技术为复杂特征
的大数据信息提供了有效的分析手段.
2) 统计学习的分类准确度会随着训练样本的增加而不断改进,从
而增强了等价变异体识别的有效性和方法的扩展性.
3) 现有的机器学习研究提供了大量成熟的机器学习模型库,为本
文快速和有效地实现等价变异体分类提供了技术上的保障.
我们将本文提出的方法应用于 22 个 C 程序的共计 118 000 个变
异体进行评估.实验结果表明:
1) 在 5-折交叉验证中,基于故障检测上下文的等价变异识别算法
取得 93%的预测准确率(accuracy).
2) 在跨工程间验证中,基于故障检测上下文的技术取得 77%以上
的分类精准度(precision)和 78%的召回率(recall).
1 相关工作
长期以来,等价变异识别问题不仅是阻碍变异测试被工业界广泛
应用的关键原因;同时也是变异测试领域的主要难题.造成该问题未被
攻克的原因有:
1) 等价变异体数量巨大.根据 Yao 等人
[30]
的实验研究数据,等价变
异体的数量占变异体总量的 10%~15%.
2) 人工等价性检测耗时.Schuler 等人
[21]
的研究报告指出,人工判
断变异体等价性平均需要 6~15 min.
3) 自动识别等价变异异常困难.研究者们已经证明,等价变异检测
是不可解问题.这意味着对任一被测程序 p 和变异体 m,不存在算法 A
能准确地判断 m 的等价性
[20]
.
一方面,通过人工手段从大量样本中确认等价变异体是不切实际
的;另一方面,由于等价变异体识别问题的不可判定性,使得到目前
为止,尚不存在能有效检测等价变异体的技术工具.因此,在实践中,
研究者们只能近似地解决该问题:要么为特定变异算子设计相对精准
的等价变异体识别规则,要么设计一个面向通用故障类型的近似算法.
前者可以取得较高的检测精度,但是可扩展性较差;而后者虽然适用
于大部分实践中的被测软件,但是精准度较差.为了开发有效的等价变
异体识别算法,Madeyski 等人
[19]
为该算法提出了 2 方面的需求:
1) 精确性需求.要求通过算法 A 检测出的变异体均为等价变异体.
令 D 为算法 A 识别的等价变异体集,E 为实际的等价变异体集.精确性
要求算法 A 具有高精确率 P,其中 P 的定义为
(1)
2) 可用性需求.要求被测程序的大部分等价变异体都被算法 A 检测
出来.换言之,要求算法 A 具有高召回率 R,其中 R 的定义为
剩余37页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3906
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【后端开发框架】基于PHP的产品报价系统的设计与开发
- 基于C#开发的OPCServer与PLC连接程序+源码
- 三个后端开发项目-基于springboot-内容管理和秒杀系统.zip
- redis-win-2.8.9,redis-win-2.8.9
- 基于django+front+mysql的用户信息管理系统
- Servlet和JDBC实现三层架构
- Appium-Inspector-2024.6.1-win
- Screenshot_2024-06-14-21-22-39-202_net.csdn.csdnplus.jpg
- Appium-Server-GUI-windows-1.22.3-4
- 基于C语言+python实现的永磁同步电机矢量控制算法仿真+源码(毕业设计&课程设计&项目开发)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功