实战 | 电商业务性能测试(二): 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
来进行调试
可以看到所有的变量值,最终完成脚本调试,顺利通过。
** _4.
来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
QQ交流群:484590337
公众号 TestingStudio
点击获取更多信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了