Jmeter性能测试——脚本制作与调优

在jemeter中编写脚本注意点

一个完整的http接口包括三个部分:

  • 线程组
  • 取样器
  • 监听器-察看结果树:请求红色代表请求失败,绿色代表接口请求网络通,即响应码为200

接口不通时,需要检查:

  • 请求体
  • 返回结果
    请求参数的“编码”什么时候勾选?如果参数值中有中文或者特殊字符,必须勾选。建议只要有参数就勾选。

在jmeter中,请求体重的【参数】、【消息体数据】两者是互斥的,只能存在一个。
restful接口中,参数有值,消息体数据中也有值是怎么办?将参数值写到url里。

Badboy录制脚本

这款工具只有windows里有,目前已经不更新。不推荐该方法。
先安装badboy,在badboy里输入网址,录制到接口信息以后,将录制的信息导出为jmter的jmx文件(Export to Jmeter),在jmeter里可以直接打开这个脚本文件。
不推荐该方法的原因:badboy内嵌浏览器为系统当前默认浏览器,只能录制web请求。并且工具不能解析最新版本的JS 脚本。

http代理服务器录制

优点:不挑浏览器版本。

  1. 在测试计划下添加线程组。
  2. 右键测试计划,选择非测试元件,找到http代理服务器。 配置注意点:
    【Test Plan Creation】
    端口:可以保持默认,只要不冲突就行。
    目标控制器:默认值为“使用目标控制器”,一定要修改,修改为选择一个线程组。后续录制到的请求都会添加到选择的线程组里去。
    其他值保持默认即可。
    【Requests Filtering】
    录制请求过滤器。用的较多的是排除模式,添加建议排除。
  3. 点击启动。会有一个弹窗,生成证书。
  4. 打开 谷歌浏览器 进入设置 >高级 > 打开您计算机的代理设置。把使用代理服务器开关打开,地址写本机127.0.0.1,端口写第2步中设置的端口号。
  5. 录制https请求,需要加证书。参考文章:https://www.cnblogs.com/tudou-22/p/9603550.html
  6. 停止录制以后,记得关闭代理设置。

脚本优化

  • 录制的脚本优化
    添加察看结果树
    选中不需要的请求,禁用。
    禁用之后,回放,请求都成功。删除禁用的请求。

  • 编写的脚本优化
    参数化(1)
    配置元件>用户定义变量,添加变量
    需要使用变量的地方用参数格式替换: ${参数名称}
    参数化(2)
    前置处理器 > 用户参数
    替换参数。
    用户定义变量和用户参数之间的区别:前者在启动运行时获取一次值,在运行过程中不会再去获取,可以理解为全局变量。用户参数在启动和运行过程中都会动态去获取值,使用一次取一次,可以理解为局部变量。

函数

选项> 函数助手 >选择函数 > 生成,函数字符串便生成到了粘贴板,可以粘贴到参数里面使用函数生成的值。
Jmeter性能测试——脚本制作与调优

__Random:生成随机数字
__RandomString:生成随机字符串
__Digest:简单的加密,例如md5
__P:获取属性,jmeter.property文件。
__property:同P
__setProperty:设置属性值
__time:时间函数,没有参数时获取当前时间戳。
__V:参数名拼接
__CSVRead:读取CSV文件,不推荐使用。
获取线程数,测试计划名称等都可以使用函数。
选择函数以后,点击帮助,可以跳转到官方帮助文档进行查看。

CSV数据文件设置

配置元件 > CSV数据文件设置
CSV数据文件设置的优先级,比用户定义变量和用户的参数都要高。
支持两种文本型文件格式:.csv 和 .txt
Jmeter性能测试——脚本制作与调优
变量名称:定义csv文件里的值属于哪个变量。
忽略首行:false:不忽略,ture忽略。
分隔符:默认为逗号,可以修改。
是否允许带引号: ture表示如果有引号,会自动去掉引号。false则不会。
在需要使用变量的地方,引用csv数据文件设置里的变量名称就可以了。
注意,如果csv里有中文,需要用文本编辑器打开,转换为utf-8编码以后保存再使用。如果是用excel保存,默认编码格式不是utf-8,会出现中文乱码。所以推荐使用txt文件,因为Windows下默认的记事本编辑器默认的编码方式为utf-8. MAC系统默认编码方式即为utf-8,不会存在编码问题。
tips:使用【调试取样器】运行会读取所有参数。