总结-Jmeter使用

 

一、Jmeter目录文件讲解

bin:核心可执行文件,包含配置
jmeter.bat: windows启动文件:
jmeter: mac或者linux启动文件:
jmeter-server:mac或者Liunx分布式压测使用的启动文件
jmeter-server.bat:mac或者Liunx分布式压测使用的启动文件
jmeter.properties: 核心配置文件

extras:插件拓展的包
lib:核心的依赖包
ext:核心包
junit:单元测试包

 

二、Jmeter语言版本中英文切换

1、控制台修改
menu -> options -> choose language
2、配置文件修改
bin目录 -> jmeter.properties
默认 #language=en
改为 language=zh_CN

 

三、Jmeter基础功能组件介绍线程组和Sampler

1、添加->threads->线程组(控制总体并发)
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程
准备时长(Ramp-Up Period(in seconds)):全部线程启动的时长,比如100个线程,20秒,则表示20秒内100个线程都要启动完成,每秒启动5个线程
循环次数:每个线程发送的次数,假如值为5,100个线程,则会发送500次请求,可以勾选永远循环

 

 

 

2、线程组->添加-> Sampler(采样器) -> Http (一个线程组下面可以增加几个Sampler)
名称:采样器名称
注释:对这个采样器的描述

web服务器:
默认协议是http
默认端口是80
服务器名称或IP :请求的目标服务器名称或IP地址

路径:服务器URL

Use multipart/from-data for HTTP POST :当发送POST请求时,使用Use multipart/from-data方法发送,默认不选中。

 

 

 

 

3、查看测试结果
线程组->添加->监听器->察看结果树

用于查看执行结果

 

 

 

 

四、Jmeter的断言基本使用

1、增加断言: 线程组 -> 添加 -> 断言 -> 响应断言

 

 

 

apply to(应用范围):

Main sample only: 仅当前父取样器 进行断言,一般一个请求,如果发一个请求会触发多个,则就有sub sample(比较少用)
要测试的响应字段:
响应文本:即响应的数据,比如json等文本
响应代码:http的响应状态码,比如200,302,404这些
响应信息:http响应代码对应的响应信息,例如:OK, Found
Response Header: 响应头
模式匹配规则:
包括:包含在里面就成功
匹配:响应内容完全匹配,不区分大小写
equals:完全匹配,区分大小写

2、断言结果监听器: 线程组-> 添加 -> 监听器 -> 断言结果
里面的内容是sampler采样器的名称
断言失败,查看结果树任务结果颜色标红(通过结果数里面双击不通过的记录,可以看到错误信息)

3、每个sample下面可以加单独的结果树,然后同时加多个断言,最外层可以加个结果树进行汇总

 

五、Jmeter实战之压测结果聚合报告分析

新增聚合报告:线程组->添加->监听器->聚合报告(Aggregate Report)

lable: sampler的名称

Samples: 一共发出去多少请求,例如10个用户,循环10次,则是 100
Average: 平均响应时间
Median: 中位数,也就是 50% 用户的响应时间

90% Line : 90% 用户的响应不会超过该时间 (90% of the samples took no more than this time. The remaining samples at least as long as this)
95% Line : 95% 用户的响应不会超过该时间
99% Line : 99% 用户的响应不会超过该时间
min : 最小响应时间
max : 最大响应时间
Error%:错误的请求的数量/请求的总数
Throughput: 吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps
Received KB/Sec: 每秒接收数据量

Send KB/Sec: 每秒发送数据量

 

 

六、自定义变量和CSV可变参数实操

1、Jmeter用户自定义变量实战

线程组->add -> Config Element(配置原件)-> User Definde Variable(用户定义的变量)
引用方式${XXX},在接口中变量中使用

 

 

 

 

 

 

2、Jmeter实战之CSV可变参数压测
实战操作jmeter读取CSV和Txt文本文件里面的参数进行压测
线程组->add -> Config Element(配置原件)-> CSV data set config (CSV数据文件设置)

 

 

 

 3、CSV文件多参数使用

在读取的配置文件里面,同时使用多个自定义参数

如果是多个参数需要同时引用,则在CSV数据文件里面设置加多个字段
Variabled names(comma-delitited): csv_name,csv_pwd

 

 

 

七、Mysql数据库压测实操作

1、Jmeter压测实战之JDBC request压测Mysql讲解
简介:讲解jdbc压测mysql相关准备工作,jar包添加,配置讲解
Thread Group -> add -> sampler -> jdbc request
jar包添加 mysql-connector-java-5.1.30.jar

JDBC connection Configuration 配置
JDBC request->add -> config element -> JDBC connection configuration 核心配置

 

 

 

Max Number of connections : 最大连接数
MAX wait :最大等待时间
Auto Commit: 是否自动提交事务

