JMeter下载安装及配置
JMeter下载安装很简单,这里就不在赘述
下载地址:https://jmeter.apache.org/download_jmeter.cgi
注意事项:jdk版本要求8以上,版本过低或未安装则Jmeter无法运行;将Jmeter的bin目录路径添加到系统变量Path中
使用Jmeter一定要注意作用域,各元件位置不同产生的效果也不相同,元件可拖动至相应位置
运行Jmeter
修改Jmeter语言,若使用的是ApacheJMeter.jar并修改语言,则每次运行ApacheJMeter.jar都会是上次所选语言
若通过jmeter.bat使用上面的方法修改,仅当此生效,如需长期生效需修改jmeter.properties文件,找到language=en去掉注释#,将en改为zh_CN
HTTP请求
1、启动后左侧界面只显示测试计划, 右键测试计划, 【添加】→【线程(用户)】→【线程组】
2、右键线程组,【添加】→【取样器】→【HTTP请求】
表单(即键值对)和Json/xml格式不用解释,直接填入相应的请求参数值即可,文件上传需要注意:
1、点击【高级】,设置客户端实现方式,实现选择【Java】,然后回到【基础】→【文件上传】→【添加】,若文件与脚本不在同级目录则需加上文件路径,比如:E:\\tupian.jpg,然后填写参数名称,MIME类型可为空
2、若未配置【高级】,则文件必须与脚本在同一目录,且MIME类型不得为空,MIME类型通常填写“multipart / form-data”,请依实际接口为准
自定义变量&HTTP请求默认值
为了简化操作,我们添加用户自定义变量和HTTP请求默认值
1、右键测试计划或线程组,【添加】→【配置元件】→【用户自定义变量】
2、右键测试计划或线程组,【添加】→【配置元件】→【HTTP请求默认值】
引用变量书写格式 ${变量名},使用变量能更好的维护脚本
察看结果树
1、右键测试计划或线程组,【添加】→【监听器】→【察看结果树】
2、点击运行按钮
3、查看响应结果
添加注册接口,运行发现报“非法请求”,若有接口文档应查看接口文档是否缺少相应参数,若没文档应结合抓包工具查看请求信息(此地址是网上找的,没有接口文档,已了解接口之间的关联关系)
中文返回乱码问题
请求返回的json字符串或者xml文件中, 响应数据中文常常会显示成乱码此处提供两种方法
方法一:每次创建脚本都填写一下内容编码UTF-8
方法二: 修改jmeter.properties文件中的sampleresult.default.encoding=ISO-8859-1,去掉注释#,将ISO-8859-1改为UTF-8
json提取器
通过Fiddler抓包工具了解到用户注册需要有auth的token,我们可以通过json提取器或正则表达式获得token值,此处以json为例
右键需要提取的请求,【添加】→【后置处理器】→【JSON提取器】
正则表达式提取器
右键需要提取的请求,【添加】→【后置处理器】→【正则表达式提取器】
正则表达式的使用可以看一下相关文章系统学习一下
. 表示任意字符串
+ 表示匹配一次或多次,也可以使用*号
? 表示匹配第一个匹配项后停止匹配,即非贪婪匹配
HTTP信息头管理器
右键测试计划或线程组,【添加】→【配置元件】→【HTTP信息头管理器】
在信息头元件中引用json提取器变量名,使用正则表达式提取器则使用正则表达式提取器中的引用名称
再次运行请求接口,提示“注册成功”
调试取样器
当使用变量应用时可以添加调试取样器,通过运行结果查看变量是否成功提取/引用,等所有接口或者说业务场景通过后再禁用或删除调试取样器
右键线程组,【添加】→【取样器】→【调试取样器】
运行脚本,查看调试取样器的响应数据
函数助手
【工具】→【函数助手对话框】,选择相应函数,此处想要生成随机数,故选择Random
将生成的函数粘贴到用户名通过拼接,可以一次注册多个账号
响应断言
为了便于判断多个账号是否成功注册,通过添加断言判断结果
通过运行结果可以看到,有三条注册失败了
CSV数据文件设置
创建数据
设置数据文件
引用变量 ${变量名}
仅一次控制器
为了让结果更直观,我们把获取token请求仅执行一次
右键线程组,【添加】→【逻辑控制器】→【仅一次控制器】,将仅运行一次的请求拖拽至控制器内 (作用域的重要性不要忘记哦)
添加断言
因为数据文件中有5条数据,所以线程组中循环次数要填写5,然后执行脚本,执行结果就一目了然啦
如果(if)控制器
当业务场景有条件判断时就需要用到if控制器啦,比如:登录的用户才能继续操作,不允许未实名的用户操作,只允许指定用户操作,已实名且余额充足才能操作,已实名或指定用户操作等
右键线程组,【添加】→【逻辑控制器】→【如果(if)控制器】,将需要判断的请求拖拽至控制器内
根据提示我们使用函数助手计算表达式
将生成的函数粘贴到输入框,表达式支持组合使用:与&&,或||
通过结果我们可以看到5条数据有4个成功登录,说明上面的表达式已经成功禁止用户yad2登录了!
JDBC Connection Configuration
使用JMeter连接并操作数据库,第一步是需要下载JDBC驱动,下载地址:https://dev.mysql.com/downloads/connector/j/
将下载包解压,将解压文件中的mysql-connector-java-版本号.jar添加到Jmeter测试计划中
右键测试计划或线程组,【添加】→【配置元件】→【JDBC Connection Configuration】
Database URL: jdbc:mysql://IP:3306/数据库名
JDBC Driver class: com.mysql.jdbc.Driver
JDBC Request
右键线程组,【添加】→【取样器】→【JDBC Request】
添加察看结果树元件,运行脚本就可以查询到数据啦
吞吐量控制器
要模拟在同一线程组内做10个并发,8个做业务A,2个做业务B的场景,可以通过吞吐量控制器来实现
右键线程组,【添加】→【逻辑控制器】→【吞吐量控制器】,将请求拖拽至控制器内
此处只粘贴基于百分比控制的示例截图,基于总数控制使用方法与百分比控制相同;在一个线程组内总数控制器和百分比控制器可组合使用;勾选Per User后所填占比数将失效,结果将是实际并发数,请自行操作验证实际响应结果
JMeter中易犯的错误:
①各元件之间的作用域
②信息头中的信息
③Cookie值
④线程组中的次数