运行 持续集成测试与 运行 手动测试

Running tests in continuous integration vs. running them manually

场景 1:我最近一直在使用 CI 工具 Jenkins,使用 Maven 集成我的 Selenium WebDriver 测试。我理解持续集成(关于测试)是一个概念,一旦开发人员签入某些构建(我们称之为 Build#666),就会自动触发测试。这有助于我们在早期阶段识别错误。

场景 2:现在假设我 运行 在不使用 Jenkins 的情况下进行相同的测试。假设我什至不使用 Maven,我只是右键单击我的 TestNG 套件,然后 运行 它针对 Build#666(这意味着我手动启动我的自动化测试 运行 代码已签入 Build#666)。

除了 Jenkins 允许测试 运行 自动进行(无需像场景 2 中那样的手动干预)并且具有在所需时间安排测试的功能,最大的区别是什么?

→ 我是否也可以将场景 2 视为持续集成,因为我正在针对同一构建部署相同的测试,但我不使用 CI 工具,而是手动执行?

使用 CI 服务器(Jenkins 只是众多选项之一)而不是在本地构建和测试的原因有很多:

  • A CI 服务器为 运行ning 测试提供已知环境。开发者机器通常都有些手动配置,所以测试结果会因安装的软件版本、环境配置等不同而不同

  • CI 服务器可以运行在比开发机器更好或更多的硬件上运行,从而加快构建速度。

  • CI 服务器提供不同构建之间的依赖关系等功能,否则您必须自己实现(脚本)。

  • CI 服务器是构建工件的存储库:编译后的 and/or 打包软件,以及代码覆盖率和静态分析结果等分析结果。

  • 与工程师不同,CI 服务器可以运行 构建

    • 立即
    • 白天或晚上的任何时间
    • 没有假期。
  • 使用 CI 服务器比让工程师做同样的工作要便宜。

倒数第二点意味着不,如果你不运行自动构建你的构建,你就不会CI。自动化将 "C" 放入 CI.