注册应用
流量录制回放是通过复制线上真实流量(录制)然后在测试环境进行模拟请求(回放)验证代码逻辑正确性。
利用这种机制进行回归测试具备许多优势:
- 通过录制流量取代测试用例简单高效,易于形成丰富的测试用例,用例创建成本低;
- 回放线上流量能完美模拟用户真实行为,避免人工编写存在的差异性;另外通过对录制数据和回放数据采用对象对比方式能更深入、细微验证系统逻辑;
- 录制的流量无需维护,随取随用,非常方便。
应用注册流程
步骤一:注册应用
通过浏览器访问 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)发生冲突时,可以通过在启动参数中添加特定的参数来解决这一问题:如果存在其他 Agent 的冲突,可以使用逗号(,)将多个前缀添加到相应的参数中:
-Darex.ignore.type.prefixes=io.opentelemetry
-Darex.ignore.classloader.prefixes=io.opentelemetry-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.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 将自动录制所有时间段内的线上真实请求流量。你也可以通过录制回放设置,根据自己的需要设定录制任务。