技术文章

了解最新技术文章

当前位置:首页>技术文章>技术文章
全部 111 常见问题 5 技术文章 106

QA 在 DevOps 中的作用是什么?

时间:2024-01-17   访问量:1026

组织正在努力比以往更快地发布功能,以满足不断增长的客户需求,并保持行业领先地位。市场竞争激烈,团队正在寻求精益方法来提供高质量的产品。人们已经采用了各种敏捷方法来支持这项工作,其中近年来流行的方法之一就是 DevOps。

什么是 DevOps?

从历史上看,开发和测试工作被视为两个独立的实体。事实证明,这个模型有几个瓶颈。其中一些包括:

最重要的是,没有人知道客户如何使用已部署的产品。他们没有与监控生产中应用程序的运营团队直接沟通,也没有收集可以进一步改进产品的重要统计数据。这给组织浪费了难以估量的时间、精力和成本,最终导致功能按时发布延迟,并导致客户满意度下降。

DevOps 的引入是为了缓解上述问题,并重新引入质量是每个人的责任的心态。这种方法的主要重点是加强开发人员、测试人员和运营团队之间的协作,以便他们可以作为一个整体来交付高质量的产品。 

QA 在 DevOps 中的作用

在其他敏捷方法中,开发人员负责编码和创建功能以及编写和运行单元测试;测试人员对此功能执行自动和手动测试。DevOps 有目的地模糊这些职责之间的界限,强制协作。开发人员开始建立不断检查代码中错误的心态。测试人员的责任从验证应用程序到确保它随时可部署。他们甚至可以根据需要修复代码。所有这些部分协同工作以确保功能的快速交付。对客户的关注推动整个团队的工作。

在 DevOps 中,测试视角从“已完成此模块的测试”变为“候选版本中已缓解了哪些业务风险?” 他们超越了手动测试,专注于可扩展部署、从开发过程一开始就实现自动化、标准化 QA 环境、将 QA 任务与持续测试和 CI/CD 管道保持一致。

开发人员、测试人员和运营团队之间的高水平协作使测试人员能够监控生产中的应用程序,并使用数据帮助利益相关者做出明智的决策。

如何将 QA 集成到 DevOps 环境中?

DevOps 不会取代现有的 QA 流程。相反,它改变了测试人员的观点,改变了传统的测试方式,例如将测试用例映射到需求、手动执行测试用例以及报告缺陷;以更敏捷的方式交付软件,其中 QA 是大型团队的一部分,而不是一个单独的实体。

如何将 QA 集成到 DevOps 环境中?

将 QA 集成到 DevOps 中

以下是将 QA 集成到 DevOps 环境中的一些方法:

重新调整团队架构

首先,组织应该消除开发人员、质量保证和运营团队之间的界限。这将涉及重组现有的 QA 团队以符合 DevOps 目标。 

团队必须合并为一个技术团队,专注于各种活动,以按时交付功能。这些技术团队必须沟通、协作和优化他们的工作,以快速发现缺陷并在部署之前修复它们。此外,测试人员应该尽早参与开发过程,从需求阶段开始(他们可以充实需求中的任何模糊性),确保整个团队清楚地了解如何开发、测试、部署和监控功能-发射。持续测试成为每个人责任的一部分。

尽可能自动化

其次,DevOps 和自动化是齐头并进的——没有一个,另一个就无法发挥作用。这就是聪明的人和工具可以帮助实现更短、更可靠的发布周期的地方。一切可以自动化的事情都应该自动化。这可能包括单元、部署、集成、冒烟、回归、安全和性能测试。测试人员在 DevOps 流程中发挥着不可或缺的作用,他们在流程的早期启动自动化,尽早发现缺陷。

此外,为了使自动化有效,您应该模块化测试套件,并根据必须测试的功能在开发过程的各个阶段运行它们。最后,随着新功能添加到产品中,测试套件应该足够灵活,可以根据复杂性进行扩展。这可能包括需要额外的软件、硬件和技术资源来支持这项工作。

使用指标来跟踪进度

决定 QA 成功集成到 DevOps 流程的另一个重要因素是拥有可以量化价值的指标。Forrester Research 进行的一项调查发现,DevOps 团队使用 75 个常见指标来衡量采用的成功与否。其中与产品质量直接相关的部分如下:

使用这些指标,利益相关者可以就 QA 如何与开发人员、运营团队和项目中的其他角色有效协作做出明智的决策。

并行运行测试

测试人员与 DevOps 流程中的各种活动并行运行测试。为了使并行测试有效,QA 工程师需要建立标准化的测试环境,并拥有足够的硬件和软件资源来尽可能快地运行许多测试。他们还可能进行定期审核,以确保优化测试过程以在软件交付时间内完成。

持续监控

DevOps 涉及多种工具、流程、自动化测试和环境。从开发过程的不同阶段提取数据并进行分析,以确保系统始终以最佳水平运行。通常,运营团队与开发人员和测试人员合作,将监控和分析功能直接构建到开发的应用程序中。对于测试人员来说,了解如何使用 Splunk、Kibana、Graphite 和 Firebase 等工具来支持运营团队至关重要。

