格林先生在刀研究中 - 谁打破了建筑?

时间:2013-08-21 21:04:38

标签: unit-testing maven junit

您如何确定构建测试失败的责任?我们有一个大型的maven java版本,大约有80个模块,有25000个测试。当我们每晚完成时,我们会列出现有和新的故障。

当测试失败时,我们有以下数据:

  • 自上次构建以来的提交者
  • 从单元测试失败调用堆栈
  • 源代码
  • maven依赖树

我们可以根据以下内容进行分配:

  • 自上次测试以来所有承诺的人
  • 谁最后触及了测试源文件
  • 谁最后碰到了测试(在调用堆栈中找到测试,找到行,使用SVN指责确定作者)

我想做的是确定测试破裂的原因,找到最好的调查员并让他们解决。但是,单元测试执行操作,检查和断言然后抛出。调用堆栈来自断言,而不是问题发生的地方。

我想我可以在断言之前扫描文件并追踪正在使用的对象。

  • 找到该对象的源文件。我只会看看我的物品而不是第三方
  • 确定自上次通过测试后是否已修改。
  • 使用责备来识别作者

有没有人有更好的想法或知道处理部分或全部分析的插件?

由于

彼得

1 个答案:

答案 0 :(得分:3)

如果您的测试更好地命名并在失败时输出更好的消息,理论上您不应该直接找到问题原因的堆栈跟踪。它会让人知道他们提交代码时为什么/如何破坏代码。我不知道这是否是现实中的一种选择,特别是因为更糟糕的情况,你可能需要修改25,000个测试。

听起来你要求的工具已经是你正在使用的工具。您有自动化测试以及构建中断时提交的人员列表。我认为最大的问题是你的反馈循环需要一整夜。如果你有更频繁的单元测试,那么当你打破构建时会更明显,因为你会更快地被告知它。