测试人的福音:开源流量回放工具快速上手实践

news2025/4/28 9:12:39

笔者前段时间在参加测开大会时了解到了一款开源的自动化回归测试工具 AREX。主要是通过复制线上真实流量到测试环境进行回归测试,同时还做到了接口返回值的比对和写接口的验证,回放不会产生真实的数据或者调用,都是基于 Mock 数据的,也不用担心会产生脏数据,很大程度节约了测试用例编写和测试环境搭建的成本,感觉很有意思。本文主要参考 [AREX 官网文档](arextest.com/zh-Hans/doc… Installation),记录分享一下在 Mac 本地部署 AREX 以及流量回放功能的试用过程。

前置准备

  • 配置:下面是我的配置,适用于所有 Intel 芯片的 Mac,m 系列芯片暂未测试。
iMac2019款 5K
CPU3 GHz 六核 Intel Core i5
内存16 GB 2667 MHz DDR4
操作系统macOS Monterey 12.4
  • Docker,Docker Compose
  • Java 1.8,apache-maven-3.8.3
  • Chrome v115
  • Git
  • 网络:一个稳定的网络环境(科学上网)可以解决 95% 以上的报错问题

步骤一:部署 AREX

AREX 由 UI(前端)、Schedule Service(调度服务)、Storage Service(存储服务)、Report Service(报告分析服务)及 Mongodb、Redis 数据存储等多模块组成,官方目前提供了多种部署方式,本文使用最简单的 docker- compose 部署方案进行快速体验。

1.通过 git clone 命令拉取 AREX 仓库代码

  1. git clone --depth 1 https://github.com/arextest/deployments.git

  2. cd deployments

2. 通过 docker-compose 启动 AREX

docker-compose up -d

首次安装需要下载相关镜像资源文件,可能要等待一段时间,具体时间取决于你的网络状况,当出现下图中的提示说明已经安装成功。

image.png

启动成功后可以使用 docker-compose ps 命令输出所有服务的名称、运行状况和端口等信息,使用 docker-compose logs 命令输出所有服务的日志。如果觉得终端命令比较麻烦的话,也可以使用 Docker Desktop 等图形化客户端进行管理,这里推荐一个 Mac 平台好用的 Docker 容器客户端 OrbStrack,号称比 Docker Desktop 更加快速、轻便且简单,亲测好用。

image.png

通过 OrbStrack 可以看到当前的容器中正在运行的 AREX 相关服务,官网文档对其各个功能及其原理做了详细的介绍,这里简单罗列出各个服务的基本功能。

服务名称功能介绍
arex-uiAREX 前端是 AREX 工具的前端操作界面
arex-report-service报告分析服务,负责在执行回放测试时收集测试结果及展示问题
arex-schedule-service调度服务,负责向被测试服务发送用例回放请求,并在服务响应后触发结果比对及依赖比对
arex-storage-service存储服务负责接收由 Agent 捕获的请求、应答及依赖的真实数据的存储,同时负责在回放期间,按照 Agent 要求返回已存储的数据
MongodbAREX 默认配置的数据库,负责存储录制的数据和回放结果
Redis负责在回放过程中缓存数据

步骤二:运行 AREX Agent

在 AREX 部署完成后,就可以通过容器中前端服务对外暴露的端口访问 AREX 前端站点了,这里我访问的是 http://localhost:8088/。

登录之后开始直接使用 AREX 常规接口测试的功能,这一部分基本上和 Postman 没什么区别,需要注意的是,由于是在浏览器里进行接口请求,因此想要成功发送 API 请求,还需要安装 Chrome 插件,安装成功后刷新页面,如果界面右下角插件状态变成绿色的✅,则说明插件已经成功安装,可以进行接口请求。

当然我更感兴趣的是 AREX 的特色功能录制回放测试,目前在 Replay 菜单页面中的应用项目列表为空,这是因为还没有应用接入。要想接入应用进行录制,需要用到 AREX Agent

image.png

AREX Agent 是实现服务录制回放的核心组件,主要原理是通过对入口调用和各个依赖调用的代码进行字节码增强,当代码被执行到时拦截调用过程,将调用的入参、返回值和异常录制下来,发送到存储服务。

