Jenkins CI-构建完成后的分布式测试

时间:2014-10-17 15:33:07

标签: unit-testing maven junit jenkins distributed

目前我正在尝试实现:我使用Jenkins不断构建我的项目,我也想在构建完成后进行分布式测试,即。跨多个节点/从属调度烟雾测试,以便测试可以同时在多个平台上执行,每个节点将持续接受来自主服务器的新调度测试套件,直到所有测试套件完成。

我试过了:

  • 在Jenkins上设置主/从配置
  • 在构建步骤中调用Maven以运行Junit单元测试

然而Jenkins只会选择一个奴隶来执行所有测试。 我也试过DistTest插件,但是我发现插件很难设置库的相对路径,有没有人有这个插件的经验?

到目前为止,我提出的最佳方式是:

  • 为每个可用的从站创建新的Jenkins作业,并在从站
  • 上分配(硬编码)测试套件
  • 使用Multijob插件立即触发所有作业

这个解决方案解决了这个问题,但是一旦奴隶增加到很大的数量,就很难扩展。我明白Jenkins'主要的优势在于持续集成而不是分布式测试,对于我应该进行的工具或方向的任何建议,以便与Jenkins实现这一点将不胜感激。

2 个答案:

答案 0 :(得分:0)

我读了你想要实现的几次,我理解/假设的是你有一套测试套件,你想要在slave / master上完成构建后通过一个salve执行。现在我假设测试类型和相关的测试套件将保持不变(例如对一种或多种类型的从站(linux,MAc,Win,Solaris等)进行冒烟测试,然后你就有其他测试套件,如无头等。 ..

这些不是有限数量的组合,您可以创建作业并在主作业中按顺序执行它们,有build flow plugintemplate workflow plugin或某些信息关于distributed builds in jenkins

或者如果我需要更好地控制执行,我可以创建一个ant脚本,通过远程命令(如sshexec ant task)在多个服务器上执行目标,然后在ant脚本中编排流程。 Ant脚本可以通用化,以接受可能类似于您所指的动态值的参数。

很想知道这对你自己的影响。 !

答案 1 :(得分:0)

您的JUnit冒烟测试是否与Maven项目分开?

如果是:

  • 为每个测试创建一个Jenkins Maven项目
  • 使用NodeLabel Parameter Plugin标记您的奴隶
  • 为您的工作分配适当的标签

Jenkins自动分发你的构建。

这就是我们如何为十几个模块进行集成测试。

如果您的测试不是单独的项目,请考虑相应地进行调整。


@ C.X.Yang:由于评论字段长度限制,于10月21日凌晨2点(CEST)评论:

“test set”与您的问题中的“test suite”相同吗?

我们的应用程序的每个第一级项目都有一个名为test的文件夹。这些文件夹中的每一个都包含Multi-module POM个包含(大量)测试的< modules>。

因此,最终我们只有15个Jenkins作业执行所有测试,这15个测试(及其子测试)通过标签分布在节点上。我们不在不同平台上进行测试,但我认为原则上无关紧要 - 节点是节点。

您的测试中是否没有共同点,以便您可以将它们分配/收集到有限数量的适当多模块POM中?

我们在您的网站上讨论了多少个不同的平台(平台等于 OS ?)和测试套件/套件?