美文网首页
JMeter笔记

JMeter笔记

作者: circle_hyy | 来源:发表于2022-01-17 18:48 被阅读0次

    一、断言

    背景:对响应数据进行断言校验,判断是否请求成功。接口返回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

    相关文章

      网友评论

          本文标题:JMeter笔记

          本文链接:https://www.haomeiwen.com/subject/hbachrtx.html