携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台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 // 检查存储服务日志

  1. 日志降级
    如果需要降低 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= AREXMONGOURIDarex.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= AREXMONGOURIDarex.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= AREXMONGOURIDarex.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

  1. 默认不开启录制
    如果希望在后续为被测应用配置 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

  1. 全局比对配置
    针对录制回放的比对,系统中默认存在一些自定义配置,例如不对比数据库的 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 配置文件,根据自己的需求配置多实例。

posted @ 2024-01-26 10:39  HumorChen99  阅读(20)  评论(0编辑  收藏  举报  来源