Skip to content

Progress Report 2018.11.04

TimHe edited this page Feb 10, 2019 · 1 revision

1.开始调研非配置相关的性能bug,并复现,结果见此处。复现结果形式:此处这样结果就是最后论文里公开的数据,我想用这样的方式来说服别人我是真正去复现了的,师姐您觉得是不是合适。主要是这样把所有命令都贴上去是不是合适。非配置相关的性能bug也是可以构建出性能分布的,其特征也符合之前总结出的几类,不过需要对workload特征的总结(配置相关的性能bug也需要),我目前总结的如下表: TestOracleForPerfTest_key.png 要总结这样的workload特征,就需要定义什么特征是可以作为特征的,什么是不可以的。目的是:只有特征具有一定的普遍性,那么才可以用测试的方法测试具有这些特征的workload,进一步才能构建出性能分布,诊断bug。我现在的定义是:类似于“元数据”的可以作为workload特征,而具体数据必须可以是随机生成的。这个定义目前还比较合适。 比如“一个insert语句中,是否含有很多的相同字符”就不能作为特征。

2.如果调研所有的性能bug,那么数据集就会很大,研究、复现所有的bug显然不可行,那么就要用抽样的方法,我看到lushan他们pldi12的文章没有讲抽样这件事,就是说他们最后用了xxx个bug。但是hanxue后来18年的时候可能是因为bug变多了,搜索出来的bug有1k多,所以随机从中选了300个。我用我目前的方法搜索到的所有性能bug数量如下:TestOracleForPerfTest_key-2.png

这个数量很大,显然也要随机选一些,但是选多少是一个问题。因此我读了【ICSE11】的文章A Practical Guide for Using Statistical Tests to Assess Randomized Algorithms in Software Engineering。这篇文章讲的是:要达到统计学意义上的可信,那么在测试中如何确定“随机算法”运行的次数。这个和我从几千bugreport中如何确定抽样数有点关系,这个问题我也和hanxue在讨论,他还没有回复我。

Clone this wiki locally