1.压测不同的协议和应用
1)Web -HTTP,HTTPS(Java,nodejs,php,asp,.net,…)
2)SOAP / REAT Webservers
3)FTP
4)Database via JDBC
5)LDAP 轻量目录访问协议
6)Message-oriented middleware (MOM) via JMS
7)Mail - SMTP(S),POP3(S) and IMAP(S)
8)TCP等等
2.使用场景及优点
1)功能测试
2)压力测试
3)分布式压力测试
4)纯Java开发
5)上手容易
6)提供测试数据分析
7)各种报表数据图形展示
3.本地安装jmeter
GUI图形界面的安装
Java的环境—jdk8/9
下载完安装包—官网下载—http://jmeter.apache.org
不建议单独安装jre,因为压测需要https,里面的工具需要从jdk里面获取,单独安装jre是没有此工具的
4.目录
1)bin:核心可执行文件,包括配置
jmeter:window的启动文件
jmeter.bat:mac、Linux的启动文件
jmeter-server:mac或者Linux分布式压测的启动文件
jmeter-server.bat:window分布式压测的启动文件
jmeter.properties:核心配置文件
2)extras:插件拓展包
3)lib:核心依赖包
ext:核心包
junit:单元测试包
5.jmeter语言中英文切换
1)英文切换中文
2)中文切换英文
3)永久改变
在配置文件中—ctrl+f—language:zh_CN
6.创建jmeter测试计划,压测一个接口
1)创建10人线程组
2)添加http请求
3)添加查看结果树(没有添加是看不到结果的)
7.jmeter基础功能组件介绍线程组和sample
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)查看结果树
线程组->添加->监听器->查看结果树
8.jmeter的断言结果
1)响应文本
2)响应代码
例如状态码
9.断言及基本使用
1)增加断言:线程组->添加->断言->响应断言
apply to(应用范围):
main sample only:仅当前父取样器 进行断言,一般一个请求,如sample(比较少用)
要测试的响应字段:
响应文本:即响应的数据,比如json等文本
响应代码:http的响应状态码,比如200,302,404这些
响应信息:http响应代码对应的响应信息,例如:OK,Found
Response Header:响应头
模式匹配规则:
包括:包含在里面就成功
匹配:响应内容完全匹配,不区分大小写
equals:完全匹配
2)断言结果监听器:线程组->添加->监听器->断言结果
里面的内容是sampler采样器的名称
断言失败,查看结果树任务结果颜色标红(通过结果数里面双击不通过的记录)
3)每个sample下面可以加单独的结果树,然后同时加多个断言,最外层可以加个结果树进行汇总
10.压测结果聚合报告分析
新增聚合报告:线程组->添加->监听器->聚合报告(Aggregate Report)
聚合报告:
label:sample名称,可以看出一个接口
samples:总共发出多少个请求
average:平均响应时间
median:中位数,50%的用户都是这个响应时间
90% Line:90%的用户响应不会超过这个值
。。。
min:最小响应时间
max:最大响应时间
error%:错误的请求总数/请求总数
Throughput:吞吐量,qps
11.jmx脚本文件
12.jmeter用户自定义变量实战
很多变量在全局中都有使用,或者测试数据更改,可以在一处定义,四处使用,比如服务器地址
1)线程组->add ->Config Element(配置原件)->user define variable(用户定义的变量)
2)引用方式${XXX},在接口中变量中使用
3)原始查看结果树和非原生查看(基础按钮)
13.jmeter实战值csv可变参数压测实战
1)实战操作jmeter读取csv和Txt文本文件里面的参数进行压测
2)线程组->add->Config Element(配置原件)-> CSV data set config(csv数据文件设置)
14.jmeter的多参数使用
15.jmeter压测JDBC request压测mysql
1)Thread Group->add->sampler->jdbc request
2)jar包添加 mysql-connector-java-5.1.30.jar
3)参数讲解:(sql结尾不要加“:”)
variable name of pool declares in JDBC connection configuration(和配置文件同名)
Query Type 查询类型
parameter values 参数值
variable names sql执行结果变量名
result variable names 所有结果当作一个对象存储
query timeouts 查询超时时间
handle results 处理结果集
4)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:数据库密码