自动化回归测试工具—— AREX 上手实践

news2024/11/22 9:35:41

AREX 是一款开源的自动化测试工具平台,基于 Java Agent 技术与比对技术,通过流量录制回放能力实现快速有效的回归测试。同时提供了接口测试、接口比对测试等丰富的自动化测试功能,无需编程能力也可快速上手。

AREX 可以通过 Docker-Compose 一键安装所有的基础服务组件。除此之外,AREX 也同步提供了在线试用平台 AREX Demo,与官方发布的最新版本保持一致,无需部署所有的服务组件即可试用,大大减少了试用费力度。

本文将介绍试用 AREX Demo 平台中接口测试功能及回放测试功能的详细操作步骤。希望通过本文,为大家提供一种实现高效自动化回归测试的新思路。

访问 AREX Demo 环境

使用 Chrome 浏览器访问 AREX Demo 环境:demo.arextest.com/,首次登录需要进行注册…

输入邮箱后,点击 Send Code 按钮, 稍后邮箱将接收到 AREX 发送的登录验证码,如下图,将验证码填入即可登录。

登录后,进入 AREX Demo 的前端页面,如下图所示:

页面包括 Work Space 管理区域、接口测试(Collection)、回放测试(Replay)、环境配置(Environment)和应用配置(AppSetting)、用户操作配置等部分,详见 AREX 官方文档。

Chrome 插件安装

由于浏览器访问跨域名服务受限,在使用 AREX 接口测试功能前,需要安装 Chrome 插件,通过插件实现对外请求接口。

访问 Chrome Web Store,在搜索框中输入 AREX,添加 Arex Chrome Extension。如下图:

如无法访问 Web Store,可以直接下载最新的插件包到本地进行安装,当前最新的插件版本是 v1.0.45。

至此,所有的前期准备工作完成,接下来将介绍如何使用 AREX 的接口测试及录制回放功能。

使用 AREX 进行接口测试

本文中验证功能使用的是由官方提供的模拟服务 AREX-Community-test,Demo 环境中该服务接口暴露地址是 demo.arextest.com:18080。

  1. Collection 中新建一个名为 “Demo-Community-Test” 的集合,用以创建接口请求。

  1. 在 “Demo-Community-Test” 集合右侧下拉菜单中选择 Add Request,新增一个请求,并选择请求方式为 GET

    1. 输入接口路径 http://{{arex_host}}/nettyTest/nettyTest ,其中 {{arex_host}} 是参数名为 arex_host, 值为 demo.arextest.com:18080 的环境变量,需提前在 Environment 中进行配置。也可直接输入 demo.arextest.com:18080/nettyTest/n… 作为接口路径,但如果需要在多个环境(如生产环境、测试环境、开发环境等)进行测试时,逐个修改前置 URL 比较费力,因此建议使用环境变量,在不同环境进行测试只需切换环境即可。

    2. 在新建的请求右侧下拉菜单中选择 Add Case, 为该接口请求创建一个测试用例,用例的属性可以直接继承于请求,减少维护成本。

    3. 其他参数可以根据需要设定,Parameters 中设置参数, Headers 设置请求头, Body 设置请求体, Pre-request Script 设置前置脚本, Tests 设置断言,判断是否符合预期。

    4. 全部设置完成后,点击 Send 发送请求并执行脚本验证(如有),如下图。

使用 AREX 进行回放测试

AREX 的流量录制功能是通过 Java Agent 技术实现的,如需录制应用,首先需要在被测的 Java 应用启动中加入 Java Agent 配置:

environment:``- JAVA_TOOL_OPTIONS=``'-javaagent:/usr/local/tomcat/arex-agent-0.1.0.jar'` `-Darex.service.name=community-demo-name -Darex.storage.service.host=demo.arextest.com -Darex.enable.debug=``true

其中:

  • -Darex.service.name=community-demo-name 是为了设置该应用在 AREX 中展示的名称;
  • -Darex.storage.service.host=demo.arextest.com 是设置 AREX 的 Storage 服务的接口地址为 demo.arextest.com 。

当被测应用装载了 AREX Agent, 并正确配置了 AREX Storage 服务地址后, 即可在回放测试(Replay)列表中看到该应用名,说明应用已经成功注册,如下图所示:

community.0.2.6 为本文中使用的测试应用 Arex-community-test(0.2.6 版本)的缺省名。随后 AREX 会记录下对这个服务接口地址进行的每个访问,包括请求和应答,以及被测服务对外部依赖的访问(数据库,Redis等等),这个过程就是 AREX 的录制过程。

