亚马逊AWS官方博客

利用 AWS 部署 AREX:加速研发效能的自动化回归测试实践丨AREX on AWS: Automated Regression Testing Practice to Accelerate R&D Efficiency

中文版本 | 英文版本


在当今快速迭代的软件开发环境中,确保代码变更不会引入新的缺陷至关重要。AREX 作为一款强大的自动化回归测试工具,可以帮助开发团队快速识别潜在问题,提高软件质量。本文将介绍如何在 AWS 上轻松部署 AREX,以加速您的研发效能。

AREX 简介

AREX 是一个基于流量录制和回放技术的自动化回归测试平台。它能够捕获生产环境中的真实流量,并在测试环境中进行精确回放,从而实现全面的回归测试。AREX 的主要优势包括:

  • 无需编写测试用例,大幅降低测试成本
  • 基于真实流量,提高测试覆盖率和准确性
  • 自动比对请求响应,快速定位问题
  • 支持多种编程语言和框架

在 AWS 上部署 AREX

AREX 提供了两种在 AWS 上的部署方式,以满足不同用户的需求。本文将详细介绍这两种方法,让您能够根据自身情况选择最适合的部署方式:

  1. 使用 AREX Cloud
  2. 手动将 AREX 社区版部署到 AWS EC2

接下来,我们将分别深入探讨这两种部署方法的具体步骤和注意事项,帮助您顺利完成 AREX 在 AWS 上的部署。无论您选择哪种方式,我们都将为您提供清晰的指导,确保您能够充分利用 AREX 的功能。

AREX Cloud

要开始使用 AREX,您需要先注册一个 AREX Cloud 账户。访问 AREX 官网并点击”开始使用”按钮进行注册。

注意:控制台登录用户与 AREX 用户不同。控制台用户供企业组织购买和管理 AREX 平台使用。

注册后,新用户需要使用公司名称创建一个组织,并生成唯一的 AREX 平台访问链接。

组织管理员可以进入 Dashboard 页面点击下载最新版本的客户端,或自行访问官网下载页面下载。

用户可以通过邀请邮件中提供的下载链接下载客户端。

