携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX

携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX

官网文档 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX
这篇文章稍稍水一下,主要讲下部署过程里踩的坑,因为部署的过程主要是运维同学去处理了,我只说下踩到的坑,官方的教程是可行的。
当你使用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.mzph.cn/news/649655.shtml

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

相关文章

【Spring 篇】MyBatis DAO层实现:数据之舞的精灵

欢迎来到MyBatis DAO层的神奇世界,这里将为你揭示DAO层的奥秘,让你成为数据之舞的精灵。无论你是初学者还是想要深入了解DAO层的开发者,这篇博客将引导你踏入MyBatis DAO层的王国,一探其中的精彩。 舞台1:DAO层的角色…

人脸识别 FaceNet人脸识别(一种人脸识别与聚类的统一嵌入表示)

人脸识别 FaceNet人脸识别(一种人脸识别与聚类的统一嵌入表示) FaceNet的简介Facenet的实现思路训练部分 FaceNet的简介 Facenet的实现思路 import torch.nn as nndef conv_bn(inp, oup, stride 1):return nn.Sequential(nn.Conv2d(inp, oup, 3, stride…

Redis 面试题 | 14.精选Redis高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

手机视频压缩怎么压缩?一键瘦身~

现在手机已经成为我们日常生活中必不可少的工具,而在手机的应用领域中,文件的传输和存储是一个非常重要的问题。很多用户都会遇到这样一个问题,那就是在手机上存储的文件太多太大,导致手机存储空间不足,那么怎么在手机…

初识MQRabbitMQ快速入门

一、同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但是你却不能…

【LUA】mac状态栏添加天气

基于网络上的版本修改的,找不到出处了。第一个摸索的lua脚本,调了很久。 主要修改:如果风速不大,就默认不显示,以及调整为了一些格式 local urlApi http://.. --这个urlApi去申请个免费的就可以了 然后打开对应的json…

七分钟交友匿名聊天室源码

多人在线聊天交友工具,无需注册即可畅所欲言!你也可以放心讲述自己的故事,说出自己的秘密,因为谁也不知道对方是谁。 运行说明: 安装依赖项:npm install 启动:node app.js 运行:直接…

每次请求sessionid变化【SpringBoot+Vue】

引言:花了一晚上的时间,终于把问题解决了,一开始后端做完后,用apifox所有接口测试都是可以的,但当前端跑起来后发现接收不到后端的数据。 当我写完前后端,主页面和获取当前页面信息接口后,配置了cros注解 CrossOrigin…

keil使用教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 前言 例如:随着人工智能的不断发展,机器学习这门技术也越来越重…

Hive实战 —— 电商数据分析(全流程详解 真实数据)

目录 前言需求概述数据清洗数据分析一、前期准备二、项目1. 数据准备和了解2.确定数据粒度和有效列3.HDFS创建用于上传数据的目录4.建库数仓分层 5.建表5.1近源层建表5.2. 明细层建表为什么要构建时间维度表?如何构建时间维度表? 5.3 轻聚层建表6. 指标数…

前端工程化之:webpack1-6(编译过程)

一、webpack编译过程 webpack 的作用是将源代码编译(构建、打包)成最终代码。 整个过程大致分为三个步骤: 初始化编译输出 1.初始化 初始化时我们运行的命令 webpack 为核心包, webpack-cli 提供了 webpack 命令,通过…

数学经典教材有哪些

说实话,国内大学教材编写的初衷,就是让学生自己看不懂。。 不信你去看看同济大学出版社的高数书籍。 给大家推荐两本国外的数学书,质量吊打国内大部分教材(特别是同济的高数教材)。如果我大学能看到这些教材&#xf…

android camera系列(Camera1、Camera2、CameraX)的使用以及输出的图像格式

一、Camera 1.1、结合SurfaceView实现预览 1.1.1、布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-au…

PuLP库-多数线性规划问题

投标价格重预算 背景 甲方需要采购一批物资&#xff0c;采购数量为甲方给定的预计采购数量&#xff0c;并限制了采购总价。例甲方采购预算清单如下&#xff0c;采购总预算为不超过 3175 元 采购内容采购数量投标单价投标报价合计电脑10空调20洗衣机8桌子7打印机35合计 注&a…

正则匹配 | 正则实际应用探索分享

这并不是一篇教正则基础的文章&#xff0c;其正则式不能对您进行使用后的结果负责&#xff0c;请以研究的眼光看待本篇文章。 技术就是懒人为了更好的懒才会想办法搞的东西&#xff0c;我最近因为某些原因需要频繁删除注释 我就想到通过替换的正则功能快速删除文件中的简单注…

IP报文格式

IP报文格式 报文格式 图1 IP头格式 表1 IP头字段解释 字段长度含义Version4比特 4&#xff1a;表示为IPV4&#xff1b;6&#xff1a;表示为IPV6。IHL4比特首部长度&#xff0c;如果不带Option字段&#xff0c;则为20&#xff0c;最长为60&#xff0c;该值限制了记录路由选项。…

Java / Spring Boot + POI 给 Word 添加水印

1、前言(瞎扯) 有个需求&#xff1a;整一个给 Word 加水印的demo&#xff0c;于是我就网上找呗~ 看到那个 Aspose 好像是收费的&#xff0c;然后就把目光转向了 POI&#xff0c;看到各种形形色色的也不知道哪个能用。整了一会&#xff0c;自己拷贝出一个比较精简的能用的 demo …

SpringBoot activemq收发消息、配置及原理

SpringBoot集成消息处理框架 Spring framework提供了对JMS和AMQP消息框架的无缝集成&#xff0c;为Spring项目使用消息处理框架提供了极大的便利。 与Spring framework相比&#xff0c;Spring Boot更近了一步&#xff0c;通过auto-configuration机制实现了对jms及amqp主流框架…

首发:2024全球DAO组织发展研究

作者&#xff0c;张群&#xff08;专注DAO及区块链应用研究&#xff0c;赛联区块链教育首席讲师&#xff0c;工信部赛迪特邀资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09; DAO&#xff08;去中心化自治组织&am…

03-Redis缓存高可用集群

文章目录 1、Redis集群方案比较2、Redis高可用集群搭建redis集群搭建Java操作redis集群 4、Redis集群原理分析槽位定位算法跳转重定位Redis集群节点间的通信机制gossip通信的10000端口网络抖动 Redis集群选举原理分析集群脑裂数据丢失问题集群是否完整才能对外提供服务Redis集群…