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层的自动化测试,而分层的自动化测试倡导产品开发的不同阶段都需要自动化测试 大多公司与研发团队其实是忽略了单元测试与集成测试阶段的自动化测试工作,所 ...
随机推荐
- rsync 服务搭建
rsync 服务搭建 服务端部署操作内容: 创建rsync用户和用户组 eg: useradd -s /sbin/nologin -M rsync 创建需要备份的指定目录,并修改权限 eg: mkdi ...
- MySQL——MySQL安装
1.rpm yum安装:安装方便.速度快.无法定制 2.二进制安装:解压即可使用,不能定制功能 3.编译安装: 可定制.安装慢: MySQL5.5之前:./configure make make in ...
- Django自带评论功能的基本使用
1. 模块安装 pip install django-contrib-comments 2. 注册APP INSTALLED_APP=( #..., 'django_comments', 'djang ...
- NOIP模拟16:「Star Way To Heaven·God Knows·Loost My Music」
T1:Star Way To Heaven 基本思路: 最小生成树. 假如我们将上边界与下边界看作一个点,然后从上边界经过星星向下边界连边,会发现,他会形成一条线将整个矩形分为左右两个部分. ...
- uniapp 获取用户手机号
参考资料: 微信小程序官方文档 uniapp开发微信小程序获取用户手机号 页面增加一个按钮 <button open-type="getPhoneNumber" @getph ...
- .Net性能调优-MemoryPool
简单用法 //获取MemoryPool实例,实际返回了一个ArrayMemoryPool<T> MemoryPool<char> Pool = MemoryPool<ch ...
- 双非Java的学习之旅以及秋招路程
个人信息: 趁着中秋写个帖子记录一下吧.渣渣本,无实习,无高质量证书,走了很多弯路,最后选择的Java后端.现在算是半躺平了,接了几个中小厂的offer保底,20w多的薪资,后面还有几家公司接着面.不 ...
- gentoo(贱兔) Linux作业系统的基本使用
emerge是gentoo linux的portage包管理器的命令行工具emerge的基础使用:emerge 软件包名:安装某软件包 emerge nanoemerge --ask 软件包名:交互式 ...
- PHP中的“重载”是个啥?
很多面试官在面试的时候都会问一些面向对象的问题,面向对象的三大特性中,多态最主要的实现方式就是方法的重载和重写.但是在PHP中,只有重写,并没有完全的重载能力的实现. 重写,子类重写父类方法. // ...
- Docker DevOps实战:Docker+Jenkins+Python+Pytest+Allure(1)- 创建Jenkins容器、安装Python环境、安装项目依赖类库、安装Allure报告插件
前言: 本文实操笔记参照菠萝笔记,安装过程中的坑大家可以参考下 创建Jenkins容器 # 下载Jenkins镜像 [root@localhost ~]# docker pull jenkins/je ...