在我的工作中,我们正在运行一组包含大约3,000个独立测试用例的测试。以前我们在一台机器上运行整个测试套件,大约需要24-72小时才能完成整个测试运行。我们现在已经创建了我们自己的系统,用于在大约三台独立的机器之间对测试进行分组和分发,并且优先考虑测试,以便首先运行核心测试以获得更直接的结果,并在有可用机器时运行额外的测试。
我很好奇是否有人找到了一种在多台机器中分配测试的好方法,以减少完整运行的总测试时间以及使用哪些工具来实现这一目标。我做了一些研究,看起来TestNG是moving in this direction,但看起来它仍处于相当多的发展阶段。
我们不打算重写我们的任何测试,但是当我们添加新测试并测试新产品或附加组件时,我希望能够处理这样一个事实:我们正在处理大量的测试试验。另一方面,如果我们能够找到一种工具来帮助分发我们的Junit 3.x
测试,即使是以非常基本的方式,那么会有用,因为我们不需要维护我们的自己的工具来做到这一点。
答案 0 :(得分:2)
我见过有些人玩distributed JUnit。我不能特别保证它有多么有效,但我见过的其他球队似乎认为这很直接。希望有所帮助。
答案 1 :(得分:1)
我们的构建人员使用Mozilla Tinderbox。它似乎有一些分布式测试的钩子。我很抱歉不知道细节,但我想我至少会把指针传给你。
它也很好,因为你可以在构建中断时立即发现,以及签到可能是罪魁祸首。
答案 2 :(得分:1)
还有parallel-junit。根据您当前执行测试的方式,它的便利性可能会有所不同 - 这个想法只是在具有多个内核的单个系统上进行多线程处理。我曾经简单地玩过它,但它与我们目前运行测试的方式有所不同。
Hudson,我使用的持续集成引擎,也有一些方法来分发测试运行(单独的作业聚合结果集于一身)。