JMeter

更新时间:2024-05-25 21:45:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Jmeter快速入门教程(一) - 认识jmeter和google插件

作者:whoistester 2011-12-25 23:10

[版权所有whoistester.com & jmeter.cf]

Jmeter是免费开源的性能测试工具(同时也可以用作功能测试,http协议debug工具 ). 在如今越来越注重知识产权的今天, 公司越来越不愿意冒着巨大的风险去使用盗版的商业性能测试工具. 但如果不使用盗版, 昂贵的License费用也不是每一个中小型公司,甚至是大型公司愿意投入的. 所以很多公司甚至还在铤而走险的买少量的license,然后大范围的使用. jmeter这个免费且好用的性能测试工具, 有足够的理由成为是我们不二的选择。

Jmeter是java语言编写,开放源代码。有了源代码,使得我们可以更深入的分析一些问题。(比如响应时间等),这样有助于我们更深刻理解性能测试,可以学习如何才能更精确的计量时间。商业软件就没有这个优点, 你想知道的东西,只能去看他们提供的文档,但文档并没有代码更能说服人。 Jmeter下载地址:

http://jmeter.apache.org/download_jmeter.cgi 当前的版本是2.5.1 。 接下来我们就要进入正题。但在进入之前,我们不得不提google code里

的 jmeter plugins. 由于jmeter开源且本身是一个框架,可以让第三方来加入自己的插件。 而这个 jmeter plugin又提供了更强大的feature,让我们更得心应手。尤其是那些熟悉loadrunner的测试人员,用了google code里的jmeter plugin,你就不会再觉得jmeter 太难用了。

我们还有必要说一下jmeter和lr的基本区别。由于jmeter是免费开源软件,GUI设计的确实不是多么美观,在controller和agent模式下的管理也非常不方便。但是jmeter可以支持第三方插件,且开源,所以还是有着旺盛的生命力。

jmeter可以实现的测试如下几种类型:

1. Web - HTTP, HTTPS 2. SOAP

3. Database via JDBC 4. LDAP 5. JMS

6. Mail - POP3(S) and IMAP(S) 7. FTP服务 8. 9.

MongoDB (NoSQL) 新增支持

Native commands or shell scripts 新增支持

新增支持

10. TCP

google code里的jmeter plugins 可以增加如下的feature:具体支持的功能与增强特性,见http://code.google.com/p/jmeter-plugins/

注意: 最新的jmeter-plugins 已经支持了webdriver sampler, 已经可以模拟浏览器的行为,更真实的模拟用户访问web的行为, 可以得到更真实的性能数据. 具体是否使用,还需要根据自己的测试场景进行判断. (作者目前并不建议盲目的使用, 需要慎重考虑. 原因: 用户体验方面的性能测试可以由其他工具完成, 而性能测试则专注于特定的问题 )

具体资料信息,请访问http://jmeter-plugins.org/wiki/WebDriverSet/ 一。安装jmeter

下载jmeter是一个zip包,解压后,如果您的os里已经安装了jre或jdk(如果没有安装jre,请先安装!jre版本请使用1.6 以上版本),windows则直接运行

jakarta-jmeter-2.5.1\\bin\\jmeter.bat 就启动了该软件。正常情况一个主窗口会打开。

linux系统下运行jmeter.sh (linux下的视窗需要安装xwindows,否则无法启用

jmetergui界面。如果不想启用jmetergui界面,则可以指定参数,可以通过命令行方式进行性能测试,关于命令行方式的以后再说) 二。安装jmeter plugins

http://code.google.com/p/jmeter-plugins/downloads/list 下载

JMeterPlugins-0.5.1.zip,0.5.1 是当前最新版本。下载后,解压开。将里面的JMeterPlugins.jar文件,放入到JMETER_INSTALL_DIR/lib/ext里,重启jmeter。然后选择添加菜单,你就可以看到jp@gc为前缀的新的plugins. 之后会对主要的plugins做介绍。

Jmeter快速入门教程(二)--创建简单web测试

作者:我是谁? 2011-12-26 20:39

[版权所有: whoistester.com & jmeter.cf]

今天我们就来实际用Jmeter创建一个测试场景,并进行性能测试. 注:由于本人使用中文版本,使用英文版本的请注意具体的菜单及参数名称. 1. 添加线程组(相当于lr里的scenario 设置)

