jenkins - 什么工具可以测试复杂的多进程系统?

标签 jenkins automated-tests

我们有一个数据采集系统,由许多一起运行的程序和脚本组成,有些是顺序运行的,大多数是并行运行的,在不同的机器上。

我们使用 Jenkins 来构建和运行单元测试。

我们现在想要通过使用数据生成器作为系统的输入并检查数据采集链的输出来测试整个系统。

测试系统的步骤的简化 View :

  • 还原系统(数据库、存储库中的包、重新启动虚拟机)
  • 根据需要配置系统(写入要使用的配置文件,更新数据库)
  • 启动所需的几个父进程并等待它们准备就绪
  • 开始数据输入
  • 完成后,收集指标和结果,与预期结果进行比较,检查日志中的错误消息,...

  • 理想情况下,我们将使用不同的配置和输入来运行它。

    你会用什么工具来做?或者您会尝试直接在 jenkins 中执行此操作吗?

    最佳答案

    您没有告诉我们足够的关于您的设置的信息,无法为您提供具体的答案。这在很大程度上取决于您使用的语言/环境。您可能需要以下一项或多项的组合:

  • Vagrant/Chef 或 Puppet/Veewee/VirtualBox 自动构建虚拟机并配置和运行它们。那是假设一个 Linux 平台。 Chef + Linux 容器要快得多,特别是如果您在 ram 磁盘上运行它(它应该是一个可重复的过程,因此只需要存储工件)
  • 具有版本控制功能的包缓存,用于您需要在 VM 上安装的所有系统包
  • 一些运行验收测试的框架,Cucumber,Robot 等等。如果您的单元测试很好,那么您可能能够逃脱冒烟测试。
  • 模拟您的系统,您可以从日志中提供运行时结果,以便您知道如何以及何时进行扩展。

  • 您很可能会遇到慢速测试问题,因为您必须填充数据库,并且可能不得不拆分测试作业。一般来说,让这个工作的反馈循环太慢了,你可能需要非常有创意才能获得可接受的周期时间。

    在不同的环境中,为此有不同的工具,拥有多个堆栈并没有多大乐趣。 Jenkins 在 Java 堆栈上运行,Puppet & Chef 在 Ruby 堆栈上运行,并且有类似的工具用于 Python、c 和 perl 堆栈。您必须自己决定是要拥有一流的集成问题,还是要使用单个堆栈并自己编写代码。两者都可以工作,而且都不是微不足道的。团队经验很可能是那里的决定因素。

    DevOps 中的反馈循环比现代 CI 开发环境的反馈循环差很多,因此您必须预先做更多的计划和研究。一天中可以运行的实验数量要少得多,至少是 20 倍左右,因此第一次使事情成功将很困难。确保你有经验的人这样做。

    关于jenkins - 什么工具可以测试复杂的多进程系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16276628/

    相关文章:

    jenkins - 您可以拥有多少个 Jenkins Executor?

    maven - 使用 Maven 拆分单元和集成测试

    Jenkins 工作失踪

    java - 使用 Cucumber、Jmeter 和 FailSafe 的自动化框架是否需要 ThreadLocal?

    selenium - 在 Hudson 下运行自动化 Web 浏览器测试

    java - 让 Jenkins 自动运行失败的测试

    Jenkins 构建管道计划触发器

    selenium - 如何安装 Selenium RC?

    java - 我可以对多个测试类使用相同的参数化数据吗

    java - 为 arquillian 测试中的嵌入 Wildfly 设置环境变量