研发效能认证学员作品:如何实现在DevSecOps的测试左移丨IDCF

news2024/11/26 4:27:09

作者:赵露润 (现就职于赛意信息科技有限公司)

研发效能(DevOps)工程师认证学员、PMP 认证、ITIL4 认证

前言

一个自主研发的ITDevOps系统,承载的主要功能有产品信息树管理,敏捷协同管理,开发服务管理,测试装备管理以及安全运维管理,而开发服务管理是旨在给公司其他项目提供端到端一体化的自动构建和自动部署功能和包管理功能,承载大量用户去频繁使用平台,怎么更好的着手于项目的测试管理工作从而减少遗留的上线缺陷,减少用户差评,提升用户满意度,反而是更加艰巨的任务。

痛点

为了更好的协调团队运作,提升研发效能,实现测试与开发敏捷协作,减少沟通成本,提升上线变更成功率,着手针对项目痛点并一一解决:

一、平台类产品需求,设计变化多,基线管理困难:平台类产品要快速响应业界的业务变化,客户对版本交付的需求变更大;

二、团队API资产模糊:项目微服务多,缺少整个API资产功能清单,新进人员对部分存量的API功能无从下手;

三、上线频繁,测试验收时间短:当前项目每2周例行一次上线,开发人员自测和联调占用了测试人员的验收时间,上线时间匆忙导致人为失误率高。

 手工测试左移与可信测试线上化

作为测试经理,从当前项目运作中出现的测试结果和现状,明显的感受到,项目还处于传统的软件研发周期,即“瀑布模式”,在这个模式下,项目的周期清晰的分为几个阶段:制定计划-需求分析-软件设计-程序编码-软件测试-运行维护等六个基本活动,如图一:

图片

如上图所示,软件测试阶段就处于软件生命周期第五个阶段,比较靠右的一个阶段。

因为项目每2周例行上一次线,在“靠右”阶段测试发现的缺陷修复成本会非常高,这些缺陷大部分并不是在编码的时候发现的,而是在转测之后发现的,甚至是上线后,导致上线失败,第二天继续接着上线,就会出现,开发人员忙于修复缺陷而延迟迭代的开发,测试人员后期忙于测试而前期无事可做,技术债像雪球一样越滚越大,开发和测试疲惫不堪,精力不充分,且最终导致项目绩效数据为:上线变更成功率越来越低。

为了解决这一现状,经过跟项目经理的沟通,提出了,在团队内引入手工测试左移和API自动化测试左移的概念。

怎么样才算手工测试左移呢?即从研发完成后测试才介入的方式,变成从指定计划,需求分析的阶段测试人员就开始参与。

一、预习会议

  • 组织需求澄清会议

    BA、开发、测试全员参与,在会议上,BA向开发和测试逐一澄清需求,并且开发人员和测试人员均要提出自己的疑问,BA将问题与PM和用户沟通业务方案后并继续与高级开发商讨技术方案,期间测试人员全程参与并关注记录需求任何变动过程。

  • 组织开发反串讲会议

    由开发人员进行开发反串讲评审,每个开发针对自己开发的需求,输出开发设计思路和流程图,测试根据业务点提出相应的疑问,并且与开发达成一致意见后,开发人员再继续投入到开发工作中。

  • 组织测试方案评审会议

    由测试人员编写测试方案文档,组织开发人员协同参与,开发人员针对方案中不正确或者模糊的地方,提出改进意见,完成需求从开发到测试的最终论证闭环。

二、依托平台

  1. 制定测试设计

    测试人员引入测试设计,在项目的规划设计上,通过平台中项目管理的规划进行需求的计划和设计。项目管理根据常用的规划方式提供思维导图。将IR引入到本迭代的测试设计下,添加对应US,以及维护好测试责任人字段。

  2. 制定测试策略

    测试设计完成后,针对每个US,添加子节点,再添加测试策略,其中包含:测试范围,测试层级,测试类型,验证环境,风险和处理方案。从原来通过文档描述,改成线上化通过子节点添加,从需求引入到下发功能节点,完成测试可回溯。

  3. 制定测试方案

    测试策略完成后,着手将本地编写测试方案逐步牵引到线上化管理,由原来直接在本地通过xmind完成测试方案的编写改成,通过本地直接导入的方式或者线上化编写的方式来实现测试方案的备份管理。

  4. 制定测试用例

    测试用例线上化以迭代的方式进行,将用例通过基线整体管理,若当前迭代有变动,则自动同步到baseline去,并且在测试方案线上化实现可选择用例的关联关系,完成从测试设计,测试策略,测试方案的线上化可追溯。

