产品解读|MeterSphere接口自动化执行策略详解
6月10日,MeterSphere一站式开源持续测试平台发布v1.20.6 LTS版本。
从2020年2月2日MeterSphere开源项目在GitHub代码托管平台创建至今,我们累计收到了来自社区用户提交的超过5000条Issues,其中60%的Issues与接口测试模块相关。作为一款开源持续测试平台,MeterSphere是如何去覆盖这些业务形态各异的接口测试需求的呢?
今天,我们将以“接口自动化多元化执行”的场景作为切入点,为大家深度解析MeterSphere接口自动化的实现原理。
用户执行接口测试的行为建模
用户执行接口测试的行为建模一直是接口测试模块的关键设计之一。如何针对不同测试场景推荐给用户最优的执行方案呢?
用户执行接口测试的行为可以简单分为以下四个阶段:
■ 编写用例/场景调试阶段
■ 小规模批量执行阶段
■ 大批量回归阶段
■ 定时跑批阶段
针对用户不同测试阶段的需求,系统能够推荐给用户相应的执行策略,以满足用户各种形态的业务场景。
MeterSphere平台可提供的四种执行策略
基于MeterSphere平台的执行特点,我们设计了不同的执行策略来满足多元化任务执行方案,目标是在满足业务需求的同时保障平台的稳定运行。
■ 策略一
增加系统级并发数控制功能,由用户根据自身业务和服务器性能来决定并发数,可自由伸缩控制。
■ 策略二
分为不同的执行模式:
① 并行模式将执行任务分离成不同执行单元(用例/场景),采用Master-Worker的模式去执行,Master(MS-Server)服务负责接受和分配任务,Worker(Node-Controller)服务负责处理执行单元;
② 串行模式采用流程式设计,每次执行从执行流程中有序取出一个执行单元加入到执行队列中。
■ 策略三
采用加权轮询算法来计算分配执行节点任务,每次执行前计算不同执行机的权重,合理利用每个执行机资源。
■ 策略四
执行机支持分布式部署/Kubernetes集群管理,用户可以根据执行资源进行动态伸缩。
执行模型结构
接口自动化的执行过程可以通过2条业务主线去看:
■ 测试计划执行
一个测试计划的执行包含用例/场景/性能用例,每个类型的测试资源都会生成一条执行流程链。这条链会存储到数据库,并伴随整个执行周期;如果是串行则每次按照流程获取一个点加入到执行队列,并行则所有点同时加入到执行队列。
■ 接口/用例/场景执行
单一元素触发执行过程和测试计划类似,唯一不同是测试计划会生成一个整体的计划报告,而用例/场景则是生成当前选择资源的独立报告/集合报告。
多元化部署方案配合执行模式
具体部署方式分为以下3种:
■ 精简部署
以最简单、最小的硬件资源就可以启动MeterSphere平台开启你的测试之旅了。
■ 默认常规部署
这种是我们在线安装和离线包安装中默认支持的一种部署模式,可以支撑大多数的测试业务场景,一键部署非常简单方便。
■ 分布式部署
对于有复杂业务场景和执行要求的用户可以采用这种部署方式,安全可靠,支持大规模回归测试或跑批业务,可以动态伸缩扩展。
基于大规模执行行为建模
在执行阶段部分提到,不同测试阶段选用不同的执行方式来满足业务需求,像大规模跑批具有周期长、执行量大、高频次等特点。但是对于执行实时性要求并不是特别高,有比较宽裕的时间处理执行数据。
我们首先想到的是,应对这种业务特点使用什么部署方案才能支撑起我们的业务执行量?其次,是需要投入多少硬件资源,怎么做到合理使用在不浪费的前提下还能稳健地支撑起业务目标?
■ 性能方面
第一个前提是保障我们在大批量跑批过程中其他业务功能不会受到影响,其次在指定时间内覆盖到相关业务。
■ 效果方面
数据分析显示,在不同任务量下适量增减执行机可以有效的达到预期效果,这也在侧面说明了合理的部署加上一个有效的使用方法既能节俭资源又能保障执行效率。
■ 实验分析
在前期行为建模中我们也分别尝试了以下方案:
此方案没有部署限制,可以满足以上提及的三种部署方式,其次我们的任务调度也可以调整到夜间执行,真正做到无人值守下的全自动化执行。
线上效果
■ 效率指标
我们持续跟踪了线上应用实验结果如下:
从一个简单测试实验可以看出,不同执行策略下应该怎么去选择策略应对也是至关重要的。
■ 多样性指标
除了效率指标外,我们观察发现,对于推荐的多样性指标也有所提升,用户可以自由选择自己所需的策略:
工程实现中的问题
■ 报告状态处理
执行报告状态处理一直是比较头痛的问题,执行过程中不可控因素较多,比如:
1. 业务复杂的接口执行等待时间过长处于假死状态;
2. 执行过程中测试引擎发生不可控异常;
3. 网络波动造成消息丢失情况;
4. 某接口/场景过大造成执行机OOM(Out Of Memory);
5. 执行过程中测试资源被删除等。
针对以上的这些问题,MeterSphere在后期系统设计阶段又增加了超时机制,针对一些执行时间较长的任务,发送心跳检查确保执行任务还在正常进行中,对于异常的报告及时更新报告状态。
■ 执行机稳定性
在最开始的线下实验阶段,我们设置了并发处理机制,增加了全局队列来控制并发数;后续又优化了任务的分配机制确保每个执行机可以均摊任务,防止执行任务都阻塞在某个执行机上。
■ 失败报告通知
报执行失败后用户无法第一时间知道,因此MeterSphere平台后续增加了丰富的通知机制,用户可以选择不同的通知方式,在报告执行结束后平台会及时通知用户,以便及时做出调整策略。
总结与展望
用户执行接口测试的行为建模一直是MeterSphere平台设计中重要的优化点之一。目前,MeterSphere平台在用户行为不明确、业务复杂多变、执行问题定位困难等场景中的表现有进一步完善的空间。在未来,MeterSphere开源持续测试平台会持续优化系统稳定性,建立更透明的执行体系,以及更完善的排查文档。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MyCms v3.4,自媒体+购物商城
MyCms 是一款基于 Laravel 开发的开源免费的自媒体 CMS + 商城系统,助力开发者知识技能变现。 MyCms 基于 Apache2.0 开源协议发布,免费且可商业使用,欢迎持续关注我们。 v3.4 更新内容 新增:订单表及模型 新增:订单商品表及模型 新增:购物车商品结算 新增:直接购买商品结算 新增:商品结算提交 新增:订单统一支付接口 新增:订单支付使用余额 新增:后台订单管理 新增:后台订单详情 新增:后台订单物流动态 新增:用户订单列表接口 新增:订单详情接口 新增:确认订单完成接口 新增:取消订单接口 新增:余额支付退款 优化:接口参数验签 优化:统一获取会员ID方法 优化:获取图片绝对路径方法 更新重点 1、后台订单管理 2、前台商品结算 3、前台订单相关接口 站点地址 官方网站 : https://www.mycms.net.cn/ 使用手册:https://www.mycms.net.cn/shouce API 文档:https://www.mycms.net.cn/api-doc 模板下载:https://www.mycms.net.cn/muban 源...
- 下一篇
系列文章|云原生时代下微服务架构进阶之路—微服务简介
通过本篇文章您可以了解到以下内容: 微服务架构的由来、历史 微服务架构相比传统巨石应用的优势 微服务拆分原则概述 微服务架构的由来、历史 从软件架构的发展趋势来看,大体可以整体分为四个阶段: 前三个阶段分别是巨石应用、3-Tier架构、SOA架构: 巨石应用,顾名思义是将所有的业务逻辑用一个工程进行表示。(在上一篇文章中我们进行了详细的介绍) 3-Tier架构,一种软件设计的思想。不同于巨石应用的模式,它将整个业务应用进行了层次划分。总共分为三层,自上而下分别是表示层、业务逻辑层、数据访问层。另一方面,这种层次的区分也体现了“高内聚低耦合”的思想。 SOA架构,一种软件设计的思想,按照实际业务需要,拆分成粗粒度、松耦合的服务架构。 第四个阶段也就是我们今天的主角,微服务架构。在谈到微服务架构的历史,我们就不得不想到了以下几位大师: Adrain Cockcroft,Netflix架构师。主导了Netflix从2009年到2016年巨石应用到微服务架构演进的工作。并使得Netflix成为首批成功从巨石应用迁移到基于云的微服务架构的公司之一。 Fred George,在2012年的一次技术...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8