在测试环境回放时会使用生产环境录制的真实数据模拟请求,AREX Agent 通过识别回放标识决定是否需要回放。如果需要回放,则不进行方法的真实调用,去拉取存储服务保存的调用响应数据进行返回。

  1. 拉取 arex-agent-java 项目源码进行编译:
  2. git clone https://github.com/arextest/arex-agent-java.git

  3. cd arex-agent-java

  4. mvn clean install

编译成功后可得到一个包含两个 jar 包的 arex-agent-jar 新文件夹,其中的 apex-agent-0.3.8.jar 即为我们需要的 agent jar 包,需要注意的是该 jar 包依赖另一个 bootstrap jar 包,因此两个文件需要放在相同目录。

image.png

2. 注入 Agent

接着就可以对我们自己的项目注入 agent 启动。这里我用的项目是交流群里提供的一个演示项目 arex-community-test(群号是:656108079,需要文件的朋友可以加群),下载至本地后进行编译,即可在根目录的 target 文件夹中得到最终编译生成的项目 war 包 arex-agent-test-0.0.1-SNAPSHOT.war,再将刚刚生成的两个 agent jar 包拷贝至示例项目根目录,便可以执行 Agent 注入,启动项目。相关命令如下:

  1. cd arex-community-test

  2. mvn package -f pom.xml

  3. java -javaagent:./arex-agent-0.3.8.jar -Darex.service.name=community-test -Darex.storage.service.host=localhost:8093 -jar ./target/arex-agent-test-0.0.1-SNAPSHOT.war

项目启动参数主要由四部分构成:

  • -javaagent 指定了 agent jar 包的文件路径
  • -Darex.service.name 声明了被测试服务应用的名称(用户自定义,最后会显示在 Replay 页面的应用列表中)
  • -Darex.storage.service.host 指定了 storage 存储服务的 host 地址(参考之前 AREX 容器中的 arex-storage-service 服务暴露的端口)
  • -jar 指定了测试服务应用的 jar 包文件路径

除了 Java 参数运行模式外,AREX 官方文档 还详细罗列了其他多种运行模式,感兴趣的同学可以自行参考。

当终端输出了以下日志时,说明项目已经成功注入 Agent 并启动,在日志中可以看到测试服务应用的名称、Agent 运行状况等详细信息。

image.png

现在就可以在 Replay 菜单中看到刚刚注册的应用 community-test 了。

image.png

录制回放功能体验

接下来试一下对该应用进行录制回放操作。根据官方介绍,AREX 的录制不用手动开启,在应用成功注册后,将自动录制所有时间段内的线上真实请求流量。现在我们访问一个应用接口来创建一个真实的线上流量,比如访问 http://localhost:8080/nettyTest/nettyTest,得到响应:

  1. {

  2. "responseStatusType": {

  3. "responseCode": 0,

  4. "responseDesc": "success",

  5. "timestamp": 1691481194807

  6. },

  7. "body": {

  8. "inboundResponse": "Hello World!",

  9. "outboundResponse": "12345"

  10. }

  11. }

请求后再回到前端页面,在列表中点击该应用,可以在应用名称右上角看到一个红色数字上表,这里显示的是当天录制到的用例个数,点击后可以看到录制接口路径即为刚刚访问的 /nettyTest/nettyTest 路径,说明已经录制成功。

image.png

现在再对刚刚的这一次录制创建一个回放测试,点击右上角的 Start replay 按钮,在 Target Host 中根据提示输入你想要进行测试的地址和端口(通常是在生产环境录制,测试环境回放),这里有两点需要注意:

  1. 需要填写传输协议和端口号
  2. IP 需要填写真实的本机 IP 而非 localhost ,因为 Docker 容器的部署模式会影响 localhost 的解析。这一点在官方文档 FAQ 中有详细解释,感兴趣的同学可以了解一下。

image.png

回放创建完成后会自动生成一条回放报告,回放进度和结果会轮询刷新。当记录的 State 进度变更为 done 时即表示回放完成,可以看到本次回放 case (用例)总数为 1,失败数为 1。点击 Failed 数量 1 可以进入回放结果详情页。

image.png

点击用例,可以看到导致本次回放失败的原因是 responsestatustype.timestamp 节点的数据出现差异(value diff)。该字段是一个时间戳,在前后两次请求后出现差异属于合理情况。这种噪音字段的比对差异往往没有什么参考意义,还会提高使用者的排查成本,这时候就可以直接在 json 报文中右键点击该字段,选择 Ignore Key,将该节点排除在下次比对之外。