拥有一套通用的流程和工具

组织中最大的问题之一是每个团队遵循不同的流程并使用一组不同的工具来完成相同的任务。如果这一点未被注意到,就会导致组织不必要的成本、时间和精力浪费。 

通过 DevOps,团队必须共同商定一套每个人都将遵循的通用流程和工具。一旦做出决定,每个团队成员都会知道在开发过程中的任何给定时间要遵循什么流程以及要使用的工具。

持续反馈

组织必须强调在实施过程中从团队获得持续反馈的重要性。每日站立会议、团队会议、回顾会议和计划会议都是收集反馈的接触点的绝佳示例。在此基础上,团队将修改他们的下一次迭代方法。这种构建->测量->学习(经过验证的学习)的连续循环有助于改进 DevOps 流程。

构建->测量->学习(经过验证的学习)的持续反馈循环有助于改进 DevOps 流程。

验证学习

提高任务和流程的可见性

为了成功实施 DevOps,团队必须协作并了解彼此的工作。在任何时刻,团队都应该能够直观地看到开发过程的进度。组织可以使用工具和仪表板来突出显示重要指标,例如团队速度、记录/修复的缺陷、执行的测试数量、测试覆盖率以及对团队重要的其他 KPI。 

充分的培训

测试人员的技能需要适应 DevOps 流程。它首先培训每个人进行全栈测试自动化,其中包括编写自动化测试,例如单元测试、API 测试、UI 测试和后端测试。手动测试仍然具有相关性,但重点将从仅手动执行测试用例转向进行更多基于风险的测试和探索性测试。这是与自动化测试并行执行的。

测试策略和测试设计在 DevOps 流程中变得更加重要。由于测试人员与开发人员和运营团队一起工作,因此他们的测试策略必须包括与 QA 相关的任务以及跨开发和运营团队的领域。提出可靠的测试策略和设计测试的一个好方法是让不同的角色协同工作。这有助于团队就需要测试什么、谁来执行测试以及如何执行测试达成共识。

最后,为了成功过渡到 DevOps,组织应该实施三个基本流程:持续测试、集成和交付。

DevOps 的三大支柱 

DevOps 的主要目标是加强协作。如果没有持续测试、持续集成和持续交付,这是不可能实现的。测试人员在每个过程中都发挥着至关重要的作用。

1. 连续测试(CT)

CT 就是从应用程序的早期阶段开始对其进行测试,并在整个开发过程的生命周期中自动执行测试。这有助于团队分析流程每个阶段的产品质量,并使利益相关者能够做出明智的决策。

CT 还降低了交付功能在生产中出现故障的风险,为公司节省了大量的时间、成本和精力。关键是尽早测试,尽快发现缺陷。 

将 CT 与当前测试流程集成时需要考虑以下事项:

有足够的资源

如果必须在开发过程的每个阶段进行测试,团队需要有足够的资源:硬件、软件和熟练的工程师。团队在实施 CT 之前共同决定测试策略并采购必要的资源。

与左移范例对齐

CT 与左移测试相一致,专注于从需求阶段尽早开始测试,并在整个开发和发布过程中持续进行。这种一致性的一部分是让开发人员和测试人员参与不同的活动,以增强他们的能力。例如,开发人员会更加注重编写更好的单元测试,而测试人员可以参与开发活动。这有助于加快开发周期并建立可以适应任何环境的跨职能团队。

找出现有测试过程中的差距

在实施 CT 之前,请审核您当前的测试策略。掌握当前的测试覆盖范围、执行的测试类型——手动脚本化测试执行、自动化和探索性测试。确定您当前的瓶颈,分析生产错误的趋势,并找出如何通过 CT 缓解它们。

明智地使用自动化

团队在实施 CT 时面临的常见问题之一是尝试将一切自动化,即使它不提供价值并且从长远来看可能会成为维护噩梦。例如,具有高通量状态的自动化功能可能会导致资源使用效率低下,因为它们可能会花费更多的时间来维护测试而不是运行测试。在重复平凡的任务、获得更快的构建反馈、将构建部署到不同的环境以及执行各种测试时使用自动化,否则手动完成这些测试将很难完成或消耗时间。

拥有合适的自动化工具

为了有效实施 CT,团队必须投资使用正确的工具来开展各种活动。这可能包括用于单元测试、UI 测试、API 测试、性能测试、安全测试和可访问性测试的工具。

2.持续集成(CI)

CI 是主要的 DevOps 最佳实践,它将代码更改自动集成到中央存储库中,每天在中央存储库中构建和运行多次。实施 CI 的主要好处之一是快速检测错误并更轻松地定位错误。

实施 CI 管道对于 QA 来说有很多好处:

