-
Notifications
You must be signed in to change notification settings - Fork 0
Progress Report 2018.10.21
TimHe edited this page Feb 10, 2019
·
1 revision
- 基础性数据统计: * 具有性能分布特征的bug占调研bug的比例 * 要得到分布所需要的自变量是否包括配置、workload特征 * 要得到分布所需要的自变量个数(只有3维以下才能画出分布图像) * 要得到分布所需的自变量是否很特殊(如workload特征是否为常规特征) * 这些bug的root cause分为哪几类,都有多少。用于展现bug的root cause很多,当前工作都是针对解决某一或某几种bug。 * ......
- 总结出性能分布的pattern
- 复现已有的bug,得到数十个bug’s distribution(每个pattern都要有几个)—负样本。
- 通过测试,得到软件normal distribution —正样本
- 通过重采样技术扩充正样本
- 通过特征提取手段学习负样本的特征,进一步训练出一个分类器。 * 分类器的输入是:unknown distribution * 分类器的输出是:是否为bug’s distribution、如果是,符合bug’s distribution的特征是什么
- 对bug划分训练集和测试集,看用训练集训练出来的分类器是否能识别出测试集中所有bug
- 使用大负载测试软件得到一些正常的分布(这样的分布中肯定有的地方很大)看分类器是否误报
关于这一部分,我没有找到比较好对比的工作,因为其他人的工作我目前发现都要么是完全牺牲准确性(用profile找到最该优化的函数。所谓牺牲准确性就是:只要进行测试,总能给出一个ranklist,是不是真的bug,开发者自己判断)要么是完全牺牲全面性(用代码pattern进行bug检查,比如只检查inefficent loop的代码)。因此,我目前考虑的就是在上一RQ中的数据集上,使用基于profile的方法的漏报和误报。profile方法就是简单地设定一个阈值,超过就是bug。或者我就把基于profile的和基于代码特征的方法全部和我进行比较,这些方法可能有的误报比我多有的漏报比我多。
使用重采样 vs 不使用重采样 的漏报&误报
得到distribution的时间,训练的时间