侦测单元测试源控制中的历史版本

时间:2012-01-19 18:22:31

标签: testing version-control

是否有工具可以对源代码控制的以前版本的软件进行单元测试? 这个想法会出现一个错误,我想知道它何时被引入,所以我写了一个新的测试,软件从源代码控制中检出每个版本,在每个版本上运行测试,直到测试不再失败或者我们到了开头。

我们使用颠覆,但我很好奇是否存在这样的事情。

3 个答案:

答案 0 :(得分:3)

Mercurial有一个名为bisect的内置命令,它基本上可以满足您的需求。

它被设计为使用用户编写的脚本,但简而言之,它执行二进制搜索,其中您的脚本(运行单元测试)告诉bisect检出的修订版是否“通过”或“失败”并基于它会在历史记录中移动,直到找到引入错误的修订版本。

我不确定SVN是否存在这样的工具,但我发现使用Mercurial对这类工具非常有用。

答案 1 :(得分:3)

Mercurial(和Git)中的Bisect完成了这项工作,除了ckecking 每个后退版本 - 它更快地找到问题的来源

答案 2 :(得分:1)

几乎任何版本控制系统都可以让您查看整个版本的特定版本。并允许您跟踪构建的任何特定文件的历史记录/更改。

通常情况下,我只是采取一种简单的“分而治之”的方法:

  a) Check out a really old version into a scratch directory

  b) Build and confirm it DOESN'T have the bug

  c) Manually compare the old and current versions and make "educated guesses" as to "what changed".

  d) Check out a version between the old and current version (based on what I found in step c).

  e) Build and test.

  f) If it has the bug, check out version between a) and d).

     If it doesn't have the bug, check out a version between d) and the current.

  g) Rinse and repeat

是的,部分或全部可以编写脚本。

在bash中(如果您使用的是Linux),或者使用您选择的脚本语言。