携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX
携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX
官网文档 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX
目前已跑通,通过冒烟测试,这篇文章稍稍水一下,主要讲下部署过程里踩的坑,因为部署的过程主要是运维同学去处理了,我只说下踩到的坑,官方的教程是可行的。目前该项目对zuul项目的录制回放会有点问题(录制的样例会出现路由匹配符/order/**,而不是URI,run test回放会出问题),已联系携程AREX开源团队,正在处理,有进度会更新该博客,大家遇到了项目确实有的问题可以去官方交流群反馈(官方github里有贴)。该问题携程团队给0.4.0包给我解决了
额外请注意如果你的接口背后是集群的话,请保障每个节点都挂了agent,或者run test的时候设置的host指定到某个有agent的节点去执行
当你使用docker部署后,登录的地方那个邮件如果收不到,第一个是要升级到0.6.2.2以上版本,第二个是自己公司的邮箱可能收不到邮件,如果遇到,就使用QQ邮箱这些试试,垃圾邮件箱里也翻翻,如果一次不行,多试几次,这个地方踩坑过,后面问了维护团队,搞定了,那个邮件是不需要你配置自己的邮箱或者邮件服务器或者实现的,直接AREX官方自己的邮箱发给你。成功的邮件验证码是这样


第二个是arex-agent-java.jar这个东西直接去这里下载arex-agent-java.jar release,下载第一个arex-agent-java.tar.gz,然后解压拿里面的arex-agent-java.jar去用,自己编译的话有报错,暂时不走自己编译的方式。
登录进去后的界面是这样
- 创建app

- jar启动参数

- 其他配置项

- 接口集合,支持批量测试

单环境部署

多环境部署

下面的是从官网抄的,建议直接看官网快速开始教程
官方的交流群可以加下(项目的github上的介绍里有),确实有管理在积极回答问题~这点很不错
快速安装
前提条件
在开始使用 AREX 之前,请确保你已经安装以下应用:
Docker 和 Docker Compose。
安装 AREX
首先,通过 git 命令克隆 AREX 仓库:
git clone --depth 1 https://github.com/arextest/deployments.git
cd deployments
接着通过 docker-compose 启动 AREX。
启动
docker-compose up -d
停止
docker-compose down -v
另外,也可以通过 Docker Compose 2.0 启动。
启动
docker compose -f docker-compose-2x.yml up -d
停止
docker compose -f docker-compose-2x.yml down -v
安装完成后,将自动安装好包括前端、服务、数据库等在内的所有组件,每个组件只有 1 个实例,具体如下:
ID Instance Model Name Description
1 1 调度服务(AREX-Schedule) 用于发送回放请求并检索所有响应以进行比较。
2 1 AREX-API 为 AREX 前端页面提供所有 API 接口。
3 1 存储服务(AREX-Storage) 为 AREX Agent 提供了以 Mock 方式保存录制和获取响应的功能。
4 1 AREX 前端(AREX-Front) AREX 前端页面。
5 1 MongoDB 数据存储及配置管理数据库
6 1 Redis 高速回放缓存
你可以通过在运行 Docker 的宿主机上执行 docker-compose ps 的命令查看各服务运行情况及端口。
[~ deployments]# docker-compose ps
Name Command State Ports
arex-front docker-entrypoint.sh node … Up 0.0.0.0:8088->8080/tcp
arex-mongodb docker-entrypoint.sh --auth Up 0.0.0.0:27017->27017/tcp
arex-redis docker-entrypoint.sh --app … Up 0.0.0.0:6379->6379/tcp
arex-api catalina.sh run Up 0.0.0.0:8090->8080/tcp
arex-schedule catalina.sh run Up 0.0.0.0:8092->8080/tcp
arex-storage catalina.sh run Up 0.0.0.0:8093→8080/tcp
检查服务日志命令
cd deployments
docker-compose logs
docker-compose logs arex // 检查 AREX 日志
docker-compose logs arex-schedule-service // 检查调度服务日志
docker-compose logs arex-api-service // 检查 API 服务日志
docker-compose logs arex-storage-service // 检查存储服务日志
- 日志降级
如果需要降低 AREX 的日志级别,以减少日志输出的数量和占用数据库的空间,则需要在启动 AREX 前,在 docker-compose.yml 的 arex-api-service、 arex-storage-service、arex-schedule-service 配置项中分别加入如下配置项:
-Dlogging.level.com.arextest=ERROR
-Dlogging.level.com.arextest.storage=ERROR
-Dlogging.level.com.arextest.schedule=ERROR
如下所示:
arex-api-service:
…
environment:
- TZ=Asia/Shanghai
- JAVA_OPTS=-Darex.mongo.uri= A R E X M O N G O U R I − D a r e x . r e d i s . u r i = AREX_MONGO_URI -Darex.redis.uri= AREXMONGOURI−Darex.redis.uri=AREX_REDIS_URI
-Darex.storage.service.url=http://arex-storage-service:8080
-Dspring.config.additional-location=/usr/local/tomcat/additional-config/
-Dspring.config.name=application,oauth
-Dlogging.level.com.arextest=ERROR
…
arex-storage-service:
…
environment:
- TZ=Asia/Shanghai
- JAVA_OPTS=-Darex.mongo.uri= A R E X M O N G O U R I − D a r e x . r e d i s . u r i = AREX_MONGO_URI -Darex.redis.uri= AREXMONGOURI−Darex.redis.uri=AREX_REDIS_URI
-Darex.api.service.api=http://arex-api-service:8080
-Dlogging.level.com.arextest.storage=ERROR
…
arex-schedule-service:
…
environment:
- TZ=Asia/Shanghai
- JAVA_OPTS=-Darex.mongo.uri= A R E X M O N G O U R I − D a r e x . r e d i s . u r i = AREX_MONGO_URI -Darex.redis.uri= AREXMONGOURI−Darex.redis.uri=AREX_REDIS_URI
-Darex.storage.service.api=http://arex-storage-service:8080
-Darex.api.service.api=http://arex-api-service:8080
-Dlogging.level.com.arextest.schedule=ERROR
…
- 默认不开启录制
如果希望在后续为被测应用配置 Agent 后不立即进行录制,则可以在 arex-api-service 中加入配置项:-Darex.config.default.service.collect.sampleRate=0,如下:
arex-api-service:
…
environment:
- JAVA_OPTS=-Darex.mongo.uri=mongodb://arex:iLoveArex@mongodb:27017/arex_storage_db
-Darex.redis.uri=redis://redis:6379/
-Darex.storage.service.url=http://arex-storage-service:8080
-Darex.config.default.service.collect.sampleRate=0
…
- 全局比对配置
针对录制回放的比对,系统中默认存在一些自定义配置,例如不对比数据库的 select 操作等。为了更方便地进行配置和管理,AREX 提供了一个全局通用的配置机制。用户可以通过修改 docker-compose.yml 文件,将以下启动参数添加到 AREX-API Service 的启动参数中,来控制系统的全局比对配置:
针对"yyyy-MM-dd HH:mm:ss.SSSSSS",“yyyy-MM-dd HH:mm:ss.SSS”,
“HH:mm:ss.SSSSSS”, “HH:mm:ss.SSS”,
“yyyy-MM-dd’T’HH:mm:ss.SSSXXX”, “yyyy-MM-dd’T’HH:mm:ss.SSSZ” 等时间格式
忽略时间字段的精度,单位为毫秒。在比较时间字段时,会忽略精确到指定毫秒数之后的部分。
-Darex.compare.ignoredTimePrecisionMillis=2000
报文 key 是否转换为小写。当取值为 true 时,报文中的 key 会被转换为小写;当取值为 false 时,不进行转换。
-Darex.compare.nameToLower=true
当 value 为 null、空字符串(“”)或空数组([])时,比对时是否认为一致。当取值为 true 时,这些情况下的 value 会被认为是相等的;当取值为 false 时,不认为它们相等。
-Darex.compare.nullEqualsEmpty=true
是否忽略数据库中 select 语句的比对。当取值为 true 时,会忽略 select 语句的比对;当取值为 false 时,不忽略。
-Darex.compare.selectIgnoreCompare=true
用于控制在比较数据库操作时是否仅比较同名字段。
当配置项的取值为 true 时,系统只会比较数据库操作中具有相同名称的字段。换句话说,只有在源和目标数据库中具有相同名称的字段才会进行比较,其他字段将被忽略。
当配置项的取值为 false 时,系统将比较所有字段,无论它们的名称是否相同。
-DonlyCompareCoincidentColumn=true
是否忽略 uuid 字段的比对。当取值为 true 时,会忽略 uuid 字段的比对;当取值为 false 时,不忽略。
-Darex.compare.uuidIgnore=true
根据配置的字段名称忽略比对。多个字段以逗号分隔。配置了这个项后,指定的字段在比对时会被忽略。
-Darex.compare.ignoreNodeSet=‘time,uuid’
注册应用
AREX Agent 是实现服务录制回放的核心组件,进行回放测试前需要为被测应用配置 AREX Agent,详见:注册应用
AREX 部署场景
AREX 单服务部署场景
如果录制和回放环境,即生产和测试环境之间可以互通或者有工具 Zone,则部署单个 AREX 服务。如下图所示,在生产环境录制数据,存储到 AREX(Mongodb),随后在测试环境回放数据。
单服务
AREX 多服务部署场景
如果生产环境和测试环境之间无法互通,即录制环境和回放环境互相隔离,测试环境无法访问生产环境中数据库,则需要部署多个 AREX 服务。
多服务
部署模式
在生产环境中部署 AREX A,用于在生产环境中录制数据,并存储到 AREX(Mongodb)。
在测试环境中部署 AREX B,用于在测试环境中回放数据。
由 DBA 将数据库数据从 AREX A 单向同步到 AREX B。
AREX A 环境应用录制数据, AREX B 环境应用进行回放。
版本升级更新
通过 Docker Compose 方式一键启动 AREX 时,可以在 deployments 仓库下环境变量 .env 文件中查看当前版本,如果需要使用先前版本,可直接修改该文件中 AREX_VERSION。
进入 docker-compose.yml 所在目录,更新前需先停止原有服务:
cd deployments
docker-compose down -v
注:如果不想保留原有的 Mongodb 数据或日志,请手动删除当前运行目录的 arex-data、arex-logs 目录(请慎重操作,删除后将无法回退!)
更新 deployments 仓库,重新启动 AREX:
git pull
docker-compose up -d
多实例安装
以上,我们介绍了如何使用 AREX 提供的 docker-compose.yml 文件直接安装 AREX 包括前端、服务、数据库等所有组件,此种安装方式下,每个组件只有 1 个实例,无法实现多实例负载均衡和扩容。
如要进行多实例安装,可通过 AREX 提供的 docker-compose-distribute.yml 文件进行缺省安装,运行以下命令:
git clone https://github.com/arextest/deployments.git
cd deployments
docker-compose -f docker-compose-distribute.yml up -d
停止命令
docker-compose -f docker-compose-distribute.yml down -v
PS命令
docker-compose -f docker-compose-distribute.yml ps
缺省配置的调度服务和存储服务是 2 个实例,具体组件实例如下:
ID Instance Model Name Description
1 2 AREX-Schedule 用于发送回放请求并检索所有响应以进行比较。
2 1 AREX-API 为 AREX 前端页面提供所有 API 接口。
3 2 AREX-Storage 为 AREX Agent 提供了以 Mock 方式保存录制和获取响应的功能。
4 1 AREX-Front AREX 前端页面。
5 1 MongoDB 数据存储及配置管理数据库
6 1 Redis 高速回放缓存
7 1 Nginx Schedule 负载均衡服务
8 1 Nginx Storage 负载均衡服务
当然你也可以修改 docker-compose-distribute.yml 配置文件,根据自己的需求配置多实例。
相关文章:
携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX
携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX 官网文档 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX 目前已跑通,通过冒烟测试,这篇文章稍稍水一下,主要讲下部署过程里踩的坑,因为…...
Android中C++层fstream用法详解
fstream用于读写文件内容 ifstream用于读文件内容 ofstream用于写内容到文件 读本文章前,请读一下C 文件和流 | 菜鸟教程 目录 1. 打开文件open 2. 返回当前指针位置tellg, tellp 3. 设置文件读位置指针seekg 4. 设置文件写位置指针seekp 5. 如何在文件…...
git clone常见问题一览及解决方法
在使用Ubuntu下,终端运行git clone命令时会遇见许多问题,本文主要针对一些常见的问题进行整理。关于换源问题,推荐使用小鱼的一键换源。 1.git clone 速度过慢 1.1 魔法 这个方法不做过多赘述,ubuntu下个人使用发现体验良好&am…...
ArcGIS Pro 如何批量删除字段
在某些时候,我们得到的图层属性表内可能会有很多不需要的字段,如果挨个去删除会十分的麻烦,对于这种情况,我们可以使用工具箱内的字段删除工具批量删除,这里为大家介绍一下使用方法,希望能对你有所帮助。 …...
OG Trade在ZKX揭幕:一家基于Starknet的游戏化永续合约交易所
ZKX的 OG Trade通过内置游戏化和30分钟交易竞赛,为所有交易者创造机会,革新了永续合约交易模式。 2024年1月30日 — ZKX宣布推出OG Trade,这是一家基于Starknet的游戏化永续合约交易所,旨在满足短期交易者、高水平交易者和波段交易…...
ubuntu 22.04 安装redis并设置远程连接
ubuntu 22.04 安装redis并设置远程连接 1、基础安装 更新包: sudo apt update安装redis: sudo apt install redis-server安装完毕后会自动启动,查看状态: sudo systemctl status redis-server注意:如果你的服务器上仅用…...
MemcachedRedis构建缓存服务器
目录 Memcached&Redis构建缓存服务器 一、介绍 二、memcached 1、特点 2、服务框架 3.配置安装memcached 三、redis服务 1、介绍 2、特点 3、缓存 4、安装redis 5、数据持久化 6、redis主从配置 Memcached&Redis构建缓存服务器 一、介绍 许多Web应用都将…...
Python编辑开发 --- pycharm pro 中文
PyCharm Pro是一款专业的Python集成开发环境(IDE),由JetBrains公司开发。它为Python开发者提供了丰富的功能和工具,使得Python编程变得更加高效和便捷。PyCharm Pro具有智能代码编辑功能,能够自动完成代码、快速导航至…...
Linux的 .bashrc 有什么作用?
一、.bashrc 是什么? 有什么用? .bashrc是一个存储在你的home目录下的隐藏文件,它用来配置和自定义你的终端环境和行为。 每次你启动一个新的终端时,.bashrc文件就会被执行,加载你设置的环境变量,别名,函数…...
.ui文件相关
目录 ui类生成过程: 提问: 等以后自己熟练了用代码写这些样式内容,尽量用代码写,原因很简单: 用代码写的可以直接修改代码,但是在设计界面修改的东西,电脑没有QC这玩意,还真不好改…...
【DOCKER】docker 安装sonarque
安装docker 安装docker https://blog.csdn.net/BThinker/article/details/123358697 加入阿里云镜像 https://blog.csdn.net/TommyXu8023/article/details/113291112 { "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"] }安装sonarqube ht…...
解决IDEA报错端口被占用的问题
遇到的解决方案通常是执行netstat -ano | findstr "8080" ,然后去关闭对应的进程 但是我遇到的是8080改成任意一个端口,都报错端口被占用,且使用上面的命令并不能查到对应的进程 网上找到的方案能解决我的问题,原链接所…...
IDEA:git 回滚本地提交-git 选择 Reset Current Branch to
前言 回滚提交到本地但是还没有 Push 上去的提交 选择我们要回滚的节点,然后点击 git 选择 Reset Current Branch to… 再选择 Hard 。当我们点击 Reset 的时候,代码就会回滚到单前选中的这个版本...
Docker核心教程
1. 概述 官网:https://docs.docker.com/ Docker Hub 网站:https://hub.docker.com/ 容器较为官方的解释: 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立…...
React通用后台模板
一. 项目初始化 1. 创建项目 环境 npm init vite 打开package.json,参考以下各模块版本: "dependencies": { "react": "^18.2.0", "react-dom": "^18.2.0", "react-redux": "^7.2.8", …...
【Axure教程0基础入门】00Axure9汉化版下载、安装、汉化、注册+01制作线框图
写在前面:在哔哩哔哩上面找到的Axure自学教程0基础入门课程,播放量最高,5个多小时。课程主要分为4个部分,快速入门、动态面板、常用动效、项目设计。UP主账号【Song老师产品经理课堂】。做个有素质的白嫖er,一键三连必…...
day38_MySQL
今日内容 0 复习昨日 1 引言 2 数据库 3 数据库管理系统 4 MySQL 5 SQL语言 0 复习昨日 1 引言 1.1 现有的数据存储方式有哪些? Java程序存储数据(变量、对象、数组、集合),数据保存在内存中,属于瞬时状态存储。文件&…...
element ui组件 el-date-picker设置default-time的默认时间
default-time :选择日期后的默认时间值。 如未指定则默认时间值为 00:00:00 默认值修改 <el-form-item label"计划开始时间" style"width: 100%;" prop"planStartTime"><el-date-picker v-model"formData.planStart…...
###C语言程序设计-----C语言学习(8)## 斐波那契数列问题,素数问题,人数分配问题。
前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 今天,我们主要分享三个问题如何用C语言去求解,1.斐波…...
蓝桥杯 第 1 场 小白入门赛
目录 1.蘑菇炸弹 2.构造数字 3.小蓝的金牌梦 4.合并石子加强版 5.简单的LIS问题 6.期望次数 1.蘑菇炸弹 我们直接依照题目 在中间位置的数进行模拟即可 void solve(){cin>>n;vector<int> a(n1);for(int i1;i<n;i) cin>>a[i];int ans0;for(int i2;i…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
