压力测试工具JMeter的使用方法图解

一、JMeter 基本界面和组件的概念

现在看到了Jmeter的主界面。下面介绍Jmeter中主要组件的功能和作用, 首先我们看看Jmeter在概念上的组件分类如图

1.Threads:这个组件主要用来控制Jmeter并发时产生线程的数量,在它的下一级菜单下只有一个组件(线程组),可以这么理解每个线程就是一个虚拟的用户。所有的其他类型组件必须是(线程组)节点的子节点。

2.配置单元:和Sample组件一起工作,主要用来配置Sample如何来发起请求访问服务器,这个东西的主要特点是可以把一些Sample的共同配置放在一个元素里面方便管理,配置单元是有作用域的。作用域和树的那个关系一样越是上级节点的作用域越大,越是接近叶子节点的

作用域就越小,可以复写上级作用域的配置。

3.定时器 : 这个主要是用来调节(线程组),控制线程每次运行测试逻辑(比如说:发出请求)的时间间隔。当然这个下面还有很多类型的定时器,他们主要功能就是调节时间间隔,但个个组件之间的策略有很大不同。

4.前置处理器 和 后置处理器类似一个HOOK,在测试执行之前和执行之后执行一些脚本的逻辑。该组件我还没有具体使用过,但大致功能就是这样,非重点组件。

5.Sample : 可能上图中没有出现Sample,需要在(ThreadGroup)上添加才可以,见图

Sample表示客户端发送某种格式或者规范的请求到服务端,所以大家看到了各种各样的Sample,其中有两个Http 相关的。一般用HttpClient功能和效率将更强。

6.断言: 意思是指对于Sample完成了请求发送之后,判断一下返回的结果是否满足期望。

7.监听器 : 这个组件不同于平时在Web编程的那种监听器,他是伴随着Jemeter测试的运行而从中抓取运行期间的数据的一个组件,经常使用的是聚合报告组件,从里面可以统计到测试的TPS,响应时间等关键测试数据。

二、实例操作

首先在TestPlan下面添加一个ThreadGroup组件,设置线程组组件各项参数

关键参数解释 :

线程数:最大测试时使用的线程数。

Ramp-Up Period : Jmeter达到指定最大线程数的时间。

循环次数 : 如果是Forever,线程组中的线程将不间断的连续测试系统,当然也可以设置每个线程测试的次数,当完成了规定次数后,该线程将自动退出线程组。

调度器 : 主要用来指定该测试的一些时间信息,比如从几点到几点运行测试,如果到了指定时间测试没有进行完成,测试也会被停止。

接着在线程组下面添加Sample组件,我们添加一个HTTP Request HTTPClient组件,设置属性如下图:

最后添加监听器组件 :Aggregate Report, 大功告成!

运行:

好了,一个简单的压力测试例子完成了。大家可以从report中间看到一些性能结果的参数了。下面我们完成一个更复杂的例子。

