一、Jmeter简介
- jmeter 是 java 开发的,所以运行的时候必须先要安装 jdk 才可以。jmeter 是免安装的,拿到安装包之后直接解压就可以使用,同时它在 linux/windows/macos 上都可以使用。
- jmeter 可以做接口测试和压力测试。其中接口测试的简单操作包括做 http 脚本(发 get/post 请求、加 cookie、加 header、加权 限认证、上传文件)、做 webservice 脚本、参数化、断言、关联(正则表达式提取器和处理 json-json path extractor)和 jmeter 操作数据库等等。
二、jmeter 安装
(1)、首先检查机子上是否有安装 jdk
检查方式,在 cmd 中输入 java -version,出现如下信息,即已经安装好 jdk
若未安装 jdk,则看如下步骤:
步骤一:
1、下载 jdk,到官网下载 jdk,地址:www.oracle.com/technetwork/java/jav…
2、安装 jdk,下载完成后,双击安装
步骤二:配置 jdk 环境变量
右键计算机属性 -> 高级系统设置 -> 系统属性 -> 高级 -> 环境变量 -> 添加如下的系统变量:
变量名:【JAVA_HOME】
变量值:【D:\Program Files\Java\jdk1.8.0_92】【jdk 安装路径】
变量名:【path】
变量值:【;% JAVA_HOME%\bin;】
变量名:【CLASSPATH】
变量值:【.;% JAVA_HOME%\lib\dt.jar;% JAVA_HOME%\lib\tools.jar;】
步骤三:在 cmd 中输入 java -version,检查是否显示 jdk 信息,确定是否安装成功
(2)、安装 Jmeter
步骤一:安装 Jmeter
1、下载 Jmeter
官网地址:jmeter.apache.org/download…
2、解压 Jmeter 安装包
步骤二:配置 Jmeter 环境变量
按下面变量名和变量值配置 Jmeter 系统环境变量:
【变量名】JMETER_HOME
【变量值】D:\Program Files\jmeter\apache-jmeter-4.0(jmeter 解压路径)
【变量名】CLASSPATH
【变量值】% JMETER_HOME\lib\ext\ApacheJMeter_core.jar;% JMETER_HOME%\lib\jorphan.jar;% JMETER_HOME%\lib\logkit-2.0.jar;
步骤三:启动 Jmeter
双击 Jmeter 解压路径(apache-jmeter-4.0\bin)的 bin 下面的 jmeter.bat,如下图
三、jmter 的用法
创建线程计划和线程组
设置线程数 ,如图所示
线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在 “Test Plan(鼠标右击) -> 添加 ->Threads (Users) -> 线程组” 来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period (in seconds)、循环次数,其中 Ramp-Up Period (in seconds) 表示在这时间内创建完所有的线程。如有 8 个线程,Ramp-Up = 200 秒,那么线程的启动时间间隔为 200/8=25 秒,这样的好处是:一开始不会对服务器有太大的负载。
Number of Threads (users): 一个用户占一个线程, 100 个线程就是模拟 100 个用户
Ramp-Up Period (in seconds): 设置线程需要多长时间全部启动。如果线程数为 200 ,准备时长为 10 ,那么需要 1 秒钟启动 20 个线程。也就是每秒钟启动 20 个线程。
Loop Count: 每个线程发送请求的次数。如果线程数为 200 ,循环次数为 10 ,那么每个线程发送 10 次请求。总请求数为 200*10=2000 。如果勾选了 “永远”,那么所有线程
会一直发送请求,直到选择停止运行脚本。
添加请求,如图
设置请求方法,如图所示
请求报文的路径,也可以直接把要输入的内容到第 4 请求方法中
选取监听的方式
聚合报告界面
图形展示的设置的
表格展示
同时设 true 和线程的调度器的执行限制时间才能在规定的时间有效,如图
或
四、jmeter 指标说明 (注:其中)
1、表格显示,属性说明
Sample:每个请求的序号
Start Time:每个请求开始时间
Thread Name:每个线程的名称
Label:Http 请求名称
Sample Time:每个请求所花时间,单位毫秒
Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
Bytes:请求的字节数
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布
2、聚合报告显示属性说明
Label:每个 JMeter 的 element 的 Name 值。例如 HTTP Request 的 Name
#Samples:样本数量。多少个请求
Average:平均响应时间(单位:)。默认是单个 Request 的平均响应时间,当使用了 TransactionController 时,也可以以 Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
95% Line:95% 用户的响应时间
99% Line:99% 用户的响应时间
注:为什么要有 *% 用户响应时间?因为在评估一次测试的结果时,仅仅有平均事物响应时间是不够的。假如有一次测试,总共有 100 个请求被响应,其中最小响应时间为 0.02 秒,最大响应时间为 110 秒,平均事务响应时间为 4.7 秒,你会不会想到最小和最大响应时间如此大的偏差是否会导致平均值本身并不可信?
我们可以在 95 th 之后继续添加 96/ 97/ 98/ 99/ 99.9/ 99.99 th,并利用 Excel 的图表功能画一条曲线,来更加清晰表现出系统响应时间的分布情况。这时候你也许会发现,那个最大值的出现几率只不过是千分之一甚至万分之一,而且 99%的用户请求的响应时间都是在性能需求所定义的范围之内的;如下图则是最低响应时间的值出现几率是很小的,实际 99% 的用户请求响应时间都要 20000+。
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量 / 请求的总数
Throughput:吞吐量。默认情况下标示每秒完成的请求数(具体单位如下图)
KB/sec:每秒从服务器端接收到的数据量。
3.Summary Report 界面,属性说明
所有数据写入一个文件:保存测试结果到本地。
文件名:指定保存结果。
仅日志错误:仅保存日志中报错的部分。
Successes:保存日志中成功的部分。
Configure:设置结果属性,即保存哪些结果字段到文件。一般保存必要的字段 信息即可,保存的越多,对负载机的 IO 会产生影响。
Label:取样器名称(或者是事务名)。
#Samples:取样器运行次数(提交了多少笔业务)。
Average:请求(事务)的平均响应时间,单位为毫秒。
Min:请求的最小响应时间,单位为毫秒。
Max:请求的最大响应时间,单位为毫秒。
Std.Dev:响应时间的标准方差。
Error%:事务错误率。
Throughput:吞吐率(TPS)。
KB/sec:每秒数据包流量,单位是 KB。
Avg.Bytes:平均数据流量,单位是 Byte。