DevOps 时代的高效测试之路
10 月 22 日,2021 届 DevOps 国际峰会在北京顺利召开,来自国内外的顶级技术专家共同畅谈 DevOps 体系与方法、过程与实践、工具与技术。CODING 测试及研发流程管理产品总监程胜聪(Diego)在大会现场接受了 CCTV《态度》栏目组的专访,也在 DevOps 最佳实践及解决方案专场为大家分享了他的主题——DevOps 时代的高效测试之路。

测试正在成为持续交付的最大瓶颈
业界对于测试的焦虑由来已久。从 2017 年开始,行业开始对测试困境形成共识,即测试不够快成为导致交付延期的主要原因。之后,行业开始强调自动化测试,提出打造快速反馈环、流水线工作流和工程文化等理念。

在这种背景之下,Diego 认为,持续测试是 DevOps 时代的高效测试之钥。测试作为一项基础的、持续的活动,理应贯穿于整个软件交付周期之中。持续测试改变的是传统测试后置的工作模式,让测试活动延伸到 SDLC 的每个阶段。

高效测试需要以自动化为实践基石
从一项对于测试时间花费的调研中可以得知,测试执行占了总时间的四成。因此如果要提升整体测试效率,首要的就是通过自动化来提升测试执行的效率。然而,测试团队发现即使在 CI 中配置好自动化代码库,由于待执行的用例集合是固定的,随着自动化测试覆盖率提升、自动化代码越来越多,运行时间越来越长,于是运行频率却越来越低,效果并不如人意。
Diego 指出,只是默默地写自动化代码是不够的,自动化测试需要"更聪明地执行"。如果能够人工地将需求(Req)、用例(Case)以及自动化函数(Func)关联在一起,灵活确定测试子集会让测试变得更加自由。如果某个自动化函数运行失败,则可以迅速定位到某个有问题的需求,团队再根据问题的优先级和影响,来判定是否能够继续发布。

新的时代,新的流程
在新的时代,提倡新的流程。持续测试并不仅仅只是自动化测试、还有对流程的全局优化,这需要我们从单点(执行)效率的提升延伸到全局效率的提升。工具/技术改进过程效率(efficiency),而流程会指向正确的结果(effectiveness)。
那么,DevOps 时代需要什么样的测试流程?
首先,Diego 认为敏捷宣言的四个“高于”清晰的指出了研发应该关注于为用户带来价值的行为和结果,而不是过程中的产物。
然而尽管协作很重要,却不意味着流程、文档、计划不重要。只要软件的复杂度还在,有助于软件顺利交付的流程、文档、计划都是必要的。只是需要相应变化、与时俱进——转为轻流程、简洁文档、尽早计划,或“演进式”的流程/文档/计划。
DevOps 需要更轻,更强调角色协作的流程。测试团队首先需要围绕需求开展测试,策略性定义子集,并且确定基于风险的测试策略。其次,团队需要推动测试左移,让测试与开发并行工作。在这个阶段,需要完成的工作包括单元测试、测试评审、代码扫描,以及基于接口定义的开发和自动化测试。最后,还需要实践测试右移,让“测试永不退出”—— 在部署之后,还需要进行线上的实时监控,保证问题得到快速发现和处理。

此外,DevOps 还需要健壮的规范和快速的反馈。Diego 认为:研发“一致性”是效能提升的基础,规范能够降低协作中的人为产生的主观复杂度、避免不必要的上下文理解。而快速反馈不仅仅是减少手工操作的“劳力花费”、更重要的是减少成员的“心力损耗”,让成员可以专注于自己的工作,不必要在不同平台之间来回切换。软件开发的艺术成分应该被关进笼子里,而在软件开发中并不需要艺术的部分,例如机械的判断选择、和协同所需操作,应趋向于科学化和量化。
腾讯云内部落地实践的分享
最后,Diego 向现场观众分享了腾讯云 CODING 团队内部的落地实践,展现研发一体化的高效测试是如果实现的。
在研发过程中,存在各种各样的活动。研发团队中的不同角色,如产品、开发、测试以及运维一般都只关注自己所负责的活动,然后不同角色活动之间也存在关联,协作产生的活动便形成一个完整的工作流。在此基础之上,加入准入准出规范可以让协作更加健壮,而自动操作则让流动更加高效。CODING 正是基于这样的逻辑,来为研发流程的高效管理设计出 CODING Compass 这一产品。
然而,DevOps 不应该只是研发团队自嗨的领域,我们还需要跟业务价值连接起来。通过把研发活动映射到业务人员所熟悉的阶段:计划、开发、测试、部署,并且保持对 Lead Time(前置时间)、Process Time(处理时间)、% of Completeness &Accuracy(完成&准确百分比) 等指标的关注和持续改进,形成价值流管理。

接下来,Diego 向大家介绍了腾讯云 CODING 团队是如何将测试活动嵌入其中的。
首先,迭代规划阶段会围绕着需求开展测试,策略性的定义测试子集。测试与开发紧密协作,同时认领同一需求任务。而当迭代 Backlog 确定下来之后,也就表示测试范围定下来了,测试计划就可以创建,而需求的验收标准也就可以直接转换为功能点用例。
而在迭代进行时,测试和开发并行进行工作,在开发人员编码单测的同时、进一步细化用例使之完整,并及时进行评审。在写自动化用例的时候,我们可以利用 CODING 平台的帮助实现自动化用例与功能用例的关联。

从而,当从测试计划中发起测试执行,关联的自动化用例会被指定执行。

