一、Jmeter的介绍
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简 单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在 linux/windows/macos上都可以使用。
jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权 限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理json-json path extractor)和jmeter操作数据库等等。
二、安装Jmeter
1、安装Jmeter的前提条件是电脑必须配置好Java的环境变量
检查是否配置了jdk,cmd命令中输入java -version 查看,如果出现版本号就是已经安装并配置了
配置环境变量的步骤:
①、下载并安装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查看,出现相应的版本号就是已经配置成功
2、下载好的Jmeter文件夹解压后即可直接使用,在解压后的bin目录下打开jmeter.bat即可使用
3、Jmeter的目录结构
/bin
目录(常用文件介绍)
examples
:目录下包含
Jmeter
使用实例
ApacheJMeter.jar
:
JMeter
源码包
jmeter.bat
:
windows
下启动文件
jmeter.sh
:
Linux
下启动文件
jmeter.log
:
Jmeter
运行日志文件
jmeter.properties
:
Jmeter
配置文件
jmeter-server.bat
:
windows
下启动负载生成器服务文件
jmeter-server
:
Linux
下启动负载生成器文件
/docs
目录
——Jmeter
帮助文档
/extras
目录
——
提供了对
Ant
的支持文件,可也用于持续集成
/lib
目录
——
存放
Jmeter
依赖的
jar
包,同时安装插件也放于此目录
/licenses
目录
——
软件许可文件,不用管
/printable_docs
目录
——Jmeter
用户手册
三、Jmeter的基本用法
1、创建一个线程组
2、设置线程数
作用
:
模拟虚拟用户
进程: 一个正在执行的程序对应一个进程
线程: 一个进程有多个执行线程
线程组: 按照线程性质对线程分组
三者关系: 一个进程有多个线程组,一个线程组有多个线程
①线程组主要包含三个参数:线程数、准备时长
(Ramp-Up Period(in seconds))
、循环次数。
②
线程数:虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
③
准备时长(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为
20
,准备时长为
10
,那么需要
10
秒钟启动
20
个线程。也就是每秒钟启动
2
个线程。
④
循环次数:每个线程发送请求的次数。如果线程数为
20
,循环次数为
100
,那么每个线程发送
100
次请求。总请求数为
20*100=2000
。如果勾选了
“
永远
”
,那么所有线程会一直发送请求,一到选择停止运行脚本。
⑤调度器:设置线程组启动的开始时间和结束时间
(
配置调度器时,需要勾选循环次数为永远
)
⑥
持续时间(秒):测试持续时间
⑦
启动延迟(秒):测试延迟启动时间
3、sampler(采样器)
作用:向服务器发送请求,记录响应信息,记录响应时间的最小单元(http,https,ftp,jdbc等)
一个
HTTP
请求有着许多的配置参数:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或
IP
:
HTTP
请求发送的目标服务器名称或
IP
地址。
端口号:目标服务器的端口号。
方法:发送
HTTP
请求的方法,可用方法包括
GET
、
POST
、
HEAD
、
PUT
、
OPTIONS
、
TRACE
、
DELETE
等。
Content encoding
:内容的编码方式,默认值为
iso8859
路径:目标
URL
路径
(
不包括服务器地址和端口
)
4、监听器
作用
:
监听器可以动态的监控
JMeter
测试执行的过程
,
实时查看测试结果
通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过
Thread Name
:线程组名称
Sample Start:
启动开始时间
Load time
:加载时长
Latency
:等待时长
Size in bytes
:发送的数据总大小
Headers size in bytes
:发送数据的其余部分大小
Sample Count
:发送统计
Error Count
:交互错误统计
Response code
:返回码
Response message
:返回信息
Response headers
:返回的头部信息
lable
:对应每一个
http
请求,显示的是
http
请求的
Name
,如百度
http
请求
name
为
baidu
#Samples
:表示这一次的测试中一共发出了多少请求,如上图所示,
sougou
和
baidu
的
http
请求
每个都发出
30
个请求
Average
:平均响应时间,指的是所有的请求的平均响应时间,如上图的
30
个请求的总的响应时间
除以
30
得出的平均响应时间,默认的情况下是单个请求的平均响应时间,但当使用了
“
事务控制器
”
时,则以事物为单位显示平均响应时间
Median
:中位数,也就是
50%
用户的响应时间
90%Line
:
90%
用户的响应时间
Min
:最小响应时间
Max
:最大的响应时间
Error%
:本次测试中出现错误的请求的数量
/
请求的总数,如上图所示,本次的测试中,
sougou
的
http
请求
66.6%
的请求出错,而
baidu
的请求则没有出错的请求
Throughput
:吞吐量,默认情况下表示每秒完成的请求数,如上图所示,每秒完成的请求数分别
为
6.6
个每秒,
6.2
个每秒
Recived KB/Sec
:每秒从服务器端接收到的数据量,以
kb
为计算的单位
四、Jmeter组件描述
①、
测试计划是使用
JMeter
进行测试的起点,它是其它
JMeter
测试元件的容器。
②、线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。
③、取样器(
Sampler
):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。 如:HTTP
、
ftp
请求等等。
④、监听器:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显
示、统计一些数据(吞吐量、
KB/S……
)等。
⑤、断言:用于来判断请求响应的结果是否如用户所期望,是否正确,非常实用
⑥、定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。
⑦、逻辑控制器:允许自定义
JMeter
发送请求的行为逻辑,它与
Sampler
结合使用可以模拟复杂的
请求序列。
⑧、
配置元件维护
Sampler
需要的配置信息,并根据实际的需要会修改请求的内容。
⑨、
前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的
设置,后置处理器则常常用来处理响应的数据。
1、断言
作用:断言
(Assertions)
可以用来判断响应的数据是否符合预期
2、json断言
3、Xpath断言
定义
:Xpath
即为
XML
路径语言,它是一种用来确定
XML
文档中某部分位置的语言。
xpath
基于
XML
的树状结
构,提供在数据结构树中寻找节点的能力
区别:响应断言(适用任何的返回类型)
,json
断言(只适用于
json
的返回类型)
,Xpath Assertion
断言
针对返回信息为
Xpath
的数据类型进行断言
4、
定时器
定时器
(Timer)
负责定义请求之间的延迟间隔
5、事务控制器
6、http请求默认值(常用)
http请求默认值,会在发送http请求的时候,自带这些参数,复用的作用