任意数量的人每天都可以多次将代码签入版本控制系统。没有依赖关系,每次签入都有时间戳,可以准确地知道谁编写了代码并将其推送到特定分支。这意味着测试人员和开发人员都可以编写应用程序和自动化代码并将其签入不同的分支,而不会受到任何干扰。

签入代码后,测试会自动运行以获取有关构建的快速反馈,因此可以快速发现并尽快修复错误。它使测试人员能够快速找出问题所在,报告问题,并采取必要的措施来解决和修复缺陷。

CI 改善了整体工程沟通和问责制,从而实现 DevOps 团队中开发、测试和运营之间的更好协作。拉取请求与 CI 流程相关联,有助于了解其他团队成员的代码。这使得开发人员和测试人员能够随着功能在 CI 管道中的进展而在功能分支上进行协作。自动化测试必须遵循相同的拉取请求流程。

作为 CI 过程的一部分,测试人员将回归测试配置为在将构建部署到不同环境时自动运行。这确保新的更改不会破坏现有功能。这些测试设置为尽可能快地运行,以便更快地获得有关部署的反馈。

当自动化测试在 CI 管道的每个阶段运行时,会生成大量带有时间戳的日志以供将来参考。这对于必须遵守法规的组织特别有用。日志在例行审核期间充当丰富的信息源,以确保不存在违反政策和程序的情况。

3.持续交付(CD)

DevOps 的组成部分之一是快速交付功能。CD 使团队能够随时发布应用程序,从而实现这一点。除了确保您的应用程序通过自动化测试之外,它还必须具有将其投入生产所需的所有配置。CD 涵盖从构思到构建、准备就绪、交付到生产的所有内容。

QA 在 CD 管道中的作用是确保在整个开发过程中进行连续测试。测试人员使用各种工具进行冒烟测试、回归测试、API 测试、UI 测试、性能和安全测试。工具可以腾出时间进行探索性测试和基于风险的测试,以减轻已识别的风险。此外,拥有 CI 环境可确保在构建过程的各个阶段进行自动检查,从而更快地提供有关功能质量的反馈。

DevOps 实施所需的关键工具

由于 DevOps 包括持续测试、集成、部署和交付,因此必须使用许多工具来获得有关应用程序的快速反馈。

以下是 DevOps 管道中的一些常用工具:

正如您所看到的,DevOps 管道中的各种工具可用于不同的目的。选择最适合您的项目环境的最佳工具的一个好方法是牢记以下因素:

DevOps 管道中使用的几乎每个工具都应该促进不同团队成员之间的有效协作。例如,版本控制是任何敏捷项目的基本必需品,包括遵循 DevOps 的项目。用于此目的的工具应该有助于跨团队和不同系统的代码、配置文件、脚本和其他工件的无缝集成。

随着技术的快速发展,新的工具应运而生来解决现有的问题。因此,团队倾向于转向这些工具。在遵循 DevOps 流程的团队中,迁移到新的框架和工具应该是正常的。 

使用具有开放 API 的工具非常重要,这样即使团队迁移到更新的工具,团队仍然可以通过调用 API 来使用现有脚本,而造成的干扰最小。不要被单一工具所困;相反,请考虑您选择的任何工具如何通过使用 API 轻松地与其他工具集成。

DevOps 团队由不同角色的人员组成,包括开发人员、测试人员、运营团队、业务分析师、产品经理、项目经理和其他利益相关者。您选择的任何工具都应该能够被每个人使用,而无需陡峭的学习曲线。如果一个工具变得太难学,人们就会被吓倒并停止使用它们。当协作成为 DevOps 的关键方面时,关注不同技术和领域背景的人员使用它的难易程度至关重要。

QA 是实施稳健的 DevOps 策略的一个组成部分。如果没有全面的 QA-DevOps 过渡计划,就不会实现更快的发布和交付周期。在 DevOps 领域中,QA 团队的角色已经发生了转变。他们不再是个人贡献者,而是成为 QA 顾问。测试人员必须转变思维方式,从提供传统的测试服务转向通过降低跨角色(包括开发和运营团队)的风险来帮助交付高质量的软件。他们有更多机会教导人们质量的重要性,因为他们将与不同的角色密切合作。将不再有单独的 QA 团队;相反,将会有结合不同角色的技术团队。

质量保证团队将被迫寻找新的方法来增加价值,这将有助于发挥他们的批判性思维能力。这可能意味着掌握所有权并做出一些他们在传统 QA 团队工作时可能没有做过的战略决策。我们将更加关注从最终用户的角度思考软件以及客户日常如何与其交互。 

DevOps 实施的最大障碍之一是流程本身。它不仅涉及改变 QA 的态度,还涉及团队中所有角色的态度。这需要大量的努力和更高的标准,并涉及更多的工具和资源。以正确的方式实施 DevOps并获得收益(这远远超过最初的困难!)。


上一篇:DevOps 测试文化:如何在整个 SDLC 中构建质量

下一篇:Testrail中测试人员面临的 35 个具有挑战性的面试问题

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部