通过践行研发一体化的高效测试,团队的高频发布得到了坚实的支撑,月均成功发布次数 400+,需求的测试覆盖度 96%,而且覆盖主干的自动化用例集通过持续重构基本上维持在 1400 的数量(冒烟自动化用例必须要在 15 分钟内执行完毕)。
最后,Diego 总结道:CODING 之所以能实现高效的测试,3 个方面理念的转变是尤为关键的。
首先是打破职能筒仓、实现目标共享。在过去开发和测试人员的目标通常是割裂、甚至相互对立的,开发人员看重写了多少行代码,测试人员则关注发现了多少个 bug。正确的观念应该是赋予团队同一目标,让不同角色围绕业务需求展开工作,共同交付高质量的软件。
其次是,改变“阶段式交接”为“小步快走”的工作模式。开发和测试应该以同样优先级顺序来处理需求,这样到了交付的时候得到的是成品而非“半成品”。一方面在全局通过控制在制品数量来缩短交付时间,另一方面在局部则通过自动化的手段来进行单点的加速。
最后,则是实现了真正为团队成员赋能。赋能并非要求所有人都是全才,而是让团队成员都放心的与其他人协作、或者使用其他人提供的工具和服务。为了解除疑虑、保障协作过程的顺畅,通过标准规范的设定来提升活动的一致性,为团队效能提升带来积极的影响。
DevOps 时代的高效测试之路的更多相关文章
- DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件开发和交付的效率和质量提升方面的意义
DevOps时代的软件过程改进探讨 杨振涛 云加社区 今天 作者:杨振涛,腾讯云TVP 本文从Jenkins,DevOps,云原生等视角探讨了软件过程改进在各个时代的挑战和价值,重新审视了SPI在软件 ...
- DevOps理论+实践之路
DevOps理论+实践之路 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关注 ...
- 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...
- DevOps时代,企业数字化转型需要强大的工具链
伴随时代的飞速进步,中国的人口红利带来了互联网业务的快速发展,巨大的流量也带动了技术的不断革新,研发的模式也在不断变化.传统企业纷纷效仿互联网的做法,结合DevOps进行数字化的转型. 通常提到Dev ...
- 网易严选的wkwebview测试之路
本文来自网易云社区 作者:孙娇 UIWebView是苹果继承于UIView封装的一个加载web内容的类,它可以加载任何远端的web数据展示在你的页面上,你可以像浏览器一样前进后退刷新等操作.不过苹果在 ...
- 自动化测试之路3-selenium3+python3环境搭建
1.首先安装火狐浏览器 有单独文章分享怎么安装 2.搭建python环境 安装python,安装的时候把path选好,就不用自己在配置,安装方法有单独文档分享 安装好以后cmd打开输入python查 ...
- 自动化测试之路2---python安装
借鉴这位老哥的文章http://www.cnblogs.com/shabbylee/p/6792555.html
- Python Appium 开启Android测试之路
1.获取 Android app的Activity 打开终端cmd,先cd进入到刚才下载的“新浪.apk”目录下,然后使用aapt dump badging xxx.apk命令获取包内信息.注意,启动 ...
- python selenium自动化测试之路(1)--分层测试概念、selenium工具介绍
1.分层自动化测试概念 传统的自动化市场更关注产品UI层的自动化测试,而分层的自动化测试倡导产品开发的不同阶段都需要自动化测试 大多公司与研发团队其实是忽略了单元测试与集成测试阶段的自动化测试工作,所 ...
随机推荐
- Raid(0/1/5/10)
一.Raid需要的硬盘数量 1.raid 0: 最少1块硬盘(但是1块盘没有意义,至少2块才有实际意义) 2.raid 1: 最少2块硬盘 3.raid 5: 最少3块硬盘 4 ...
- Eclipse开发Java的简单配置
目录 Eclipse配置Java开发环境 1.配置JDK 2.切换项目的JDK版本 3.配置maven 4.配置lombok Eclipse配置Java开发环境 时隔N年重新使用Eclipse,对一些 ...
- GoLang设计模式04 - 单例模式
单例模式恐怕是最为人熟知的一种设计模式了.它同样也是创建型模式的一种.当某个struct只允许有一个实例的时候,我们会用到这种设计模式.这个struct的唯一的实例被称为单例对象.下面是需要创建单例对 ...
- Identity简单授权
详情访问官方文档 以下代码将访问权限限制为任何经过身份验证的用户,这里为控制器级 [Authorize] public class AccountController : Controller { p ...
- python生成时间序列(date_range)
介绍 自己写了一个用python内置模块实现的生成时间序列的函数 支持自动推断字符串到datetime的转换, 但对格式有一定要求, 其它格式可手动指定格式化方式, 格式化方式与python内置格式化 ...
- 深入理解Linux文件系统与日志文件
目录: 一.inode与block 二.inode内容 三.inode的号码 四.inode的大小 五.链接文件 六.inode节点耗尽故障处理 七.恢复EXT类型的文件编译安装extundelete ...
- Grid 网格布局详解
Grid网格布局详解: Grid布局与Flex布局有着一定的相似性,Grid布局是将容器划分成行和列,产生单元格,可以看做是二维布局. 基本概念: 采用网格布局的区域,称为"容器" ...
- 猪齿鱼 SaaS 版效能平台发布
日前,猪齿鱼Choerodon全场景效能平台Saas版发布,提供体系化方法论和协作.测试.DevOps及容器工具,帮助企业拉通需求.设计.开发.部署.测试和运营流程,一站式提高管理效率和质量.从团队 ...
- php 解决返回数据 数字 变成科学计数法后转换问题
链接 https://blog.csdn.net/liuxin_0725/article/details/81514961 问题 id int型 数字过长,json_decode的时候已经转成科学计数 ...
- yum 安装 php 环境
如此简单 第一步: sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7. ...