打开jmeter主窗口后, 选择左侧树形结构里的\测试计划\然后右键选择添加, 选择\我们可以看到

jp@gc开头的是google jmeter plugins里的threads group, 稍后再做解释。其他三个thread group是1) setup thread group 2) teardown thread group. 3) thread group(线程组). 如

果您用过junit,想必你不会对setup ,teardown这2个字眼陌生。 即时每用过,也没关系。 熟悉lr的应该知道,lr的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试

完毕后对应的清除信息的脚本块。 那么这里 setup thread group 和 teardown thread group 就是分别指这两部分。

ok,我们先添加一个线程组。

jmeter自带的thread group非常简单。 一个thread 代表一个vuser,那么我们如果需要多少用户并发,设置多少线程数即可。ramp-up period, 本人理解是多少时间从0个 vuser 上升到您指定的vusers数。从这些参数可以看,非常简单。但不能设置测试的时间,这一点不是特别善解人意。不过还好我们有jmeter plugins, 带的thread group 添加了这个功能。

2。添加一个http sample (测试脚本的主体)

选中线程组,右键添加一个http sample。如图所示,用baidu作为被测系统。

我们可以输入默认的连接超时和响应超时时间。lr的默认为120秒。所以我们也同样输入120秒。

3。添加结果树(用来debug脚本,遇到性能测试错误排查错误等,默认不会添加,所以需要手动添加)

为了方便调试该测试脚本,我们同样在sample的后面添加一个“监听器”里的“查看结果树”。这样每次运行,默认会把每次的http请求的request 和response 内容记录下来,方便我们进行debug脚本。当脚本调试通过后,则我们需要将查看结果树立的“仅显示日志错误”选中,这样错误的便会记录下来,方便遇到错误,进行排查。 4。添加聚合报告(用来记录执行的http sample的执行结果等,需要手动添加) 聚合报告里可以记录成功的事务数, 平均响应时间(最大,最小,90%), 错误率,网络吞吐量,事务每秒。我们关心的测试数据基本都在这里。 5。那么我们就可以执行本次简单的测试了。

那么先来描述一下这次的测试场景。我们把vusers数改成2, 循环次数改为5次。 就是并发用户数: 2 思考时间:0

循环次数:5次,循环完毕停止测试。

6。清除之前的debug信息(ctrl+E),erase清除掉之前记录的测试数据,选择菜单“运行”-〉“启动”,则开始了本次测试。

Jmeter快速入门教程(三)--添加响应断言

作者:WhoisTester 2011-12-27 22:56

[版权所有: whoistester.com & jmeter.cf]

上一节课,我们创建了一个测试场景,并进行了少量vuser的负载测试. 有时候我们执行了测试,但是发现并不是所有事务都执行成功了. 那是因为我们只是发起了测试,但并没有对每次请求测试的返回作校验. 所以加入检查点是非常有必要的.

1. 在昨天的测试脚本中,选中http请求sample. 右键添加,选择\断言\响应断言\如下图.

设置如此的断言后,则会对响应的内容(即http请求后,服务器返回的内容)进行与字符串进行匹配. 如果返回的内容包括了我们期望的字符串,则认为该次测试通过. 否则就是失败.

模式匹配规则:(通常我们经常使用的规则如下3个) 1. 响应文本 (响应文本,即返回的body 内容)

2. 响应代码 (http code 代码, 例如 200 表示成功, 400 表示参数错误) 3. response header (响应头) 响应头, 比如我们要查找某个coockie是否添加成功时,可以使用 response header的匹配规则。

如何设置JMeter集合点

作者:WhoisTester 2014-10-30 20:56

集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,

还拿那个用户和密码的地方,每到输入用户名和密码登录的地方,所有的虚拟用户都相互之间等一等,然后,一起访问。(红军排长说:等一等!大家一起冲啊!这样给敌人的压力是很大的。嘻嘻!) 1.

接着之前创建的脚本,右键点击 step1---->定时器---->Synchronizing Timer

这样子就添加了一个“集合点”,下面来设置一下集合点。

2.

我们添加完之后的列表是这个样子的,

发现了没,我们集合点的位置不对,应该在登录的前面才对。怎么弄呢?