DataBase URL : 数据库连接地址 jdbc:mysql://127.0.0.1:3306/blog
JDBC Driver Class : 数据库驱动,选择对应的mysql
username:数据库用户名
password:数据库密码

 

2、Jmeter压测实战之JDBC request压测Mysql, select语句


使用jmeter压测mysql,select,insert语句
Debug Sampler使用(结果树中查看)
Thread Group -> add -> sampler -> debug sampler:用户查看调试结果

参数讲解:(sql结尾不要加";")
variable name of pool declared in JDBC connection configuration(和配置文件同名)
Query Type 查询类型
parameter values 参数值
parameter types 参数类型
variable names sql执行结果变量名
result variable names 所有结果当做一个对象存储
query timeouts 查询超时时间
handle results 处理结果集

1.Query Type = Select Statement 简单的查询语句
select userid from t_userinfo where mobilenum='13500000001'

 

 

 

2.Query Type =Prepared Select Statement 预编译
select userid from t_userinfo where mobilenum=?
这时parameter values需要传入对应的参数值,parameter types传入参数的数据类型

 

 

 

3.Query Type = Update Statement 更新语句
update t_userinfo set name='张三' where mobilenum='13500000001'
(insert语句同理)

 

 

 

4.Query Type = Prepared Update Statement 预编译更新语句
update t_userinfo set name=? where mobilenum='13500000001'
(insert语句同理)

 

八、正则表达式

"data":"1112222333","msg":""OK
正则表达式提取1112222333,结果:"data":"(.*?\d)","msg"
左边界"data":
右边界,"msg"
"(.*?\d)"括号里\d+为正则表达式

正则表达式:
    ():括起来的部分就是要提取的。
*:匹配0次或更多次
    .:匹配任何字符串。
    +:一次或多次。
    ?:匹配0次或者1次

 

 

 

九、逻辑控制器

1.If Controller

此为条件判断控制器,根据内容判断是否执行此控制器之后的内容

配置说明:
Name:此控制器名称,可以自己设置;
Comments:此if控制器说明;
Expression:用于判断的表达式,可以是根据表达式获取的参数值,也可以是一个”${变量}”==”变量值”这样的表达式;
Interpret Condition as Variable Expression?:中这一项时表示:判断变量值是否等于字符串true(不区分大小写)即如果勾选则会判断表达式为true或者false,如果不勾选则需要自己写判断表达式;比如有个参数FOUND,如果勾选此项则表达式填${FOUND},如果不勾选则填“${FOUND}”==“true”;
Evaluate for all children:如果选中这一项,则在每个此控制器下的采样器的执行前都会计算表达式;

 

 

 

 2.Transaction Controller

此为事物控制器,用于采集其下采样器的花费时间
配置说明:
Name:控制器名称;
Generate Parent Sample:勾选此项,则会在查看结果树监听器中此为父节点,其下采样器为子节点来展示,否则独立显示;

 

 

Include duration of timer and pre-post processors in generated sample:如勾选此项,则会计算定时器、Pre Processors和Post Processors的时间;

 

 

 

 

3.Loop Control

Name:控制器名称;
Comments:控制器说明;
Loop Count:循环次数;
Forever:勾选此项则无限循环;

 

 

4、While Controller
这是一个循环判断控制器,如果表达式值为“false”时跳出,否则一直循环运行其下的sample;

配置说明:
Name:控制器名称;
Comments:控制器说明;
Condition:可以为blank, LAST, 或者参数、表达式,如${FOUND}或者“${FOUND}”==“true”;

 

 

5.ForEach Controller
ForEach控制器,ForEach控制器一般和用户自定义变量或者正则表达式提取器一起使用,其在用户自定义变量或者从正则表达式提取器的返回结果中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值;

配置说明:
Name:控制器名称;
Comments:控制器说明;
Input Variable Prefix:输入变量前缀;
Output variable name:输出变量名称;
Start index for loop(exclusive):循环开始的索引(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错);
End index for loop(inclusive):循环结束的索引;
Add “” before number:输入变量名称中是否使用””进行间隔

 

十、线程组之间参数的调用

  • 首先要有两个以上的线程组
  • 在其中一个线程组里使用后置处理器里的正则表达式提取器或json提取器进行一个数据的提取(token)
  • 使用函数助手__setProperty设置一个全局变量(填入new_token_name和${token})点击生成自动复制函数字符串
  • 插入后置处理器BeanShell将复制的代码粘贴进去${__setProperty(new_token_nane,${token},)};
  • 设置完毕后在其他的线程组可以使用${__P(new_token_name,)}进行一个全局变量的调用。或者再使用一次函数助手__setProperty(填入new_token_name)生成调用的函数字符串${__setProperty(new_token_name,)}进行调用。

 

posted @ 2019-09-19 23:19  五彩斑斓的黑~  阅读(302)  评论(0编辑  收藏  举报