了解最新技术文章
在其他敏捷方法中,开发人员负责编码和创建功能以及编写和运行单元测试;测试人员对此功能执行自动和手动测试。DevOps 有目的地模糊这些职责之间的界限,强制协作。开发人员开始建立不断检查代码中错误的心态。测试人员的责任从验证应用程序到确保它随时可部署。他们甚至可以根据需要修复代码。所有这些部分协同工作以确保功能的快速交付。对客户的关注推动整个团队的工作。
在 DevOps 中,测试视角从“已完成此模块的测试”变为“候选版本中已缓解了哪些业务风险?” 他们超越了手动测试,专注于可扩展部署、从开发过程一开始就实现自动化、标准化 QA 环境、将 QA 任务与持续测试和 CI/CD 管道保持一致。
开发人员、测试人员和运营团队之间的高水平协作使测试人员能够监控生产中的应用程序,并使用数据帮助利益相关者做出明智的决策。
DevOps 不会取代现有的 QA 流程。相反,它改变了测试人员的观点,改变了传统的测试方式,例如将测试用例映射到需求、手动执行测试用例以及报告缺陷;以更敏捷的方式交付软件,其中 QA 是大型团队的一部分,而不是一个单独的实体。
以下是将 QA 集成到 DevOps 环境中的一些方法:
首先,组织应该消除开发人员、质量保证和运营团队之间的界限。这将涉及重组现有的 QA 团队以符合 DevOps 目标。
团队必须合并为一个技术团队,专注于各种活动,以按时交付功能。这些技术团队必须沟通、协作和优化他们的工作,以快速发现缺陷并在部署之前修复它们。此外,测试人员应该尽早参与开发过程,从需求阶段开始(他们可以充实需求中的任何模糊性),确保整个团队清楚地了解如何开发、测试、部署和监控功能。 -发射。持续测试成为每个人责任的一部分。
其次,DevOps 和自动化是齐头并进的——没有一个,另一个就无法发挥作用。这就是聪明的人和工具可以帮助实现更短、更可靠的发布周期的地方。一切可以自动化的事情都应该自动化。这可能包括单元、部署、集成、冒烟、回归、安全和性能测试。测试人员在 DevOps 流程中发挥着不可或缺的作用,他们在流程的早期启动自动化,尽早发现缺陷。
此外,为了使自动化有效,您应该模块化测试套件,并根据必须测试的功能在开发过程的各个阶段运行它们。最后,随着新功能添加到产品中,测试套件应该足够灵活,可以根据复杂性进行扩展。这可能包括需要额外的软件、硬件和技术资源来支持这项工作。
决定 QA 成功集成到 DevOps 流程的另一个重要因素是拥有可以量化价值的指标。Forrester Research 进行的一项调查发现,DevOps 团队使用 75 个常见指标来衡量采用的成功与否。其中与产品质量直接相关的部分如下:
测试用例覆盖率
单元测试覆盖率
通过/失败率
执行的测试数量
API通过/失败率
测试涵盖的要求
被阻止的测试用例
自动化测试用例的百分比
代码构建成功
新缺陷
严重缺陷
按风险确定优先级的自动化测试
代码覆盖率
发布截止日期
测试中发现的缺陷总数
发现新的 API 缺陷
使用这些指标,利益相关者可以就 QA 如何与开发人员、运营团队和项目中的其他角色有效协作做出明智的决策。
测试人员与 DevOps 流程中的各种活动并行运行测试。为了使并行测试有效,QA 工程师需要建立标准化的测试环境,并拥有足够的硬件和软件资源来尽可能快地运行许多测试。他们还可能进行定期审核,以确保优化测试过程以在软件交付时间内完成。
DevOps 涉及多种工具、流程、自动化测试和环境。从开发过程的不同阶段提取数据并进行分析,以确保系统始终以最佳水平运行。通常,运营团队与开发人员和测试人员合作,将监控和分析功能直接构建到开发的应用程序中。对于测试人员来说,了解如何使用 Splunk、Kibana、Graphite 和 Firebase 等工具来支持运营团队至关重要。
组织中最大的问题之一是每个团队遵循不同的流程并使用一组不同的工具来完成相同的任务。如果这一点未被注意到,就会导致组织不必要的成本、时间和精力浪费。
通过 DevOps,团队必须共同商定一套每个人都将遵循的通用流程和工具。一旦做出决定,每个团队成员都会知道在开发过程中的任何给定时间要遵循什么流程以及要使用的工具。
组织必须强调在实施过程中从团队获得持续反馈的重要性。每日站立会议、团队会议、回顾会议和计划会议都是收集反馈的接触点的绝佳示例。在此基础上,团队将修改他们的下一次迭代方法。这种构建->测量->学习(经过验证的学习)的连续循环有助于改进 DevOps 流程。
验证学习
为了成功实施 DevOps,团队必须协作并了解彼此的工作。在任何时刻,团队都应该能够直观地看到开发过程的进度。组织可以使用工具和仪表板来突出显示重要指标,例如团队速度、记录/修复的缺陷、执行的测试数量、测试覆盖率以及对团队重要的其他 KPI。
测试人员的技能需要适应 DevOps 流程。它首先培训每个人进行全栈测试自动化,其中包括编写自动化测试,例如单元测试、API 测试、UI 测试和后端测试。手动测试仍然具有相关性,但重点将从仅手动执行测试用例转向进行更多基于风险的测试和探索性测试。这是与自动化测试并行执行的。
测试策略和测试设计在 DevOps 流程中变得更加重要。由于测试人员与开发人员和运营团队一起工作,因此他们的测试策略必须包括与 QA 相关的任务以及跨开发和运营团队的领域。提出可靠的测试策略和设计测试的一个好方法是让不同的角色协同工作。这有助于团队就需要测试什么、谁来执行测试以及如何执行测试达成共识。
最后,为了成功过渡到 DevOps,组织应该实施三个基本流程:持续测试、集成和交付。
DevOps 的主要目标是加强协作。如果没有持续测试、持续集成和持续交付,这是不可能实现的。测试人员在每个过程中都发挥着至关重要的作用。
CT 就是从应用程序的早期阶段开始对其进行测试,并在整个开发过程的生命周期中自动执行测试。这有助于团队分析流程每个阶段的产品质量,并使利益相关者能够做出明智的决策。
CT 还降低了交付功能在生产中出现故障的风险,为公司节省了大量的时间、成本和精力。关键是尽早测试,尽快发现缺陷。
将 CT 与当前测试流程集成时需要考虑以下事项:
如果必须在开发过程的每个阶段进行测试,团队需要有足够的资源:硬件、软件和熟练的工程师。团队在实施 CT 之前共同决定测试策略并采购必要的资源。
CT 与左移测试相一致,专注于从需求阶段尽早开始测试,并在整个开发和发布过程中持续进行。这种一致性的一部分是让开发人员和测试人员参与不同的活动,以增强他们的能力。例如,开发人员会更加注重编写更好的单元测试,而测试人员可以参与开发活动。这有助于加快开发周期并建立可以适应任何环境的跨职能团队。
在实施 CT 之前,请审核您当前的测试策略。掌握当前的测试覆盖范围、执行的测试类型——手动脚本化测试执行、自动化和探索性测试。确定您当前的瓶颈,分析生产错误的趋势,并找出如何通过 CT 缓解它们。
团队在实施 CT 时面临的常见问题之一是尝试将一切自动化,即使它不提供价值并且从长远来看可能会成为维护噩梦。例如,具有高通量状态的自动化功能可能会导致资源使用效率低下,因为它们可能会花费更多的时间来维护测试而不是运行测试。在重复平凡的任务、获得更快的构建反馈、将构建部署到不同的环境以及执行各种测试时使用自动化,否则手动完成这些测试将很难完成或消耗时间。
为了有效实施 CT,团队必须投资使用正确的工具来开展各种活动。这可能包括用于单元测试、UI 测试、API 测试、性能测试、安全测试和可访问性测试的工具。
CI 是主要的 DevOps 最佳实践,它将代码更改自动集成到中央存储库中,每天在中央存储库中构建和运行多次。实施 CI 的主要好处之一是快速检测错误并更轻松地定位错误。
实施 CI 管道对于 QA 来说有很多好处:
消除对代码签入的依赖
任意数量的人每天都可以多次将代码签入版本控制系统。没有依赖关系,每次签入都有时间戳,可以准确地知道谁编写了代码并将其推送到特定分支。这意味着测试人员和开发人员都可以编写应用程序和自动化代码并将其签入不同的分支,而不会受到任何干扰。
更快的反馈
签入代码后,测试会自动运行以获取有关构建的快速反馈,因此可以快速发现并尽快修复错误。它使测试人员能够快速找出问题所在,报告问题,并采取必要的措施来解决和修复缺陷。
加强协作
CI 改善了整体工程沟通和问责制,从而实现 DevOps 团队中开发、测试和运营之间的更好协作。拉取请求与 CI 流程相关联,有助于了解其他团队成员的代码。这使得开发人员和测试人员能够随着功能在 CI 管道中的进展而在功能分支上进行协作。自动化测试必须遵循相同的拉取请求流程。
自动回归测试
作为 CI 过程的一部分,测试人员将回归测试配置为在将构建部署到不同环境时自动运行。这确保新的更改不会破坏现有功能。这些测试设置为尽可能快地运行,以便更快地获得有关部署的反馈。
丰富的文档
当自动化测试在 CI 管道的每个阶段运行时,会生成大量带有时间戳的日志以供将来参考。这对于必须遵守法规的组织特别有用。日志在例行审核期间充当丰富的信息源,以确保不存在违反政策和程序的情况。
DevOps 的组成部分之一是快速交付功能。CD 使团队能够随时发布应用程序,从而实现这一点。除了确保您的应用程序通过自动化测试之外,它还必须具有将其投入生产所需的所有配置。CD 涵盖从构思到构建、准备就绪、交付到生产的所有内容。
QA 在 CD 管道中的作用是确保在整个开发过程中进行连续测试。测试人员使用各种工具进行冒烟测试、回归测试、API 测试、UI 测试、性能和安全测试。工具可以腾出时间进行探索性测试和基于风险的测试,以减轻已识别的风险。此外,拥有 CI 环境可确保在构建过程的各个阶段进行自动检查,从而更快地提供有关功能质量的反馈。