竹笋

首页 » 问答 » 环境 » TestOps完全手册工作流生命周期
TUhjnbcbe - 2023/4/13 20:47:00

译者:陈峻

过去,在软件开发的后期,团队往往不得不以全局重构、甚至延迟发布的方式,来处置他们发现的严重错误。而随着时间的推移,业界学会了通过DevOps和敏捷等方法,来加速开发的周期。不知您是否注意到,DevOps并不是一个人的战斗,而是开发人员、运维人员、测试人员、以及业务部门之间的一组复杂的流程、技能、沟通和工具。它专注于弥合开发和运营孤岛之间的沟通障碍,并通过各种自动化或虚拟化工具,实现持续开发、集成、测试、监控与反馈、以及交付和部署,来缩短新功能的面市时间。

不过,和其他新生的技术概念类似,DevOps也在持续完善中。在融入了安全性、基础设施、以及测试之后,我们相继看到了DevSecOps、NetOps、以及TestOps的出现。本文将重点和您讨论TestOps的相关概念、工作流,以及生命周期中每个阶段所涉及到的团队、目标、指标、挑战和工具等方面。

什么是TestOps?

通常,在分解大型发布的过程中,我们需要针对不同的框架和编程语言的代码,进行各种类型的测试(如:Web、API、Canary等)。对此,我们需要通过持续测试的方法,来满足各个微服务代码的单元级与集成级测试的全覆盖。

总地说来,TestOps是DevOps的一个子集。它通过一组技术和方法,在整个DevOps管道中进行自动的、透明的、可访问与管理的测试。而且,这些测试不仅在于QA上的透明与可控。

DevOps的原生测试是怎样的?

一个应用程序通常由前端、后端、以及移动版本等部分组成。每个部分都可以由一个专门的团队来负责开发。而一个典型的10人团队往往包含如下角色:

开发人员,负责编写代码、重构和拉取请求的管理

项目经理,负责开发的整体进度和敏捷流程

QA工程师,负责发布测试和最终产品质量

自动化测试(AQA)工程师,其工作是将测试自动化发展至极限

运维人员/管理员,负责质量把关和管道维护

那么,测试将如何在这样的团队中开展?以下是在典型DevOps中,自动化测试人员的主要任务:

首先,自动化测试工程师的工作往往涵盖了后端、前端和与原生自动化测试的各种集成。此处的“原生”意味着测试应使用与被测试代码相同的技术栈,也允许将测试存储在与代码相同的存储库中。使用单一存储库的好处是,开发人员可以协助AQA工程师进行代码的审查、以及复杂的测试开发。

QA经理在拉取请求的阶段,针对已开发出的案例审查客户场景的合理性、以及极端案例的覆盖率。

同时,AQA工程师也会从QA的角度,检查单元和集成测试。

虽然诸如:Docker或Kubernetes的配置、构建脚本、以及测试环境设置等底层维护,都是由Ops人员负责的;但是包括:配置Selenium网格、浏览器、以及数据库的数据管理等有关测试的基础设施,仍然是由AQA工程师负责的。

可见,AQA工程师主要从事的是底层测试和质量检查等工作;而QA人员则负责监督发布的整个管理过程。

TestOps的工作流

上图展示了TestOps的管道,其具体工作流为:

开发人员创建一个新的功能分支,并在完成时产生一个包含了一些全新代码、以及一堆自动化测试的拉取请求(PR)。

AQA工程师审查PR,并在必要时添加更多的测试。例如,他们会增加包含了数十个参数与变体的全面测试。

之后,QA经理从业务角度开始最终的测试审查。测试主要着眼功能和用户故事的覆盖范围。

如果测试能够顺利完成,那么分支就会被合并。如果测试出现问题,那么团队着手予以修复,并跳转至上述第2步。注意,每个错误都应当与待添加到下一次回归运行的问题相关联。

可见,管道上的大多数测试只有在实现了自动化后,其测试的持续时间才能够更容易被预估。

TestOps的生命周期

如上图所示,我将在下文向您介绍QA团队在开展TestOps过程中,可能涉及到的每个阶段的团队、目标、指标、挑战和工具等方面。

M1:单个手动测试人员

该阶段通常是每个QA部门的起点。大多数团队甚至不会意识到该阶段的存在。不过,它确实会对QA的未来发展产生影响。

1.团队:有时候,该阶段甚至没有专门的QA人员,仅由某个产品负责人或经理去开展测试工作。

2.目标:

创建错误报告的流程与模板,且报告越清晰越易于开发团队的修复。

此阶段创建的测试用例,可能很短且缺乏细节,不过主要目的是为了获悉对测试持续时间的粗略估计,以便为下一阶段做好准备。

3.指标:通过密切地

1
查看完整版本: TestOps完全手册工作流生命周期