写点什么

DevOps 敏捷测试之道(上)

  • 2020-03-20
  • 本文字数:2429 字

    阅读完需:约 8 分钟

DevOps敏捷测试之道(上)

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

敏捷和 DevOps

敏捷和 DevOps 转型始终是被业务目标和客户需求驱动的。市场竞争环境越来越激烈,新商业模式的创新和变现时间窗口越来越短,催生更多的企业采取精益创业的方式,捕捉市场需求后,尽量缩短 TTM 产品面世时间,快速推出 MVP 产品并快速响应客户需求迭代产品。


以华为为例:


在 2008 年左右的时候,华为的项目还是采用传统的交付方式,例如在年初开始一个项目,在项目立项之初就会把客户的需求全部收集好,包括一些用户的反馈,并把需求做了全年的排序。


年中的时候发布产品给用户,两个月之后再出一个补丁,最终年底出一个正式的版本。


当时版本交付的节奏还是比较慢的,但是对质量要求比较强。因为产品发布给客户以后,下一个补丁需要两个月,如果用户在这个期间发现产品问题,他们只能再等两个月,而在这期间如果用户不接受我们的产品,会导致项目前功尽弃,所以就对产品的质量有严格的要求。


产品逐渐向敏捷方向发展,这时有一部分研发工具平台已经陆续转到云上去了,一些测试类的工具也需要转型。


之前产品的交付是半年、两个月发一次,转型之后变成一个月,甚至两周发一次,但这时的转变并不彻底,与客户的交付过程仍然存在一些问题。后来越来越多的工具向平台化、服务化方向转型,这个时候一些商业模式发生了根本性的变化,也就是说当需求上云了以后,用户更加快速的介入进来。


基于云平台,把一些功能快速的开发出来,然后频繁的和用户去商量,听取客户意见,牵引产品做快速迭代,这种交付方法使得交付周期一下变快了,之前是半年交付一次,现在是一周、两周,更有甚者,可能一两天就把功能发布出去了。从需求的角度来说发生了巨大变化,基本做到了小步快跑,快速试错。

测试债务

从瀑布到敏捷再到 DevOps,在开发和测试生产率和需求交付效率提升的过程中,不同的组织或多或少面临一些积压问题没有解决,影响测试能力和测试价值的持续提升。

从对测试的重视程度上看

有的公司存在重开发、轻测试的情况,测试人员职业发展受限;手工测试人员不熟悉编程,开发人员对测试重视不足;测试工作量高,但人员配比低。

从部门组织和流程和文化上看

测试人员对需求理解不足,测试和开发之间的部门墙导致信息不透明、沟通协作滞后和不足,质量向速度过分妥协,以及忽视敏捷文化和价值观的培养塑造。

从测试和产品技术和方法上看

产品耦合度高、可测试性差,测试过于依赖黑盒功能测试,测试策略、方法不恰当,测试环境部署时间长,频繁升级等。

测试的焦点:业务价值的质量

测试首先就是一个质量活动,做测试就是要保证质量,其次是一个工程性的活动,即在有限的时间、人力、资源投入内获得尽可能大的产出价值。质量有多个维度,需要有一个焦点,就是业务价值的质量,也就是产品“对客户呈现的价值”的质量。


测试围绕业务价值去做,确定质量在功能、安全性、性能、易用性、兼容性等多个维度上的权重和优先级,而不是说一个测试上来之后,就把测试相关的关系点、关联点全部做测试。


让我们来看几个例子:


例如现在正在做一个线上支付的功能,对这个功能最关心的方面肯定是安全,所以相关的测试用例关键点就应该围绕安全大做文章,一定把安全保证好。


再比如,现在要做一个线上商城,面向用户是老百姓,不仅要让年轻人会用,也要让老人都会用,那么就要关注易用性。


除此之外,电商举办大规模抢购促销活动,那就还需要关注性能。


所以测试要求瞄准了产品本身的业务价值,确定产品的目标,相应的制定质量关键点,制订相关的测试策略,然后实践落地。落地之后还要基于一些不良的效果不断的进行反馈、循环,校验整体的测试过程是否达到预期结果,这就是我们的测试焦点。

自动化测试金字塔

自动化测试金字塔最早是由 Mike Cohn 在 2009 年的著作《Succeeding with Agile: Software Development using Scrum 》(《Scrum 敏捷软件开发》)中提出。


最早提出来的时候是一个三层的金字塔,从上到下分别是 UI 界面/Service 服务/Unit 单元测试,随着敏捷测试的不断推进,测试金字塔出现一些变种。实际使用中不用太拘泥于每层的名字,在服务化软件架构中 Service 层也可以理解为 API 测试。


