性能接口工具之Jmeter

一、Jmeter下载安装以及环境变量配置(本文仅介绍windows环境):

前提:基于Java环境已安装且配置好Java环境变量(此处就不介绍了)

1、进入Jmeter官网下载界面:http://jmeter.apache.org/download_jmeter.cgi

 

2、点击下载Jmeter的zip格式压缩包包(如果是linux则下载tgz压缩包)

压缩包解压到指定Jmeter使用目录,如我解压的目录为D:\apache-jmeter-5.1.1【备注说明:下载Jmeter与jdk版本要想匹配,本人使用的jdk版本为1.8,Jmeter版本为5.1.1】

3、环境变量配置:

右击电脑属性:

选择高级系统配置:

选择环境变量,并在系统变量中新建JMETER_HOME变量确定并保存:

在进入系统变量中的path变量:新建添加变量后确定并保存。

4、验证是否安装成功:

方法(1)、进入安装文件目录下的bin目录:双击打开jmeter.bat文件,观察是否启动

方法(2)、win +R ,在dos命令窗口输入jmeter,观察是否启动如下图(此方法在环境变量配置好之后才可运行)。启动后不可关闭dos窗口,否则直接退出jmeter界面。

二、Jmeter使用((Jmeter使用以及使用经验可进入Jmeter中文网察看:http://www.jmeter.com.cn/category/jmeter-book))

1、界面语言选择如下图(此部分针对新上手Jmeter群体操作更容易上手且更容易理解):

2、常用Http配置元件描述:

Test Plan的配置元件中有一些和HTTP属性相关的元件:HTTP Cache Manager(缓存管理器)、HTTP Authorization Manager(授权管理)、HTTP Cookie Manager(Cookie管理器)、HTTP Header Manager(信息头管理器)、HTTP Request Defaults(请求默认)等,这些是什么呢?

JMeter不是浏览器,因此其行为并不和浏览器完全一致。这些JMeter提供的HTTP属性管理器用于尽可能模拟浏览器的行为,在HTTP协议层上定制发送给被测应用的HTTP请求。

(1)HTTP Request Defaults

该属性管理器用于设置其作用范围内的所有HTTP的默认值,可被设置的内容包括HTTP请求的host、端口、协议等。

一个Test Plan中可以有多个HTTP Request Defaults,处于多个HTTP Request Defaults作用域内的Sampler使用HTTP Request Defaults中设置值的叠加值。

事例

HTTP Request Defaults1:Server Name or IP: www.baidu.com,一个参数:aaa=111

HTTP Request Defaults2:Server Name or IP: www.qq.com,两个参数:bbb=222,aaa=333

运行结果

总结:

1、一个测试计划中可以有多个Defaults组件,多个Defaults组件的默认值会叠加,如上图,虽然两个Defaults 组件都定义了参数aaa,但发出的请求还是会叠加起来。

2、两个default中都定义的"Server Name or IP",显示在发送请求时只能使用一个,这里使用的是第一个default定义的值www.baidu.com

(2)HTTP Authorization Manager

该属性管理器用于设置自动对一些需要NTLM验证的页面进行认证和登录。如下图:监控tomcat

(3)HTTP Cache Manager

该属性管理器用于模拟浏览器的Cache行为。为Test Plan增加该属性管理器后,Test Plan运行过程中会使用Last-Modified、ETag和Expired等决定是否从Cache中获取相应的元素。

 注意:如果Test Plan中的某个Sampler请求的元素是被Cache的元素,则Test Plan在运行过程中会直接从Cache中读取该元素,这样Sampler得到的返回值就会是空。在这种情况下,如果为该Sampler设置了Assertion检查响应体中的制定内容是否存在,该Assertion就会失败。

(4)HTTP Cookie Manager

该属性管理器用于管理Test Plan运行时的所有Cookie。HTTP Cookie Manager可以自动储存服务器发送给客户端的所有Cookie,并在发送请求时附加上合适的Cookie.

同时,用户也可以在HTTP Cookie Manager中手工添加一些Cookie,这些被手工添加的Cookie会在发送请求时被自动附加到请求。

注意:

    如果在一个测试计划内有多个Cookie Manager ,Jmeter目前无法指定哪个被使用。所以,一个测试计划内最好只有一个cookie manager。并且,一个manager里的 cookie 并不能被其它manager所引用。所以在使用多个Cookie Managers 时要谨慎。  

   同理,上面这个规则同样适用于config element下面的其它manager:

 

如果选中"Clear cookies each iteration?"此项,意味着线程在每次迭代时清除自己会话中的所有Cookie.

(5)HTTP Header Manager

该属性管理器用于定制Sampler发出的HTTP请求的请求头的内容。不同的浏览器发出的HTTP请求具有不同的Agent,访问某些有防盗链的页面时需要正确的Refer...这些情况下都需要通过HTTP Header Manager来保证发送的HTTP请求是正确的。如下图:

 

 

 

3、创建一个简单的接口性能测试:

添加线程组


一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。

jmeter中 每个测试计划至少需要包含一个线程组,当然也可以在一个计划中创建多个线程组,那么多个线程组之间又会怎样的顺序执行(串行还是并行)?在测试计划下面多个线程是并行执行的,也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler的。

线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。

线程数: 虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。

准备时长: 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。

循环次数: 每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。

设置合理的线程数对于能否达到测试目标有决定性的影响。除了上面介绍的固定循环次数与永远外;也可以灵活的选择设定测试运行时间。勾选“调度器”,进行调度器配置。

  • 设置:线程数为10,其它参数默认。

 

添加HTTP请求


添加完成线程组后,在线程组上右键菜单(添加--->Sampler--->HTTP请求)选择HTTP请求。对于jmeter来说,取样器(Sampler)是与服务器进行交互的单元。一个取样器通常进行三部分的工作: ``` 1、向服务器发送请求

2、记录服务器的响应数据

3、记录响应时间信息 ```

一个HTTP请求有着许多的配置参数,下面将详细介绍:

名称: 本属性用于标识一个取样器,建议使用一个有意义的名称。

注释: 对于测试没有任何作用,仅用户记录用户可读的注释信息。

服务器名称或IP : HTTP请求发送的目标服务器名称或IP地址。

端口号: 目标服务器的端口号,默认值为80 。

协议: 向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。

方法: 发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等(路径为Get/Post等方法的请求路径)。

Content encoding : 内容的编码方式,默认值为iso8859

路径: 目标URL路径(不包括服务器地址和端口)

自动重定向: 如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。

Use keep Alive : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。

Use multipart/from-data for HTTP POST : 当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。

 

添加监听器(Listener)【常用监听器:察看结果树、图形结果、聚合报告】


脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果,在本例中,我们关心的是请求的响应时间。

Jmeter 中使用监听器元件收集取样器记录的数据并以可视化的方式来呈现。Jmeter有各种不同的监听器类型,因为上面添加的为HTTP请求,这里添加聚合报告,更为直观的查看测试结果。

添加聚合报告,右键点击线程组,在弹的菜单(添加--->监听器--->聚合报告)中选择聚合报告。

点击工具栏上的 绿色运行按钮 或者通过菜单栏(运行--->启动)来运行测试。

查看 "聚合报告" 的运行结果:

Label: 请求的名称,就是我们在进行测试的httprequest sampler的名称

Samples: 总共发给服务器的请求数量

Average: 单个请求的平均响应时间,单位是毫秒

Median: 50%的请求的响应时间

90%Line: 90%的请求的响应时间

95%Line: 95%的请求的响应时间

99%Line: 99%的请求的响应时间

Min: 最小的响应时间

Max: 最大的响应时间

Error%: 错误率=错误的请求的数量/请求的总数

Throughput: 吞吐量即表示每秒完成的请求数

Received KB/sec: 每秒从服务器端接收到的数据量

Sent KB/Sec: 每秒从发送到服务器端的数据量


到此,一个简单的性能测试完成了

posted @ 2019-06-26 15:20  Calainkey  阅读(252)  评论(0编辑  收藏  举报