经过几个迭代的初步运作,测试用例的执行能够完全被线上化跟踪,漏测的现象慢慢减少,发现缺陷的时机也从迭代结束时发现提前到刚开始业务需求上的提前规避。

这时候我们已经完成手工测试的规范化,和测试左移的第一步,俗话说,不积硅步,无以至千里,怎么才能继续第二步呢,这里就涉及到API自动化测试的左移了。

那么,如何实现API自动化测试的左移呢?

API自动化测试左移

我们一般知道,测试金字塔,也被称为测试自动化金字塔,本质上描述了开发和QA团队应该纳入自动化测试套件的测试类型。此外,它定义了这种评估的顺序和频率,其目的是提供快速反馈,以确保代码变化不会影响现有功能。如图二:

图片

1.单元测试(UnitTest)

单元测试是针对代码单元(通常是类/方法)的测试,单元测试的价值在于能提供最快速的反馈,在开发过程中就可以对逻辑单元进行验证。

2.接口测试(Service/服务/API Test)

接口测试是针对业务接口进行的测试,主要测试内部接口功能实现是否完整,如主要业务流是否能走通,异常处理是否正确,数据为空时校验等等。接口测试的主要价值在于接口定义相对稳定,不想界面或底层代码会进场发生变化,所以接口测试比较容易编写,用例的维护成本也相对较低,在接口层面准备测试的性价比相对较高。

3.集成测试(UI Test)

集成测试从用户的角度验证产品功能的正确性,测的是端到端的流程,并且加入用户场景和数据,验证整个业务流,集成测试的业务价值最高,它验证的是一个完整的流程,但是因为需要验证完整流程,在环境部署、准备用例及实施等方面成本较高,实施起来并不容易。

对当前项目而言,API资产无管理,无线上化操作,且没有接入到开发后的测试阶段。所以,第一步必须要把自动化流水线上面搭配API自动化测试,完成定时定量执行,提前发现环境及接口不稳定等因素。就必须要从以下两个方面着手:

  1. API线上化管理

    1. 线上化基线版本:通过线上的API基线版本,约束在版本交付过程中,不做变更,如果要做变更,可以根据基线版本计算人天,进行同等人天需求替换。

  2. API资产管理

    1. API功能清单:API功能资产清单线上回归,分层分级设计,清单目录结构清晰

    2. API用例清单:API明明使用业务描述+代码术语相结合,便于开发和测试人员快速确定API基本信息与自动化测试用例信息

    3. 进项必修课:新进人员入项必修课,了解项目API功能清单

通过以上两个阶段,将项目的API资产进行梳理,完成API资产的线上化,统一化,一致性管理。并且作为新进人员进入项目的学习清单项之一,既完成了项目组织过程资产的沉淀,又完成了项目API的线上化运作,最终在流水线上,搭配自动构建,自动部署,API自动化测试,完成API自动化定时执行,以及跟手工测试用例关联,完成自动化测试结果自动回写和自动化发现问题缺陷数增加。

此时,API自动化测试的发挥已正常初步试运行成功,但是测试人员初步接触API自动化测试后,在编写API自动化测试用例时,有很多参数无法理解,还要去跟开发进一步沟通和对接,那么,鉴于此现象,为什么不能将这个沟通提前到一开始呢?所以,此时又引入了API自动化测试左移的概念,即,在开发进行API设计时,测试人员就参与,在API设计完成后,测试人员就开始编写自动化测试用例,大概分为四步:

  • API设计先行:API设计先行,评审确定API后,测试人员可通过线上自动生成API用例场景;

  • 需求转测前:转测前开发人员使用API用例场景进行自测

  • 需求转测后:转测后测试人员使用API用例场景进行回归

  • 缺陷分析:API用例场景定期执行,问题日清日结;分析缺陷可自动化覆盖而未覆盖的用例场景,横向覆盖API

