跳到主要内容

注册应用

流量录制回放是通过复制线上真实流量(录制)然后在测试环境进行模拟请求(回放)验证代码逻辑正确性。

利用这种机制进行回归测试具备许多优势:

  • 通过录制流量取代测试用例简单高效,易于形成丰富的测试用例,用例创建成本低;
  • 回放线上流量能完美模拟用户真实行为,避免人工编写存在的差异性;另外通过对录制数据和回放数据采用对象对比方式能更深入、细微验证系统逻辑;
  • 录制的流量无需维护,随取随用,非常方便。

应用注册流程

步骤一:注册应用

通过浏览器访问 AREX 前端页面,点击 Replay 进入回放页面,点击菜单栏左上角 ”+“ 新建一个应用,并输入应用名称。

新建应用

在成功创建新的应用后,如下所示,将自动生成 Agent 的启动参数。

新建应用

即:

java -javaagent:</path/to/arex-agent.jar> -Darex.service.name=21fdcdbf919eaae0 -Darex.storage.service.host=<storage.service.host:port> -jar <your-application.jar>
提示
  • </path/to/arex-agent.jar> arex-agent.jar 是 AREX 提供或者自行编译的 jar 包名称,注意修改路径。
  • <storage.service.host:port> 是 Storage service host 地址,AREX Agent 的运行依赖 AREX 的存储服务(AREX storage service),注意根据真实情况修改。
  • your-application.jar 你的被测试服务的 jar 包文件
  • 如果遇到 AREX Agent 与其他 Agent(例如 OpenTelemetry Agent)发生冲突时,可以通过在启动参数中添加特定的参数来解决这一问题:
    -Darex.ignore.type.prefixes=io.opentelemetry
    -Darex.ignore.classloader.prefixes=io.opentelemetry
    如果存在其他 Agent 的冲突,可以使用逗号(,)将多个前缀添加到相应的参数中:
    -Darex.ignore.type.prefixes=io.opentelemetry,other.agent.prefix
    -Darex.ignore.classloader.prefixes=io.opentelemetry,other.agent.prefix
  • 如需查看 Agent 的日志,请加上 debug 参数: -Darex.enable.debug=true

用户可以复制这些参数并根据自己的需求进行修改,之后需要将该 Agent 参数粘贴到被测服务中启动应用。

需要注意的是,新创建的应用的所有者将自动设置为创建该应用的用户。

步骤二:流量环境区分

在 AREX 中,支持在录制流量时根据不同的环境为流量设置不同的环境标签,这是为了帮助用户根据标签对录制的流量进行灵活的筛选和回放,以满足特定环境或需求的测试场景。例如,用户可以根据不同的环境标签来选择相应的流量进行回放,以验证系统在不同环境下的性能和稳定性。

使用时需要在 Agent 启动参数中添加参数:-Darex.tags.env=<xxx>,添加后,录制到的流量都会自动添加上 env:<xxx> 的标签。

在随后进行回放测试时,可以根据不同的环境标签进行回放:

步骤三:部署 Agent 启动应用

AREX Agent 是实现服务录制回放的核心组件,使用录制功能前需要在被测应用中配置 Agent。

通过 git 进行 arex-agent-java 项目的拉取,自行编译:

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

编译成功后可在 arex-agent-java 文件夹得到一个名为 arex-agent.jar 的包。

如果需要添加了版本号的 jar 包文件,可以用以下命令进行编译:

mvn clean install -DskipTests -Pjar-with-version

之后,你可以选择以下任意一种方式为你的被测应用部署 Agent:

配置 Java 参数运行模式

粘贴刚才生成的 Agent 的启动参数并运行,启动 Agent 运行应用:

java -javaagent:</path/to/arex-agent.jar> -Darex.service.name=21fdcdbf919eaae0 -Darex.storage.service.host=<storage.service.host:port> -jar <your-application.jar>

配置文件运行模式

你也可以通过新建一个名为:arex.agent 的 conf 配置文件来进行配置,其中内容为:

arex.agent.conf
arex.service.name=your-service-name  
arex.storage.service.host=<storage.service.host:port>

然后运行如下命令完成配置:

java -javaagent:</path/to/arex-agent.jar> -Darex.config.path=/path/to/arex.agent.conf -jar your-application.jar

修改 JAVA_OPTS 运行模式

你可以通过运行 Tomcat,配置 catalina.sh 文件并修改 JAVA_OPTS 变量来部署 AREX Agent,也可以直接在环境变量中配置,以 Linux 运行为例:

export JAVA_OPTS="-javaagent:/path/to/arex-agent-<version>.jar -Darex.config.path=/path/to/arex.agent.conf"

之后你可以正常运行 Tomcat。AREX Agent 将被自动注入 JVM 中,并在 Tomcat 启动时运行。

提示

对于 0.6.0 以下的版本,应用是通过 Agent 上报的方式直接进行的注册。

更新版本后,对于已经注册了且没有绑定 Owner 的应用,从 Replay 列表点击该应用后,系统会弹出一个窗口,提示用户为这个应用添加 Owner。如果用户没有为应用绑定 Owner,那么这个应用将无法启动回放。

添加所有者

配置完成后,通过浏览器访问 AREX 前端页面,点击 App,即可在左侧菜单栏中看到已配置好的被测应用。

应用列表

默认情况下,AREX 将自动录制所有时间段内的线上真实请求流量。你也可以通过录制回放设置,根据自己的需要设定录制任务。