点击“synchronizing Timer”拖动到“登录”面前的位置,不要松鼠标的左键,再点击鼠标的右键,选择在“之前插入”---有点难噢,慢慢来!

如何使用jmeter参数话

作者:WhoisTester 2014-10-30 21:00

参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。

这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问。 前提:

假如,我们录制好了一个脚本(可以用badboy工具录制),在jmeter中打开,找到有用户名和密码的页面。如下:

1.

我们需要“参数化”的数据,这里我用记事本写了五个用户名和密码,保存为.dat格式的文件。

我将这个文件放在了我的( D:\\test.dat )路径下。关于如何得到成百上千的用户名和密码,首先要在数据库中创建这些数据,将数据导出,整理保存,这里就不深究。 2.

好,我们要编写函数来调用这个test.dat文件,怎么弄, 点击菜单栏“选项”---->函数助手对话框,看下图。

更正:.dat文件第一列从0开始取得。

3.

把我们写好的函数复制到“登录”页面用户名和密码胡位置。

好了,现在我们的参数化设置完成,在脚本的时候,会调用我们D盘下面的test.dat文件,第一列是用户,第二列是密码。

注意用户名和密码是一一对应的,中间用户逗号(,)隔开。

Jmeter 关联设置

作者:WhoisTester 2014-10-30 21:11

关联的方法:

方法一,从前一个请求中取,用正则表达式提取器。

具体方法,在需要获得数据的请求上右击添加一个后置处理器-->正则表达式提取器 引用名称即下一个请求要引用的参数名称,如填写title,则可用${title}引用它。 正则表达式中()括起来的部分就是要提取的。.代表任意字符,*代表出现任意次。 模板,用$$引用起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$2$,$3$等等,表示解析到的第几个值给title。

匹配数字,0代表随机,-1代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。

方法二,用xpath从前一个请求中取。这种形式比较适合于返回为xml片段的情况。 在需要获得数据的请求上右击添加一个后置处理器-->xPath Extractor。

引用名称即下一个请求要引用的参数名称,如填写body,则可用${body}引用它。 XPath query,即xpath的表达式,要符合xpath的语法。 http://blog.sina.com.cn/s/blog_625651900100gjmm.html

http://blog.csdn.net/zhangren07/archive/2010/10/15/5944158.aspx

readonly=\城西分店\

onclick=\

别用-1

负数表示取所有值,是以数组方式存放 调用需要用数组方式调用。 0表示随机

1表示第一个匹配的 2表示第二个匹配的 依次类推

引用名称即使用的参数名;填入正则表达式;模板选取匹配的组;匹配数字为匹配的个数,负数表示全部匹配;缺省值为没有匹配到时的取值。

Jmeter中的关联用函数_regexFunction实现,函数字符串可以通过“函数助手对话框”生成。

1、正则表达式:s0.id=\如果response中有类似

s0.id=\这样的字符串,那么参数的值就为:_fks_JV8Uodp1O7nE9VFbRgYT5w==

2、参数的组别:如果前面的正则表达式取了不止一个参数(如

s0.id=\),那么这里需要制定参数的组别,如果该参数为 $1$,则表示取得第一个值(id),$2$表示取得第二个值(ip)。

3、第几个参数:组别设置好以后,还有一个问题,如果response中有两个地方都能够匹配s0.id=\这个字符串,那么这里可以选择取第几次匹配,选择1表示第一次匹配,依次类推。还可以选择All,表示选择所有匹配,这个不大用到,具体可以看jmeter的帮助。

4、当3步骤的参数选择ALL时用到,不再详述。

5、默认值:如果response中没有匹配值,就使用该默认值。 6、看不懂

Jmeter 快速入门教程(四)--录制复杂web测试脚本

作者:WhoisTester 2012-01-01 15:08

[版权所有: whoistester.com & jmeter.cf]

Jmeter的功能简单,不需要有脚本语言的编写经验,纯图形界面添加测试场景, 用起来上手很快。但是如果手动添加每一个web(http/https)请求,费时又费力。而且有可能最后手动编写的和实际发的请求有出入。 1。web性能测试以及web http请求基本原理。

再介绍录制jmeter脚本之前,我们先谈一下web性能测试。web就是调用http/https接口, 其实没有是什么复杂度可言。只是我们必须清楚,对于一个网站说,一个页面并通常不是只有一个http请求。如果需要测试一个rich web page,必须了解到这一点(测试http接口则简单的许多,只是单一的http接口请求)。 例如这样一个页面(下面是html代码)