这种下宽上窄的三角形结构,代表在各层自动化的建议投入分配比例,越接近底层的单元测试建议的投入最多,接口测试居中,界面层建议的投入最少。


Martin Flower 关于测试金字塔有这样一段评论:



GUI 测试用例还很脆弱,如对系统的一些修正可能导致很多用例的失败,这时候你需要重新录制。


你可以放弃录制的方法来解决这个问题,通过写 GUI 测试代码,但是这样效率非常低。就算你已经很精通了 GUI 测试代码的编写,端到端的 GUI 测试用例也很容易出现不可预期结果的问题-一些用例成功一些用例失败,因此,基于 GUI 的自动化测试是脆弱、耗时(包括用例维护和执行)的。


所以测试金字塔要表达的是:底层应当有更多的单元测试和接口测试和逻辑测试,GUI 测试用例能覆盖到主业务流程即可。



测试金字塔中每层中涉及的测试技术均有自己的优势和局限性,由于上层 GUI 测试的脆弱(不稳定性)、耗时(执行效率)问题,以及问题表现位置(UI)和问题根因位置(代码)距离太远的问题,测试金字塔由关注测试数量转向关注测试质量,推荐增加底层的测试投入。


  • 层次越靠上,运行效率越低,延缓持续集成的构建-反馈循环

  • 层次越靠上,开发复杂度越高,如果团队能力受限,交付进度受影响

  • 端到端测试更容易遇到测试结果的不确定性

  • 层次越靠下,单元隔离性越强,定位分析问题越容易


原则上单元测试需要开发人员承担,很多团队中开发人手不足,优先保障功能的实现,在单元测试的投入不够,并且很多开发人员的单元测试经验不足,导致很多团队中不做单元测试或者被动执行流于形式,有人提出了金字塔结构的反模式:蛋筒冰激凌模式和纸杯蛋糕模式。


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


原文链接:https://mp.weixin.qq.com/s/NQ65enngFnL-ParxbsaRFA


2020-03-20 21:251702

评论

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

数字货币量化交易所系统开发案例

区块链钱包软件系统开发及费用

区块链交易所系统开发,合约交易模式软件方案

盘点2020 | 云上建站流程全解,教你如何节约成本

老魚

云服务器 建站 盘点2020 web全栈

RPC 核心,万变不离其宗

yes

Java 微服务 后端 RPC

Java并发编程:AQS的互斥锁与共享锁

李尚智

Java Java并发

vivo 商城架构升级-SSR 实战篇

vivo互联网技术

大前端 服务端 Node SSR

第十三周 作业

熊桂平

极客大学架构师训练营

智慧公安防控管理,重点人员管控系统建设方案

t13823115967

智慧公安 情报研判系统建设

天源迪科获2020年度中国产业供应链(中央企业集采供应链)百强企业荣誉

DT极客

Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)

刘悦的技术博客

django Vue 微信支付 python3 请求数据 扫码

阿里不允许使用 Executors 创建线程池!那怎么使用,怎么监控?

小傅哥

Java JVMTI 线程池 七日更 Executors

Linux安装MySQL标准教程

Simon

MySQL centos 安装 七日更

全球第一个 Serverless Redis 服务:Lambda Store 免费用

donghui

redis Serverless Lambda Store

菜鸟实时数仓2.0进阶之路

Apache Flink

flink 流计算

十日谈:我的 2020

escray

2020 七日更 十日谈

架构的业务属性

soolaugust

架构 设计 架构师 七日更

数字资产交易所系统开发交易平台APP

和 lvgo 一起学习设计模式.PDF

米凤君

Java 设计模式 23种设计模式

数字货币交易所币币OTC交易系统开发

什么是定点数?

Kaito

计算机基础

Flutter动态创建UI实现方案

FisherJoe

FGC青蛙钱包系统开发|FGC青蛙钱包软件APP开发

系统开发

量化交易模式系统开发app案例

数字货币持币生息钱包系统开发案例

智慧平安小区搭建,智慧社区综合服务平台开发

t13823115967

智慧城市 智慧社区管理平台开发

第十三周 学习总结

熊桂平

极客大学架构师训练营

IDC发布2021年中国云计算10大预测;Docker 桌面为 M1 推出技术预览版

京东科技开发者

云计算 AI 程序人生

2020年,关于【区块链运营】工作的11条思考

猫Buboo

比特币 区块链+

突破某度云盘下载限速,提速30倍!想学?我教你啊

Silently9527

百度云 HTTP

文件写入的6种方法,这种方法性能最好

王磊

Java io 文件读写 文件操作 文件写入

DevOps敏捷测试之道(上)_DevOps & 平台工程_华为云产品与解决方案_InfoQ精选文章