管理员创建组织后,组织成员可以访问之前生成的唯一链接(https://demo.arextest.com)或通过本地客户端登录。

首次登录时,用户需要输入邮箱地址。在邮箱中收到验证码后,点击”登录”即可完成登录过程。

手动部署到 AWS EC2

步骤 1:准备用于 AREX 部署的 EC2

选择 Amazon Linux 2 AMI 作为操作系统。

如果您只是尝试使用,建议选择 t3.large(2C8G) 机器作为最低配置。

密钥对可以根据需要创建和使用(用于快速连接到 EC2)。稍后创建 Amazon DocumentDB 时也可以共享此密钥。

存储配置默认选择 8G。

步骤 2:创建 Amazon DocumentDB 集群

注意:使用 Amazon DocumentDB 时,需要将其部署在与关联 EC2 实例相同的虚拟私有云(VPC)中,以确保它们可以相互通信。

创建 2 个 db.t3.medium 类型的实例,1 个主节点和 1 个从节点。引擎版本选择 5.0.0。

安装后,配置相应的入站规则,允许通过连接字符串从外部网络访问。使用 mongo shell 验证连接字符串是否可用。

运行 show dbs 命令,上图表明 Amazon DocumentDB 创建成功。

步骤 3:准备 Amazon ElastiCache 并创建 Redis 集群

  • 在 AWS 控制台中搜索 Amazon ElastiCache 并创建 Redis 集群(Amazon ElastiCache 必须与上面创建的 EC2 在同一 VPC 中)。
  • 选择配置并创建新集群。在试用阶段可以禁用集群模式,正式使用时可根据需要修改配置。
  • 引擎版本选择 2,节点类型选择 cache.t3.micro,副本数设置为零。
  • 选择创建新子网组,并选择与上面 EC2 相同的 VPC ID。
  • 要检查是否成功连接到 Amazon ElastiCache,可以在 EC2 上使用 redis-cli 连接 Amazon ElastiCache。如果连接失败,可以检查相应安全组的入站规则,并根据您的网络情况进行配置。

步骤 4:通过 docker-compose 安装 AREX

安装 AREX 非常简单。您可以使用 Docker-Compose,只需一个命令就能安装 AREX 的所有基本服务组件。以下简要介绍- AREX 回归测试的工作原理和各种服务组件。

AREX 回归测试的工作原理是使用 AREX Java Agent 对生产环境中 Java 应用程序的数据流和请求信息进行采样和记录,并将这些信息发送到 AREX Storage Service,导入数据库(MongoDB)进行存储。当需要回放时,AREX Schedule Service 将通过 Storage Service 从数据库中提取被测应用程序的记录数据,然后向目标验证服务发送接口请求。同时,Java Agent 将模拟记录的外部依赖响应,而不是真实的数据访问,并将其传递给被测应用程序。目标服务完成请求逻辑并返回响应消息后,Schedule Service 将比较记录的响应消息和回放的响应消息,以验证系统逻辑的正确性,并将比较结果发送到分析服务(Report Service),生成完整的回放测试报告供测试人员分析记录和回放之间的差异。

首先,通过 git 克隆 AREX 存储库。

git clone --depth 1 https://github.com/arextest/deployments.git
cd deployments

配置 Amazon DocumentDB 和 Amazon ElastiCache

如果您想使用 Amazon DocumentDB 作为数据库来替代默认的 MongoDB,并使用 Amazon ElastiCache 来替代默认的 Redis,只需修改 docker-compose.yml 配置文件中的连接字符串即可。将所有 MongoDB 连接字符串替换为 Amazon DocumentDB 连接字符串,将所有 Redis 连接字符串替换为 Amazon ElastiCache 连接字符串。

步骤 5:启动 AREX

配置完成后,运行 docker-compose 启动 AREX。

docker-compose up -d

如果您没有修改端口配置,服务启动后,可以直接通过访问 8088 端口访问 AREX 前端页面。

AREX 上的录制和回放

1. Collection

接口测试的入口点

  • 测试用例管理
  • API endpoint configurationAPI 端点配置
  • Request/response validation 请求/响应验证

2. Report

录制和回放会话的管理中心

  • 会话概览和统计
  • 详细测试结果分析

3. Traffic

历史录制数据的存储库

  • 按时间顺序列出记录的交互
  • 数据导出和归档

录制和回放快速入门

设置 Arex Agent

为了使用流量回放功能,需要预先在被测服务上加载 Agent。

执行以下命令克隆并打包 Agent 代码,或直接从 https://github.com/arextest/arex-agent-java/releases 下载。

git clone https://github.com/arextest/arex-agent-java.git 
mvn clean package

arex-agent-jar 下将生成相应的 jar 包文件。将此文件夹复制到 D 盘根目录,然后在本地运行以下命令启动演示应用程序。将 x.x.x.x 替换为之前安装 Docker 的 IP 地址:

java -javaagent:D:\arex-agent-jar\arex-agent-0.1.0.jar
      -Darex.service.name=commit-test002
      -Darex.storage.service.host=x.x.x.x:8093
      -jar MyArexDemoService.jar

注意:您也可以直接从 https://github.com/arextest/arex-standalone/releases 下载,其中包含相应的 jar 文件。启动后,应用程序将自动出现在 AREX 的回放应用列表中。

加载了 AREX Agent 的应用程序发布后,会根据设置的录制频率自动收集真实用户请求并保存。这些保存的数据用作后续回放的测试用例,以验证新的代码更改是否有意外后果。

应用设置

可以在 AppSetting 中对目标应用进行一系列设置。在本例中,仅使用与录制相关的设置,如下所示:

您可以在此设置录制时间和频率。

回放

在回放菜单中启动回放任务(将目标回放环境设置为已部署测试应用程序的 IP 地址和端口号)后,您将看到以下执行记录:

从列表中选择回放任务,将显示测试结果摘要,显示成功执行的百分比。以下是一个测试接口的列表:

本演示中的所有用例都失败了,点击 DiffScenes 将显示失败的详细信息:

录制的测试用例的数据详情,”Save”按钮允许您固化测试用例并将其保存在 Request Collection 菜单中:

结论

通过在 AWS 上部署 AREX,您可以显著提高开发团队的效率。自动化回归测试不仅节省了大量的人力和时间成本,还提高了软件质量,降低了生产环境中出现问题的风险。我们鼓励您尝试使用 AREX,体验它如何彻底改变您的开发流程。

要了解更多关于 AREX 的信息,请访问 AREX 官方文档。如果在使用过程中遇到任何问题,请随时联系 AWS 支持团队或 AREX 技术支持。

让我们共同利用 AWS 和 AREX 的强大功能,创建一个更高效、更可靠的软件开发流程!

本篇作者

杨俊

亚马逊云科技资深解决方案架构师。加入亚马逊云科技之前,主要从事电商和零售相关的系统开发工作,具备丰富的零售行业经验和企业上云实践经验。

夏宁

亚马逊云科技解决方案架构师,曾就职惠普软件和声网,超过 10 年前端后端开发经验,主导过各类软件项目设计。熟悉移动互联网,音视频,云计算相关领域。

朱晓丹

亚马逊云科技客户解决方案经理,拥有多年公有云 MSP 服务咨询实施以及软件研发交付项目管理经验,目前在亚马逊云科技主要支持 OTA 以及零售等行业的客户,致力于帮助亚马逊云科技用户上云期间运用云相关解决方案实现自身的业务价值,专注于运用亚马逊云科技已有机器学习和 AIGC 的能力以及解决方案帮助用户在业务上做出更多的创新。