如果向服务器请求上面的一个页面,则除了本身页面的请求本身,还有一个css和img的资源。这样打开这样一个页面,本需要有三个http请求。

1. http1 -> get the web page (首先获取你要访问的页面的html代码)

2. the web page contain two resources (假设该页面,有一个css资源和一个图片)

3. then request http2 and http3 to get the css file and image respecitively. (则会继续发起获取css和图片的请求)

所以这样就是发起了3个http请求,才完整的打开了一个页面。浏览器实际是这么做的,但浏览器作了很多优化。 (比如多线程[一般2-6个http connection,不同浏览器内核不同], http keep-alive,缓存图片,css等资源)。说道这里,不得不佩服loadrunner的强大。他可以尽量模拟浏览器的这些行为,来保证测试的结果准确性。但这些参数都可以动态调整的。(通常我们录制的富web页面, 也就是rich webpage, 通常需要使用事务控制器来辅助我们进行度量数据, 关于事务控制器请访问\如何使用事务控制器\)

注意: 最新的jmeter-plugins 已经支持了webdriver sampler, 已经可以模拟浏览器的行为,更真实的模拟用户访问web的行为, 可以得到更真实的性能数据. 具体是否使用,还需要根据自己的测试场景进行判断. (作者目前并不建议盲目的使用, 需要慎重考虑. 原因: 用户体验方面的性能测试可以由其他工具完成, 而性能测试则专注于特定的问题 )

具体资料信息,请访问http://jmeter-plugins.org/wiki/WebDriverSet/ 2。实际录制脚本

好,那么我们现在就来实际录制脚本吧,并且体验一下真正一个页面的实际http请求过程。这里我们只谈http,https不在本文所讲范围内。

录制脚本目前有2种方法,我们先介绍jmeter proxy方法。另一个是badboy录制的脚本转化为jmeter脚本,直接想了解badboy,请直接访问 http://www.badboysoftware.biz/docs/jmeter.htm jmeterproxy 来了。

1)启动jmeter,这个不多说了。

2)选择测试计划,右键添加线程组(thread group)

3)选择这个线程组,右键添加config element -〉 http默认请求

4)在http默认请求单元,填入server name 为jakarta.apache.org. 这个是我们要录制的页面。其他地方不填

5)然后选择刚才那个县城组,右键加入一个录制控制器。位于Add>Logic Controllers -> Recording Controller

6) 选择WorkBench,右键加入 Non-Test Elements -> Http proxy server 7)在http proxy server里, 的patterns to include 里,写入.*\\.html 这个是正则表达式,意思是录制所有的html为后缀名的页面。 那么如果你要录制后缀名为jsp或者do的,则写入.*\\.jsp 和 .*\\.do 分别。

8)对于url patterns to excllude的地方,是写入不想被录制的一些资源文件url(往往我们根据后缀名来进行区分)。比如不想录制http发起获取图片的请求,就需要写上*\\.jpg 或者 *\\.png 。 这些是否配置,视测试的具体场景而定。比如是否要测试静态图片等。

9)为了调试录制的情况,我们选择http proxy server ,添加一个察看结果树监听器。这个以前我们曾经用过。

10)回到http proxy server然后,选择开始启动。这样proxy server 就启动了。 11)这样我们打开一个浏览器,将浏览器的代理设置为jmeter proxy server 的ip和端口号。 因为proxy server 就在本地,所以就写localhost 和端口即可。 12)设置好代理后,用浏览器访问http://jakarta.apache.org/jmeter/index.html 13)随便点击一些连接,然后回到jmeter 的窗口,你查看结果树就看到了录制的http请求了。

14)这样的脚本,我们稍做修改,就可以使用了。

Jmeter 快速入门教程(五) -- 如何使测试脚本更强大

作者:WhoisTester 2012-01-04 21:12

添加基本的elements例如Sampler 或者一些监听器,就可以完成基本的测试。但有时需要更复杂的测试场景,所以还有更多其他的元素。清看下表,了解各种单元组的用途。