三、响应断言 :对服务器的响应进行断言校验

  (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable

  关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,类似于ajax那种,那么就有main sample  和 sub-sample之分了。

  此外,对于有重定向的请求,并且勾选了“跟随重定向”, 那么这两个请求都是 sub-sample,重定向后的请求(第二个请求)就是main-sample

  关于main sample and sub sample,有兴趣的可以看看这个帖子

  http://stackoverflow.com/questions/28214936/jmeter-in-which-scenario-i-can-use-main-sample-or-sub-sample-or-both-for-te

  (2)响应字段: 响应文本,Document(Text),url样本,响应代码,响应信息,Response Header,ignore status

  响应文本: 服务器响应文本,一般普通http响应,都勾选这个。

  Document(Text):一切Apache Tika 支持服务器响应,包括文本响应,还支持 PDF, Office, Audio, Video formats。jmeter会用Apache Tika 去解析服务器响应内容,会很耗内存,而且也很容易解析失败。所以一般普通http请求,不要选择这个。

  url样本:是对sample的url进行断言。如果请求没有重定向(302),那么就是这个就是请求url。 如果有重定向(且跟随重定向),那么url就包含请求url 和 重定向url

  响应代码:http响应代码,如101,200,302,404,501等。但当我们要验证404,501等http响应代码时,需要勾选“ ignore status”。因为当http 响应代码为400,500时,jmeter默认这个请求时失败的。

  响应信息:http响应代码对应的响应信息,例如:OK, Found

  HTTP/1.1 200 Ok

  HTTP/1.1 302 Found

  Response Header : 响应头信息,例如

  Server: Tengine

  Date: Thu, 12 Mar 2015 09:43:52 GMT

  Content-Type: text/html

  Content-Length: 260

  Connection: close

  Location: http://www.111cn.net

  (3)模式匹配规则

  包括:返回结果包括你指定的内容,支持正则匹配

  例如:

  响应字段为: 响应文本

  模式匹配规则:匹配

  断言为:1、invalid    2、[a-z]+

  当返回值为:{“msg”:”channel invalid.”} , 这两个断言都是ok的,返回true

  匹配:

  (1) 相当于 equals 。当返回值固定时,可以返回值做断言,效果和equals相同

  (2) 正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。 即正则表达式必须能匹配整个返回值,而不是返回值的一部分。

  例如:

  响应字段为: 响应文本

  模式匹配规则:匹配

  断言为:1、{“msg”:”channel invalid.”}   2、\{“msg”:”[a-z]+ invalid\.”\}  , 3、[a-z]+

  当返回值为:{“msg”:”channel invalid.”}   ,断言1 2 是ok的, 断言3是false

  当返回值为:{“msg”:”channel invalid.”} , 断言1 3是false, 断言2才是ok的。

  原因是,断言1 只能用于equals,而断言3 只匹配了返回值部分,而不是全部匹配。

  Equals : 返回结果与你指定断言完全一致

  SubString:与 “包括”差不多,都是指返回结果包括你指定的内容,但是subString不支持正则字符串

  例如:

  响应字段为: 响应文本

  模式匹配规则:匹配

  断言为:1、invalid    2、[a-z]+

  当返回值为:{“msg”:”channel invalid.”} , 断言1返回true, 但断言2返回false

  否:就相当于取反。 如果上面断言结果为true,勾选“否”后,最终断言结果为false。如果上面断言结果为false,勾选“否”后,则最终断言结果为 true。

四、使用经验

通过逐步增加并发布,并且设置请求为永久发送,这样可以持续观察服务器CPU、内存、带宽的情况,发现系统瓶颈。

当发现问题时,可以通过逐步删减代码,替代框架等方法,观察聚合报告中的Average和Error值来确定问题点从而设计针对性的优化方案。

时间: 2024-10-26 16:37:46

压力测试工具JMeter的使用方法图解的相关文章

Apache压力测试工具ab的使用方法

在windows中,如果在windows下安装apache,就可以在bin下找到ab.exe 直接就可以使用,不用依赖其他的dll 打开运行输入cmd进入到DOS命令行界面,cd 进入到Apache/bin 目录,输入命令:  代码如下 复制代码 ab.exe –n 10000 –c 100 localhost/index.php //其中-n代表请求数,-c代表并发数 上面一行命令的意思是访问index.php这个页面10000次,每次的并发访问为100.执行命令之后耐心等待一段时间后就会出来

Jmeter:图形界面压力测试工具

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.  ------------------------------------------------------------------------------

windows系统中安装Jmeter压力测试工具

  Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库, FTP 服务器, 等等.JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能. JMeter的作用 1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样

【JAVA秒会技术之压力测试工具】JMeter在电商开发中的简单应用

一.JMeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 二.JMeter安装 下载地址:http://jmeter-plugins.org/downloads/all/ 1.解压apache-jmeter-3.0.zip: 2.解压JMeterPlugins-Extras-1.4.0.zip 和 JMeterPlugins-Standard-1.4.0.zip 并分别复制

Web压力测试工具:http_load、webbench、ab、Siege使用方法_服务器其它

前言:常在网络飘,哪有不挨刀?做网站的站长说不准哪天得罪了XX人,二话不说直接操着DDOS就上来搞你了,黑不了你,哥就D死你,遇到这样的无赖,还真没办法,因此经常性的给自己的网站做做压力测试,看看服务器的承载能力是很有必要的一件事. 一.http_load 程序非常小,解压后也不到100K http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载.但是它不同于大多数压力测试工 具,它可以以一个单一的进程运行,一般不会把客户机搞死.还可以测试HTTPS类的网站请求. 下载地址:h

压力测试工具——Galting

为什么要写Gatling呢?网上已经有一些介绍Gatling的好文章了,比如两位TW同事的文章,可以看这里(我知道Gatling也是因为这位作者介绍的),还有这里.主要是因为最近在使用Gatling做压力测试,感觉这个工具非常好用,所以想结合自己的使用情况也推荐一下.Gatling是基于scala写的一个开源的压力测试工具,它的特点是简单易用,测试报告简洁漂亮,api通俗易懂.   JDK1.7 Gatling是基于jdk1.7开发的,所以还在用jdk1.6的同学需要先下载jdk1.7,才可以启

web压力测试工具apache

现在很多web压力测试工具都是收费的,但是apache却自带了一个免费的压力测试工具,即ab工具(命令).具体可在Apache的根目录下的bin目录里面,找到一个ab.exe文件就是.用它可以粗略检测一下自己的程序性能如何. 具体用法如下,摘抄自网上.如有错误,还请指正. 格式 ab [options] [http://]hostname[:port]/path 参数 -n requests     Number of requests to perform //在测试会话中所执行的请求个数.默

网站压力测试工具

在运维工作中,压力测试是一项很重要的工作.比如在一个网站上线之前,能承受多大访问量.在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验.但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100% 和线上性能指标相同.面对这些问题,我们只能尽量去想方设法去模拟.所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数   性能测试工具目前最常见的有以下几种:ab.http_load.webbench

网站压力测试工具webbench安装与使用

webbench是有名的网站压力测试工具,它是由 Lionbridge公司开发. webbench最多可以模拟3万个并发连接去测试网站的负载能力. webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况. webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量. webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力.还有就是他支持对含有SSL的安全网站例如电子商务网