一、什么是JMeter
Apache JMeter™应用程序是开源软件,是一个100%纯Java应用程序,设计用于加载测试功能行为和度量性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。
二、JMeter可以做什么
Apache JMeter可以用于测试静态和动态资源(Web动态应用程序)上的性能。它可以用来模拟服务器、服务器组、网络或对象上的高负载,以测试其强度或分析不同负载类型下的总体性能。
2.1 Apache JMeter功能包括
- 能够加载和性能测试许多不同的应用程序/服务器/协议类型:
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
- SOAP / REST Webservices
- FTP
- Database via JDBC
- LDAP
- Message-oriented middleware (MOM) via JMS
- Mail - SMTP(S), POP3(S) and IMAP(S)
- Native commands or shell scripts
- TCP
- Java Objects
- 全功能的测试IDE,允许快速的测试计划记录(从浏览器或本机应用程序),构建和调试。
- 命令行模式(命令行模式(以前称为非GUI) / headless模式)从任何Java兼容的操作系统(Linux, Windows, Mac OSX,…)加载测试
- 一个完整的,准备好呈现动态HTML报告
- 通过从最流行的响应格式(HTML、JSON、XML或任何文本格式)提取数据的能力,可以轻松地关联
- 完全的可移植性和100%的Java纯度。
- 完整的多线程框架允许多个线程并发采样,并允许不同线程组同时采样不同的函数。
- 缓存和离线分析/重放测试结果。
- 高度可扩展的核心:
- 可插拔取样器允许无限的测试能力。
- 可脚本化的采样器(兼容jsr223的语言,如Groovy和BeanShell)
- 几种负载统计信息可以用可插拔计时器来选择。
- 数据分析和可视化插件允许极大的扩展性和个性化。
- 函数可用于为测试提供动态输入或提供数据操作。
- 通过第三方开源库Maven、Gradle和Jenkins轻松持续集成。
三、环境准备
3.1 Jmeter下载
3.2 下载mysql数据库的驱动包
3.3 测试服务器准备
序号 | 服务器类型 | CPU | 内存 | IP地址 | 系统环境 |
1 | CentOS 7 | 四核 | 4G | 192.168.61.63 |
四、Jmeter安装
4.1 将文件解压到指定文件下,找到启动脚本,双击启动
4.2 启动成功后,Jmeter图形化界面如下
五、Jmeter配置
5.1 添加MySQL驱动
点击“测试计划”,然后点击下方的“浏览”,在弹出的窗口中选择我们之前下载的mysql驱动包
5.2 新建一个线程组
设置线程数100,循环次数10000,共计1000000条数据
5.3 添加MySQL链接
5.4 添加JDBC Request
配置JDBC Request,以及建表语句:
-- singleTest.t_user definition
CREATE TABLE `t_user` (
`userid` varchar(64) NOT NULL COMMENT '用户id',
`name` varchar(20) NOT NULL COMMENT '姓名',
`age` int(11) NOT NULL COMMENT '年龄',
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
5.5 添加随机变量
配置随机变量:randomage,取值区间为:18~60
5.6 添加响应断言
5.7 添加断言结果
5.8 添加查看结果树
5.9 添加图形结果
5.10 添加聚合报告
5.11 添加汇总报告
六、数据库压测
6.1 图形化测试
配置合适的线程和循环次数,点击执行按钮,等待压测完成。
查看压测结果,平均值8ms,吞吐量(QPS和TPS)10540.7/sec
6.2 命令测试
6.2.1 修改测试计划
修改测试计划为:100线程,循环10000次,共计插入数据1000000条。
6.2.2 执行测试命令
6.2.2.1 切换CMD目录地址
6.2.2.2 执行命令
# .\result\t_user\singleTest.jtl --> 测试结果存放路径
# .\result\t_user\singleTest --> 存放web报告保存路径,如果没有该路径,可以自动生成
.\jmeter.bat -n -t .\test-demo\单库\MySQL单库测试线程组.jmx -l .\result\t_user\singleTest.jtl -e -o .\result\t_user\singleTest
生成压测web报告如下:
6.2.2.3 命令介绍
jmeter -n -t -l
示例: jmeter -n -t testplan.jmx -l test.jtl示例含义:则表示以命令行模式运行testplan.jmx文件,输出的日志文件为test.jtl
参数介绍
这里是我们使用非 GUI 模式运行测试脚本时可以使用的一些命令,Jmeter官网用户手册介绍如下:
-h, –help -> prints usage information and exit
-n, –nongui -> run JMeter in nongui mode
-t, –testfile -> the jmeter test(.jmx) file to run
-l, –logfile -> the file to log samples to
-r, –runremote -> Start remote servers (as defined in remote_hosts)
-H, –proxyHost -> Set a proxy server for JMeter to use
-P, –proxyPort -> Set proxy server port for JMeter to use具体的含义如下:
-h 帮助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-r 远程执行 -> 在Jmter.properties文件中指定的所有远程服务器
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号