Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。
本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。
运行环境为Windows 10系统,JDK版本为1.8,JMeter版本为3.3。
1. Jmeter安装
1.1 JDK安装
由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9)
1. 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. 选择Java SE 8u151/ 8u152,点击JDK下载
3. 安装下载的JDK
4. 配置系统环境变量
1.2 JMeter安装
- 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi
- 下载最新JMeter 3.3版本:apache-jmeter-3.3.zip
- 下载完成后解压zip包
- 启动JMeter
双击JMeter解压路径(apache-jmeter-3.3\bin)bin下面的jmeter.bat即可
2. 测试实例参照
1,创建线程组
使用 JMeter 测试应用性能首先要创建一个线程组
右键 “Text Plan”, 在弹出的菜单栏选择 “Add->Threads(Users)->Thread Group”
就创建了一个线程组:
Number of Threads (users), 即并发用户数
Loop Count:循环请求次数, 即每个线程请求多少次
线程组参数详解:
1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
3. 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
4. Delay Thread creation until needed:直到需要时延迟线程的创建。
5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。
因为接口调试需要,我们暂时均使用默认设置,待后面真正执行性能测试时再回来配置。
2,创建测试请求
右键创建的线程组“Thread Group”, 选择 “Add-> Sampler-> HTTP Request”
请求协议:http
请求host:101.37.255.38
请求端口号:8811
请求方法:get
请求路径:/toSearchView?theaterId=50&parentId=2
Http请求主要参数详解:
- Web服务器
协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
服务器名称或IP :HTTP请求发送的目标服务器名称或IP
端口号:目标服务器的端口号,默认值为80
2.Http请求
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
Content encoding :编码方式,默认为ISO-8859-1编码,这里配置为utf-8
- 同请求一起发送参数
在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”
3. 测试执行
右键线程组 “Thread Group”, 选择 “Add-> Listener->Summary Report “, 创建一个结果报表。然后点击, 菜单栏中的绿色按钮, 执行测试:
看上图的执行结果,请求数时间,错误率等。得出测试结论。
Label:取样器别名
#Samples:取样器运行次数
Average:请求(事物)的平均响应时间
Min:请求最小响应时间
Max:请求最大响应时间
Std.Dev:响应时间标准差,标准差越小越好
Error%:事物错误率
Throughput:吞吐率,即TPS
Received KB/s:每秒数据包流量
Sent KB/s:
Avg.Bytes:平均数据流量
Aggregste report
Median:响应时间中间值
90%Line:90%事务响应时间范围
右键线程组 “Thread Group”, 选择 “Add-> Listener->View Results Tree“, 创建一个察看结果树。然后点击, 菜单栏中的绿色按钮, 执行测试:
打开测试文件:
file->open->
参数化
第一步,在测试计划下,右键-添加线程组,接着添加配置元件,如下图:
第二步,配置CSV数据文件设置
CSV数据文件设置:主要是文件编码、变量名称两栏
第三步:查看编写好的测试数据test.csv
csvtest.dat:以前搞过应该遇到过坑,尽量存为UTF-8格式
有多少行数据线程数量填多少
第四步,设置http请求中的参数 ${user} ${pwd}
Http请求:参数的引用 ${user} ${pwd} 与csv数据文件设置一栏变量名称那保持一致
第五步,利用查看结果树元件,查看请求的成功与失败
文档:jmeter 4.0 压力并发测试.note
链接:http://note.youdao.com/noteshare?id=ab659676b548ed4e5ac6ce96d2372649&sub=466CD91F21B3450FA1E392ECDE2AA87E