【转】性能测试工具JMeter的使用技巧

在这此对新版本jmeter的学习+温习的过程,发现了一些以前不知道的功能,所以,整理出来与大分享。本文内容如下。

  1、如何使用英文界面的jmeter
  2、如何使用镜像服务器
  3、Jmeter分布式测试
  4、启动Debug 日志记录
  5、搜索功能
  6、线程之间传递变量

  如何使用英文界面的JMeter

  Jmeter启动时会自动判断操作系统的locale 并选择合适的语言启动,所以,我们启动jmeter后,其会出现一个倍感亲切的中文界面。但由于jmeter本身的汉化工作做得不好,你会看到有未被汉化的选项及元件的参数。而且部分翻译并不准确,因此对于英文比较好的牛人来说更喜欢纯正的英文界面。

  强制以英文方式启动jmeter的方法如下:

  在windows环境下,打开jmeter解压目录,bin目录下的jmeter.bat文件,也就是jmeter程序的启动文件,选择记事本方式打开。做以下修改:


.................
set HEAP=-Xms512m -Xmx512m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000
set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m
set LOCALE=-Duser.language=en  -Duser.region=rem
set DEBUG=-verbose:gc -XX:+PrintTenuringDistribution

.........
rem Server mode
rem Collect the settings defined above
set ARGS=%DUMP%  %HEAP%  %NEW%  %SURVIVOR%  %TENURING%  %RMIGC%  %PERM%  %DDRAW%  %LOCALE%
.............

  晕死,当我上面介绍了那么多后,在最新的2.8版本,我无意中发现了这个功能。

  如何使用镜像服务器

  在调试和修改测试计划的过程中,通常会为采样器增加一些额外的设置,例何设置额外的HTTP头、cookie管理器或认证管理器等,但当设置了这些内容后,sampler发出的请求是否就与预期的完全一支呢?

  当然用户可以通过添加监听器来看查采样器发出的HTTP请求,但如果调试过程中并不想真正地把请求发送给被测应用,如何解决这个问题呢?

  Jmeter 提供了一个名叫HTTP Mirror Server的组件,HTTP Mirror Server可以启动一个镜像的服务器,该服务器把所有接收到的请求原封不动地返回,这样就可以看到发出请求的具体内容了。

  添加HTTP Mirror Server的方式:

  右键点击“工作台”--->非测试元件--->HTTP Mirror Server

  如果有必要的话需要修改端口号,点击“启动”按钮来启动Server。

接下来修改采样器,使其将HTTP请求 发送到localhost:8081(也就是Mirror Server启动的位置)

  然后,运行测试计划,则可以从监听器“查看结果树”中看到响应数据。

  JMeter分布式测试

  Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能力,jmeter短小精悍一有了使用多台机器同时产生负载的机制。

  那么,是如何实现多台负载机同时运行的呢?当然不会多个人坐在多台负载机面前,一喊开始,大家同时启动jmeter。这种方式很笨,也很难达到真正的同步。其实,我们通过单个jmeter 客户端就可以控制多个远程的jmeter服务器,使它们同步的对服务器进行压力测试。

  通过远程运行jmeter,测试人员可以跨越多台低端计算机复制测试,这样就可以模拟一个比较大的服务器压力,一个jmeter客户端实例,理论上可以控制任意多的远程jmeter实例,并通过他们收集测试数据。这样一样,就有了如下特性:

  * 保存测试采样数据到本地机器

  * 通过单台机器管理多个jmeter执行引擎。

  * 没有必要将测试计划复制到每一台机器,jmeter GUI客户端会将它发往每一台jmeter服务器。

  * 每一台jmeter远程服务器都执行相同的测试计划,jmeter不会在执行期间做负载均衡,每一台服务器都会完整地运行测试计划。

  在1.4G Hz~3GHz 的CPU 、1GB 内存的 JMeter 客户端上,可以处理线程 100~300。但是Web Service 例外。XML处理是 CPU 运算密集的,会迅速消耗掉所有的CPU 。一般来说,以XML技术为核心的应用系统,其性能将是普通Web 应用的 10%~25% 。另外,如果所有负载由一台机器产生,网卡和交换机端口都可能产生瓶颈,所以一个JMeter 客户端线程数不应超过100。