在录制完成后,点击页面右上角选择 Start Replay 开始回放测试。依次选择回放测试的地址(为了演示方便,本次演示中录制和回放采用同一个地址 demo.arextest.com:18080)及需要回放的用例的录制起止时间。

AREX 执行回放操作时,首先由 Schedule 调度服务将被测应用的录制数据(请求)从数据库梳理出来,随后向目标被验证服务发送接口请求,当服务接收到请求后,处理请求逻辑,同时由 Agent 把需要 MOCK 的外部依赖数据装载进来,处理结束后返回响应报文。调度服务会将回放的响应报文和录制的响应报文进行比对,并由分析服务统计分析比对结果,将存在的 BUG 或者疑似 BUG 展示在回放报告中,供开发和测试人员检查。

回放报告页面如下图所示:

当录制与回放的比对结果存在差异时,报告中会出现失败用例(Failed):

1.在报告页面中选择某条路径下 Case Table,可以看到每个回放用例的状态,如下图所示。点击 Detail 查看详情, Save 将该用例保存为常规测试用例。下图中的 Failed 用例左侧基准版本(录制)存在数据库查询(query),但右侧最新版本(回放)没有,则标识回放失败。

  1. 选择 Diff Scenes,进入分析比对差异页面,AREX 将该路径下的比对差异点进行了合并展示,方便开发及测试人员查看分析。

当然也可以选择 Tree Mode 进行树状图展示。

以上就是 AREX Demo 环境的完整试用操作。Demo 环境目前还存在一些问题需要改进:

  1. AREX Demo 环境部署在 AWS 上,有些用户反馈访问不是很快,特别是在处理大数据集时,操作速度明显变慢,需要进一步优化;
  2. AREX 操作界面还有一些不够友好和直观,界面易用性上还需要优化提升。

目前 AREX 保持着每月 1-2 次的发版频率,我们相信,在未来的开源共建之路上,AREX 会越来越成熟和完善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当开发同事辞职,接手到垃圾代码怎么办?

目录 一、前言 二、开发中的另一种选择 三、低代码概念 四、低代码在开发中的优势 01、开发效率提高 02、开发成本减少 03、维护性更高 五、有低代码后就不要开发了? 一、前言 事实上,垃圾项目是日积月累而成的,所谓冰冻三尺非一日之寒&#xf…

列表与字典—>一维列表

这一期内容可以结合着与第一期一起看https://guidm.blog.csdn.net/article/details/130900129?spm1001.2014.3001.5502 让我们来先做个题目: 1、输入一个整数n,要求输出[1,n]范围内的所有完数。 完数是一个正整数,该数恰好等于其所有不同…

计算机组成原理笔记概览

Chapter 1 计算机概要与技术Chapter 2 指令:计算机的语言Chapter 3 算术运算Chapter 4 处理器Chapter 5 大容量和高速度:开发存储器层次结构适配教材:《计算机组成与设计 硬件/软件接口 原书第5版》 要学计算机组成原理,你得知道它是干什么的,抓住总线:如何改进计算机的…

nacos入门-纯springboot整合nacos(百分之百可以-参考官网,比官网还全)

我是一个大数据工程师,但是被迫营业做后端,现在接手了一个项目,干!有个东西叫Nacos。没接触过,那不行,会被优化的。我一大数据工程师搞gr的springcloud,网上很多说整合整合springboot的&#xf…

Python+Django生活用品商城网站前后端

程序示例精选 PythonDjango生活用品商城网站前后端 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonDjango生活用品商城网站前后端 >>编写代码&#xff0c;代码整洁&am…

Java多线程wait notify和park unpark的使用

目录 一、wait & notify的使用1、API介绍2、demo2、多线程模式3、wait和notify的原理 二、Park & Unpark的使用1、基本使用2、特点3、park和unpark的原理 一、wait & notify的使用 1、API介绍 obj.wait() 让进入 object 监视器的线程到 waitSet 等待 obj.wait(n)…

508教室使用方法

一、教室平面图 508教室的布局如下&#xff0c;重要的设备已经在图中标出。总开关、一体机和机柜。   二、使用方法 2.1 房间机器上电 进门后首先走到“总开关位置”&#xff0c;将电匝闭合。 原来的开关如图所示&#xff0c;有3组开关&#xff0c;1号组开关用于控制插座、…

商业智力,Social焕新|数说故事重磅发布“SocialGPT”,国内首个专注Social领域的商业大模型

AGI时代的到来&#xff0c;市场风云变幻&#xff0c;世界正在经历着一场技术革命的颠覆性洗礼。 2023年6月6日6时&#xff0c;数说故事正式对外发布数说故事“SocialGPT”&#xff0c;国内首个专注Social领域的商业大模型。数说故事“SocialGPT”大家昵称它为“社牛”大模型&a…

