背景:此文档解决jmeter不熟悉或长时间不使用忘记部分操作的一些工程师,该文章可以快速解决jmeter常见的参数化使用方式和前后关联的实现方法,以及动态参数值的一些处理方案,比如随机生成手机号,姓名,身份证等
一、用户自定义变量(需掌握)
创建方式:线程组-->添加-->配置元件(config element)-->用户自定义变量
使用方法:直接添加变量名和相应的值即可,引用变量使用: ${变量名},大括号中间放变量名称,比如:${phone}
注解:"用户自定义变量"若创建在测试计划上,则对所有线程生效,若创建在线程组上,则在线程组内生效(全局组件都是一样);"用户自定义变量"通常用来定义全局变量,比如参数化文件路劲、url等,若用来做HTTP请求参数化该方式不太适合。
二、CSV Data Set Config(需掌握)
创建方式:线程组-->添加-->配置元件(config element)-->CSV数据文件设置
使用方法:
1)前置条件:先编写需使用的txt文件,内容如下
2)配置csv数据文件设置,如下:
3)使用:在http请求中引用csv生成的变量 ${变量名},如下:
三、User Parameters(使用较少,可选择性掌握)
创建方式:线程组-->添加-->前置处理器-->用户参数
使用方法:通过添加变量添加channel,location两个变量,通过添加用户添加三组数据
参数化使用:在http请求中引用参数化数据, ${变量名},如下:
四、Random函数实现参数化(重点掌握)
举例:Jmeter&postman解决随机生成手机号及姓名
- Jmeter可直接使用函数"__RandomString"生成手机号和随机姓名等
举例:
随机生成姓名:"${__RandomString(1,赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫经房裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁荀羊於惠甄曲家封芮羿储靳汲邴糜松井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫宁仇栾暴甘钭厉戎祖武符刘景詹束龙叶幸司韶郜黎蓟薄印宿白怀蒲邰从鄂索咸籍赖卓蔺屠蒙池乔阴鬱胥能苍双闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍郤璩桑桂濮牛寿通边扈燕冀郏浦尚农温别庄晏柴瞿阎充慕连茹习宦艾鱼容向古易慎戈廖庾终暨居衡步都耿满弘匡国文寇广禄阙东欧殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚那简饶空曾毋沙乜养鞠须丰巢关蒯相查后荆红游竺权逯盖益桓公万俟司马上官欧阳夏侯诸葛闻人东方赫连皇甫尉迟公羊澹台公冶宗政濮阳淳于单于太叔申屠公孙仲孙轩辕令狐钟离宇文长孙慕容鲜于闾丘司徒司空丌官司寇仉督子车颛孙端木巫马公西漆雕乐正壤驷公良拓跋夹谷宰父谷梁晋楚闫法汝鄢涂钦段干百里东郭南门呼延归海羊舌微生岳帅缑亢况郈有琴梁丘左丘东门西门商牟佘佴伯赏南宫墨哈谯笪年爱阳佟,)}${__RandomString(1,静坤琴雪荣峰俊阳军丹奎群健利南山佳宝平莱茜倩敏玲晓林,)}"
随机生成手机号:"1${__RandomString(1,356789,)}${__RandomString(9,0123456789,)}"
随机生成性别:"${__RandomString(1,男女,)}"
随机生成QQ邮箱:"${__RandomString(8,123456789,)}@qq.com"
- 使用postman随机生成姓名
可直接使用变量:"测试-{{$randomFullName}}"
3) 使用postman随机生成手机号
操作步骤:
- 在Pre-request Script 下添加代码块:
var Phone_num = '135';
for (var j = 0; j < 8; j++) {
Phone_num = Phone_num + Math.floor(Math.random() * 10);
}
pm.environment.set("Phone_num",Phone_num);
2.请求参数Body中增加变量,即可解决随机手机号
五、JDBC实现参数化(重点掌握)
注意事项:当使用下面方法不能正常连接数据库或者部分数据库时,需要看下mysqljar包是否是最新的,环境变量配置是否正确。
1)Jmeter连接数据库-操作步骤:
1.下载MySQL8.0 驱动jar包
链接:https://pan.baidu.com/s/1gTKoAYoKVoo8pitZGLeAbQ
提取码:clhp
注:下载后解压直接放在D盘根目录下即可
2.下载jmeter5.5版本同时需要安装jdk并配置环境变量
3.Jmeter配置环境变量
变量名:CLASSPATH 变量值: ;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\bin;
变量名:JMETER_HOME 变量值: E:\apache-jmeter-5.5
path %JMETER_HOME%\bin
2)打开jmeter-导入jar包
3)Database URL : jdbc:mysql://123.60.82.62:3306/nacos
4)JDBC Driver class:
六、关联(重点掌握)
作用:解决测试过程中动态值经常发生变化的,要获取并使用这些值,就需要使用关联,这里主要介绍两种,若掌握了正则表达式和json提取器,对于普通测试而言足够用于测试了。
1)正则表达式
创建方式:直接在http请求下-->添加-->后置处理器-->正则表达式提取
引用名称:Jmeter变量的名称,存储提取的结果;即下个请求需要引用的值、字段、变量名(例子中我提取的是token)
正则表达式:使用正则表达式解析响应结果,“()”表示提取字符串中的部分值,请不要使用“||”,除非你本身需要匹配这个字符
使用方法:直接添加变量名和相应的值即可,引用变量使用: ${变量名},大括号中间放变量名称,比如:$token}
2)JSON提取器(推荐使用)
创建方式:直接在http请求下-->添加-->后置处理器-->json提取器
Variable names : 名称
JSONPath Expression:JSON表达式
Match Numbers:匹配哪个,可为空即默认第一个
Default Value:未取到值的时候默认值
注意:若返回值是数组,则需要加上数组的位置,比如要取下列数组中的第一个值:
{
"code": "0",
"msg": "操作成功",
"data": {
"total": "71",
"list": [{
"id": "1652148853624496129",
"cid": null,
"accountId": "2150001",
}, {
"id": "1652147884954181634",
"cid": null,
"accountId": "2150001",
}
}
则json表达式为:$.data[0].id,提取第一个值。
兄弟们, 今天的分享就到此结束了,感觉有用可以点个赞+收藏哦,让我在多在知识的海洋里遨游,激励我后续更新更多干货知识,感谢!