通过API自动化左移的一小步,实现测试人员在需求分析完成,API设计完成后,就开始引入API自动化测试用例的编写,实现自动化测试前移,解决编码潜在问题;手工测试前移,解决需求潜在问题,来通过测试驱动需求和开发,提升项目运行的整体质量和效能。

价值收益

通过实施测试左移,完成项目的价值收益:

质量方面

1.去年低级缺陷平均每月11.82%,同比却年平均下降70%

2.需求及时交付率上升20%,US一次性通过率上升5%

效率方面

1.API公共功能复用,减少仓库重复代码

2.开发人员可快速定位接口并使用API用例场景

项目运作方面

1.API用例场景实现复用,开发用于自测,验收用于回归,缩短开发转测及上线过程时间

2.减少每周在灰度的问题进行反复上线,优化成每周例行上线一次

3.减少开发人员负责上线产生的额外工作

在项目真正实施测试左移,帮助项目提升了开发效率,节省了开发精力,为项目的更好运作发挥了重要的作用,滴水之石,非一日之功,相信通过一个一个项目的实际演练,随着项目的收益提高,大家都会完成各自项目的良性循环发展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/765616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用自动化构造随机路由模型

为什么要仿真随机路由? 路由器测试中,为了最大程度还原现网路由情况,评估路由器在现网环境下稳定工作各项指标,需要对导入路由进行离散仿真,目前路由仿真可分为导入路由与生成路由两种方式,导入路由需要现…

S3C2440使用GPIO输入功能控制按键

文章目录 前言一、设置GPIO输入模式二、检测开关1.配置功能2.具体实现 总结 前言 由于上期分享的使用GPIO去控制引脚输出模式点亮LED,那么本期主要介绍一下使用GPIO设置为输入模式,用到的硬件有板载的按键;开发环境也是依赖于S3C2440开发板&…

Hyper-V安装Ubuntu-18.04

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、准备工作?二、下载指定的Ubuntu ISO镜像三、开始配置1.点击快速创建2.选择安装源 四、开始安装五、配置启动项总结 前言 最近有个很扯淡的问题…

Linux 学习记录51(ARM篇)