采用JMeter 远程模式并不会比独立运行相同数目的非GUI 测试更耗费资源。但是,如果使用大量的JMeter 远程服务器,可能会导致客户端过载,或者网络连接发生拥塞。

  使用多台机器产生负载的操作步骤如下:

  (1)在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent 。然后运行所有 agent 机器上的jmeter-server 文件(假定使用两台机器192.168.0.100 和192.168.0.101 作为agent)

  (2)在controller机器的jmeter的bin目录下,找到jmeter.properties 文件,编辑该文件:

查找:
remote_hosts=127.0.0.1
修改为:
remote_hosts=192.168.0.100:1099,192.168.0.101:1099

  这里要特别注意端口后,有些资料说明端口1644为jmeter的controller 和agent 之间进行通信的默认RMI端口号,但是在测试时发现,设置为1644运行不成功,改成1099后运行通过。另外还要留意agent的机子是否开启了防火墙等。

  (3)启动controller 机子上的jmeter应用,选择菜单“运行”--->“远程启动”,来分别启动agent ,也可以直接选择“远程全部启动”来将所有的agent启动。

  启动Debug 日志记录

  大多数测试元件都支持Debug 日志记录。如果通过 GUI 运行测试计划,那么在选中测试元件后,可以通过“帮助”菜单enable debug或者disable debug。在“帮助”菜单 中有一个选项“What’s this node? ”,

  通过它可以查看GUI 和测试元件的类名,如图 11 -7 所示。通过它们,测试人员可以决定修改哪一项JMeter 属性,以便修改日志级别。

  例如:我们可以点击一个HTTP请求,选择菜单栏“帮助”--->what‘s this node ?

在jmeter的bin\目录下,找到jmeter.properties 文件,关于日志级别的属性如下:


#Logging levels for the logging categories in JMeter.  Correct values are FATAL_ERROR, ERROR, WARN, INFO, and DEBUG
# To set the log level for a package or individual class, use:
# log_level.[package_name].[classname]=[PRIORITY_LEVEL]
# But omit "org.apache" from the package name.  The classname is optional.  Further examples below.

log_level.jmeter=INFO
log_level.jmeter.junit=DEBUG
#log_level.jmeter.control=DEBUG
#log_level.jmeter.testbeans=DEBUG
#log_level.jmeter.engine=DEBUG
#log_level.jmeter.threads=DEBUG
#log_level.jmeter.gui=WARN
#log_level.jmeter.testelement=DEBUG
#log_level.jmeter.util=WARN
#log_level.jmeter.util.classfinder=WARN
#log_level.jmeter.test=DEBUG
#log_level.jmeter.protocol.http=DEBUG
# For CookieManager, AuthManager etc:
#log_level.jmeter.protocol.http.control=DEBUG
#log_level.jmeter.protocol.ftp=WARN
#log_level.jmeter.protocol.jdbc=DEBUG
#log_level.jmeter.protocol.java=WARN
#log_level.jmeter.testelements.property=DEBUG
log_level.jorphan=INFO

  搜索功能

  这是在使用一个变量或含有一定的URL或参数测试计划树和元素有时很难找到。现在一个新的特点是从2.6开始,你可以访问它的菜单搜索。它提供了搜索与下列选项:

  * 使搜索区分大小写区分大小写:

  * 正则表达式是一个正则表达式搜索文本,如果有的话将被搜索的正则表达式树的组件,例如“\ BTEST \ b”将匹配任何组件,包含测试组件的搜索元素

  线程之间传递变量

  JMeter 变量作用域局限于所属线程。这样设计是经过深思熟虑的,目的是让测试线程能够独立运转。有时候用户可能需要在不同线程间(可能属于同一个线程组,也可能不属于同一个线程组)传递变量。

  其中一种方法就是使用属性。属性为所有 JMeter 线程所共享,因此当某个线程设置一个属性后,其他线程就可以读取更新后的值。

  如果存在大量数据需要在线程间传递,那么可以考虑使用文件。例如,测试人员可以在一个线程中使用监听器,保存响应到文件(Save Responses to a file)或者 BeanShell PostProcessor 。而在另外一个线程中使用HTTP 采样器的“file: ”协议来读取文件,接着使用一个后置处理器或者BeanShell 测试元件提取信息。

  如果在测试启动前测试人员就能获得测试数据,那么最好将数据保存到文件中,使用CSV Dataset读取。

  这最后一个技巧,操作较为麻烦,暂时不给详细的例子。算是提供个思路吧!知道有这当子事儿就行了。日后有机会再实践^_^

时间: 2024-11-10 12:02:16

【转】性能测试工具JMeter的使用技巧的相关文章

