JMeter是个非常强大的测试工具,功能比Postman多很多,非常适合JAVA WEB开发与测试人员使用
主要功能模块介绍
- Test Plan(测试计划) 定义一个测试计划
- Threads (Users)用户线程 线程组相当于用户
- Test Fragment(测试片段) 比较特殊的测试片段,被控制器所引用时才会被执行
- Sampler(采样器) 代表一个请求
- Logic Controller(逻辑控制器) 发送请求的逻辑顺序的控制器,事务控制器、吞吐量控制器
- Config Element(配置元件) 参数配置
- Timer(定时器) 用于设置操作之间等待时间
- Per Processors(前置处理器) 对请求预先处理
- Post Processors(后置处理器) 对得到服务器响应后的后续处理
- Assertions(断言) 断言用于检测测试中得到的相应结果是否符合预期
- Listener(监听器) 查看测试结果的一系列功能
基本使用
安装程序
- 安装JDK
- Jmeter下载安装
- 启动jmeter.bat文件
添加线程组
操作步骤:右键点击TestPlan
→ Add
→ Threads(Users)
→ Thread Group
参数说明:
- Number of Threads(users):虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
- Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为100,准备时长为5,那么需要5秒钟启动100个线程,也就是每秒钟启动20个线程。
- Loop Count 循环次数:每个线程发送请求的次数。如果线程数为100,循环次数为100,那么每个线程发送100次请求。总请求数为100*100=10000 。如果勾选了“Forever”,那么所有线程会一直发送请求,一到选择停止运行脚本。
- Delay Thread creation until needed:直到需要时延迟线程的创建。
- Scheduler :设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
Duration(seconds) 持续时间(秒)
Startup delay(seconds) 启动延迟(秒)
添加请求比如Http请求
操作步骤:右键点击Thread Group
→ Add
→ Sampler
→ Http Request
参数说明:
1. WebServer
- Protocol:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
- Server Name or IP :HTTP请求发送的目标服务器名称或IP
- Port Number:目标服务器的端口号,默认值为80
2. Http Request
- Method:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
- Path:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
- Content encoding :编码方式,默认为ISO-8859-1编码
Parameters
普通的参数录入
Body Data
直接录入需要的原始数据
Files Upload
选择要上传的文件
按钮
- Detail 详情
- Add 添加参数
- Add from Clipboard 从剪切板添加
- Delete 删除
- Up 上移
- Down 下移
添加测试结果展示
View Results in Table 表格显示每个请求的结果
操作步骤:右键点击Thread Group
→ Add
→ Listener
→ View Results in Table
参数说明:
- Sample # : 一个序列号
- Start Time:每个用户的开始时间,毫秒
- Thread Name:线程名称
- Label: 就是Http reques的名称
- Sampler Time:运行这个Sampler所消耗的时间,有时候也等于Duration time
- Status:执行结果标记,成本绿勾,失败红叉。
- Bytes:请求的响应文件大小
- Sent Byte:发送HTTP请求的数据包大小
- Latency:这个字面意思是潜伏时间等待时间,不是延迟。
- Connet Time: 连接到服务器消耗的时间。
View Results Tree 介绍
操作步骤:右键点击Thread Group
→ Add
→ Listener
→ View Results Tree
可以分析失败原因,比如超时等
参数说明:
- Thread Name:线程组名称
- Sample Start: 启动开始时间
- Load time:加载时长
- Latency:等待时长
- Size in bytes:发送的数据总大小
- Headers size in bytes:发送数据的其余部分大小,Head大小
- Sample Count:发送统计
- Error Count:交互错误统计
- Response code:返回码
- Response message:返回信息
- Response headers:返回的头部信息
Aggregate Report 聚集后的结果集报告
操作步骤:右键点击Thread Group
→ Add
→ Listener
→ Aggregate Report
参数说明:
- Samples:总共发给服务器的请求数量
- Average:单个请求的平均响应时间,单位是毫秒
- Median:50%的请求的响应时间
- 90%Line:90%的请求的响应时间
- 95%Line:95%的请求的响应时间
- 99%Line:99%的请求的响应时间
- Min:最小的响应时间
- Max:最大的响应时间
- Error%:错误率=错误的请求的数量/请求的总数
- Throughput: 吞吐量即表示每秒完成的请求数
- Received KB/sec: 每秒从服务器端接收到的数据量
- Sent KB/sec: 每秒发往服务器端数据量
Graph Results 介绍
操作步骤:右键点击Thread Group
→ Add
→ Listener
→ Graph Results
图形展示测试过程
参数说明:
- 样本数目(No of Samples) 是总共发送到服务器的请求数。
- 最新样本(Latest Sample) 是代表时间的数字,是服务器响应最后一个请求的时间。
- 吞吐量(Throughput) 是服务器每分钟处理的请求数。
- 平均值(Avergae) 是总运行时间除以发送到服务器的请求数。
- 中间值(Median) 是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
- 偏离(Deviation) 表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
开始测试
点击绿色向右的箭头既可以开始测试
函数
点击Function Helper Dialog按钮(帮助左边的按钮)
打开函数帮助工具页面
UUID
点击Function Helper Dialog按钮(帮助左边的按钮)
→ Choose a function 选择__UUID
→ 点击Generate&Copy to clipboard
→ 黏贴到需要使用UUID的地方
自定义参数
还可以自定义用户变量,扩展默认函数
变量
可以自定义用户变量
右键点击Thread Group
→ Add
→ Config Element
→ User Defined Variables
计数器
右键点击Thread Group
→ Add
→ Config Element
→ Counter
自增变量定义启动、递增步长,引用名称(比如count)
在需要用的地方通过${count}
引用
jmeter还提供了__counter()
方法${__counter(TRUE,)}
断言
jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似;
用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致。
测试过程注意事项
- 对软件进行测试的时候如果是多台机子,普通台式机要注意防火墙是否关闭或者指定端口打开,服务器防火墙端口要打开。不然访问不了。
Http配置Demo
使用技巧
- 可以选中当个线程组进行测试
- 创建测试报告对于分析请求过程非常重要
测试说明
- 通过jmeter发送大量小文件给http服务器,处理速度比直接jmeter发送给FTP服务器快非常多倍,具体原因未知。(测试过程建立两个线程组2个users,500 Loop,也就是1000文件,文件大小700字节,HTTP2秒完成发送,FTP10秒完成发送。循环次数加到1000FTP模式还会出现超时变成平均每个文件90ms,HTTP模式平均每个文件仅仅2ms,FTP模式users调高会出现非常多超时,可能与服务端启用数据端口数量有关。被动模式的数据端口影响并发能力)