Linux 学习记录51(ARM篇) 本文目录 Linux 学习记录51(ARM篇)一、计算机的组成二、编译的原理三、指令和指令集1. 机器指令2. 汇编指令3. 指令集(1. RISC:精简指令集(2. CISC:复杂指令集(3. 精简指令集补充 四、ARM相关介绍1. Arm发展简介2. ARM架构3. AR…

仓库管理系统到底包括哪些方面?

仓库管理系统到底包括哪些方面? 1)入库 采购产品到货后,需要进行入库处理。填写采购单号,供应商信息,仓库信息,以及入库明细,提交流程完成入库登记。 “入库明细”中选择货品编码后&#xff…

四阶龙格-库塔方法matlab程序与误差对比

四阶龙格-库塔方法matlab程序与误差对比 简介参考code四阶龙格-库塔函数微分方程函数主程序 结果分析 简介 本例子函数参考了【1】中的函数,增加了解析方法的函数与四阶龙格-库塔方法对比,并计算了百分比误差,最大误差在0.3%左右。 参考 【…

网站创建002:head内容

一个html网站&#xff0c;包括html根、head头、body身体 首先来看head&#xff0c;head操作的是页签标题&#xff0c;如下 1、给head添加图标&#xff0c;如下 <link rel"icon" href"C:\Users\86158\Desktop\网站创建\favicon.ico">2、给网站添加搜索…

Python测试框架Pytest的基础入门

Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍…

依赖注入三种方式,以及传统xml文件传参,还包括@Bean方式传参,还有Resource注入(详细版,每步都有提及)

获取bean对象&#xff0c;也称为对象装配&#xff0c;对象注入&#xff0c;依赖注入。 对象装配的实现方法有3种&#xff1a; 1.属性注入&#xff1b; 2.构造方法注入&#xff1b; 3.Setter注入。 再讲本节内容之前&#xff0c;我们先来提两个传参的方式&#xff0c;首先呢…

Twitter重新突围或许借助国产技术是个好办法

Meta公司近期推出的Threads 被网友戏称为“Twitter杀手”&#xff0c;该应用上线仅一天&#xff0c;用户就突破了3000 万人。外界普遍认为&#xff0c;这是推特上线17年来遭遇的最严峻危机。面对扎克伯格来势汹汹的挑战马斯克会如何快速组织反击&#xff1f; 前段时间闹得沸沸扬…

想要提高产品使用率?掌握以下关键策略,让你的用户爱不释手!

如果你的产品已经推出市场&#xff0c;但你发现用户的使用率并不如你预期的那样高。你想知道如何提高产品的使用率&#xff0c;并让更多的用户喜欢和频繁使用你的产品吗&#xff1f;别担心&#xff0c;你可以采取一些策略来提高产品的使用率并让用户更愿意使用它。 1. 了解你的…

el-date-picker组件的picker-options常规属性设置

查询已发生的配置项 // 日期选择器快捷键配置&#xff08;一般过去时&#xff09; pickerOptions: {shortcuts: [{text: 今天,onClick(picker) {let start new Date();let end new Date();picker.$emit(pick, [start, end]);}},{text: 昨天,onClick(picker) {let start new…

【高阶数据结构】——并查集

文章目录 并查集的原理并查集的实现并查集的应用 并查集的原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合, 然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归…

msvcp140.dll丢失的4种解决方法,快速修复msvcp140.dll文件

msvcp140.dll丢失在所有的dll文件丢失里面&#xff0c;也算是经常丢失的老油条了&#xff0c;我们应该对它都不陌生吧&#xff0c;不过直到今天都还有人不知道怎么修复msvcp140.dll文件&#xff0c;小编觉得非常有必要来给大家详细的说说吧&#xff0c;聊一下msvcp140.dll丢失的…

Linux·gdb调试命令和使用方法

基本命令 调试未运行的程序 $ gdb helloworld Reading symbols from helloWorld...(no debugging symbols found)...done. 如果没有调试信息&#xff0c;会提示no debugging symbols found。 如果是下面的提示&#xff1a; Reading symbols from helloWorld...done. 则可以…

Windows11 环境下 Nginx 安装部署教程

一、Nginx 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器。Nginx 是一种轻量级的Web服务器&#xff0c;可以作为独立的服务器部署网站&#xff08;类似Tomcat&#xff09;&#xff0c;应用非常广泛&#xff0c;特别是现…

【method】ADMM-CSNet | 一种图像压缩感知重建的深度学习方法(1)- 方法解析

#! https://zhuanlan.zhihu.com/p/644157062 【method】ADMM-CSNet | 一种图像压缩感知重建的深度学习方法&#xff08;1&#xff09;- 方法解析 文章目录 【method】ADMM-CSNet | 一种图像压缩感知重建的深度学习方法&#xff08;1&#xff09;- 方法解析摘要广义压缩感知模型…

用宏定义完成整数的二进制位的奇偶位互换

代码如下&#xff1a; #include <stdio.h> #define SWAP(num) (((num & 0xAAAAAAAA) >> 1) | ((num & 0x55555555) << 1))int main() {int num 1010;printf("%d\n", num);printf("%d\n", SWAP(num));return 0; }思路如下&…

麒麟v10部署Nginx

1.解压&#xff1a;tar -xvf nginx-1.18.0.tar.gz 2.进入目录&#xff1a;cd nginx并执行脚本./configure 3.执行make 4.执行make install 5.安装目录在&#xff1a;/usr/local/nginx&#xff0c;然后再进入/usr/local/nginx/sbin启动nginx服务&#xff0c;执行./nginx&a…