jmeter 脚本录制/参数化/函数
使用jmeter代理录制:
-
打开浏览器的代理服务器(IP设置为127.0.0.1,端口自己设置)
-
jmeter中添加一个线程组
-
jmeter中添加非测试元件-->HTTP代理服务器
-
设置端口要与浏览器的代理服务端口一致
-
目标控制器,选择已添加的线程组
-
过滤无用的脚本,选择Requests Filter---->选择排除模式----->添加,过滤不需要的gif,php,txt,png,比如 .*\.gif.* , .*\.php.* , .*\.txt.*
-
点击启动按钮
-
浏览器访问网页
-
成功后,将没用的脚本删除,留下可用的脚本,运行,是否会成功
使用badboy录制:
-
下载badboy:http:www.badboy.com.au/
-
打开,点击工具栏上的红色圆形按钮,在地址目中输入被测试项目地址
-
录制完成后,点击工具栏旁边黑色按钮,结束录制。选择“文件”--Export to Jmeter...
- 打开jmeter,选择“文件”-->“打开”,选择刚才保存的文件(.jmx类型),将文件导入进来了。
参数化方式:
-
用户自定义变量(User Define Variables)
-
用户参数(User Variables)
-
CSV(CSV Data Set Config)
场景:注册接口,每次都需要一个没有注册过的手机号才能注册成功,因此需要参数化,每次自动生成一个不同的手机号
1.用户自定义变量
用户自定义变量有两种方式
-
测试计划中的用户定义变量
-
线程组-->配置元件-->用户定义的变量
用户定义的变量是全局变量----可以跨线程组被引用
用户定义的变量 ,在jmeter启动时获取一次值,在运行过程中,不会发生改变
eg:用函数助手(选项-函数助手对话框-选择随机数函数__Random),随机生成手机号后8位
将随机生成手机号的字符串,直接粘贴的用户定义的变量中的value中;手机号前3位号段,可以自行定义:
将用户定义的变量:mobilephone作为参数,设置到注册请求中
查看结果树,运行。
这样,就可以重复发送注册接口的请求,不需要每次修改一次手机号了
2.用户参数
用函数助手(选项-函数助手对话框-选择随机数函数__Random),随机生成手机号后8位(同上)
用户参数页面点击添加变量,填写名称
将随机生成手机号的字符串,直接粘贴的用户参数中的用户中;手机号前3位号段,可以自行定义:
将用户定义的变量:mobilephone作为参数,设置到注册请求中(同上)
重点:
用户参数只有1种方式:线程组-->前置处理器-->用户参数
用户参数是局部变量。在哪个线程组中设置的,就只能在当前线程组中被引用,不能跨线程组使用
用户参数在jmeter启动时获取一次值,在运行过程中,还会动态获取值
用户参数可设置每次迭代更新一次
扩展:线程组相当于虚拟用户数
一个线程组循环3次:
3个线程组,每个线程组循环1次:
3.CSV文件
将登录的username,password参数化在CSV文件、或者txt文件中。
添加配置元件-->CSV DATA set config
- 文件路径:最好使用相对路径 ./data.txt (./data/csv) 或者 /data.txt (/data.csv)
- 文件编码:UTF-8
- 变量名:用英文逗号分隔
- 忽略首行:True(表示忽略)、Fasle(表示不忽略)
- 分隔符(用户\t代替tab):文件里两列用什么隔开,在这输入什么。
- 是否允许带引号:一般是False
- 遇到文件结束符再次循环:True(表示循环)、False(表示不循环)
- 遇到文件结束符停止线程:True(表示结束)、False(表示不停止)
- 线程共享模式:所有线程、当前线程组、当前线程
将传入的参数username,password参数化
在线程组中设置,循环6次,那么运行查看,依次取文件里面的数据
注意:
如果txt文件中,列分隔符不是逗号,是一个tab,那么CSV控件中也要修改分隔符为\t
txt 、CSV文件,优先选择txt文件。CSV文件消耗的内存大,jmeter消耗的内存小,会直接影响性能
三、函数
注意:双下划线开头,名称区分大小写
1.__digest 加密
2.__IterationNum 迭代数
3.__threadNum 线程号 (起始值是1)
4.__property / __P获取属性
5.__setProperty 动态的设置属性
6.__randomString 生成随机字符串
7__time 获取时间戳
8__V 拼接函数
函数具体使用参见帮助文档