测试开发 | 电商业务性能测试: Jmeter 参数化功能实现注册登录的数据驱动

1. 前置条件

此例使用的是 GitHub 上一个开源的电商项目 mall,需要的可以去 GitHub 上下载部署,有详细的部署教程:

GitHub地址:https://github.com/macrozheng/mall

部署教程:https://macrozheng.github.io/mall-learning/#/README

2. 场景抽离

首先我们需要对测试的场景进行抽离,明确场景的接口、参数和比例。通过查看API文档,我们抽离除了如下注册的业务流程:

总结如下:

  • 业务流程:验证码->注册->登录,
  • 接口比例:这三个接口场景的比例为1:1:1关系
  • 数据传递:获取的鉴权信息需保存后未后续的请求做数据支持

3.实操演示

3.1 IP + 端口的数据驱动

在每一个接口请求中,都需要输入请求的ip和端口,这样费事费力。因此jmeter提供了CSV Data Set Config来将数据从外部文件读取, HTTP Request Defaults设置请求默认值,这两种方法配合使用便可完成IP + 端口的数据驱动

CSV Data Set Config从外部文件读取数据

1、如下图位置选择

2、设置CSV Data Set Config

首先创建好需要导入的数据文件,这里需要的是 IP 和端口:

设置CSV Data Set Config

设置说明:

  • Filename:填入你需要导入的文件地址
  • File encoding:选择编码方式,特别是有中文的时候记得要选UTF-8
  • Variable Names:设置变量名,要和数据文件中的格式一一对应
  • Ignore first line:是否忽视第一行,有时候我们数据文件的第一行可能是个说明title,并不是我们实际需要的数据,这个时候就可以在此选择true,将其忽略
  • Delimiter(use '\t' for tab):如果你的数据文件的数据之间使用tab进行分割的,这里就填\t用来说明是tab分割,如果是用逗号,分割的,那么就直接填入逗号,即可

HTTP Request Defaults设置请求默认值

1、选择HTTP Request Defaults

2、设置HTTP Request Defaults参数化

将请求的ip和端口进行参数化,格式是${参数};参数要与CSV Data Set Config中设置的保持一致,这样设置好以后,后面所有的请求都可以不用再填写ip和端口了

3.2 前置处理器JSR223 PreProcessor

查看项目API文档,知道了获取验证码的接口需要传电话号码作为参数,而性能测试需要很多并发,所以电话号码肯定是通过参数传递进入,且不可重复;

为了解决上述问题,我们可以引入前置处理器JSR223 PreProcessor,他可以在其中写入Java代码运行,这样就很方便造数据了:

另外在login接口返回值需要获取token,将获取的token存入指定文件中,以备后面的请求使用

3.3 返回值获取传递

JSON Extractor

在上述接口中,会返回验证码用于注册;同样的在登录接口中会返回token用于鉴权;那么就可以利用JSON Extractor来完成

1、添加JSON Extractor

2、设置变量名和json路径

3.4 结果调试

有时候想看下脚本对不对,可以利用Debug Sampler来进行调试

可以看到所有的变量值,最终完成脚本调试,顺利通过。

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

相关推荐
程序员勋勋12 分钟前
【自动化测试】如何在jenkins中搭建allure
职场和发展·jenkins·测试覆盖率
独行soc28 分钟前
#渗透测试#SRC漏洞挖掘#深入挖掘XSS漏洞02之测试流程
web安全·面试·渗透测试·xss·漏洞挖掘·1024程序员节
咕咕吖36 分钟前
对称二叉树(力扣101)
算法·leetcode·职场和发展
理想不理想v42 分钟前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
测试杂货铺2 小时前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
王佑辉2 小时前
【redis】redis缓存和数据库保证一致性的方案
redis·面试
真忒修斯之船2 小时前
大模型分布式训练并行技术(三)流水线并行
面试·llm·aigc
ZL不懂前端2 小时前
Content Security Policy (CSP)
前端·javascript·面试
测试界萧萧3 小时前
外包干了4年,技术退步太明显了。。。。。
自动化测试·软件测试·功能测试·程序人生·面试·职场和发展