可添加的单元组 用途 The requests to the servers are being sent by these elements for the request Samplers types SOAP, JDBC,\ 采集取样器 用来进行发送 soap,jdbc,\等类型的请求 ,是测试的主体单元 The results of the run can be saved by these elements in the single request, Listeners 监听器 tabular forms etc by saving the results in a named file. 测试的结果可以通过监听器将所需要的测试结果展现或者保存起来。 保存可以保存到指定的文件里,之后也可以进行打开并展现。 To make the test more realistic we use Timers 时间器 Timers element to insert delays between the requests. 在不同的请求之间加入延迟时间, 和lr里的thinktime类似 Logic 逻辑控制器 Logic controllers are used if you have defined the request to be executed on some logic like if-then-else and loop structures in Java etc. 逻辑控制其可以让取样器在一些逻辑下进行执行,例如if -then -else 等逻辑结构。 这样可以大大增强脚本的复杂性, 可以用来实现较复杂的测试场景。 common information about the requests is added to work with samplers using this element. Configuration 一些公用的配置信息, 这样取样器就可以Elements 共享这些配置,方便对脚本的维护和使用一些 配置单元 高级用法。 例如自定义http 的header内容。 This element is used to check whether you are getting the responses within a given Assertions amount of time containing the expected data or not. 断言 用来校验返回值,以判断测试结果的正确性。 此时你需要知道Jmeter不能做什么:

Jmeter不是一个浏览器。所以他不能将html里的js脚本进行解析。这基本是和浏览器最本质的区别。他只是从底层模拟http连接,一切html的展现和机遇html的脚本语言的解析都不会进行。

注意: 最新的jmeter-plugins 已经支持了webdriver sampler, 已经可以模拟浏览器的行为,更真实的模拟用户访问web的行为, 可以得到更真实的性能数据. 具体是否使用,还需要根据自己的测试场景进行判断. (作者目前并不建议盲目的使用, 需要慎重考虑. 原因: 用户体验方面的性能测试可以由其他工具完成, 而性能测试则专注于特定的问题 )

具体资料信息,请访问 http://jmeter-plugins.org/wiki/WebDriverSet/

错误报告:

错误和警告信息对任何工具或服务都是很重要的信息。Jmeter同样存在并且输出到了jmeter.log文件里。

比如您喜欢用Jmeter的命令行方式进行测试,那么查看错误日至文件,能提高您debug的效率。

例如脚本的语法错误等。

Jmeter自定义Sample(自定义测试内容)完成测试

作者:转自互联网 2013-10-09 23:52

问题:在某些场景下我们会发现Jmeter里面提供的各种Sample不能满足自己的需求,应为

这个世界上的压力测试的逻辑本来就是千变万化的,所以这个时候我们如果自己实现一套测试逻辑(当Jmeter的基本elements和sample无法满足我们的需求时, 例如我们要测试一个udp服务, 而协议的内容是我们自定义的),这个时候需要使用jmeter 的扩展性。下面我们通过一个简单的例子来看看如何开发这样的一个自定义Sample? 自定Sample的生命周期是怎样的? 1. package com.alibaba.stress.load;

2. import org.apache.jmeter.config.Arguments;

3. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; 4. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; 5. import org.apache.jmeter.samplers.SampleResult;

6. public class LifecycleJMeterSampleextends AbstractJavaSamplerClient { 7.

8. @Override

9. public Arguments getDefaultParameters() {

10. System.out.println(\); 11. return super.getDefaultParameters(); 12. }

13. @Override

14. public void setupTest(JavaSamplerContext context) { 15. System.out.println(\); 16. super.setupTest(context); 17. }

18. @Override

19. public void teardownTest(JavaSamplerContext context) { 20. System.out.println(\); 21. super.teardownTest(context); 22. }

23. @Override

24. public SampleResultrunTest(JavaSamplerContextctx) { 25. SampleResult result = new SampleResult(); 26. result.sampleStart();

27. System.out.println(\); 28. result.setSuccessful(true); 29. result.sampleEnd(); 30. return result; 31. } 32. }

1. package com.alibaba.stress.load;

2. import org.apache.jmeter.config.Arguments;

3. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; 4. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; 5. import org.apache.jmeter.samplers.SampleResult;

