Jmeter概述
使用场景
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
- Database via JDBC
- SOAP / REST Webservices
- FTP
- LDAP 轻量目录访问协议
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S), POP3(S) and IMAP(S)
- TCP等等
安装
- http://jmeter.apache.org/download_jmeter.cgi(win下载zip、linux下载tgz)
- 建议安装JDK环境,虽然JRE也可以,但是压测https需要JDK里面的 keytool工具
Jmeter目录文件
-
bin:核心可执行文件,包含配置
- jmeter.bat: windows启动文件:
- jmeter: mac或者linux启动文件:
- jmeter-server:mac或者Liunx分布式压测使用的启动文件
- jmeter-server.bat:mac或者Liunx分布式压测使用的启动文件
- jmeter.properties: 核心配置文件
-
extras:插件拓展的包
-
lib:核心的依赖包
-
ext:核心包
-
junit:单元测试包
Jmeter语言版本中英文切换
- 控制台修改
- menu -> options -> choose language
- 配置文件修改
- bin目录 -> jmeter.properties
- 默认 #language=en 改为 language=zh_CN
Jmeter常用功能
线程组
Http请求常用组件
JDBC请求
Jmeter测试Http请求
-
步骤一:添加->threads->线程组(控制总体并发)
- 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程
- 准备时长(Ramp-Up Period(in seconds)):全部线程启动的时长,比如100个线程,20秒,则表示20秒内100个线程都要启动完成,每秒启动5个线程
- 循环次数:每个线程发送的次数,假如值为5,100个线程,则会发送500次请求,可以勾选永远循环
-
步骤二:线程组->添加-> Sampler(采样器) -> Http请求 (一个线程组下面可以增加几个Sampler)
-
名称:采样器名称
-
注释:对这个采样器的描述
-
web服务器:
- 默认协议是http
- 默认端口是80
- 服务器名称或IP :请求的目标服务器名称或IP地址
-
http请求:
- 路径:服务器URL(相对路径,例如 /user)
-
要发送请求体时
-
-
步骤三:线程组->添加->监听器->察看结果树(查看每条测试结果)
-
步骤四:线程组->添加->监听器->聚合报告(查看统计的测试结果)
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 KB/Sec: 每秒接收数据量
使用断言
-
增加断言: Http请求 -> 添加 -> 断言 -> 响应断言
- apply to(应用范围):
- Main sample only: 仅当前父取样器 进行断言,一般一个请求,如果发一个请求会触发多个,则就有sub sample(比较少用)
- 要测试的响应字段:
- 响应文本:即响应的数据,比如json等文本
- 响应代码:http的响应状态码,比如200,302,404这些
- 响应信息:http响应代码对应的响应信息,例如:OK, Found
- Response Header: 响应头
- 模式匹配规则:
- 包括:包含在里面就成功
- 匹配:响应内容完全匹配,不区分大小写
- equals:完全匹配,区分大小写
- apply to(应用范围):
-
断言结果监听器: Http请求-> 添加 -> 监听器 -> 断言结果
- 里面的内容是sampler采样器的名称
- 断言失败,查看结果树任务结果颜色标红(通过结果数里面双击不通过的记录,可以看到错误信息)
-
每个sample下面可以加单独的结果树,然后同时加多个断言,最外层可以加个结果树进行汇总
自定义变量
-
定义变量:线程组->add -> Config Element(配置原件)-> User Definde Variable(用户定义的变量)
-
引用方式 ${XXX},在接口中变量中使用
CSV可变参数
-
添加csv文件:线程组->add -> Config Element(配置原件)-> CSV data set config (CSV数据文件设置)
- 也可以时txt文件,但必须把分割符设置好
- 如果是多个参数需要同时引用,则在CSV数据文件里面设置加多个字段
Variabled names(comma-delitited): csv_name,csv_pwd
-
引用方式 ${XXX},在接口中变量中使用
数据库压测
-
步骤一:Thread Group -> add -> sampler -> jdbc request
-
步骤二:在测试计划添加mysql-connector-java-5.1.30.jar(jar包添加)
-
步骤三:线程组->添加->监听器->察看结果树(查看每条测试结果)
-
步骤四:线程组->添加->监听器->聚合报告(查看统计的测试结果)
-
步骤五:线程组->添加->取样器->调试取样器(查看自定的结果集)
-
步骤五:JDBC request -> add -> Config Element -> JDBC connection Configuration(配置数据库连接)
- 核心配置
1、Max Number of connections : 最大连接数
2、MAX wait :最大等待时间
3、Auto Commit: 是否自动提交事务
4、DataBase URL : 数据库连接地址 jdbc:mysql://127.0.0.1:3306/blog
5、JDBC Driver Class : 数据库驱动,选择对应的mysql
6、username:数据库用户名
7、password:数据库密码
- 核心配置
-
步骤:配置JDBC request
- 参数说明:
1、variable name of pool declared in JDBC connection configuration(和配置文件同名才能表明配套)
2、Query Type: 查询类型
3、parameter values: 参数值(当Query Type为Perpared …)
4、parameter types: 参数类型(和parameter values对应)
5、variable names: sql执行结果要封装为结果集的变量名
6、result variable name: 所有结果当做一个对象存储的名字
7、query timeouts: 查询超时时间
8、 handle results: 处理结果集 - 注意
- sql结尾不要加";"
- variable names、result variable names、 handle results 要通过调试取样器查看结果
- 参数说明: