JMeter教程
JMeter教程
1.什么是JMeter
Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。
适用的测试领域:
- 用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
- JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。
- Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java对象,数据库和查询,FTP服务器等等)的性能进行测试。
- 接口测试
- 数据库压力测试
- 批量产生测试数据
2.JMeter下载
下载地址:
https://downloads.apache.org/jmeter/binaries/
解压配置环境变量
注意:一定要安装JDK(最新的JMeter需要jdk1.8)并配置环境变量
3.启动JMeter的两种方式
- bat
- jar
4.JMeter工作界面的介绍
4.1添加线程组
线程组中常用的一些设置:
- 线程数:这里就是指虚拟用户数,默认的输入是“1”,则表明模拟一个虚拟用户访问被测系统,如果想模拟100个用户,则此处输入100。
- Ramp-Up Period (in seconds): 虚拟用户增长时长。
- 循环次数:该处设置一个虚拟用户做多少次的测试。默认为1,意味着一个虚拟用户做完一遍事情之后,该虚拟用户停止运行。
4.2添加http请求
线程组-添加-Sample-HTTP请求
- IP地址
- 端口号
- 请求方法
- 请求参数:
Parameters、Body Data
由于POST请求方式,如果不设置Headers的content-type,基本默认会以 application/x-www-form-urlencoded 方式提交数据。为了Post请求确保传的是json格式,还需要在请求头中声明一下请求参数的格式为json,具体操作如下:
Thread Group右键Add-Config Element-HTTP Header Manager,打开HTTP信息头管理器,Add一个Name为Content-Type,Value为application/json,如下图,一个json格式的post请求完成了
5.运行脚本查看响应结果
5.1查看结果树
5.2查看聚合报告
聚合报告参数:
- Label:每个请求的名称,比如HTTP请求等
- #Samples:发给服务器的请求数量
- Average:平均响应时间
- Median:中位数,也就是50%用户的响应时间
- 90% Line ~ 99% Line:90% ~99%用户的响应时间
- Min:最小响应时间
- Maximum:最大响应时间
- Error%:本次测试中出现的错误率,即 错误的请求的数量/请求的总数
- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction
- Received KB/src:每秒从服务器端接收到的数据量
- Sent KB/src:每秒从客户端发送的请求的数量
6.非GUI模式
使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资。
命令介绍:
jmeter -n -t <testplan filename> -l <listener filename>
示例含义:则表示以命令行模式运行testplan.jmx文件,输出的日志文件为test.jtl
7.JMeter常用插件
7.1下载地址:jmeter-plugins.org
安装:下载后文件为plugins-manager.jar格式,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可。
- Installed Plugins(已安装的插件):即插件jar包中已经包含的插件,可以通过选中勾选框,来使用这些插件;
- Available Plugins(可下载的插件):即该插件扩展的一些插件,可以通过选中勾选框,来下载你所需要的插件;
- Upgrades(可更新的插件):即可以更新到最新版本的一些插件,一般显示为加粗斜体,可以通过点击截图右下角的Apply Changes and Restart Jmeter按钮来下载更新;
- PS:一般不建议进行更新操作,因为最新的插件都有一些兼容问题,而且很可能导致jmeter无法使用(经常报加载类异常)!
建议使用jmeter的3.2版本来尝试更新这些插件。
7.2 Transactions per Second
即TPS:每秒事务数,性能测试中,最重要的2个指标之一。该插件的作用是在测试脚本执行过程中,监控查看服务器的TPS表现————比如整体趋势、实时平均值走向、稳定性等。
三、Response Times Over Time
事务响应时间,性能测试中,最重要的两个指标的另外一个。该插件的主要作用是在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等。
四、PerfMon Metrics Collector
即服务器性能监控数据采集器。在性能测试过程中,除了监控TPS和TRT,还需要监控服务器的资源使用情况,比如CPU、memory、I/O等。该插件可以在性能测试中实时监控服务器的各项资源使用。
下载地址:http://jmeter-plugins.org/downloads/all/
其中JMeterPlugins-Standard和JMeterPlugins-Extras是客户端的插件,ServerAgent是服务端的插件。
下载成功后,复制JmeterPlugins-Extras.jar和JmeterPlugins-Standard.jar两个文件,放到jmeter安装文件中的lib/ext中,重启jmeter,即可看到该监视器
将ServerAgent-2.2.1.jar上传到被测服务器,解压,进入目录,Windows环境,双击ServerAgent.bat启动。
linux环境执ServerAgent.sh启动,默认使用4444端口。
更改端口:java -jar ./CMDRunner.jar --tool PerfMonAgent --udp-port 5555 --tcp-port 5555。
8.json提取器
Variable names:保存的变量名,后面使用${Variable names}引用
JSON Path expressions:调试通过的json path表达式
Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有)
Default Values:找不到时默认值,一般设置为NOT FOUND
Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”
9.录制脚本
1.打开浏览器手动代理设置
2.在JMeter中添加线程组
3.添加HTTP代理服务器
添加非测试原件->HTTP代理服务器,并设置端口号(可以通过netstat -ano查看电脑中未使用的端口号)、选择目标控制器(选中前面的线程组)
并且添加排除模式
然后开始录制