[转帖]如何在本地编译安装部署自动化回归测试平台 AREX
https://zhuanlan.zhihu.com/p/613877597
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的更多相关文章
- RHEL6 最小化系统 编译安装部署zabbix (mysql)
RHEL6 最小化系统 编译安装部署zabbix (mysql)官方说明详细见:https://www.zabbix.com/documentation/4.0/manual/installation ...
- Flink本地环境安装部署
本次主要介绍flink1.5.1版本的本地环境安装部署,该版本要求jdk版本1.8以上. 下载flink安装包:http://archive.apache.org/dist/flink/flink-1 ...
- 比Ansible更吊的自动化运维工具,自动化统一安装部署自动化部署udeploy 1.0 版本发布
新增功能: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一shell脚本开发,由框架统一调用. 并发多线程部署,不管多少台服务器,多少个服务,同时发起线程进行更新.部署.启动. 提高list规则 ...
- Centos7安装部署搭建gitlab平台、汉化
Centos7安装部署搭建gitlab平台.汉化 安装环境要求:内存不要小于4G,否则后期web界面可能会报错 一.准备工作 1.1 查看系统版本 首先查询系统版本,下载Gitlab的对应版本 [ro ...
- [转帖]VMware Vsphere 6.0安装部署 (三) vCenter Server安装
VMware Vsphere 6.0安装部署 (三) vCenter Server安装 2016年08月29日 14:59:14 dAng1r0Us 阅读数:72942 版权声明:本文为博主原创文 ...
- Apache Ranger 编译安装部署
1. 概述 Apache Ranger是大数据领域的一个集中式安全管理框架,目的是通过制定策略(policies)实现对Hadoop组件的集中式安全管理.用户可以通过Ranger实现对集群中数据的安全 ...
- Ubuntu 12.04本地编译安装Vim
1.下载Vim,参考http://www.vim.org/git.php 2.编译安装Vim,参考https://github.com/Valloric/YouCompleteMe/wiki/Buil ...
- 【Hadoop 分布式部署 八:分布式协作框架Zookeeper架构功能讲解 及本地模式安装部署和命令使用 】
What is Zookeeper 是一个开源的分布式的,为分布式应用提供协作服务的Apache项目 提供一个简单的原语集合,以便与分布式应用可以在他之上构建更高层次的同步服务 设计非常简单易于编 ...
- [转帖]VMware Vsphere 6.0安装部署 (一) 总体部署架构
(一)总体部署架构本教程用于学习目的,力求详尽的介绍安装部署过程和各组件之间的关系,部署过程从最简单的模型开始,系列文章按时间顺序依次展开,每篇介绍一个组件. 开始阶段,按照一台物理服务器,部署所有V ...
- [转帖]MySQL5.7.20编译安装
MySQL5.7.20编译安装 尝试一下 想着 我在arm上面最终安装失败了. https://www.cnblogs.com/shengdimaya/p/8027507.html 1:官网下载sou ...
随机推荐
- 大数据实践解析(上):聊一聊spark的文件组织方式
摘要: 在大数据/数据库领域,数据的存储格式直接影响着系统的读写性能.Spark针对不同的用户/开发者,支持了多种数据文件存储方式.本文的内容主要来自于Spark AI Summit 2019中的一个 ...
- 读书笔记丨远程服务调用和RESTful,如何分析和抉择?
摘要:相信未来REST规范将会变得更加流行和普及. 本文分享自华为云社区<云原生时代,远程服务调用和RESTful,如何分析和抉择?>,作者:breakDawn . 随着云原生的概念越来越 ...
- 云小课|MRS基础原理之Oozie任务调度
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:Oozie是一个基 ...
- HDC.Cloud2021|开发者们都在谈的云原生到底长什么样?
摘要:云原生数据库基于存储与计算分离架构,与传统数据库相比,具备高性能.高扩展.一致性.易管理和多云支持等特性,在海量数据处理.智能存储.业务应用等方面表现出了强大的生命力. 近几年,云原生的风越刮越 ...
- GaussDB(for Redis)新特性发布:前缀搜索千倍提升与集群版多租隔离
摘要:GaussDB(for Redis)推出的全新特性,实现集群版多租隔离功能和增强版前缀搜索,前缀搜索时延较开源Redis降低千倍,为助力企业业务发展带来了更多可能. 近期,华为云GaussDB( ...
- 教你如何在Spark Scala/Java应用中调用Python脚本
摘要:本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同. 本文分享自华为云社区<[Spark]如何在Spark Scala/ ...
- 在探索的道路上持续“做对”,火山引擎A/B测试成为这家企业数字基建
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 最近,乐刻的"百城万店"战略在行业激起了许多讨论.在传统健身馆经营承压.服务业难标准化的语 ...
- L2-012 关于堆的判断 (25分) (字符串處理)
将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: x is the root:x是根结点: x and y are siblings:x和y是兄弟结 ...
- 与奥运同行:打造智慧体育馆 3D 可视化
祝贺中国队在东京奥运会夺得金牌 38 枚.银牌 32 枚.铜牌 18 枚.中国健儿在奥运舞台上交出了一份璀璨的成绩单.用一场场精彩绝伦的比赛,演绎"更快.更高.更强.更团结"的奥林 ...
- 畅捷通的 Serverless 探索实践之路
作者:计缘 畅捷通介绍 畅捷通是中国领先的小微企业财税及业务云服务提供商,成立于2010年.畅捷通在2021年中国小微企业云财税市场份额排名第一,在产品前瞻性及行业全覆盖方面领跑市场,位居中国小微企业 ...