DevOps 在企业中显的尤其重要。如果我们能制定一个好的测试策略就能够离成功更进一步。
什么是 DevOps 测试策略?
DevOps 测试策略必须专注于持续测试。测试不能是 DevOps or Agile ,除非它是连续的。
DevOps 的一个重要组成部分是持续集成/持续交付(CI/CD)。在CI和CD之间,应该是持续测试。
如果不进行持续测试,将会出现:
- 缺陷的泄漏
- 软件延期交付
- 客户不满意
DevOps测试策略的好处
以下是可以从一个强有力的战略中预期到的一些好处。
提供更快的反馈
提供更快的反馈。我们都不希望看到开发人员不得不回到他们在1-2周前编写的代码中去修复一个bug。我们希望他们得到更快的反馈,这样他们就可以立即解决问题。我们可以更快地释放投入到其他工作。
覆盖更多平台
通过实施扩展自动化测试的策略来覆盖更多的平台。这可能具有挑战性,因为移动和网络平台都是分离的。但是,当我们使用正确的测试自动化工具时,可以确保在更快的时间内覆盖更多的平台。
减少测试执行时间限制
最后,减少测试执行的时间限制。执行时间需要更短。当我们大规模并行运行,并使用正确的工具时,我们可以加快上线的时间。
我们如何确保一个可靠的战略,从而体验到好处?要做到这点,我们需要遵循 DevOps best practices。
开发DevOps测试策略的最佳实践
对于大多数组织来说,理想的状态是持续测试。但是组织正在努力寻找测试自动化的坚实基础。 以下是我们制定测试策略的最佳实践。
进行规模的自动化测试
为了建立一个成功的DevOps测试策略,需要在 Web 和移动设备上扩展测试自动化。
扩展Web测试
有三种扩展web测试的方式:
- DIY (e.g., Selenium Grid in-house)
- 容器化计算 (e.g., using Docker and Selenium)
- 云 (e.g., Selenium Grid with Perfecto)
扩展移动测试
同样,有三种扩展移动测试的方式:
- DIY
- Crowdsourcing
- Cloud testing labs (e.g., Perfecto)
有两种主要的解决方案可用于扩展 Web 和移动(以及跨浏览器)的测试自动化。 一种选择是使用开源框架(e.g., Cucumber)。另一种选择是无代码(e.g., Selenium)。
自动化所有测试类型
要制定一个成功的策略,需要跨所有测试类型实现自动化。这包括功能测试和非功能测试,包括性能、可访问性和单元代码覆盖率。
维护稳定的测试自动化套件
CI内部和CI外部的自动化是敏捷和DevOps的核心。确保自动化持续增加价值 -> 并满足上述目标 -> 需要一个稳定的测试自动化套件。
自动化套件必要时进行不断的审查、审核、维护和重构。
随着产品代码的更改,测试也会随之更改。确保团队正在研究测试场景并在需要时对其进行更新。
使用支持框架
战略的另一个重要步骤是使用支持框架。
以下是使用支持框架的示例:
- 提供测试结构 (BDD/ATDD) (Mocha, Jasmine, Jest, Cucumber)
- 提供断言功能 (Chai, Jasmine, Jest, Unexpected)
- 生成,显示和观察测试结果 (Mocha, Jasmine, Jest, Karma)
- 生成代码覆盖率报告 (Istanbul, Jest, Blanket)
- 提供一个浏览器或者类似浏览器的环境,可以控制场景执行,UI测试等 (Protractor, Nightwatch, Phantom, Casper, Selenium, WebDriver.io, TestCafe)
- 提供 mocks, spies, and stubs (Sinon, Jasmine, enzyme, Jest, testdouble)
依靠企业级实验室
为了快速发布高质量的产品,团队应依靠强大的实验室:
- 这可以扩展。
- 这是安全的。
- 这对于所有类型的测试都是可用的。
- 这是所有最新移动和网络平台的最新版本。
此外,这样的实验室应该能够支持所有先进的自动化能力。这包括团队需要自动化的音频、位置、图像和其他数字相关功能。
使用高级报告和分析
每个测试活动的核心都有一份测试报告。报告越详细、越有可操作性,开发人员就越能更快地找出故障的根本原因并向前推进。
确保使用强大的报告平台作为整个测试活动的一部分。
使用Headless Browsers
Headless Browsers在web应用的测试策略中扮演着重要的角色。这些是开发人员友好的工具。使用headless Browsers可以帮助开发人员向测试工程师提供更稳定的版本。此外,headless Browsers — 例如:Google Puppeteer —是免费的。
开发人员不需要设置Selenium Grid。他们可以直接把Puppeteer部署到他们的环境中。从那里,开发人员可以用JavaScript进行一些性能审计、可访问性测试和一些单元测试。
这在扩展测试自动化方面发挥了重要的作用,因此可以成功实施 DevOps 测试策略。
让整个团队参与测试
如果没有整个团队的参与,DevOps测试策略是不会成功的。
为了对每个pull请求和代码更改进行大规模的自动化测试,你需要:
- 业务测试人员进行探索性和结构化的手工测试——利用无代码自动化测试。
- 测试中的软件开发人员(SDET)创建基于功能和非功能代码的自动化测试脚本(via Selenium, Appium等)
- 软件开发人员创建单元并构建验收测试
测试先驱:数字赢家如何应对测试自动化
是什么让领先公司在测试自动化领域脱颖而出?在本次章节中,解决方案工程师Johnny Lam将利用他与全球领先企业(从财富500强到初创公司)并肩工作的经验,来制定、实施和执行他们的测试自动化计划。他们采取了哪些措施来加快测试的速度,并以经济有效的方式扩大测试的规模?在这个环节中得到答案。
成功实施 DevOps 测试策略所需的工具
要在DevOps测试策略中取得成功,需要的不仅仅是最佳实践。更加需要合适的工具。
以下是需要的一些工具的对比表:
比较适用于DevOps测试策略的工具
Selenium / Appium WebDriver | |
---|---|
支持的开发语言 | Java, C#, JavaScript, Python, Ruby, Objective C |
支持的平台 | Chrome, Safari, Firefox, Edge, IE, iOS, Android |
支持的测试框架 | Mocha JS, Jest, other superset on top of Selenium (Protractor, WebDriverIO, etc.) |
设置和执行 | 下载相关驱动,设置系统网络和当前执行速度 |
集成 | 大量集成(CI/CD、报告、可视化测试、云供应商) |
测试范围 | 端到端, 安全测试, 单元测试 |
成熟度, 文档, 支持 | 强大的社区、多种绑定、最佳实践 |
需要技能 | 需要编码技能 (面向 SDET) |
云计算和大规模执行 | Perfecto 完全支持 Selenium 和 WebDriver 的配置;本地执行需要设置 Selenium Grid |
XCUITest / Espresso / Headless / Cypress | |
支持的开发语言 | Objective C, Java, JavaScript |
支持的平台 | Chrome, Electron |
支持的测试框架 | 不支持 |
设置和执行 | Embedded into IDEs, IDEs, headless bundles a browser in the FW |
集成 | CI/CD |
测试范围 | UI测试, 单元测试 |
成熟度, 文档, 支持 | 良好的文档和代码示例 |
需要技能 | 面向开发 |
云计算和大规模执行 | Built-in Chrome/Firefox browsers in headless;Perfecto Cloud 支持 Espresso/XCUITest |
Codeless | |
支持的开发语言 | 无关紧要,仅基于记录和回放 |
支持的平台 | 全部 |
支持的测试框架 | 底层Selenium WebDriver Api的专有UI |
设置和执行 | 主要是SaaS/浏览器插件安装 |
集成 | 有限范围内的 |
测试范围 | 功能测试, UI测试 |
成熟度, 文档, 支持 | 需要加强,有限的 |
需要技能 | 无需编码技能(面向业务测试人员) |
云计算和大规模执行 | Perfecto 支持云端的无代码 |
BDD | |
支持的开发语言 | Java, Ruby, JavaScript, Kotlin |
支持的平台 | 全部 |
支持的测试框架 | Junit, Selenium, Appium |
设置和执行 | 开源, Maven/Gradle/TestNG |
集成 | 大量 + APIs (e.g., rest assured) |
测试范围 | 功能测试 |
成熟度, 文档, 支持 | 强大的社区, 文档, 采用 |
需要技能 | 需要代码中的步骤定义开发/场景中没有代码(业务测试人员和SDETs的混合) |
云计算和大规模执行 | Perfecto Quantum是一个web/mobile BDD框架 |
与Perfecto一起使用DevOps测试工具
使用Perfecto,可以扩展web和移动设备的测试自动化。您将能够跨浏览器进行测试,并获得最佳测试覆盖率。利用Perfecto的基于云的实验室来自动化最复杂的测试场景。
另外,Perfecto集成了DevOps工具链,包括像Jenkins这样的CI/CD工具。
因此,你将能够:
- 提供更快的反馈。
- 覆盖更多的平台。
- 减少测试执行的时间限制。
想要了解Perfecto将如何帮助您构建和执行测试策略。从今天开始,free 14-day trial。
相关内容
-The Evolution of Waterfall to Agile & DevOps
-What Is Continuous Testing?
-Cloud Testing Is More Critical Than Ever
========================================================================================
最后,感谢阅读。
{测试窝原创译文,译者李媛媛。}