是否有工具可以对源代码控制的以前版本的软件进行单元测试? 这个想法会出现一个错误,我想知道它何时被引入,所以我写了一个新的测试,软件从源代码控制中检出每个版本,在每个版本上运行测试,直到测试不再失败或者我们到了开头。
我们使用颠覆,但我很好奇是否存在这样的事情。
答案 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),或者使用您选择的脚本语言。