性能测试工具 jmeter 分布式压力测试实操

性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布式测试. slave-1/slave-2/master配置好jmeter环境(以下操作在jdk版本1.8环境下进行的) 1.下载jmeter3.2 wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-3.2.tgz 2

Web性能测试工具JMeter

做Web方面的黑盒测试,也就是功能测试,基本不需要什么测试工具,都是直接打开浏览器访问,点一点界面就行. 现在流行的移动互联网应用,客户端和服务端的开发是分离的,两者开发进度肯定不一样,可能存在服务端接口开发完了,客户端还在开发中. 所以如果要做服务端HTTP接口的测试时,可以借助浏览器的插件,比如Firefox的HttpRquester. 如果是做性能测试,这时候就要借助专门的测试工具 性能测试工具,功能比较强大的是HP的LoadRunner,但毕竟是商业软件,体积也比较大 如果只是简单的We

性能测试工具JMeter使用学习

项目中需要使用一个性能测试工具对开发的服务进行性能评估,调研后选择了JMeter,并进行了初步的学习和使用. 1. 工具获取. jmeter基于Java,并隶属于Apache,下载地址:http://jmeter.apache.org/download_jmeter.cgi,当前的最新版本是2.12 2. windows GUI版本试用. windows环境需要安装Java,运行bin下的jmeter.bat即可触发GUI环境. 可以新建一个HTTP的测试模板. 可以配置压力属性,如下图,其中:

开源性能测试工具JMeter快速入门(一)

目录 一.JMeter简介 二.JMeter功能介绍 三.JMeter脚本 四.关于JMeter小提示 一.JMeter简介 1.定义 JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 1)它可以用于测试静态和动态资源,例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.DB.FTP 服务器, 等等. 2)JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来自不同压力类别下测试它

对性能测试工具JMeter 聚合报告中90% Line的解释说明

聚合报告中90% Line涉及到百分位数的概念,属于统计学术语,定义如下: 如果将一组数据从大到小排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数.可表示为:一组n个观测值按数值大小排列如,处于p%位置的值称第p百分位数. 例如中位数就表示第50百分位数.所以90%Line就好理解了,就是一组数按照由小到大进行排列,找到他的第90%个数P,那么这个数组中有90%的数将小于等于P,(1-90%)的数大于等于P.90%Line在性能测试的响应时间非常有意义,用来表示

开源性能测试工具JMeter快速入门(二)

目录 一.JMeter简介 二.JMeter功能介绍 三.JMeter脚本 四.关于JMeter小提示 三.JMeter脚本 1.测试计划 测试计划是JMeter进行测试的起点 ,是其他JMeter测试元件的容器,每个测试场景/脚本都叫做一个测试计划. (1)名称;与业务相关的名称 (2)注释:非必填 (3)用户定义的变量,引用时直接用${变量名}即可,这里的变量是全局变量,作用于整个测试计划. (4)独立运行每个线程组:默认不勾选,即所有线程组并发启动.勾选则顺序执行所有线程组. (5) 结束

性能测试工具 Jmeter GET 请求 参数为 Json 串且参数中存在变量的转化

2.在BeanShell PreProcessor的实现: 原文地址:https://www.cnblogs.com/python-xiakaibi/p/11216485.html

我的新课--快速上手Jmeter性能测试工具正在筹划中

大家好,感谢大家一直以来对我的支持,新课快速上手Jmeter性能测试工具正在筹划中,大纲如下: 随着软件性能测试行业的崛起,各种性能测试工具也随之层出不穷,各具特色.同时,开源的趋势不可阻挡,如何使用开源免费的性能测试工具完成相关测试工作是很多企业正在考虑的问题.本套课程正是基于以上需求和现状,选择目前市面上最流行的开源性能测试工具Jmeter作为阐述对象,带领大家从零开始.步步为营,以掌握Jmeter的基本概念并熟练使用Jmeter进行测试为目标,快速而高效的学习和使用Jmeter.俗话说,授

Jmeter服务性能测试工具

Jmeter性能测试工具 下载地址:http://jmeter.apache.org/download_jmeter.cgi Windows下使用 这里我们选择Binaries包,jmeter不需要安装直接解压使用,但是需要配置Java环境 安装jdk,这里就不说了 配置Java环境变量: win7系统 计算机--属性--高级系统设置--高级--环境变量--系统变量--新建 变量名:JAVA_HOME 变量值:C:\ProgramFiles (x86)\Java\jre1.8.0_101