当前位置: 首页 > news >正文

DevOps自动化测试的原则和实践

DevOps是为了在保证高质量的前提下缩短系统变更从提交到部署至生产环境的时间。在对系统进行变更时,质量很重要。高质量才能让业务价值传递到系统干系人。『自动化测试既是提高质量的一种重要手段,也是实施持续测试必需的能力,因此它是DevOps持续交付流水线中必不可少的环节』。本文简单阐述一下在DevOps持续交付流水线中自动化测试的原则和实践。

1、自动化测试的原则

DevOps实施自动化测试主要有以下原则:全员参与、更早的介入、指标量化和收益至上。

  • 全员参与

在DevOps团队中一般不会有专职的测试人员。DevOps参与的人是系统的干系人,运维、客户、产品经理是首要受众群体,其实是设计师、架构师,最后才是技术团队。

  • 更早的介入

DevOps测试工作贯穿整个软件交付生命周期,在需求阶段即进行业务级的测试设计,在需求特性开发、交付整个过程中同步进行并完成测试任务。

  • 指标量化

所有的测试指标应该量化,且是全团队共同的职责。所有的指标要有阀值,比如代码复杂度要小于<多少,单元测试率要>多少,技术债务中验证类问题不能高于多少。只有通过量化的指标才能进行流水的下一个节点

  • 收益至上

DevOps尤重收益。在自动化技术选型上优先收益率最高是单元测试,其次接口服务测试、最后才界面测试。

2、自动化测试的实践 

自动化测试实践除了依赖自动化的测试服务外,还有其他三个要素即人、过程和方法。

  • 对平台的自动化的测试服务要求

测试服务对象包含一切,“软件定义一切”。『一切即可测试』,包括文档、配置、环境、发布包、脚本、基础设施。

测试服务功能涵盖多种类型,包括代码扫描、功能测试、性能测试、安全测试、兼容性测试、乃至验收测试和用户体验性测试。

测试服务自动触发,通过持续交付流水线节点触发自动化测试服务。DevOps持续交付流水线原则上要求5分钟内结束。这不仅需要分布式的测试执行技术,还要求应用架构能够定义测试优先级以及相配套的快速部署技术。

测试服务基础资源即开即用,借助容器、弹性扩缩等技术让自动化测试能力服务化。

自动化测试服务能力进行分层,自动化测试平台提供基础测试服务和组件接入能力。项目个性化的技术要求和跨系统公用组件由项目组自行建设,测试平台负责接入。

团队技能要求提升,即是全栈开发团队也是全栈测试团队,要求具备各层级测试的能力。团队不再需求基础手工测试人员。但在团队中需要有测试架构师进行整体测试方案设计,负责和平台进行对接事宜。需要有测试领域技术专家按照测试场景进行技术分析和选型,并提供业务和技术组件。需要测试专家能够指导开发工程师进行测试组件和用例的开发。

  • 过程

要实现测试工作前移,必然要修改原来需求、开发、测试、运维串联的过程,采用协同并行工作模式。团队要采用敏捷的开发模式,团队成员数量尽量少、支撑的的业务系统尽量的集中,这样确保每个团队的成员对用户场景有统一认识。

在开发迭代中,做故事澄清、原型设计、数据模型设计时,可以并行进行测试对象分析、测试点分析、测试数据、测试组件等设计。越早的发现问题,修复的成本越低。

同一个故事的开发任务和测试任务安排给同一个人,测试驱动开发的另外一个好处是通过用例,让开发从用户的角度去审视自己的设计从而提升质量。

  • 实施方法

用例管理要坚持“三易”, 用例执行要支持“三更”

用例管理的「三易」

1.易管理:

“比遗留代码更可怕的是遗留的测试代码”,测试代码管理复杂度远高于代码本身。一定要建立统一的管理规范。团队的测试规范包括用例规范、组件规范、过程规范、环境管理规范必须事前先建立。要建立用例的评估把控机制,做到事前评审事后抽查。

2.易维护:

采用分层设计,用例和组件分离,用例本身只关注业务逻辑。区分变化与不变、资源文件、环境信息与用例代码分离。

3.易定位:

测试用例不相互依赖,要求明确的断言信息。

 

用例执行的「三更」

1.更多:

采用各种各样的自动化测试方式来解决业务测试的问题,而不是单一技术手段。

2.更早:

尽早测试,尤其是已知的风险因素,确保在交付生命周期的后期发现的问题更少。

3.更频繁:

不断的重复进行测试,向开发团队提供代码质量的迭代式反馈。

3、总结

实施自动化测试也要重视收益。测试工作应该贯穿整个软件交付生命周期,越早的发现问题,修复的成本越低。在实施自动化测试的过程中,不一定减少测试人员的个数,但能逐步提升测试人员素质。

好的自化测试实践,不仅仅是依赖自动化测试服务。还依赖与团队、任务的协作方式,以及自动化测试建设过程中的一些小技巧。


绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助....

相关文章:

  • `SpringBoot`+`axios`结合发送`ajax`请求
  • 电子元器件产业发展遇新机,SRM供应商协同管理系统实现与供应商的敏捷协同
  • C#基础入门教程-基本语法
  • TensorRT安装记录(8.2.5)
  • C++ 池式组件 线程池 内存池 异步请求池 MySQL连接池
  • SwiftUI 动态岛开发教程之 05 Dynamic Island 和 Live Activity 无需太多代码即可为用户提供大量信息
  • XDU2019级保研数据统计分析
  • 网课查题使用方法
  • 在 Ubuntu 新装系统中安装 ruby 的几点注意
  • 按行分块和按列分块
  • 【Vue3】穿梭框 -- 思路与实现分析
  • SpringBoot读取yml配置文件
  • 制胜充电桩下半场,特来电、星星充电们要靠运营?
  • 使用Keras Tuner进行自动超参数调优的实用教程
  • Vue2.0到3.0的过渡,setup,ref函数,reactive函数,计算属性computed、监听属性watch
  • 【笔记】你不知道的JS读书笔记——Promise
  • css系列之关于字体的事
  • extjs4学习之配置
  • Laravel5.4 Queues队列学习
  • Linux下的乱码问题
  • linux学习笔记
  • Redux系列x:源码分析
  • SQLServer之创建显式事务
  • 从tcpdump抓包看TCP/IP协议
  • 从零开始的无人驾驶 1
  • 飞驰在Mesos的涡轮引擎上
  • 力扣(LeetCode)965
  • 如何解决微信端直接跳WAP端
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何使用 JavaScript 解析 URL
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 《天龙八部3D》Unity技术方案揭秘
  • Prometheus VS InfluxDB
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #stm32驱动外设模块总结w5500模块
  • #stm32整理(一)flash读写
  • $$$$GB2312-80区位编码表$$$$
  • $(function(){})与(function($){....})(jQuery)的区别
  • (1)(1.9) MSP (version 4.2)
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (差分)胡桃爱原石
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net web项目 调用webService
  • .sdf和.msp文件读取
  • @EnableConfigurationProperties注解使用
  • @font-face 用字体画图标
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [Angular] 笔记 21:@ViewChild
  • [BeginCTF]真龙之力