10

在我的工作中,我们正在运行一组测试,其中包含大约 3,000 个单独的测试用例。以前我们在一台机器上运行整个测试套件,大约需要 24-72 小时才能完成整个测试运行。我们现在已经创建了自己的系统,用于在大约三台不同的机器上对测试进行分组和分配,并且测试优先级,以便首先运行核心测试以获得更直接的结果,并在有可用机器时运行额外的测试。

我很好奇是否有人找到了一种在多台机器上分配测试以减少完整运行的总测试时间的好方法,以及使用了哪些工具来实现这一点。我做了一些研究,看起来 TestNG 正在朝着这个方向发展,但看起来它仍然处于相当多的发展阶段。

我们不打算重写任何测试,但是当我们添加新测试和测试新产品或附加组件时,我希望能够处理我们正在处理大量测试的事实。另一方面,如果我们能找到一个工具来帮助分发我们的 Junit3.x测试,即使是以非常基本的方式,那也会很有帮助,因为我们不必维护自己的工具来做到这一点。

4

3 回答 3

3

我见过一些人玩分布式 JUnit。我不能特别保证它的有效性,但我见过的其他团队似乎认为它足够直截了当。希望有帮助。

于 2008-08-11T21:13:06.813 回答
1

我们的构建人员使用 Mozilla Tinderbox。它似乎有一些用于分布式测试的钩子。很抱歉不知道细节,但我想我至少会将指针传递给你。

这也很好,因为您可以在构建中断时立即发现,以及哪些签入可能是罪魁祸首。

http://www.mozilla.org/tinderbox.html

于 2008-08-11T22:09:16.827 回答
1

还有parallel-junit。根据您当前执行测试的方式,其便利性可能会有所不同 - 这个想法只是在具有多个内核的单个系统上进行多线程。我已经简单地使用过它,但它与我们当前运行测试的方式不同。

我使用的持续集成引擎Hudson也有一些分布测试运行的方法(将单独的作业聚合结果合二为一)。

于 2008-08-13T02:13:56.410 回答