DevOps敏捷测试之道(下)

2020 年 3 月 20 日

DevOps敏捷测试之道(下)

本文介绍企业在敏捷和 DevOps 的逐步转型过程中,测试如何应对挑战,有的放矢进行测试,建立适合产品自身发展阶段、产品特点的敏捷测试能力。


在上篇中,我们阐述了敏捷和 DevOps、测试债务、测试的焦点:业务价值的质量、以及自动化测试金字塔。(延伸阅读:测试微课堂 | DevOps 敏捷测试之道(上))


在这篇中,我们继续关于 DevOps 敏捷测试之道的干货分享。


常规安全与弹性安全


在我们常规的设想中,通常是哪个地方不安全,就一定要把所有不安全的因素找出来,清除掉。


这是常规的做法,但却偏向于理想,在实际工作中是不可能把整个系统中不安全的因子全部识别到的,这其中涉及能力、架构等各方面的原因。


因而在此基础上演变出了弹性安全,就是通过场景模拟的方式将不安全因素尽量展现出来,从而基于这种不安全场景,给出快速的修复方案弥补这个不安全因素,从用户角度来讲是感知不到的。


从产品来讲,它的商业目的和质量目的都可以达到,这就是所谓的弹性安全,即便发生了错误,能够及时快速的修复漏洞或者自我修复,达到正常工作的目的。


测试左移和测试右移


  • 左移就是前移,尽量把活动向前移。


例如 BDD 行为开发,基于场景直接设计出符合这个场景的用例,来匹配这个设计;契约测试,服务和服务本身之间有耦合,我们可以通过契约测试解耦,以防导致问题。


  • 测试右移是指要把测试活动的覆盖范围尽量向后蔓延。


通常的测试只进行到了版本发布之前,测好之后发布一个软件包,而测试右移要把软件包发布到生产环境,以及到线上运营环节,都要去做测试。在这两个方面也有一些相应的实践实践,例如线上拨测,主动线上监控用户的一些行为,并从行为轨迹里面快速捕捉相应的问题,主动推送给相关的责任人,让他去关注并且解决。


所以线上的过程可以通过一些测试手段,不断的反馈给真正的开发人员,让他知道当前产品的整体表现,开发人员就会快速的针对产品作出应对方案。


产品发展不同时期的测试策略


是否这个团队组建之初,就要把整个自动化测试的能力构建起来呢?其实这有一个过程,下面从软件的成熟周期的角度,看一下如何构建测试自动化的能力。


在软件初期探索阶段,产品是一个不确定的状态,从前端的风格和整体的布局到后端的 API 都时刻在变化当中,而且变化比较频繁,因为自动化用例的生命周期比较短,所以在这个时候创建一些自动化测试用例是不太划算的。


而这个时间段的产品,往往特性是可控制的,只有几个测试,所以可以以手动为主,不考虑自动化,让产品能够快速识别错误点,让用户能用起来。到了产品扩张阶段,用户认可产品,这时候会出现两个现象。第一是用户量增长,第二是需求数量增长。这时候必须要考虑自动化。因为在这个阶段每一次迭代的全量验证成本会越来越大,而交付的速度也会越来越快。我们不可能每一轮上线的时候都全部用手工做测试,这时候旧的模块就需要自动化用例去保证。


到产品提取阶段,产品已经到了需求的饱和期,产品的利益增长也到了饱和期,这时候要严格控制产品需求,自动化用例的职责变成守护,不允许变动引入额外的风险点、大的特性变动,导致对成熟的用户造成攻击。


团队规模对测试建设的影响


当团队规模在 5 个人以下,团队处于探索阶段,这时质量活动可以仅仅局限于测试的自组织阶段,只是做一些基础类测试管理活动,把缺陷管理起来,做一些回归测试。在这个阶段主要是建立一个测试管理的流程和机制,并没有接触到自动化测试。


随着项目的进一步扩大,逐渐增长到 5-10 人的团队规模,这时测试工作量突然增加,可能会有专门的测试人员进来,这个测试人员就会去和开发人员进行串联,把需求转化成自动化测试的用例,搭建持续集成,逐步演进一些测试手段。这个阶段已经开始做一些自动化的尝试。


团队进一步增大,一个人可能搞不定工作量的时候,会招聘更多的测试人员,成立专门的测试团队,这个团队就从自动化测试转向测试自动化,把更多的管理工作做进来。在这个管理过程中,我们会做一些产品的对接,包括开发专门的工具,实现自动化的整体能力,不仅仅是自动化执行了。


