在上一篇文章中,我们讨论了敏捷团队自动化测试用例的各种用例。其中一种情况是,团队希望将测试与每个构建集成,并将持续集成作为构建过程的一部分。
在本文中,我们将讨论持续集成/持续交付平台中的集成测试。
让我们先从基础知识开始。
什么是自动化测试?
软件测试是指根据一组测试用例执行测试,并将实际结果与预测结果进行比较。在此过程中遵循几个步骤和测试技术。测试对于确保产品质量至关重要。此过程通常由测试人员团队手动完成。然而,在自动化测试中,该过程是使用软件工具和技术实现自动化的。在这里,不再需要手动操作,而是自动创建脚本并运行测试用例。自动化测试消除了人为错误、覆盖范围等许多问题。它还节省了时间,提高了进行测试的便利性,提高了效率和效果。
CI/CD 管道中的自动化测试
自动化测试是CI/CD 管道的核心部分,因为快速运行的测试可以为开发人员提供早期反馈。及早发现的问题或错误有可能及早得到纠正。因此,发布的产品将更加准确且无错误。这提高了产品的整体质量,从而赢得了客户的满意度。简而言之,CI/CD管道中自动化测试的优势如下:
- 符合“快速构建,快速失败”的 CI/CD 理念
- 减少人工,从而节省时间并降低出错的可能性。
- 随着测试用例数量的增加,测试结果更加准确,并且可以覆盖更广泛的区域。
- 立即获得任何问题的反馈
- 可以生成并比较多个测试结果,以确保质量和一致性
CI/CD 管道中使用的自动化测试类型
- 单元测试:这是在模块编码和审查后进行的低级测试。测试用例旨在测试各个组件。目的是确保每个组件在任何情况下都能按预期工作。
- 集成测试:集成是指测试应用程序内组件的交互。此测试是在所有模块都经过单元测试后进行的。主要目的是测试模块接口并检查当一个模块调用另一个模块的功能时参数传递没有错误。
- 系统测试:测试旨在验证完全开发的系统并确保其符合需求规范文档。通常,在此阶段,软件已准备好供潜在用户使用。这些类型的系统测试称为 alpha(由组织内的开发团队执行)、beta(由选定的一组用户/客户执行)或验收测试(由用户/客户执行以确定交付的接受情况)系统)。
什么是持续集成和持续交付?
简而言之,持续集成允许开发团队将他们的代码集成到共享存储库中。这有助于维护代码质量并尽早识别本地版本代码的潜在问题。
持续交付通常也称为“持续部署”。开发团队不断合并的所有内容都会不断部署到实际环境中。
由于大多数开发人员都是并行工作的,因此不断地将他们的代码集成到一个存储库中意味着主分支会不断更新新功能。为了确保代码质量不会因如此快速发生的变化而受到影响,测试必须以相同的速度进行。
毫无疑问,在这种环境下进行手动测试并不是实现这一目标的最佳方法。自动化测试是 CI/CD 管道中成功测试的关键。
9 个持续交付阶段
- 开发: 开发人员根据项目需求或功能请求构建代码。
- 编写测试:一旦编写了代码,就需要编写测试。此时,这些测试通常是开发人员编写的单元测试。
- 本地测试:然后进行本地测试,以检查所有测试是否通过并确保代码不会中断。通常,会设置一个百分比作为运行测试需要达到的通过率。
- Rebase和解决冲突:在实际的开发场景中,会有多人合并他们的代码。开发人员需要确保他们的分支始终更新。用最新的合并代码更新分支称为“变基”。一旦重新定位,可能会出现一些需要解决的冲突。之后,针对重新调整基础的代码再次运行测试。
- 提交:测试通过后,代码就可以提交所有更改。
- 构建:然后将开发的源代码组合起来,构建一个可以在实例上运行的部署工件,如果环境在本地,则该工件可以在服务器上运行。此代码现在可以部署到不同的测试环境中。
- UAT:然后将代码部署到测试服务器,测试人员开始测试该功能。这些测试可以是自动化的,也可以是手动的。
- 合并:如果正在测试的提交得到测试人员的批准,则会将其合并到主分支中。
- 生产部署:合并代码后,就会将其部署到生产中。
开发人员编写的每个构建代码都需要执行上述过程。
自动化测试在 CI/CD 管道中处于什么位置?
自动化测试最好在构建阶段完成并可以部署代码后进行。单元测试、UI 测试和集成测试都可以在此阶段运行。这些测试有助于确保代码符合质量标准。
此阶段可能持续几分钟到几个小时,具体取决于自动化的架构方式。
测试可以并行运行以更快地执行它们。如果代码在测试阶段失败,则可以拒绝构建,而无需进一步投入任何手动测试时间。
CI/CD 使用的工具
- Jenkins: Jenkins 是一个用于持续集成的开源工具。它可以免费使用,并且可以通过界面和脚本配置作业。
- Travis CI: 该工具对于由 GitHub 托管的开源项目是免费的。
- Gitlab: Gitlab 是一款版本控制工具,拥有自己的基于云的 CI 方法。它支持多个平台,有免费版和付费版。
- Bamboo: Bamboo 是 Jira 的 CI 工具。如果您的组织使用 Jira,那么检查一下这个工具将会很有帮助。它还支持票证批准时的自动合并。
CI/CD 管道的最佳实践,以充分利用测试自动化
- 增量更改:始终建议遵循逐个功能的方法。如果功能确实很大,最好将其分解为更小且测试速度更快的功能。这对于自动化来说很重要,因为如果出现问题,更容易找出根本原因。如果您的承诺太大,那么找出问题的原因将是一项艰巨的任务。
- 确定什么可以自动化:团队快速潜入并说“让我们自动化一切”是很常见的,但这是一个常见的错误。我们必须了解自动化的目的并确定应该自动化的测试用例。
- 并行测试: 测试应该并行运行,以使测试更加高效和及时。它可以大大减少运行测试所需的时间,从而更快地给出结果。但仅仅并行执行这些测试是不够的;扩展运行测试的服务器大小也很重要,这样才能真正提高测试速度。
结论
自动化测试是成功部署项目同时保持质量标准的重要组成部分。确保在每个阶段都运行测试可以使代码质量具有良好的透明度。可以在早期发现错误,并且可以及时解决可能由错误引起的任何延迟。拥有集成测试的 CI/CD 管道有助于加快测试和部署过程。