Jmeter性能测试——脚本制作与调优
在jemeter中编写脚本注意点
一个完整的http接口包括三个部分:
- 线程组
- 取样器
- 监听器-察看结果树:请求红色代表请求失败,绿色代表接口请求网络通,即响应码为200
接口不通时,需要检查:
- 请求体
- 返回结果
请求参数的“编码”什么时候勾选?如果参数值中有中文或者特殊字符,必须勾选。建议只要有参数就勾选。
在jmeter中,请求体重的【参数】、【消息体数据】两者是互斥的,只能存在一个。
restful接口中,参数有值,消息体数据中也有值是怎么办?将参数值写到url里。
Badboy录制脚本
这款工具只有windows里有,目前已经不更新。不推荐该方法。
先安装badboy,在badboy里输入网址,录制到接口信息以后,将录制的信息导出为jmter的jmx文件(Export to Jmeter),在jmeter里可以直接打开这个脚本文件。
不推荐该方法的原因:badboy内嵌浏览器为系统当前默认浏览器,只能录制web请求。并且工具不能解析最新版本的JS 脚本。
http代理服务器录制
优点:不挑浏览器版本。
- 在测试计划下添加线程组。
- 右键测试计划,选择非测试元件,找到http代理服务器。 配置注意点:
【Test Plan Creation】
端口:可以保持默认,只要不冲突就行。
目标控制器:默认值为“使用目标控制器”,一定要修改,修改为选择一个线程组。后续录制到的请求都会添加到选择的线程组里去。
其他值保持默认即可。
【Requests Filtering】
录制请求过滤器。用的较多的是排除模式,添加建议排除。 - 点击启动。会有一个弹窗,生成证书。
- 打开 谷歌浏览器 进入设置 >高级 > 打开您计算机的代理设置。把使用代理服务器开关打开,地址写本机127.0.0.1,端口写第2步中设置的端口号。
- 录制https请求,需要加证书。参考文章:https://www.cnblogs.com/tudou-22/p/9603550.html
- 停止录制以后,记得关闭代理设置。
脚本优化
-
录制的脚本优化
添加察看结果树
选中不需要的请求,禁用。
禁用之后,回放,请求都成功。删除禁用的请求。 -
编写的脚本优化
参数化(1)
配置元件>用户定义变量,添加变量
需要使用变量的地方用参数格式替换: ${参数名称}
参数化(2)
前置处理器 > 用户参数
替换参数。
用户定义变量和用户参数之间的区别:前者在启动运行时获取一次值,在运行过程中不会再去获取,可以理解为全局变量。用户参数在启动和运行过程中都会动态去获取值,使用一次取一次,可以理解为局部变量。
函数
选项> 函数助手 >选择函数 > 生成,函数字符串便生成到了粘贴板,可以粘贴到参数里面使用函数生成的值。
__Random:生成随机数字
__RandomString:生成随机字符串
__Digest:简单的加密,例如md5
__P:获取属性,jmeter.property文件。
__property:同P
__setProperty:设置属性值
__time:时间函数,没有参数时获取当前时间戳。
__V:参数名拼接
__CSVRead:读取CSV文件,不推荐使用。
获取线程数,测试计划名称等都可以使用函数。
选择函数以后,点击帮助,可以跳转到官方帮助文档进行查看。
CSV数据文件设置
配置元件 > CSV数据文件设置
CSV数据文件设置的优先级,比用户定义变量和用户的参数都要高。
支持两种文本型文件格式:.csv 和 .txt
变量名称:定义csv文件里的值属于哪个变量。
忽略首行:false:不忽略,ture忽略。
分隔符:默认为逗号,可以修改。
是否允许带引号: ture表示如果有引号,会自动去掉引号。false则不会。
在需要使用变量的地方,引用csv数据文件设置里的变量名称就可以了。
注意,如果csv里有中文,需要用文本编辑器打开,转换为utf-8编码以后保存再使用。如果是用excel保存,默认编码格式不是utf-8,会出现中文乱码。所以推荐使用txt文件,因为Windows下默认的记事本编辑器默认的编码方式为utf-8. MAC系统默认编码方式即为utf-8,不会存在编码问题。
tips:使用【调试取样器】运行会读取所有参数。