image.png

设置成功后点击 Rerun 按钮重新执行回放测试,等待回放结束后可以发现回放成功,即本次的测试环境回放数据与生产环境的真实数据在忽略配置后视为相同。这样就完成了一次完整的录制和回放链路测试。

image.png

总结

AREX 作为一款基于流量录制回放实现自动化回归测试的工具,很大程度上降低了测试用例编写和测试环境搭建的成本,而且作为一款开源软件,官网文档说明详细,社区活跃(群里大佬回复很及时),对新手非常友好。

本篇文章主要针对 Mac 用户对 AREX 本地快速部署和上手做简要分享,作为抛砖引玉,AREX 还具有其他很多功能例如动态类 Mock 配置、开发自测、固化用例、批量运行测试用例等功能,欢迎感兴趣的朋友们自行探索。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

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

相关文章

自动驾驶系统中的数据闭环:挑战与前景

目录 自动驾驶概况 1.1自动驾驶分级 1.2自动驾驶国内发展 ​1.3自动驾驶架构模型 数据闭环的意义 2.1 搜集corner case的数据 2.2 提高模型的泛化能力 2.3 驱动算法迭代 数据闭环落地的痛点及对策 3.1 数据采集和使用的合规性问题 3.2 数据确权问题 3.3 数据采集…

Modbus TCP转CAN网关在不同行业中的应用以及其使用上的优势

倍讯科技Modbus TCP转CAN网关通常被用于工业自动化领域,特别是在需要连接现有Modbus TCP网络和CAN总线设备的场景中。以下是该网关在不同行业中的应用以及其使用上的优势: 1. 制造业: - 在制造业中,各种类型的设备和机器通常使用不…

动态NAT

在上一章静态NAT中我们提过了,静态NAT只能一对一映射,无法有效缓解IPV4地址池紧张的问题,那么我们今天来学习一个新的技术——动态NAT,来解决这个问题。 第一章 1.1 动态NAT工作流程 动态NAT基于地址池来实现私有地址和公有地址的…

揭秘奔丰数字化运营管理

奔丰是一家专注于工程机械车辆座椅的生产商。奔丰借助蓝卓制造协同管理系统,进行设备数据采集、监控、预测性维护,全面规范企业资源和生产流程管理等,突破传统管理瓶颈,提升工厂整体效益,实现数字化运营。 在汽车智能化…

C++入门指南(中)

目录 ​编辑 一、C关键字(C98) 二、命名空间 2.1 域 2.2 命名空间域 2.1 命名空间定义 2.2 命名空间使用 三、C输入&输出 四、缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 五、函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling)…

x264 帧类型决策模块 x264_slicetype_analyse 函数原理分析

======================================================================== ======================================================================== x264帧类型决策 x264 的帧类型决策可以参考:

嵌入式学习第三十三天!(二叉树)

1. 树的概念: 1. 树:由n个结点组成的有限集,有且只有一个根结点(由根结点可以访问后继结点),其他结点只有一个前驱结点,但可以有多个后继结点(一对多)。当n 0时&#xf…

ST表(静态RMQ问题)

static Range Max/Min Query ST表 利用的是动态规划的思想 状态&#xff1a; //st[i][j]-->区间长度为1<<j&#xff0c;在区间[i,i1<<j-1]上的最值 状态转移方程&#xff1a; st[i][j]max(st[i][j-1],st[i(1<<j-1)][j-1]);#include <iostream> #inc…

基于51单片机的传送带调速产品计数proteus仿真设计+程序+设计报告+原理图+讲解视频

