JMeter测试工具使用教程

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文件

添加线程组

操作步骤:右键点击TestPlanAddThreads(Users)Thread Group

参数说明:

  1. Number of Threads(users):虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
  2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为100,准备时长为5,那么需要5秒钟启动100个线程,也就是每秒钟启动20个线程。
  3. Loop Count 循环次数:每个线程发送请求的次数。如果线程数为100,循环次数为100,那么每个线程发送100次请求。总请求数为100*100=10000 。如果勾选了“Forever”,那么所有线程会一直发送请求,一到选择停止运行脚本。
  4. Delay Thread creation until needed:直到需要时延迟线程的创建。
  5. Scheduler :设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
    Duration(seconds) 持续时间(秒)
    Startup delay(seconds) 启动延迟(秒)

添加请求比如Http请求

操作步骤:右键点击Thread GroupAddSamplerHttp 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 GroupAddListenerView 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 GroupAddListenerView 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 GroupAddListenerAggregate 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 GroupAddListenerGraph 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 GroupAddConfig ElementUser Defined Variables

计数器

右键点击Thread GroupAddConfig ElementCounter
自增变量定义启动、递增步长,引用名称(比如count)
在需要用的地方通过${count}引用
jmeter还提供了__counter()方法${__counter(TRUE,)}

断言

jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似;

用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致。

测试过程注意事项

  1. 对软件进行测试的时候如果是多台机子,普通台式机要注意防火墙是否关闭或者指定端口打开,服务器防火墙端口要打开。不然访问不了。

Http配置Demo

Http测试配置例子

使用技巧

  • 可以选中当个线程组进行测试
  • 创建测试报告对于分析请求过程非常重要

测试说明

  • 通过jmeter发送大量小文件给http服务器,处理速度比直接jmeter发送给FTP服务器快非常多倍,具体原因未知。(测试过程建立两个线程组2个users,500 Loop,也就是1000文件,文件大小700字节,HTTP2秒完成发送,FTP10秒完成发送。循环次数加到1000FTP模式还会出现超时变成平均每个文件90ms,HTTP模式平均每个文件仅仅2ms,FTP模式users调高会出现非常多超时,可能与服务端启用数据端口数量有关。被动模式的数据端口影响并发能力)