经过上面几个演进周期之后,测试团队具备了很多的测试自动化经验,这个时候可以进行面向云化的转型,现在很多团队都在进行 DevOps 转型,最关心的方面就是组建 DevOps 的全功能团队。那么之前转型的这些人在做什么?原有 10-15 人的测试专项团队做什么?在这个阶段团队要把测试专项能力向服务化能力转型。


这时候测试专员就会在团队创建初期进行赋能,包括测试工程搭建,早期的测试用例怎么写,标准化模板的编制,针对非功能性测试的专项能力的赋能,所有团队进行测试流程的评审,包括测试策略、测试计划、测试用例的评审,再看一下整个团队里面流程上还有哪些改进的。从各个方面整个专项测试团队向服务化进行转型,帮助所有团队完成自动化转型。


自动化测试和测试自动化


这里要澄清一个概念,就是测试自动化(Test Automation)。测试自动化的目的是减少手工测试和手工操作。测试自动化不仅仅包括自动化测试执行(Automated Testing),还包括其他所有可以减人力投入的活动,例如自动化创建测试环境、自动化部署被测系统、自动化监控、自动化数据分析等。


很多自动化测试只是测试的执行部分,例如把一些测试执行的人工测试手段做成自动化测试,但是测试自动化不仅仅是只是执行,还包括了从环境的获取到生成测试数据、执行自动化测试,最终生成结果。如果有问题,会自动推送给相关的人,对应的组织解决。自动生成测试报告,测试人员直接拿到测试结果。


本文转载自华为云产品与解决方案站公众号。


原文链接:https://mp.weixin.qq.com/s/MV24DQ-OnC2QPd98_9WMLg


2020 年 3 月 20 日 21:481201

评论

发布
暂无评论
发现更多内容

科大讯飞1024开发者节,有温度,有创新,有看点

Lucien

AI 技术方案 智能医疗 识别

架构师训练营第五周课后练习

架构师训练营第 1 期 week5

张建亮

极客大学架构师训练营

玩一场用户故事的Cosplay

Bruce Talk

Agile 用户故事 Product Owner

javaCV学习-1-环境搭建及测试多张图片合成一个mp4的视频

诸葛小猿

Java 图片合成视频 机器视觉

架构师训练营第五周总结

听夜雨

极客大学架构师训练营

架构师训练营第 1 期第 5 周学习总结

好吃不贵

极客大学架构师训练营

架构师训练营 - 第一周课后练习

joshuamai

架构师训练营 1 期第 5 周:技术选型(一) - 作业

piercebn

极客大学架构师训练营

想要进大厂做架构师,需要掌握哪些技术?阿里内部绝密 “Java架构修炼宝典”从基础一直深入到源码!

Java架构之路

Java 程序员 架构 面试 编程语言

golang实现一致性 hash 算法

Jacky.Chen

美滋滋!阿里内部最新出台Java开发规范和系统性能优化指南~

Java架构追梦

Java 学习 架构 面试 性能优化

科大讯飞胡国平:AI和5G互相辅助,认知中台传递基础技术能力

Lucien

学习 AI 语音识别

区块链:现实与未来的二律背反

CECBC区块链专委会

区块链 虚拟世界

明星里程被盗?看区块链如何加强个人信息安全保护

CECBC区块链专委会

信息安全 数字签名

架构师训练营 -week05-总结

大刘

极客大学架构师训练营

架构师训练营培训第一周作业

lakers

极客大学架构师训练营

Week1-架构方法学习

evildracula

学习 架构

太难了,5年Java开发经验,阿里面试了7轮终于拿下P7岗offer!

Java架构之路

Java 程序员 架构 面试 编程语言

牛皮了!世界级架构师,图解面向对象编程,小学生都能看得懂

周老师

Java 编程 程序员 架构 面试

架构师训练营第五周作业

听夜雨

极客大学架构师训练营

Consistent Hash

韩向民

架构师训练营第五周总结

架构师训练营第 1 期 week5 总结

张建亮

极客大学架构师训练营

第一周作业1:设计图表

韩儿

工业互联网推动制造业数字化转型

CECBC区块链专委会

区块链 大数据

架构师训练营 -week05- 作业

大刘

极客大学架构师训练营

架构师训练营第 5 周课后练习

叶纪想

极客大学架构师训练营

第五周 技术选型(1)作业

钟杰

极客大学架构师训练营

一、食堂就餐卡系统UML设计

Geek_28b526

我在苦苦坚持的时候,WebStorm已经悄悄的“真香”起来

小Q

Java 学习 架构 面试 webstorm

DevOps敏捷测试之道(下)-InfoQ