Jmeter接口测试常用元件使用方法
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请求】


自定义变量&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值
④线程组中的次数



浙公网安备 33010602011771号