分享
 
 
 

在 JMeter 压力测试工具中使用变量

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

原文来自: http://thinkbase.net/, 在 JMeter 压力测试工具中使用变量

Apache JMeter( http://jakarta.apache.org/jmeter/ )是来自 Apache Jakarta 项目的一个压力测试工具, 目前版本2.0.3, JMeter 支持 HTTP, FTP, SOAP/XML-RPC, JDBC 等多种目标的压力测试(参见下图).

关于 JMeter 的一般使用在它的官方主页和其它网站可以搜索到不少文章, 但是很少看到如何使用一些动态内容(比如在 HTTP 请求中使用变量作为参数)的文章, 最近因为工作需要, 在这方面做了一些摸索, 总结如下.

0.测试项目概述为了尝试如何使用变量, 我们首先需要建立一个测试项目, 在这里使用了 Buffalo (一种 AJAX 技术, 详细资料参见 http://www.amowa.net/buffalo/index.html ), 或者可以看一下我下载的这个文件(att:在 JMeter 压力测试工具中使用变量.Buffalo-info.zip)中的说明和例子. 目前 Buffalo 还不是很稳定, 但是建立一个测试环境已经足够了, 而且很方便.

我们建立的这个例子叫做 "buffalo-jmeter", 将这个压缩文件(att:在 JMeter 压力测试工具中使用变量.buffalo-jmeter.zip)中的 buffalo-jmeter.war 文件复制到 Tomcat(我用的是 Tomcat 5.0.30) 的 webapps 目录下, 待 Tomcat 自动发布完成之后就可以通过 http://localhost:8080/buffalo-jmeter/ (假设是发布在本地的Tomcat上) 访问测试页面(如下图).

在这个例子中我们假设一个业务: 首先通过 getToken() 获得一个凭证, 然后通过这个凭证使用 getOrder() 去申请一个订单,

凭证上存在时间记录, 如果超过设定的时间(例子中是10秒)后这个凭证就失效而无法用于申请订单了(在上图中的对话框正说明了这种情形).

1.测试中遇到的问题首先我们需要知道 Buffalo 其实是一种 XML-RPC 技术, 所以我们可以使用 JMeter 的 SOAP/XML-RPC Request 这个 Sampler 进行测试, 但是为了方便快捷进行测试, 以下两个问题需要解决:如果测试服务器发生变化, 如何方便的一次性改变所有请求的 URL 地址;如上一节所述, 10秒钟后凭证会失效, 因此我们在测试 getOrder() 的时候不能输入固定的凭证号, 应该每10秒左右获取一个新的凭证, 这样操作的难点在于如何自动让 JMeter 得到新获得的凭证号并应用到 getOrder() 请求中.

2.静态变量(用户定义的变量)JMeter 允许对一个测试计划(*.jmx)设置用户定义的变量, 因此我们可以把象 URL 等需要统一修改的值作为变量定义起来(如下图);

变量在使用时可以使用 ${变量名} 的方式引用, 如下图:

3.从 Response 中获得数据可以使用 JMeter 提供的 后置处理器(Post Processers)

--> 正则表达式提取器 (Regular Expression Extractor) 从返回的结果中取得数据, 在确定

getToken() 请求的返回值是类似下列的 XML 之后,

<?xml version="1.0" encoding="utf-8"?>

<burlap:reply xmlns:burlap="http://www.amowa.net/burlap/">

<string>TK1119466440468</string>

</burlap:reply>

我们可以使用正则表达式 "<string>(.*)<\/string>" 来提取我们需要的凭证号.

首先我们可以使用Javascript 正则表达式测试页面来测试一下这个正则表达式是如何被执行的(如下图):

可以看到执行结果中, 我们需要的凭证号处于"array[1]"的位置.

这样使用"正则表达式提取器"(如下图), 注意图中的"引用名称"就可以认为是存放提取出来的数据的变量名:

提取出来的变量可以这样被引用(如下图), 其中"_g1"代表"group number"(参见 JMeter 的联机帮助: ...

[refname]_g# ... ... and # is the group number, where group 0 is the

entire match, group 1 is the match from the first set of parentheses,

etc.)

4.测试结果分析我们使用3个线程同时对测试项目进行压力测试(如下图)

通过对结果的分析我们看到了提取出来的变量确实在起作用, 而且, 这个变量是每个线程各自独立的(如下图)

后记对原 Buffalo 代码的修改:

原来 net.buffalo.server.BuffaloServiceServlet 中在输出结果 xml 中没有使用 response.setContentType("text/xml"), 这导致返回的 xml 没有正确的 ContentType, 进而使 JMeter 无法获得 Response, 在代码中加上这句语句才能正确使用 JMeter 进行测试;下载的文件 att:在 JMeter 压力测试工具中使用变量.buffalo-jmeter.zip 中的 net.buffalo.server.BuffaloServiceServlet 是已经修改过这个问题的, 因此可以直接用于测试;

文件 att:在 JMeter 压力测试工具中使用变量.buffalo-jmeter.zip 中还包括了上述的 JMeter 测试计划(Buffalo-test.jmx).

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有