错误分发

时间:2008-11-04 01:23:33

标签: debugging statistics scheduling

我有一个程序,我正在从一种语言移植到另一种语言。我正在使用我自己开发的翻译程序。相关的结果是我希望我的系统中存在许多我需要查找和修复的错误。每个bug都可能在很多地方出现,修复它会在它出现的所有地方修复bug。 (我觉得自己有一个非常大的杠杆,我正在推动短端,我非常努力,但是当事情发生变化时,他们会移动很多。)

我能够运行执行日志差异,所以我测量我的进度,通过测试套件我可以在它偏离原始程序执行之前运行多远。 (感谢[无论你想要什么] BeyondCompare,它与〜1M行文件相当不错:D)

问题是:如果我将运行长度绘制为时间函数,我应该看到什么样的形状?(更多时间==删除更多错误)

我的第一个想法是Poisson distribution。但是,因为修复每个错误也会删除所有其他错误,这应该不太正确。

(顺便说一句,这可能会对估计程序何时完成调试产生实际影响。)

编辑: 一个更抽象的问题陈述:

给定从范围[0,M](其中N> M>)中选择的N个整数的有序列表,其具有沿列表中的位置的均匀分布,但不一定具有均匀的数字分布。最后一个“新”号码的预期位置是多少?倒数第二个怎么样?等?

2 个答案:

答案 0 :(得分:1)

工程师总是接受培训以寻找指数曲线:

  

错误( t )= ceil [c 1 e -c 2 t ] + R( t

其中c 1 和c 2 是常量,取决于测试用例的数量和编码技巧。 R()是一个随机函数,其幅度和分布取决于Butterfly Effect,你昨晚的睡眠量,以及你的截止日期和经理的接近程度。

  • 在开始编码之前,在 t = 0时,所有测试用例都将失败,至少会产生c 1 错误。

    < / LI>
  • 当您编码并且 t 增加时,指数渐近地减少到零,导致计算出的错误数最终达到1.这是因为我们都知道“总有一个错误。“

答案 1 :(得分:0)

通常,作为时间函数找到的 new 错误的数量应遵循类似Poisson的分布。假设错误基本上是在找到的时候修复的,那么开放错误的数量应该遵循相同的分布。

我实际上在我职业生涯的早期就用这个来向我的业务部门“证明”特定功能集还没有准备好发布。我为当前项目以及之前的两个版本绘制了新的和开放的错误作为时间的函数。两个较旧的数据集显示出最初的急剧上升,一个峰值,并且在发布日期之前逐渐下降。当前数据显示线性增长持续到我创建图表的那一天。

我们接受了几天的测试,测试人员接受了有关如何更有效地测试产品的培训。由于这两个决定,发布相对没有缺陷。