这里写目录标题 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 基于51单片机传送带计数仿真设计( proteus仿真程序设计报告原理图讲解…

processing完整教程

概述&#xff1a;processing在我眼里就是libgdx的高度封装&#xff0c;如果各位会libgdx&#xff0c;学processing应该可以说是无师自通&#xff0c;当然processing是java语言那边的。 processing是什么&#xff1f; 官网是这样解释的&#xff1a;Processing 是一本灵活的软件…

电脑配置不足的情况下,如何高效运行ANSYS?

ANSYS是一款功能强大的工程仿真软件&#xff0c;它对电脑配置有较高的要求。ANSYS对电脑配置要求高&#xff1f;ansys电脑带不动怎么办&#xff1f;ansys卡住了怎么解决&#xff1f;今天这篇文章一起来看看吧。 当电脑配置不足时&#xff0c;运行ANSYS可能会出现以下情况&…

有必要买超声波洗眼镜机吗?力荐四款实力超群超声波清洗机

在日常生活中&#xff0c;眼镜不仅仅是我们视野的延展&#xff0c;像太阳眼镜&#xff0c;也是有着独特的作用。但是&#xff0c;在每天的使用过程中&#xff0c;眼镜片表面难免会有灰尘&#xff0c;污迹&#xff0c;甚至油渍&#xff0c;这些都会对镜片的材质产生一定的损伤&a…

使用Git管理github的代码库-下

1、打开Git GUI 2、克隆代码库 3、到github代码下载页面&#xff0c;复制链接&#xff08;source location&#xff09; 4、目标路径中src在实际目录中是不存在的&#xff0c;会自动新建&#xff0c;否则会报错 5、添加代码&#xff0c;点击staged changed 6、 commit、push

博客互动革命:如何打造活跃读者社区并提升参与度

CSDN 的朋友你们好&#xff0c;我是未来&#xff0c;今天给大家带来专栏【程序员博主教程&#xff08;完全指南&#xff09;】的第 10 篇文章“与读者互动”。本文揭示了提升技术博客参与度的秘诀。从评论互动到社交媒体策略&#xff0c;本文将指导你如何建立强大的读者社区。掌…

一个注解实现SpringBoot接口请求数据和返回数据加密,提高系统安全性!

注解实现接口加密 1、前言1.1、前端必看1.2、后端必看 2、后端注解实现2.1、实现流程2.2、开始实现2.2.1、 pom2.2.2、 注解2.2.3、 加密工具类2.2.3、 定义切面(注意切点包名)2.2.4、 定义加密基类与各种入参VO2.2.5、写两个Controller 3、参考文章 1、前言 起因是公司给人开发…

深圳盐田某前沿研究所:OLED透明屏引领未来科技空间

产品&#xff1a;55寸OLED透明屏 项目时间&#xff1a;2024年04月 项目地点&#xff1a;深圳盐田 在科技日新月异的今天&#xff0c;前沿的研究机构不仅追求科研的突破&#xff0c;也在不断探索和尝试将最新科技融入其工作环境之中。深圳盐田的一家前沿研究所便是这一探索的先…

搜维尔科技:Xsens惯性动捕+Manus手套用于游戏开发制作

用户名称&#xff1a;北京源力星聚网络科技有限公司&#xff08;Bilibili控股子公司&#xff09; 主要产品&#xff1a;Xsens MVN link *2 &#xff0c;Manus手套*2 &#xff0c;MVN Animate Pro软件等 使用培训现场 使用2套Xsens MVN link 2副Manus手套Xsens Animate Pro软件…

成都数字产业园深度链接校企双方,共建产学研合作研发中心

在数字经济的浪潮中&#xff0c;企业与学院之间的深度链接显得尤为关键。作为人才输送的源头&#xff0c;学院承载着为社会培育高素质人才的使命&#xff1b;而作为创新与实践的基地&#xff0c;企业则渴望吸引这些新鲜血液&#xff0c;为自身的持续发展注入新的活力。近日&…

Adobe使用常见问题解答,如何续费?

“Adobe系统状态”页上的颜色表示什么&#xff1f; Gray表示我们调查了潜在的服务中断并确定它没有影响。橙色表示轻微问题。红色表示严重问题。蓝色表示定期维护。绿色表示所有服务均运行正常。 如何查看以前的CSO或CMR&#xff1f; 导航到 https://status.adobe.com.单击所…

超声波清洗机哪个品牌好用?热心推荐四款全能硬核的超声波清洗机

要知道&#xff0c;超声波清洗机的出现&#xff0c;对于那些经常戴眼镜的人来说&#xff0c;无疑是一种让他们解放了双手的清洁工具&#xff0c;由于戴着眼镜久了&#xff0c;就算用水冲洗&#xff0c;也不能够清洁到镜片缝隙里的脏污渍&#xff0c;但是随着时间的推移&#xf…