JMeter笔记

一、断言

背景:对响应数据进行断言校验,判断是否请求成功。接口返回200和403,或者200带结果数据和200不带结果数据,是代表不一样的意思,如果不加断言,把他们都当成请求成功,那么跑出来的结果和实际的结果就有误差了。

操作:在需要断言的请求中或者线程组增加断言->响应断言(如果是在某个请求下,则仅断言该请求,如果是在线程组下,则会断言属于该线程组的所有请求)

规则:可直接校验文本或者使用正则表达式,不满足断言条件时,即使请求成功有正确响应,也是被当成失败的

示例:校验响应文本中包含“000000”

image.png

二、参数化

背景:比如token、用户账号,不是固定不变的值,需要动态从某处获取之后使用,这时候需要将这个值param作为变量,将该变量参数化,使用时用${param}代表需要参数化的参数

JMeter参数化的四种方式:

  • 函数助手
  • CSV Data Set Config
  • 用户自定义变量
  • 用户参数
  1. CSV Data Set Config

从文件中读取数据,支持.csv、.txt、.dat三种格式

示例:读取文件中的id作为merchantId

image.png
image.png
  • Filename:文件名称,如果放在JMeter的bin目录下,则只需给出相对路径或者文件名,如果在其它位置则需说明绝对路径
  • File encoding:文件编码格式,可使用UTF-8、GBK等
  • Variable Names:文件中变量的名称,如有多个则用’,’隔开
  • Ignore first line:是否忽略文件中的首行
  • Delimiter:分隔符,一般用默认的’,’,或者’\t’代表tab键
  • Allow quoted data?:是否允许数据内容加引号
  • Recycle on EOF?:到了文件结尾是否循环
  • Stop thread on EOF?:到了文件结尾是否停止线程,此项和Recycle on EOF为互斥关系
  • Sharing mode:共享模式,所有线程(每个线程一次读取数据,互不重复)、当前线程组(每个线程组内的线程依次读取数据,互不重复)、当前线程(在此元件作用范围内,每次循环中所有线程取值一样)

如果想发起多次请求,循环取值,可以给该请求增加循环控制器

示例:将接口写在文件中,依次读取接口数据发起请求

image.png
image.png

image.png

此时需要注意,Allow quoted data值应为true,因为数据中有值中是包含引号的

2. 函数助手

通过函数助手生成表达式,如生成随机数、读取csv文件等

在选项或者工具中->函数助手

示例:生成17-34内的随机数字作为id

image.png

在函数表达式助手中生成表达式,将表达式复制到变量中

image.png

三、正则表达式提取器

背景:需要提取请求、响应中的某个字段作为下一个请求的入参时,需要用到正则表达式提取器

一般在需要获取数据的请求中添加

引用名称:提取出的参数名param,要引用的地方使用${param}

正则表达式:

():表示这部分是要提取的

.:匹配任何字符串

+:一次或多次

?:找到第一个匹配项后停止

模板:解析到的第几个值给param,如果是第一个则$1$,如果有多个则可以用$2$$3$

匹配数字:0代表随机取值

默认值:如果没有取到值,默认给一个参数

示例:提取/getMerchants接口响应报文中的id值,作为merchantId参数供后面/getPayChannelInfo接口使用,在需要用到该参数的地方用${merchantId}表示

image.png
image.png

四、JDBC

背景:需从数据库中取值作为接口请求数据,或者从数据库中取值进行校验,需要用JDBC

操作:下载mysql驱动:https://mvnrepository.com/artifact/mysql/mysql-connector-java放到\lib文件夹下

配合JDBC连接配置使用,配置数据库地址、账号信息

规则:JDBC连接配置和JDBC请求的名称需对应

示例:读取表mch_merchant的id值作为merchantId值

image.png
image.png

如果需要将查询结果作为参数循环传递给接口,可结合循环控制器和计数器使用

id_#代表结果总数,设置循环控制器的次数为${id_#}

image.png

新增计数器,初始值为1,最大值为${id_#},获得该次数N

image.png

结合函数助手,获取第N次的结果为${_V(id${N})}

image.png

五、BeanShell

背景:需要自定义一些函数进行特殊处理,或者调用java文件、导入外部jar包时,会用到BeanShell

规则:通过vars.get(“key”)取值,通过vars.put(“key”,”value”)

  1. 自定义函数,直接在BeanShell脚本中写函数
  2. 调用java文件,在BeanShell脚本中指定该java文件的存放位置,source(“文件路径”)
  3. 导入外部jar包

将jar包放在JMeter的\lib\ext文件下,在BeanShell脚本中import该jar包

示例:写一个生成17-34的数字的函数并将值赋给merchantId

image.png

六、命令方式执行

背景:使用GUI方式启动JMeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死。一般是在GUI模式下调整测试脚本,再用命令行模式执行。

命令:JMeter.bat -n -t D:\hyy\性能测试\TestPlan.jmx -l D:\hyy\logfile.jtl

-n 非GUI模式下运行

-t 测试计划

-l 结果文件

-r 远程执行

-H 代理主机

-P 代理端口

image.png

报告查看,在报告元件中打开日志文件

image.png
image.png

除了jtl文件,也可以选择生成csv文件

七、监听器插件
JMeterPlugin可以把JMeter生成的jtl文件做出各种统计图
1、直接下载ZIP包
https://jmeter-plugins.org/downloads/old/
将下载好的JMeterPlugins-Extras.jar放到JMeter的\lib\ext目录下面,然后重启JMeter即可
直接添加监听器,可以看到已经添加的插件

image.png

2、插件管理器Plugins Manager
https://jmeter-plugins.org/install/Install/
jmeter-plugins-manager.jar下载完成之后,将jar文件放置到JMeter的\lib\ext目录下面,然后重启JMeter即可
在JMeter的选项Option中打开Plugins Manager,对需要的插件进行下载。
image.png

image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,671评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,442评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,524评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,623评论 1 275
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,642评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,584评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,953评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,621评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,865评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,608评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,698评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,378评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,958评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,940评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,173评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,419评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,425评论 2 342

推荐阅读更多精彩内容