在DevOps中进行测试:概念与最佳实践
在当今竞争激烈的软件开发环境中,DevOps可实现开发团队与运营团队之间的顺畅协作和通信。
在DevOps中,两个团队一起工作,共同承担实现其主要目标的责任:频繁且快速地交付满足不断变化的客户需求的高质量软件。DevOps的实践以及相关的工具和技术可推动组织尽可能高效地完成任务。
诸如持续集成和持续交付(CI/CD)之类的某些DevOps实践支持频繁的软件发布。这意味着在开发生命周期的每个步骤中,测试都在帮助维护软件质量中起着不可或缺的作用。
1. 传统测试的工作原理
软件测试不是一个新概念。但是传统环境中的测试看起来与DevOps环境中的测试有很大不同。
在传统的瀑布方法学时代,软件测试看起来像这样:
- 仅跨越生命周期的一个阶段
- 在软件完全开发后开始
- 这是一个容易出错的人工过程,需要很长时间才能完成
巨大的区别是软件测试人员位于与开发团队隔离的单独团队中。如果在测试阶段检测到任何错误,那么返回并进行更改将是一项挑战,而且成本很高。这样做的原因是结构性的:特定的错误情况在开始时就应该被很好地识别。
在这种情况下,很难在预期的时间表内维持所需的标准和质量。
2. 在DevOps环境中进行测试
敏捷开始崛起之后的几年里,软件测试有了长足的发展。从那时起,将更快,更协作的测试策略,工具和技术引入了测试领域。
这是在DevOps环境中进行的测试:
- 测试是一个连续且自动化的过程,可实现连续且快速的软件交付。
- 测试涵盖了软件开发生命周期(SDLC)的每个阶段。
- SDLC的每个步骤都涉及不同形式的测试。在检测到错误的情况下,这可以最大程度地减少回溯。
- 测试不再是一个特定团队的责任。共同的测试职责使每个人都可以了解每次更改背后的影响。
DevOps采用左移测试方法
重要的是,DevOps文化采用了Shift Left测试方法,这与在开发结束时进行测试的传统环境形成了对比。
左移测试将测试推向软件开发过程的早期步骤,即左侧。在那里,开发开始时也开始测试。这种方法有助于尽早发现错误。
DevOps测试环境的这些固有功能对提高软件质量做出了重要贡献。尽管如此,测试策略的成功或失败取决于组织实施DevOps最佳测试实践的方式。
3. DevOps测试最佳实践
在本节中,我们将介绍组织需要接受的一些最佳测试实践,以最大程度地发挥DevOps的价值。
充分利用测试自动化
在DevOps环境中,开发人员经常将代码合并到中央存储库中。这意味着代码通过持续集成(CI)不断更新。为了避免出现错误的风险,您必须通过不同类型的测试来持续测试代码,包括:
- 单元测试
- 功能测试
- 验收测试
- 集成测试
作为最佳实践,您可以使这些测试自动化,以获取关于持续集成代码的更快,更早的反馈。较成功的DevOps团队拥有更大比例的自动化测试用例,并且他们通常具有集成的自动化套件。
随着SDLC的发展,测试自动化的范围从代码级别进一步扩展到以下领域:
- API测试
- 性能测试
- 负载测试
- 耐力测试
这并不意味着测试范围内的所有内容都应该是自动化的。应该有一些手动测试的空间。此警告很重要。如果您将没有价值的测试流程自动化,那么您就是在自动化并将更多的浪费引入流程中。
有效的自动化测试建议包括:
- 使用优质的测试数据
- 确定适合自动化的测试用例
- 并行运行测试用例以提高自动化速度
- 使用最新的自动化测试范围不断修订测试计划
团队通常可以通过智能地利用测试自动化来创建和运行更多的测试用例,以防止错误。
确定测试自动化工程师
尽管测试是每个团队之间的共同责任,但组织倾向于使用测试自动化工程师的特定专业知识来增加测试自动化覆盖率。例如,由这样的工程师组成的专门团队将在实现自动化目标中发挥至关重要的作用。
一个好的测试自动化工程师可能是:
- 一位手动测试人员,后来学会了编写自动化脚本
- 经过自动化工程师培训的软件开发人员
测试自动化工程师制定组织的整体自动化策略。他们负责:
- 识别自动化测试方案
- 使用所选的测试自动化框架创建自动化脚本
- 寻找最适合您的团队或组织测试方法的工具
通常,在软件发行期间,自动化工程师将拥有在相关环境上执行自动化测试并报告任何已确定的错误的所有权。然后,他们与开发团队紧密合作,找到解决这些错误的解决方案。作为工作的一部分,他们根据引入系统的新更改来清理现有的测试用例。
您可以看到测试自动化工程师如何在成功的DevOps文化中发挥测试自动化的优势。
选择正确的测试工具
为了利用测试自动化的好处,您需要为组织集成正确的测试工具,而不是某些“最佳”测试工具。
选择测试自动化工具时,首先要评估的是您的团队是否具备使用该工具所需的技能和专业知识。例如,某些开放源代码测试工具需要具备一定水平的编程技能才能使用它们。您的测试工程师有这个吗?
然后估算该工具的总成本,包括培训成本,更新和维护,以查看其是否在测试预算之内。始终检查工具是否提供了良好的技术支持。如果没有,您准备好自己维修了吗?
自动化的测试工具应能够轻松编写和执行测试用例,而不必进行复杂的配置。这是许多组织广泛使用的开源和商业软件测试工具的列表。
以下是一些最受欢迎的测试自动化工具:
- Selenium是一个开放源代码框架,主要用于自动化Web应用程序测试。它配备了一套满足不同测试需求的软件。Selenium脚本可以用多种编程语言编写。
- Katalon Studio是最好的自动化测试软件之一,有免费和付费版本。它可以用于自动化的Web,API,桌面和移动测试。它支持许多平台。
- JMeter是用于性能和负载测试的基于Java的开源软件。它可以用于测试许多协议类型。
- SoapUI可帮助您测试REST,SOAP和GraphQL API。它是另一个开放源代码,跨平台的自动化工具,具有便捷的图形用户界面(GUI)。
使用指标跟踪绩效
使用度量标准来评估测试的成功或失败是另一种最佳实践。通过这种做法,管理层可以清楚地了解引入软件的更改如何影响组织。
您可以跟踪关键指标,例如:
- 通过的测试案例数与未通过的测试案例数
- 发现的错误数量
- 测试案例失败的频率
- 自动化套件的执行时间
这些指标提供了对极易发生故障的区域的洞察力,而持续的测试可以为它们带来即时的价值。度量标准还使团队可以预测,随着时间的流逝,随着系统中引入的更多更改,错误的数量是增加还是减少。然后,可以应用更多创新的解决方案来克服故障。
测试执行时间指标可帮助自动化工程师确定更好的编写测试用例的方法,以提高性能。由于执行自动化诉讼已成为软件发布的重要步骤,因此测试执行指标有助于有效地计划发布时间表。
维护适当的文件
维护适当的文档可以使测试过程更有组织性,并且对组织中的每个人都透明。成功的DevOps团队经常创建与测试相关的文档,其中包括:
- 质量管理计划(QMP)
- 测试摘要报告
- 测试用例规格
- 风险评估报告
- 回归测试报告
这些通常是在测试阶段开始时创建的,或者作为测试结果的结果提供的。QMP或测试管理计划之类的文档提供了计划进行的测试的全面概述,涵盖了测试功能的各个方面。测试摘要报告可提供对测试结果的深入了解。
当然,文档的另一个价值是它对于学员来说是很好的参考资料。正确的文档有助于节省组织成本。
最佳做法是,将所有文档保存在安全的地方,以供组织中的每个人访问和查看。标准化文档格式并使用模板来保持质量,从而提高价值。
4. DevOps测试是高质量软件交付的关键
对于许多组织而言,DevOps是提高或保持市场竞争力的理想解决方案。持续测试是CI和CD管道的重要组成部分,有助于交付频繁,高质量的软件。
测试的成功很大程度上取决于您在DevOps文化中采用的最佳实践。自动化及其相关工具是DevOps测试策略的核心。
文章转载自公众号:DevOps云学堂