AREX 官网 QQ 交换群:656108079
本文将具体为大家介绍一下如何在本地进行 AREX 的编译和配置。
背景
AREX 是一款由携程开源的自动化测试工具,基于 Java Agent 技术,录制生产环境实在用户的申请,并在测试环境回放,同时智能比对剖析回放后果,从而实现疾速无效的回归测试。除此以外,也提供了用例治理、接口测试(脚本验证、双环境比对)等丰盛的自动化测试性能,是一个不须要编程技术,也可疾速上手的自动化测试工具平台。
目前你能够通过 Docker-Compose 命令,一键缺省装置 AREX 所有根底服务组件,包含前端 UI,MongoDB 数据库,Redis 缓存,数据存取服务(Storage Service),调度服务(Schedule Service),剖析服务(Report Service)等(如上图所示)。这种形式不须要手动装置和配置每个服务,大大简化了装置过程,进步部署效率。(详见文档)
当然,你也能够通过在本机上构建 Docker 镜像的形式在本地对各个服务组件进行编译和装置。这种形式实用于须要对单个服务进行开发和测试的场景,能够防止装置不必要的依赖项,同时也实用于须要在离线环境下部署的场景。
本文将具体为大家介绍一下如何在本地进行 AREX 的编译和配置。(如果你有其余非凡的部署需要或倡议,也能够在 GitHub Issue 中提出)
本地构建 Docker 镜像
首先,创立 github-arex 目录,用于寄存 AREX 各个服务组件。倡议将 AREX 各个我的项目放在同一个目录下,Deployment 仓库中 Shell 脚本都是以相对路径来进行拜访的,如果目录门路产生变更,也须要同步批改 Shell 脚本中的相干配置。
下载 AREX Deployment 仓库
Deployment 仓库中蕴含编译命令、Dockerfile(用于构建镜像,蕴含了构建镜像所需的指令和依赖项)和 Docker-Compose file(用做容器编排进行环境部署)等文件,编译时须要切换至 dev 分支。
cd github-arex
git clone https://github.com/arextest/deployments.git
cd deployments
git checkout dev # 切换到代码仓库的 dev 分支,并将当前工作目录中的代码更新为 dev 分支的最新版本
下载编译 AREX 前端 UI
AREX 前端 UI,是交互组件,次要负责用户配置执行的交互界面。
cd github-arex
git clone https://github.com/arextest/arex.git
cd arex-front-end
git pull --rebase
cd ../deployments
./front.build.sh # 执行 front.build.sh 脚本,构建 AREX 前端 UI 组件
cat front.build.sh # 查看脚本
cat dockerfile/front.Dockerfile # 查看 Dockerfile 配置
front.build.sh
脚本如下所示,执行时会复制 Dockerfile 并执行 docker build
命令来依据 Dockerfile 构建 Docker 镜像,其中版本编号能够依据理论状况进行批改。
cd ../arex-front-end
cp ../deployments/dockerfile/front.Dockerfile ./Dockerfile # 将 front.Dockerfile 文件复制到当前目录,并命名为 Dockerfile
docker build -t arexadmin01/arex:0.2.6 . --build-arg http_proxy=http://ntproxy.qa.nt.ctripcorp.com:8080 --build-arg https_proxy=http://ntproxy.qa.nt.ctripcorp.com:8080 # 应用 Dockerfile 构建名为 arexadmin01/arex:0.2.6 的 Docker 镜像,并指定了 http_proxy 和 https_proxy 参数,以便可能通过代理减速镜像下载
rm -rf ./Dockerfile # 构建实现后删除 Dockerfile
cd ..
注: 如批改版本编号,还须要对 Docker-Compose file(docker-compose.yml)中的版本编号进行同步批改。
front.Dockerfile
文件如下所示,其中蕴含 Nodejs 中 npm 的装置和端口裸露(8080)等。
FROM node:14.18.1 # 应用 node:14.18.1 作为根底镜像
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
# COPY package*.json ./
COPY . .
RUN npm install --loglevel verbose // 装置依赖
RUN npm run build // 构建我的项目
# Bundle app event
# COPY . .
EXPOSE 8080 // 裸露容器端口 8080
CMD ["node", "server.js",">","./logs/app.log","2>", "./logs/error.log"] // 应用 Node.js 运行 server.js,并将日志输入到 ./logs/app.log 和 ./logs/error.log 中
留神:如果不应用 Docker 进行装置,也可间接编译运行。这种形式实用于不须要应用 Docker 进行环境隔离和容器化的场景。其余服务组件也可通过这种形式间接编译运行,后续这部分不再赘述。
下载编译 AREX 数据存取服务
AREX 数据存取服务(Storage Service)次要负责存储 Agent 的录制数据,获取回放数据,以及录制回放配置的读取。
cd github-arex
git clone https://github.com/arextest/arex-storage.git
git pull --rebase
cd ../deployments
./storage.build.sh # 执行 storage.build.sh 脚本,构建 AREX 数据存取服务组件
下载编译 AREX 调度服务
AREX 调度服务(Schedule Service)是调度组件,用于协调 AREX 执行回放工作的过程以及回放后果比对。当 AREX 执行回放工作时,调度服务通过 Storage Service 服务从数据库中提取被测利用的录制数据(申请),而后向指标验证服务发送接口申请。一旦服务接管到申请,便会解决申请逻辑。同时,由 Agent 装载须要 MOCK 的内部依赖数据,解决实现后返回响应报文。调度服务会将录制的响应报文与回放的响应报文进行比对,并将比对后果推送给剖析服务,用于后续的回放报告生成。
cd github-arex
git clone https://github.com/arextest/arex-replay-schedule.git
git pull –rebase
cd ../deployments
./schedule.build.sh # 执行 schedle.build.sh 脚本,构建 AREX 调度服务组件
下载编译 AREX 剖析服务
AREX 剖析服务(Report Service)是剖析组件,负责剖析录制数据、回放后果,生成回放报告,以及解决用例治理逻辑。
cd github-arex
git clone https://github.com/arextest/arex-report.git
git pull -rebase
cd ../deployments
./ report.build.sh # 执行 report.build.sh 脚本,构建 AREX 剖析服务组件
下载编译 AREX Community Test
AREX Community Test 是由 AREX 社区提供的用来验证性能的一个模仿服务,你能够用它来试用 AREX 的流量录制回放性能。
cd github-arex
git clone https://github.com/arextest/arex-commuty-test.git
git pull –rebase
cd ../deployments
./ community.build.sh # 执行 community.build.sh 脚本,构建 AREX Community Test 服务
下载编译 AREX Java Agent
AREX Java Agent 是录制回放组件,负责 Java 利用的申请录制及回放过程中的数据 Mock,在被测利用的后盾执行。录制过程中,Agent 会记录 Java 利用的申请信息,并将这些信息存储在数据库中。回放过程中,Agent 会将录制的内部依赖(内部申请 /DB)的响应返回给被测利用,从而实现 Mock 的成果。
cd github-arex
git clone https://github.com/arextest/arex-agent-java.git
git pull –rebase
cd ../ arex-agent-java/
mvn clean package # 进行清理并打包,以便于部署和运行
编译实现:
执行 ls arex-agent-jar/
命令,即可查看生成的最新的 Java Agent 文件,如下图所示:
下载编译 AREX 批量执行测试用例服务(Node Service)
Node Service 是测试用例的脚本执行服务,负责在 Collection 模块中用例的前置脚本和验证脚本的执行。
cd github-arex
git clone https://github.com/arextest/arex-node-service.git
cd arex-node-service/
git pull --rebase
cd ../deployments
./node.build.sh
如下图所示,所有组件均已编译实现。
如果须要对 AREX 整个零碎中的某个组件进行独自配置,能够通过批改配置文件 Docker-Compose file 中的配置项来实现。
以下将对如何批改各个服务组件的配置开展具体介绍,如批改数据库配置、服务端口配置等。实现批改后,AREX 零碎中就能够依照你的需要来运行。
独自配置各个服务
Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具,应用 Compose 可在一台主计算机上不便地协调多个容器映像。在 Docker Compose 中,通常会应用一个配置文件 docker-compose.yml 来配置应用程序的服务。通过批改配置文件中的各个配置项,能够更加灵便地运行 AREX 中的每个服务。配置实现后,只需运行一条命令,即可从配置中创立并启动所有服务。
cd github-arex
git clone https://github.com/arextest/deployments.git
cd deployments
cat docker-compose.yml
配置 AREX 前端 UI
配置文件中对于 AREX 前端 UI 局部的具体配置见下图:
其中:
- AREX 前端服务配置的端口是 8080,通过 Docker 容器对外裸露的端口是 8088,用户能够依据须要批改;
- 日志存储在当前目录下的 arex-logs/arex-front 目录下。
-
AREX 前端服务依赖于四个服务
- 剖析服务(arex-report-service),用于获取剖析数据;
- 调度服务(arex-schedule-service),用于前端触发回放操作等调用;
- 数据存储服务(arex-storage-service),用于读取配置等操作;
- Node 服务,用于实现批量执行测试用例。
配置 AREX Node 服务
Node 服务是一个简略服务,外部端口 3000,对外裸露端口 10001,个别不波及内部调用,此处可疏忽。
配置 AREX 剖析服务
- AREX 剖析服务依赖于 Mongodb 数据库,须要连贯 MongoDB 数据库进行数据存储和查问,用户名和明码是 MongoDB 的配置。如果用户应用本人的 MongoDB 服务,须要将连贯信息改为本人的 MongoDB 配置。
- 依赖于 Storage 服务,不须要批改此局部,如果独立部署,须要批改地址和端口。
- AREX 剖析服务的外部端口是 8080,通过 Docker 容器对外裸露的端口是 8090。
留神:Arex.ui.url
是一个非凡的配置项,它用于在 AREX 邮件服务中组装登录链接。因为 AREX 的登录须要用户输出邮箱,而邮件服务发送的链接须要指向可拜访的 AREX 前端地址,因而必须将 Arex.ui.url
配置为理论的前端地址,而不是 Docker-Compose 中容器的地址。如果配置不正确,邮件告诉中的链接将会跳转到谬误页面。
配置 AREX 数据存储服务
- 数据存储服务外部端口 8080,对外裸露端口 8093。
-
数据存储服务依赖于:
- mongodb 数据库,配置形式同上一节;
- Redis 缓存,用于录制和回放中存储缓存,减速性能;
- 剖析服务
配置 AREX 调度服务
- AREX 调度服务外部端口 8080,对外裸露端口 8092。
-
与数据存储服务基本一致,AREX 调度服务同样依赖于:
- mongodb 数据库;
- Redis 缓存;
- 剖析服务。
配置 Redis 缓存服务
Redis 实例,外部端口 6379,对外裸露端口 6379。
如果抉择应用其余环境中的 Redis 服务,则须要删除 Docker-Compose 文件中 Redis 服务节点的配置,并将所有依赖服务中的相干配置批改为连贯到已有的 Redis 服务。
配置 MongoDB 数据库服务
数据库服务外部端口 27017,对外裸露端口 27017。
同上,如果抉择应用其余环境中的数据服务,则须要删除配置文件中 MongoDB 服务节点的配置,并将所有依赖服务中的相干配置批改为连贯到已有的数据库服务。
mongo-allone-init.js
是服务启动过程中的依赖的一个配置文件,用于初始化 MongoDB 数据库的一些配置。如下:
数据存储在当前目录的 arex-data/mongodb 目录中。
AREX Docker Compose 启动
所有配置调整好后,启动 AREX 服务:
docker-compose up –d
进行 AREX 服务:
docker-compose down –v
查看日志:
docker-compose logs
logs 命令用来查看服务过程状态,当 State 呈现问题时,能够应用 logs 命令来调试跟踪。
AREX 文档:http://arextest.com/zh-Hans/docs/intro/
AREX 官网:http://arextest.com/
AREX GitHub:https://github.com/arextest
AREX 官网 QQ 交换群:656108079