译者 | 陈峻,审校 | 孙淑娟,过去,在软件开发的后期,团队往往不得不以全局重构、甚至延迟发布的方式,来处置他们发现的严重错误。而随着时间的推移,业界学会了通过DevOps和敏捷等方法,来加速开发的周期。不知您是否注意到,DevOps并不是一个人的战斗,而是开发人员、运维人员、测试人员、以及业务部门之间的一组复杂的流程、技能、沟通和工具。它专注于弥合开发和运营孤岛之间的沟通障碍,并通过各种自动化或虚拟化工具,实现持续开发、集成、测试、监控与反馈、以及交付和部署,来缩短新功能的面市时间。,
,不过,和其他新生的技术概念类似,DevOps也在持续完善中。在融入了安全性、基础设施、以及测试之后,我们相继看到了DevSecOps、NetOps、以及TestOps的出现。本文将重点和您讨论TestOps的相关概念、工作流,以及生命周期中每个阶段所涉及到的团队、目标、指标、挑战和工具等方面。,通常,在分解大型发布的过程中,我们需要针对不同的框架和编程语言的代码,进行各种类型的测试(如:Web、API、Canary等)。对此,我们需要通过持续测试的方法,来满足各个微服务代码的单元级与集成级测试的全覆盖。,总地说来,TestOps是DevOps的一个子集。它通过一组技术和方法,在整个DevOps管道中进行自动的、透明的、可访问与管理的测试。而且,这些测试不仅在于QA上的透明与可控。,一个应用程序通常由前端、后端、以及移动版本等部分组成。每个部分都可以由一个专门的团队来负责开发。而一个典型的10人团队往往包含如下角色:,那么,测试将如何在这样的团队中开展?以下是在典型DevOps中,自动化测试人员的主要任务:,可见,AQA工程师主要从事的是底层测试和质量检查等工作;而QA人员则负责监督发布的整个管理过程。,
,上图展示了TestOps的管道,其具体工作流为:,可见,管道上的大多数测试只有在实现了自动化后,其测试的持续时间才能够更容易被预估。,
,如上图所示,我将在下文向您介绍QA团队在开展TestOps过程中,可能涉及到的每个阶段的团队、目标、指标、挑战和工具等方面。,
,该阶段通常是每个QA部门的起点。大多数团队甚至不会意识到该阶段的存在。不过,它确实会对QA的未来发展产生影响。,1. 团队:有时候,该阶段甚至没有专门的QA人员,仅由某个产品负责人或经理去开展测试工作。,2. 目标:,3. 指标:通过密切地关注流程,在指定的流程中正确地记录Bug的数量。,4. 工具:可使用Excel、电子邮件、Slack、以及任何其他能够共享和跟踪错误报告的工具。,5. 挑战:当团队较小时,将错误直接传递给开发人员,并在Slack DM(即时通讯工具)中获得修复通知是较为容易的。但是该方法也可能会给下个阶段带来潜在的混乱。,6. 达标:团队已经建立了一个基本的错误检测和修复流程。,
,这是DevOps的预备测试阶段,测试团队会在此阶段逗留较长的时间,尤其是那些不以快节奏的开发流程为目标的团队。通常,此类手动测试会在规定的发布周期的节奏下正常开展。,1. 团队:多名初、中级QA人员,由一名高级QA人员/负责人指导。,2. 目标:,3. 指标:,4. 工具:团队需要通过如下工具,来存储和管理测试用例,生成控制报告,以及跟踪所有手动测试的活动。,5. 挑战:通常,测试的速度,以及回归类测试的复杂程度,都会对测试团队的人员数量有所要求。因此,对于那些缺乏人手和经验丰富的团队,可能在此面临严峻的挑战。,6. 达标:团队精心设计好了测试用例、存储、以及管理流程。,
,这是高级QA工程师团队的一个可选的进化阶段,旨在整个公司的测试中,建立牢固的信任关系。,1. 团队:与前一阶段几乎相同。主要的区别在于团队成员更加资深。,2. 目标:优化监控的效率。鉴于手动测试很难被优化,我们往往需要借助各种半自动化的工具,来加快高级测试团队的工作效率。,3. 工具:在这个阶段,工具的主要任务是通过诸如:屏幕截图、测试场景的自动点击等功能,发挥团队的作用,并尽量减少人工操作。典型工具包括:,4. 指标:,5. 挑战:,6. 达标:团队能够根据业务要求,以更快的速度发布新的版本。,
,这是公司走向自动化的第一步。通常,此阶段会包含:选择测试框架、测试的执行环境、以及覆盖率指标等基本步骤。这些都为进一步的自动化开发奠定了基础。,1. 团队:在手动测试的团队中添加了一名中、高级自动化QA工程师。,2. 目标:,3. 工具:该阶段需要QA和开发团队之间的通力协作,以自动化各种测试实例和可执行的CI管道。,4. 指标:,5. 挑战:尽管我们在这个阶段首次获得了准确意义上的自动化测试套件,但是我们反而无法精准地预测产品从测试到发布的持续时间。,6. 达标:自动化测试用例的生成、工具的建立、以及流程的确立,都为快速发布与交付提供了保障。,
,随着时间的推移,团队虽然获得了更多的自动化工程师,但是有高达60%的自动化项目会出现停滞不前的现象。此外,前面阶段的原有流程也可能会给全栈测试的自动化带来影响。,1. 团队:几位中、高级AQA工程师与更多初级队友一起工作。,2. 目标:从如下方面保持软件质量体系的稳定性:,3. 工具:该阶段,我们需要能够通过从测试中获取洞见,以提供报告和可观察性工具:,4. 指标:,5. 挑战:,6. 达标:,
,当测试的目标被设定为获得对DevOps管道、以及测试基础设施的完全访问权限后,我们就需要配备一支非常熟悉测试的高级团队。,1. 团队:10人以上的高级AQA工程师,2. 目标:QA团队需要与Ops团队保持联系,不但要完成测试的编写,而且能够对测试的基础设施实施控制。也就是说,由Ops团队负责硬件和脚本级别的维护,其中包括:缓存、构建脚本、以及数据库可访问性等低级别的部分。而QA团队则努力控制测试环境的基本配置与微调、性能分析、依赖关系、数据和环境更新等方面。这些都是团队集成到主要DevOps管道中所必需的。据此,独立的自动化测试团队可以实现对每个分支、以及版本进行快速且精确的测试。,3. 工具:,4. 指标:与A2阶段的指标类似,该阶段的测试执行频率指标需要开发人员、运维人员、测试人员,有时甚至是管理人员等整个团队,最大化测试的使用率。,5. 挑战:缺乏基础设施的管理专业知识。如果QA团队不去深入研究基础架构,那么他们可能会将与Ops相关的任务(如更新Selenium或框架)推迟到最后。,
,该阶段意味着QA团队已经走出了测试的“泡沫”,代码库被整洁的原子自动化测试所覆盖。测试已经以半自动运行的方式,融入了主要的开发管道流程。如今的重点是为与Ops的全面集成做好准备。,1. 团队:团队中需要有两、三个熟悉服务器管理、以及CI/CD工具和流程等运维专业知识的测试人员。,2. 目标:,3. 工具:在这个阶段,我们需要如下工具来构建可扩展、且灵活的自动化测试基础架构。,4. 指标:,5. 挑战:与A2阶段类似,我们虽然可以更好地管控测试基础设施,但是上述指标不一定能够被调优。这往往需要我们与Ops团队保持密切协作关系。,6. 达标:一旦我们习惯了掌控管道,并让各种测试都像上了发条一样去自动通知、生成相应的报告,那么我们就达标了!,
,这个阶段对于弥合测试和开发人员之间鸿沟是必要的。测试人员和开发人员开始在统一的技术栈上编写测试代码。测试人员和运维人员通过对测试基础设施的管理,提供了快速将新功能推向市场的管道。,1. 团队:由原来以资深测试人员为主的团队,转变为具有运维和基础设施维护经验的SDET(Software Development Engineer Test,测试开发工程师)团队。,2. 工具:,3. 目标:,4. 指标:原生测试的覆盖率和迁移的速度。,5. 挑战:原生测试往往需要测试团队比以前更多的编程技能。学习此方面技能的最佳方式,便是通过建立跨职能部门的流程与沟通渠道,与开发人员更紧密地合作。,6. 达标:将传统的测试方式转变为原生的测试模式。,陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。,原文标题:Complete Guide to TestOps,作者:Ruslan Akhmetzianov
© 版权声明
文章版权归作者所有,未经允许请勿转载。