chatgpt赋能python:Python如何保存为py文件

Python如何保存为py文件 如果你是一个Python初学者或者在使用Python进行编程&#xff0c;你可能会想知道如何将Python代码保存为.py文件。本文将向您介绍Python如何保存为py文件&#xff0c;这样你就可以像其他编程语言一样&#xff0c;通过编辑器来直接修改和运行代码了。 保…

spring实例化bean之实例化

1.关键方法createBean doGetBean中调用getSingleton方法中调用singletonFactory.getObject()触发lambda表达式中的createBean方法 AbstractAutowireCapableBeanFactory#createBean protected Object createBean(String beanName, RootBeanDefinition mbd, Nullable Object[] …

安装和使用MySQL

文章目录 零、学习目标一、获取MySQL安装程序二、安装MySQL数据库管理系统三、启动并使用MySQL命令行&#xff08;一&#xff09;启动MySQL命令行&#xff08;二&#xff09;在MySQL命令行里操作数据库1、显示数据库2、使用数据库3、查看数据库里的表4、查看表的记录 零、学习目…

还在用InputStream的available()方法获取流的字节数吗?那你可要小心了!

问题说明 因为项目需求&#xff0c;需要从一个url获取文件流然后保存到minio文件服务器中。 先看看下面的代码片段 MinioClient minioClient MinioClient.builder().endpoint(new URL("http://ip:port")).credentials("username", "password"…

关于npm install md5报错the command again as root/Administrator的解决办法

nodejs安装依赖报错 (venv) PS D:\pythonProject> npm install md5 npm ERR! code EPERM npm ERR! syscall mkdir npm ERR! requiredBy: . npm ERR! } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! Its possible that the file was…

QQ群内增加ChatGPT机器人

0. 起因 最近弄了一个QQ群&#xff0c;人在逐渐增多&#xff0c;问问题的人也越来越多&#xff0c;有些问题是编程基础问题&#xff0c;2023年了&#xff0c;这些问题都不应该由人类来解决了&#xff0c;交给AI吧。所以&#xff0c;想在QQ群里加个ChatGPT机器人&#xff0c;应…

simplify3d 打印参数设置笔记

专业实用且详细的打印教程 3D打印故障排除&#xff1a;所有问题和解决方案 simplify3d 切片软件使用 初始设置 材料&#xff1a;PLA 喷头温度 215 热床温度 60 导入的模型格式 stl 保存的模型名称可以是中文 但是名称中不允许有空格&#xff0c;否则我这个打印机加热好喷头和…

GORM---初级查询

文章目录 初始数据表一般查询Where条件普通SQL查询查询 Struct & Map Not 条件Or 条件内联条件额外查询选项FirstOrInitAttrsAssign FirstOrCreateAttrsAssign 初始数据表 一般查询 var p1, p2, p3, p4 connect.PersonInfo var ps []connect.PersonInfo// 把主键升序&…

2023年陕西彬州第八届半程马拉松赛153pb完赛

1、赛事背景 2023年6月3日&#xff0c;我参加了2023陕西彬州第八届半程马拉松赛&#xff0c;最终153完赛&#xff0c;PB了5分钟。起跑时间早上7点30分&#xff0c;毕竟6月天气也开始热了。天气预报显示当天还是小到中雨&#xff0c;上次铜川宜君半马也是雨天跑的&#xff0c;阴…

为何选择C语言作为大一编程入门?

C语言&#xff0c;编程之本&#xff0c;源于生命。作为一门最接近底层的高级语言&#xff0c;学习C语言有以下重要原因&#xff1a; 探索底层&#xff1a;C语言为我们提供了理解计算机底层工作原理的机会。通过学习C语言&#xff0c;我们能更容易理解内存管理、指针操作等底层知…

前后端分离项目SpringBoot-Shiro-jwt处理401响应码的方案

问题现象&#xff1a; 现在大多数项目已经实现前后端分离&#xff0c;当采用shiro作为安全框架时&#xff0c;如果请求的token已过期或未认证请求&#xff0c;会得到401的HTTP STATUS。此时在前端还会因为401的错误弹出一个登录认证的弹框。效果如下&#xff1a; 经分析&#…

DataLeap的全链路智能监控报警实践(一):常见问题

随着字节跳动业务的快速发展&#xff0c;大数据开发场景下需要运维管理的任务越来越多&#xff0c;然而普通的监控系统只支持配置相应任务的监控规则&#xff0c;已经不能完全满足当前需求&#xff0c;在日常运维中开发者经常会面临以下几个问题&#xff1a; 任务多&#xff0c…