您好,欢迎来到九壹网。
搜索
您的当前位置:首页JMeter使用技巧

JMeter使用技巧

来源:九壹网
JMeter使⽤技巧

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

1. 如何使⽤英⽂界⾯的jmeter2. 如何使⽤镜像服务器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=600000set PERM=-XX:PermSize=m -XX:MaxPermSize=mset 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 客户端线程数不应超过 10 0 。

  采⽤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

  这⾥要特别注意端⼝后,有些资料说明端⼝14为jmeter的controller 和agent 之间进⾏通信的默认RMI端⼝号,但是在测试时发现,设置为14运⾏不成功,改成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=DEBUGlog_level.jorphan=INFO

搜索功能

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

* 使搜索区分⼤⼩写区分⼤⼩写:

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

线程之间传递变量

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

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

  如果存在⼤量数据需要在线程间传递,那么可以考虑使⽤⽂件。例如,测试⼈员可以在⼀个线程中使⽤,保存响应到⽂件

(Save Responses to a file )或者 BeanShell PostProcessor 。⽽在另外⼀个线程中使⽤HTTP 采样器的“file: ”协议来读取⽂件,接着使⽤⼀个后置处理器或者BeanShell 测试元件提取信息。

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

----------------------------------------这最后⼀个技巧,操作较为⿇烦,暂时不给详细的例⼦。算是提供个思路吧!知道有这当⼦事⼉就⾏了。⽇后有机会再实践^_^

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务