DevOps 中的持续测试

什么是持续测试?

DevOps 中的持续测试是一种软件测试类型,它涉及在软件开发生命周期的每个阶段进行软件测试。持续测试的目标是通过尽早和频繁地测试,在持续交付过程的每个步骤评估软件质量。

DevOps 中的持续测试过程涉及开发人员、DevOps、QA 和操作系统等利益相关者。

持续测试有何不同?

Continuous Testing
持续测试

旧的测试方式是以移交为中心。软件从一个团队移交到另一个团队。一个项目将有明确的开发和 QA 阶段。QA 团队总是需要更多时间来确保质量。目标是质量应优先于项目进度。

然而,企业希望更快地将软件交付给最终用户。软件越新,就越能更好地进行市场推广,并增加公司的收入潜力。因此,一种新的测试方式应运而生。

持续意味着不间断地进行测试。在持续 DevOps 流程中,软件更改(发布候选版本)不断地从开发移到测试再到部署。

Continuous DevOps process
持续 DevOps 流程

代码不断地开发、交付、测试和部署。

例如,每当开发人员将代码检入到像 Jenkins 这样的源代码服务器时,自动化的一组单元测试就会在持续过程中执行。如果测试失败,构建将被拒绝,并通知开发人员。如果构建通过测试,它将被部署到性能、QA 服务器进行详尽的功能和负载测试。测试并行运行。如果测试通过,软件将部署到生产环境。

持续测试是持续开发、集成和部署周期中的一个小小环节。

Current Testing Stack
当前测试栈

软件开发与过去不同,我们已将开发周期从数月缩短到数周。当前的测试栈(见上图)倾向于 UI 测试。但目标是拥有越来越多的自动化单元测试。

持续测试与自动化测试有何不同?

自动化测试与持续测试

参数 自动化测试 持续测试
定义 自动化测试是使用工具或软件来自动化任务的过程。 它是一种软件测试方法,专注于实现持续质量和改进。
目的 一组相似或重复的任务,机器可以更快、错误更少地执行。 持续测试过程有助于发现风险、解决风险并提高产品质量。
前提条件 测试自动化可以在不集成持续测试的情况下实现。 没有测试自动化,就无法实施持续测试。
时间管理 软件发布可能需要数月到数年。 软件发布可能每周到每小时发布一次。
反馈 每次发布测试后定期反馈。 每个阶段的反馈都需要即时。
历史 自动化测试已进行了数十年,以加快测试过程。 持续测试是一个相对较新的概念。

如何进行持续测试

  • 使用工具从用户故事/需求生成自动化测试套件
  • 创建测试环境。
  • 复制并匿名化生产数据以创建测试数据集
  • 使用服务虚拟化测试 API
  • 并行性能测试

持续测试工具

以下是精选的最佳持续测试工具列表

1) QuerySurge

QuerySurge 是智能数据测试解决方案,是首个用于持续数据测试的全 DevOps 解决方案。主要功能包括具有 60 多个调用的强大 API、详细的数据智能和数据分析、无缝集成到 DevOps 管道以进行持续测试,以及快速验证大量数据。

免费开始测试

2) Jenkins

Jenkins 是一个使用 Java 语言编写的持续集成工具。此工具可以通过 GUI 界面或控制台命令进行配置。

下载链接:https://jenkins.io/

3) Travis

Travis 是一个托管在 GitHub 上的持续测试工具。它提供托管和本地部署两种版本。它支持各种不同的语言并提供良好的文档。

下载链接: https://travis-ci.org/

4) Selenium

Selenium 是开源软件测试工具。它支持所有主流浏览器,如 Firefox、Chrome、IE 和 Safari。Selenium WebDriver 用于自动化 Web 应用程序测试。

下载链接: https://www.seleniumhq.org/

持续测试的优点

  • 加速软件交付
  • 持续测试可提高代码质量
  • 它有助于评估精确的业务风险覆盖范围。
  • 它无缝集成到 DevOps 流程中
  • 有助于在数小时而非数月内创建敏捷可靠的流程。
  • 通过持续反馈机制加速上市时间。
  • 将传统上孤立的团队融合在一起,以满足现代企业需求。消除开发、测试和运营团队之间的脱节。
  • 自动化测试通过为所有相关测试保持相同的配置来帮助实现一致性。
  • 强调业务期望以降低业务风险
  • 通过服务虚拟化提供无处不在的测试环境访问

持续测试的挑战

  • 传统流程限制了开发和 QA 专业人员之间的文化转变。
  • 缺乏在敏捷和 DevOps 环境中进行测试的 DevOps 技能和正确工具。
  • 异构测试环境永远无法反映生产环境。
  • 传统的测试流程和定义松散的测试数据管理。
  • 较长的代码集成周期导致集成问题和延迟缺陷修复
  • 不足和无效的资源和测试环境
  • 复杂的应用程序架构和业务逻辑限制了 DevOps 的采用。

结论

  • 在软件工程中,持续测试是一个尽早测试、频繁测试、随处测试和自动化的过程。
  • 旧的测试方式是以移交为中心。软件从一个团队移交到另一个团队
  • Jenkins、Travis 和 Selenium 是流行的持续测试和集成工具
  • 持续测试根据交付管道的每个阶段提供可操作的反馈。
  • 持续测试有助于提高代码质量
  • 传统流程限制了开发和 QA 专业人员之间的文化转变。
  • 较长的代码集成周期导致集成问题和延迟缺陷修复