乐趣区

关于自动化测试:如何在本地编译安装部署自动化回归测试平台-AREX

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 局部的具体配置见下图:

其中:

  1. AREX 前端服务配置的端口是 8080,通过 Docker 容器对外裸露的端口是 8088,用户能够依据须要批改;
  2. 日志存储在当前目录下的 arex-logs/arex-front 目录下。
  3. AREX 前端服务依赖于四个服务

    1. 剖析服务(arex-report-service),用于获取剖析数据;
    2. 调度服务(arex-schedule-service),用于前端触发回放操作等调用;
    3. 数据存储服务(arex-storage-service),用于读取配置等操作;
    4. Node 服务,用于实现批量执行测试用例。

配置 AREX Node 服务

Node 服务是一个简略服务,外部端口 3000,对外裸露端口 10001,个别不波及内部调用,此处可疏忽。

配置 AREX 剖析服务

  1. AREX 剖析服务依赖于 Mongodb 数据库,须要连贯 MongoDB 数据库进行数据存储和查问,用户名和明码是 MongoDB 的配置。如果用户应用本人的 MongoDB 服务,须要将连贯信息改为本人的 MongoDB 配置。
  2. 依赖于 Storage 服务,不须要批改此局部,如果独立部署,须要批改地址和端口。
  3. AREX 剖析服务的外部端口是 8080,通过 Docker 容器对外裸露的端口是 8090。

留神:Arex.ui.url 是一个非凡的配置项,它用于在 AREX 邮件服务中组装登录链接。因为 AREX 的登录须要用户输出邮箱,而邮件服务发送的链接须要指向可拜访的 AREX 前端地址,因而必须将 Arex.ui.url 配置为理论的前端地址,而不是 Docker-Compose 中容器的地址。如果配置不正确,邮件告诉中的链接将会跳转到谬误页面。

配置 AREX 数据存储服务

  1. 数据存储服务外部端口 8080,对外裸露端口 8093。
  2. 数据存储服务依赖于:

    1. mongodb 数据库,配置形式同上一节;
    2. Redis 缓存,用于录制和回放中存储缓存,减速性能;
    3. 剖析服务

配置 AREX 调度服务

  1. AREX 调度服务外部端口 8080,对外裸露端口 8092。
  2. 与数据存储服务基本一致,AREX 调度服务同样依赖于:

    1. mongodb 数据库;
    2. Redis 缓存;
    3. 剖析服务。

配置 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

退出移动版