机器学习方法预测蜕变关系

下一步研究计划

使用机器学习方法预测蜕变测试中的蜕变关系。

是什么?

介绍的是当蜕变测试应用于单元测试中,函数为数值型计算程序,知道程序的源代码和单元块,针对代码的一项函数构建该函数的蜕变关系。
蜕变关系不再一一累述。

1. 蜕变关系

如果预先定义了一套蜕变关系,该关系如下:

蜕变关系名称输入的变化相应的输出改变
Permutative随机改变元素的序列维持不变
Additive加上一个正常数增加或维持不变
Multiplicative乘一个正常数增加或维持不变
Invertive取相反数减少或维持不变
Inclusive增加一个新元素增加或维持不变
Exclusive删除一个元素减少或维持不变

:预定的蜕变关系由来:Murphy在2008年发表的论文Properties of machine learning applications for use in metamorphic testing中提出的数学函数常见的蜕变关系。

2. 函数的来源

数据是由一个个的Java代码片段组成的,从三大开源代码库获取代码语料库。
第一个是The Colt Project: Java高性能科学和技术计算开源库;
第二个是Apache Mahout: Java机器学习库;
第三个是Apache Commons Mathematics Library: Java数学和统计组件库;

3. 方法概要

简单版的——2013年Using Machine Learning Techniques to Detect Metamorphic Relations for Programs without Test Oracles论文
1)从功能源代码创建控制流图
2)从控制流图提取特征集,一个机器学习算法用这些特征创建一个预测模型
3)用开发的预测模型预测先前未见的功能的蜕变关系
简单版
加强版的——2015年Predicting metamorphic relations for testing scientific software: a machine learning approach using graph kernels论文
训练阶段
1)创建带有控制流和数据依赖信息的功能图形表达的特征集,这个特征集是带有表明是否满足给定MR类别的所有功能集合
2)计算图核,图核提供了训练集每对功能的相似度分数
3)计算得到的图核用于支持向量机创建预测模型
测试阶段
4)用训练得到的模型预测先前未见的功能是否满足考虑的MR
加强版
最新版本——2018年Using Semi-Supervised Learning for Predicting Metamorphic Relations论文(半监督)
1)转换功能为控制流图
2)从控制流图中提出特征集,输入特征到所选的机器学习算法
3)算法用来预测新功能的标签
最新版

4. 功能的图形表达

使用Soot框架创建控制流图,Soot由Jimple语言产生控制流图,三地址中间表达,每一个控制流图结点代表一个原子操作。相应地,功能的图形表达可以下载。

5. 特征集的表示(简单版的)

  • 结点特征(结点名称-入度-出度)
    结点特征

  • 路径特征(所有的路径、子路径)
    路径特征

  • 类别标签
    是否满足蜕变关系(-1和1),根据给定的蜕变关系,制定其类别标签值。

  • 训练特征集
    训练特征集

训练与测试

使用上述得到的训练集,用SVM训练得到预测模型;
使用训练模型预测新的功能的蜕变关系。

为什么?

好在哪里?

实验

。。。未完待续。。。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值