社区分享|MeterSphere变身“啄木鸟”,助力云帐房落地接口自动化测试
云帐房网络科技有限公司(以下简称为“云帐房”)成立于2015年3月,以“成为最值得信赖的税务智能公司”为愿景,运用人工智能、大数据等互联网技术,结合深厚的财税行业服务经验,为代账公司和中大型企业提供智能化、自动化的财税解决方案,同时围绕企业运营管理的全链条提供全周期生态服务,帮助企业降本增效、持续发展。
一、引入接口自动化项目的背景
云帐房旗下的“有度税智”品牌,致力于为中大型企业和集团企业提供优质的智能税务服务,其SaaS产品包括企业税务、进项发票应用、销项发票应用、个税应用和AutoWork应用等。除此之外,还有为业务部门提供公共能力的税务数字化平台和提供发票能力的融合平台等。随着业务规模的发展,云帐房测试团队面临着如下挑战:
■ 业务逻辑复杂,随着产品迭代速度的加快,回归测试的成本越来越高;
■ 多租户系统需要保证线上系统功能的稳定性和可靠性;
■ “有度税智”品牌的客户群体大多是集团客户,税号多、数据量大、数据之间关联性强,通过手动构造大量测试数据的方式,效率低且可复制性差,期望通过自动化的方式构造测试数据。
目前,有度税智测试团队共有10名测试人员,团队中大部分成员能够独立负责单个应用的测试和管理,具有丰富的功能测试和接口测试经验。团队中50%的成员具有接口自动化测试脚本的编写经验,部分人员具备Python和Java编码能力和性能测试经验。
测试团队负责事业部所有应用的需求测试,版本迭代快且给到测试的时间较短,而新功能测试和部分影响功能回归以手动测试为主,测试效率难以支持版本的高频迭代。同时,产品的技术改造影响面广,精准评估影响范围难度较大,希望通过接口回归降低变更带来的潜在风险。
二、为什么选择MeterSphere开源持续测试平台?
对于有度税智的测试团队来说,MeterSphere能够满足其构建自动化测试平台的目标和需求。与其他的测试工具或平台相比,MeterSphere开源持续测试平台的优势体现在:
1.低代码平台,简单易用。无须CODING即可覆盖API自动化测试的所有功能,运行结果与日志实时呈现,方便调试和定位;
2.强大的用例管理能力。MeterSphere能够支持项目复用、场景复用、用例复用,一套用例支持多环境运行;
3.具备高可拓展性。MeterSphere平台支持Python和Java代码运行,对于无法满足的数据处理,支持进行拓展与封装;
4.多样的执行方式。MeterSphere平台支持定时执行测试场景、系统构建触发执行测试场景,以及单个或批量手动执行测试场景。
三、接口自动化落地过程中遇到的实际问题与解决方案
1.对外开放接口的自动化实现
对外开放接口用于提供产品的能力给第三方进行调用,为了保证调用的安全性,一般会对接口内容进行签名加密。因为MeterSphere提供的前置脚本、后置脚本以及自定义脚本都能支持Java程序运行,因此可以引用Java包中已经封装好的方法,实现接口请求参数的动态加密。
2.第三方接口测试桩与自动化场景的结合
“有度税智”产品中有不少依赖于第三方接口,通过测试企业很难实现功能场景全覆盖。MeterSphere是开源持续测试平台,为了能够更好地覆盖第三方接口不同的返回结果,有度税智的测试团队在MeterSphere平台之上集成开发了测试桩管理的模块。该模块支持对企业开启测试桩场景、服务接口的测试桩场景管理,以及接口测试桩场景的自由切换。
■ 测试桩管理:
■ 测试桩在自动化场景中的应用:
3.公共流程场景化封装,提高复用性
“有度企税”产品中的发票采集能力是非常重要的功能,对于不同的发票类型,采集流程和采集结果校验相同。为了覆盖所有发票类型采集的场景,有度税智的测试团队对公共流程进行了提炼,并通过基础功能场景进行封装,对断言进行参数化,有效提高了用例编写的效率。以进项采集流程为例,流程包括“用户登录→历史数据清理→进项发票采集→采集结果验证”四部分。
① 登录基础场景
② 删除历史数据基础场景
③ 进项发票采集基础场景
④ 采集结果验证
最终实现效果如下。对于不同发票类型的场景,只需定义不同的场景变量即可。
四、使用MeterSphere平台带来的项目收益
MeterSphere在“有度税智”测试团队内部的代号是“啄木鸟”,其寓意是它能够帮助测试人员更好地查找系统Bug。目前,基于MeterSphere平台的接口自动化系统建设已从“有度税智”的销项应用推广到整个事业部的6个产品,所有产品的主流程覆盖率达到100%。其中还包括了“中台项目-融合平台”的纯接口自动化,以及企税应用增值税和印花税这些复杂的算税模块场景。
通过MeterSphere的定时任务功能开展每日运行和发布前的回归自动化测试,产品迭代上线质量得到了保障。同时在应对华为云迁移、服务单元化、MQ切换等技术改造时,也得以提前规避较多的潜在风险。
此外,在销项本地化项目中,由于MeterSphere提供了API和Case复制的功能,测试团队通过少量的调试和改动,就完成了从SaaS到本地化项目的自动化迁移,做到了跨项目的自动化复用,保证了本地化项目的交付质量和效率。
除了接口测试自动化以外,目前通过MeterSphere开源持续测试平台,云帐房也建立了一些复杂的数据构造场景,用于解决重复操作导致测试效率低下的问题,有效提高了数据构造的效率。
相关文章:

社区分享|MeterSphere变身“啄木鸟”,助力云帐房落地接口自动化测试
云帐房网络科技有限公司(以下简称为“云帐房”)成立于2015年3月,以“成为最值得信赖的税务智能公司”为愿景,运用人工智能、大数据等互联网技术,结合深厚的财税行业服务经验,为代账公司和中大型企业提供智能…...

fpga内嵌逻辑分析仪使用方法
文章目录 前言一、方法1 — 使用 IP 核创建 ILA 调试环境1、创建 ILA ip 核2、进行例化3、生成比特流文件4、下载程序5、进行在线调试 二、方法2 — 使用 Debug 标记创建 ILA1、Debug 标记相关信号2、综合操作3、设置 Set Up Debug4、生成比特文件5、下载程序6、进行在线调试 前…...

第14章 结构和其他数据形式
本章介绍以下内容: 关键字:struct、union、typedef 运算符:.、-> 什么是C结构,如何创建结构模板和结构变量 如何访问结构的成员,如何编写处理结构的函数 联合和指向函数的指针 设计程序时,最重要的步骤之…...

vue 把echarts封装成一个方法 并且从后端读取数据 +转换数据格式 =动态echarts 联动echarts表
1.把echarts 在 methods 封装成一个方法mounted 在中调用 折线图 和柱状图 mounted调用下边两个方法 mounted(){//最早获取DOM元素的生命周期函数 挂载完毕console.log(mounted-id , document.getElementById(charts))this.line()this.pie()},methods里边的方法 line() {// …...
Python基础08 面向对象的基本概念
Python使用类(class)和对象(object),进行面向对象(object-oriented programming,简称OOP)的编程。 面向对象的最主要目的是提高程序的重复使用性。我们这么早切入面向对象编程的原因是,Python的整个概念是基于对象的。…...

APP自动化之Poco框架
今天给大家介绍一款自动化测试框架Poco,其脚本写法非常简洁、高效,其元素定位器效率更快,其本质基于python的第三方库,调试起来也会非常方便,能够很好的提升自动化测试效率,节省时间。 (一)背景…...
c++拷贝构造【显式调用】和运算符=重载构造【隐式调用】解析
深拷贝 vs. 浅拷贝 深拷贝:开辟新内存,独立对象,堆区浅拷贝:共享内存,引用对象,栈区 深拷贝:深拷贝是一种拷贝方式,它会在堆区重新分配内存并复制对象的内容。 这意味着原对象和新…...

无涯教程-JavaScript - LCM函数
描述 LCM函数返回整数的最小公倍数。最小公倍数是最小的正整数,它是所有整数参数number1,number2等的倍数。使用LCM添加具有不同分母的分数。 语法 LCM (number1, [number2] ...)争论 Argument描述Required/OptionalNumber1, number2... 您想要最小公倍数的1到255个值。 如…...

Java多线程篇(3)——线程池
文章目录 线程池ThreadPoolExecutor源码分析1、如何提交任务2、如何执行任务3、如何停止过期的非核心线程4、如何使用拒绝策略 ScheduledThreadPoolExecutor源码分析 线程池 快速过一遍基础知识 7大参数 corePoolSize : 核心线程数 maximumPoolSize: 最…...
那些年我们遇到过的关于excel的操作
本文为直接从百度上搜索的关于excel的函数使用,方便以后用,希望会持续补充 excel中筛选出两列重复的数据【场景:A、B两列数据个数不同且无序,想找出A列中的数据在B列中不存在的,通过比较后单元格为空的代表该行不存在的…...

Angular变更检测机制
前段时间遇到这样一个 bug,通过一个 click 事件跳转到一个新页面,新页面迟迟不加载; 经过多次测试发现,将鼠标移入某个 tab ,页面就加载出来了。 举个例子,页面内容无法加载,但是将鼠标移入下图…...

Redis之String类型
文章目录 Redis之String类型1. 赋值/获取值2. 同时设置/获取多个键值3. 数值增减4. 获取字符串长度5. 向尾部追加值6. 分布式锁7.应用场景 Redis之String类型 Redis命令不区分大小写 1. 赋值/获取值 赋值:set key value 取值:get key (当键不存在时候&…...
使用redis中的zset实现滑动窗口限流
使用redis和zset实现滑动窗口限流 文章目录 使用redis和zset实现滑动窗口限流Zset**初始化一个ZSet**:其中包含所有用户的ID和时间戳。**添加元素到ZSet**:当用户发起请求时,将当前时间戳和用户ID作为元素添加到ZSet中。**删除过期的元素**&a…...

Linux下C语言使用 netlink sockets与内核模块通信
netlink简介 Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。在Linux标准内核中,系统默认集成了很多netlink实例,比如日志上报、路由系统等,netlink消息是双向的&a…...

excel中的引用与查找函数篇3
1、INDEX(array,row_num,[col_num]):获取指定范围中指定行号和列号对应的数据 index(查询范围,行号,列号) 行号和列号是相对选中查询范围来写的:分别把第二行第三列的数据和第四行第二列的数据查找出来。 数据是单行或单列,后面只需要给一个参…...

【Linux学习笔记】 - 常用指令学习及其验证(下)
前言:本文延续上一篇文章【Linux学习笔记】 - 常用指令学习及其验证(上)对常用的指令进行介绍和验证。 一、mv指令 (1)功能:用来移动文件或者将文件改名 (2)语法及验证:…...

面试官:请说说flex布局_番茄出品.md
面试官:请说说flex布局_番茄出品.md start 依然记得当初学习 flex 布局时,用 flex 布局:画麻将。一筒到九筒,应有尽有。但是光和面试官说,我用 flex 布局画过麻将,并没有什么用。面试官问你一个语法&…...
ChatGLM DeepSpeed/P-Tuning v2 调参
之前尝试了基于ChatGLM-6B使用LoRA进行参数高效微调,本文给大家分享使用DeepSpeed和P-Tuning v2对ChatGLM-6B进行微调,相关代码放置在GitHub上面:llm-action。 ChatGLM-6B简介 ChatGLM-6B相关的简介请查看之前的文章,这里不再赘述。 P-Tuning v2简介 P-Tuning是一种较新…...

Leetcode每日一题:打家劫舍系列Ⅰ、Ⅱ、Ⅲ、Ⅳ(2023.9.16~2023.9.19 C++)
由于之前写过打家劫舍系列,这里直接弄个合集,后面应该还有个iv。 目录 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III 2560. 打家劫舍 IV 198. 打家劫舍 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都…...
容易对一个异性产生依赖感怎么办?
歌词:爱总让人伤心,但你要学会去明白~ 👂 Photograph - Ed Sheeran - 单曲 - 网易云音乐 目录 🌼前言 😟一、对另一个人的依赖感,本质是什么? 😊二、如何减少对伴侣的依赖感&am…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...