6. public class LifecycleJMeterSample extends AbstractJavaSamplerClient { 7.

8. @Override

9. public Arguments getDefaultParameters() {

10. System.out.println(\ 11. return super.getDefaultParameters(); 12. }

13. @Override

14. public void setupTest(JavaSamplerContext context) { 15. System.out.println(\ 16. super.setupTest(context); 17. }

18. @Override

19. public void teardownTest(JavaSamplerContext context) { 20. System.out.println(\ 21. super.teardownTest(context); 22. }

23. @Override

24. public SampleResult runTest(JavaSamplerContext ctx) { 25. SampleResult result = new SampleResult(); 26. result.sampleStart();

27. System.out.println(\ 28. result.setSuccessful(true); 29. result.sampleEnd(); 30. return result; 31. } 32. }

其中AbstractJavaSamplerClient是从ApacheJmeter_Java.jar 中获得。编写的类文件打包xxx.jar, 把这个Jar放到Jmeter

的解压目录下的lib/ext下。重新启动jmeter.

一次先加入线程组,和聚合报告两个组件,在聚合报告组件之前加入一个新的Sample(Java Sample ), 如图:

运行测试。可以看到控制台的输出。调整几次线程组的线程数目的控制,我们会发现我们的这个自定义类中的teardowntest和setupuptest方法都是正对线程组中的某一个线程来执行

的,线程组中线程的调用数目其实就是指runtest方法的运行次数。

Jmeter 快速入门教程(六) -- 用Jmeter测试你的EJB

作者:WhoisTester 2012-01-09 21:35

有时候,需要对EJB进行性能基准测试,这对开发非常有帮助. 有很多种方法可以这么做, 当然我们这里介绍Apache's Jmeter 来进行实验测试. 非常不幸的是, Jmeter没有提供一个现成的测试EJB的sampler, 但是我们可以很方便的自己创建一个. 这篇文章,我们用Jboss容器服务来作为ejb服务. 1) 创建一个工厂来查询你的EJB

第一件事情,我们来创建一个简单的一个工厂类用来创建EJB客户段实例.这个实例用来进行测试.

public class MyServiceFactory {

private static final Log log = LogFactory.getLog(MyServiceFactory.class); private static MyService service; private static MyServiceFactory me; private MyServiceFactory() { } static {

MyServiceFactory.me = new MyServiceFactory(); }

public static MyServiceFactorygetInstance() { return MyServiceFactory.me;

}

public MyServicegetService() { if (MyService.service == null) {

// Get the remote interface of the music search service try {

log.info(\// JNDI the old-fashioned way: Context ctx = new InitialContext();

service = (MyService)ctx.lookup(\if (service == null) {

log.error(\}

} catch (NamingException e) {

log.error(\return null; } }

return service; } }

2) 写测试类.

接下来,我们就写测试的主体class. 这个class因为是一个sampler,所以我们要继承jmeter

的 org.apache.jmeter.protocol.java.sampler package. 这个抽象类由一个runtest

方法,我们需要重写这个方法即可. 除了这个,我们可能还需要重写

getDefaultParameters 方法. 这个方法用来提供一些参数值,用来展现在Jmeter's GUI . 就是我们可以通过gui上的输入框等ui空间,将参数传给该class测试类. (package 包位于 \\lib\\ext\\ApacheJMeter_java.jar 和 \\lib\\ext\\ApacheJMeter_core.jar) 需要被引用.

package us.mikedesjardins.demo.jmeter; import org.apache.jmeter.config.Arguments;

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult;

public class DigitalContentServiceEJBTestSampler extends AbstractJavaSamplerClient {

public SampleResultrunTest(JavaSamplerContext context) { SampleResult results = new SampleResult();

MyService service = MyServiceFactory.getInstance().getService(); results.sampleStart();

Long param1 = context.getLongParameter(\String param2 = context.getStringParameter(\MyResult result = service.myMethod(param1, param2); if (result != null) { results.setSuccessful(true); results.setResponseCodeOK();

results.setResponseMessage(\} else {

results.setSuccessful(false); }

results.sampleEnd(); return results; }

@Override

public Arguments getDefaultParameters() { Arguments args = new Arguments();

args.addArgument(\args.addArgument(\return args; } }

2) 设置jmeter

${JMETER_INSTALL_LIB}/lib/ext是jmeter额外需要的库的文件夹. 里面放的都是需要的第三方的额外库.因为我们进行测试ejb,用刀了ejb client 依赖一些ejb client库,所以我们需要将jbossall-client.jar 放入此文件夹.

将我们自己写的sampler 声称jar包,也放入该目录.

然后重启Jmeter.

3) 启动后, 添加threadGroup, 然后添加java Request Sampler, 然后选择你要进行测试的类名称.

4) 那么你就可以开始测试你的EJBs了.

Jmeter 快速入门教程(八) -- jmeter事务控制器

作者:whoistester 2013-12-16 22:16

[whoistester.com 译, 被墙原文]

你肯定知道, jmeter是一个跨系统平台的性能测试工具, 比如他可以在linux,freebsd,windows,solaris 等等各种系统上可以运行. 我可以说, 事务 transaction controller 控制器是jmeter作性能测试中最重要的. 让我来分享一些关于事物控制器的经验吧.

如果你看了录制jmeter脚本那一章, 你会知道jmeter会录制很多的子请求. 比如当打开首页后, 会继续打开图片, css等资源文件. 通常我们会剔除掉这些子请求, 但如果我需要衡量打开一个页面(包含所有子请求) 到底的性能, 请求时间如何时, 我们会计算包含所有子请求的数据. 这时我们必须使用事物控制器. ( 当然除了这种情况, 在进行api的测试时, 通常也需要事物控制器, 例如 假设api1 获取tgt, api2根据tgt 获取st, 假设该openauth 登陆的过程, 我们将这2步api的调用, 看做一次登陆成功. 那么我们需要将这2步操作,看为一个事务) . 让我们直接来看一个例子吧.

如上图, 有2个主要的http请求. 1个是主页请求, 主页请求又包含了4个子请求. 另外一个主请求是faq页面.

我添加了一个事务控制器(transaction controller), 将主页及其四个子请求都放在了该事务控制器下.

我进行了一次测试,看下聚合报告里的内容.

你可以看到一个事务控制器的标签. 这个事务器则包含了(Home Page, .jpg request, .gif request, .png request, .js request) 这几个请求. 虽然我们把这几个请求的数据相加,可以得到类似于该控制器的数据. 但仅仅是相似而已.

事务控制器中的声称父sample(采样)的标志位的含义.

如果选中了该标志位, 则你不会看到事务控制器包含的所有子元素.

这时候, 再跑一次测试, 你再看聚合报告的时候, 会发现,我们只能看到\事务控制器\和 FAQ 页面的测试报告数据了.

Jmeter 快速入门教程(九) -- 监控被测资源

作者:网友 2013-12-19 00:13

写在前面的话, 作者认为jmeter的监控被测服务器资源只是基本可用, 还好习惯了linux的各种命令和工具,所以也基本不用担心什么了.但是有了图形化的监控, 也方便给领导出报告. 怎么说也是不错的.

在准备正式开始性能测试时,发现,原有的服务器端性能监控的方案,无法通过非GUI模式保存性能数据,而且所记录性能数据比较单一,只有内存的使用情况;所以尝试其他方法; 找到的方法

http://jmeter-plugins.org/wiki/PerfMonAgent/?utm_source=jpgc&;utm_medium=link&utm_campaign=PerfMonAgent

是jmeter官方发布的一个专门作用做web服务器性能监控的工具,包括两部分,需要下载

JMeterPlugins-Standard-1.1.1.zip, 安装到Jmeter之后就会多一个监视器

其次需要下载 ServerAgent-2.2.1.zip

这个是服务器代理,在需要监控的服务器上运行用来采集并向测试机发送服务器信息; 使用方法

$ ./startAgent.sh --udp-port 0 --tcp-port 3450

INFO 2011-11-25 19:02:14.315 [kg.apc.p] (): Binding TCP to 3450

下面是官网的简介 jmeter很好很强大呀

Servers Performance Monitoringsince 0.3.0 Introduction

During a load test, it is important to know the health of the servers loaded. It is also nice to see if you are targeting a cluster if the load is correctly dispatched. To address this, the plugin package now supports server monitoring! Using it, you can monitor CPU, Memory, Swap, Disks I/O and Networks I/O on almost all platforms!

Here is how the plugin looks like. It shows the CPU usage of 4 servers involved in the load test:

Metrics collected

Since version 0.5.0 the Server Agent tool supports collecting over 75 system metrics. See full list.

本文来源:https://www.bwwdw.com/article/vs87.html

Top