1 jmeter简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 可以用于测试静态和动态资源,例如静态文件、CGI 脚本、Java 对象、数据库、FTP 服务器 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
2 jmeter安装
- 由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9)。
- 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
- 下载完成后解压zip包
- 启动JMeter,双击JMeter解压路径(apache-jmeter-3.3bin)bin下面的jmeter.bat即可
- Jmeter是支持中文的,启动Jmeter 后, 点击Options -> Choose Language来选择语言
3 jmeter使用
- 启动jemter后一般会默认生成一个测试计划,在测试计划下可以添加线程组,其中线程组有下面几种重要的参数。
- 线程数:虚拟用户数,用于并发测试。
- Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
- 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
- 在线程组下添加测试的请求类型,例如http请求、TCP请求等,注意一些请求可能需要添加额外的插件才能实现(例如UDP)。下面以常用的http请求为例。
- 协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP 。
- 服务器名称或IP :HTTP请求发送的目标服务器名称或IP 。
- 端口号:目标服务器的端口号,默认值为80 。
- 方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
- 路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
- Content encoding :编码方式,默认为ISO-8859-1编码,这里配置为utf-8
- 添加监听器-查看结果树,然后运行程序,可以在结果树上查看运行结果。
- 添加用户自定义变量,配置元件->用户定义的变量。然后添加的用户变量名,可以以${变量名} 的格式在请求参数、断言等很多地方引用。
- 添加断言(断言用于检查测试中得到的响应数据等是否符合预期),添加断言结果(监听器->断言结果)
- 添加聚合报告(监听器->聚合报告),配置线程组的并发、请求时间和循环等设置,然后运行程序。
- 聚合报告详解:
- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值。
- #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100。
- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间(ms),当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间。
- Median:中位数,也就是 50% 用户的响应时间
- 90% Line:90% 用户的响应时间
- Min:最小响应时间
- Max:最大响应时间
- Error%:错误率——错误请求数/请求总数
- throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second)
- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec