携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台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 配置文件,根据自己的需求配置多实例。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux操作系统运维-用户与用户组管理

Linux操作系统运维-用户与用户组管理 用户种类与标识查看 超级用户(root):可以不受限制地执行所有操作,拥有系统最高权限,修改系统设置与管理用户均需要root权限系统用户(system):…

【C++】类与对象(二)特殊成员函数

前言 类与对象(二) 文章目录 一、特殊成员函数二、构造函数三、析构函数四、拷贝构造函数五、拷贝赋值运算符 一、特殊成员函数 如果在类的声明中未显式提供某个成员函数的定义,编译器会自动生成一个默认实现。 这包括默认构造函数、默认析构…

Redis的数据类型

目录 string 1.编码方式 2.应用场景 3.常用命令 hash 1.编码方式 2.应用场景 3.常用命令 list 1.编码方式 2.应用场景 3.常用命令 set 1.编码方式 2.应用场景 3.常用命令 zset 1.编码方式 2.应用场景 3.常用命令 如何理解Redis的编码方式 embs…

【Python】03快速上手爬虫案例三:搞定药师帮

文章目录 前言1、破解验证码2、获取数据 前言 提示:通过用户名、密码、搞定验证码,登录进药师帮网站,然后抓取想要的数据。 爬取数据,最终效果图: 1、破解验证码 使用药师帮测试系统:https://dianrc.ysb…

【保驾护航】HarmonyOS应用开发者基础认证-题库-2024

通过系统化的课程学习,熟练掌握DevEco Studio,ArkTS,ArkUI,预览器,模拟器,SDK等HarmonyOS应用开发的关键概念,具备基础的应用开发能力。 考试说明 1、考试需实名认证,请在考前于个…

有哪些ssl证书推荐

SSL证书是由CA认证机构颁发的数字证书,可以用来实现网站的身份验证和数据加密,保障用户与网站之间的通信安全。现在市场上知名的CA认证机构Digicert、Sectigo、Certum等,都已经成立了几十年,每年都要进行WebTrust安全审计&#xf…

HTTPS 之fiddler抓包--jmeter请求

一、浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的。目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度、谷歌等。HTTPS在传输数据之前需要客户端(浏览器)与服…

【Python笔记-设计模式】抽象工厂模式

一、说明 (一) 解决问题 抽象工厂是一种创建型设计模式,主要解决接口选择的问题。能够创建一系列相关的对象,而无需指定其具体类。 (二) 使用场景 系统中有多于一个的产品族,且这些产品族类的产品需实现同样的接口。 例如:有…

数字人解决方案VividTalk——音频驱动单张照片实现人物头像说话的效果

前言 VividTalk是一项由南京大学、阿里巴巴、字节跳动和南开大学共同开发的创新项目。该项目通过结合单张人物静态照片和一段语音录音,能够制作出一个看起来仿佛实际说话的人物视频。项目的特点包括自然的面部表情和头部动作,口型能够同步,同…

HarmonyOS 鸿蒙驱动消息机制管理

驱动消息机制管理 使用场景 当用户态应用和内核态驱动需要交互时,可以使用HDF框架的消息机制来实现。 接口说明 消息机制的功能主要有以下两种: 用户态应用发送消息到驱动。 用户态应用接收驱动主动上报事件。 表1 消息机制接口 方法描述struct …

防御保护笔记02

防火墙 防火墙的主要职责在于:控制和防护 ---- 安全策略 --- 防火墙可以根据安全策略来抓取流量 防火墙分类 按物理特性划分 软件防火墙 硬件防火墙 按性能划分 百兆级防火墙 吞吐量:指对网络、设备、端口、虚电路或其他设施,单位时间内成…

架构整洁之道-价值维度与编程范式

1 设计与架构究竟是什么 结论:二者没有任何区别,一丁点区别都没有。 架构图里实际上包含了所有底层设计细节,这些细节信息共同支撑了顶层的架构设计,底层设计信息和顶层架构设计共同组成了整个架构文档。底层设计细节和高层架构信…

最新GPT4.0使用教程,AI绘画-Midjourney绘画,GPT语音对话使用,DALL-E3文生图+思维导图一站式解决

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画,文档对话总结DALL-E3文生图,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和…

【HarmonyOS应用开发】ArkUI 开发框架-基础篇-第一部分(七)

常用基础组件 一、组件介绍 组件(Component)是界面搭建与显示的最小单位,HarmonyOS ArkUI声明式开发范式为开发者提供了丰富多样的UI组件,我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。组件根据功能可以分为以下五大类…

深入理解Redis:如何设置缓存数据的过期时间及其背后的机制

目录 Redis 给缓存数据设置过期时间 Redis是如何判断数据是否过期的呢? 过期的数据的删除策略 Redis 内存淘汰机制 Redis 给缓存数据设置过期时间 一般情况下,我们设置保存的缓存数据的时候都会设置一个过期时间。为什么呢? 因为内存是有…

Django模型(一)

一、介绍 模型,就是python中的类对应数据库中的表 1.1、ORM ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写 ORM 把数据库映射成对象 1.…

【Linux】压缩脚本、报警脚本

一、压缩搅拌 要求: 写一个脚本,完成如下功能 传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一; (1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc…

Java-并发高频面试题

1.说一下你对Java内存模型(JMM)的理解? 其实java内存模型是一种抽象的模型,具体来看可以分为工作内存和主内存。 JMM规定所有的变量都会存储再主内存当中,再操作的时候需要从主内存中复制一份到本地内存(c…

C++(6) 继承

文章目录 继承1. 继承1.1 什么是继承1.2 C 继承方式1.2.1 基本案例1.2.2 继承权限组合1.2.3 继承中构造函数的说法1.2.4 继承中析构函数的执行顺序1.2.5 继承中变量名称冲突问题1.2.6 继承中函数【重写】 继承 1. 继承 1.1 什么是继承 面向对象程序设计中最重要的一个概念是继…

【linux】复制cp和硬连接、软连接的区别? innode 关系?

1.命令: cp -r [源文件或目录] [目的目录] #复制 ln -s [被链接的文件] [链接的目录/名称] #软连接 ln [被链接的文件] [链接的目录/名称] #硬连接 注:cp -r 会把所有source当作普通文件(regular文件)&#x…