jmeter 技巧 参数 正则表达式_jmeter _g1-程序员宅基地

技术标签: apache  tomcat  测试  正则表达式  测试工具  javascript  

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

jmeter <wbr>技巧 <wbr>参数 <wbr>正则表达式

  关于 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上) 访问测试页面(如下图).

jmeter <wbr>技巧 <wbr>参数 <wbr>正则表达式

在这个例子中我们假设一个业务: 首先通过 getToken() 获得一个凭证, 然后通过这个凭证使用 getOrder() 去申请一个订单, 凭证上存在时间记录, 如果超过设定的时间(例子中是10秒)后这个凭证就失效而无法用于申请订单了(在上图中的对话框正说明了这种情形).


 1.测试中遇到的问题

 首先我们需要知道 Buffalo 其实是一种 XML-RPC 技术, 所以我们可以使用 JMeter 的 SOAP/XML-RPC Request 这个 Sampler 进行测试, 但是为了方便快捷进行测试, 以下两个问题需要解决:

 如果测试服务器发生变化, 如何方便的一次性改变所有请求的 URL 地址;

 如上一节所述, 10秒钟后凭证会失效, 因此我们在测试 getOrder() 的时候不能输入固定的凭证号, 应该每10秒左右获取一个新的凭证, 这样操作的难点在于如何自动让 JMeter 得到新获得的凭证号并应用到 getOrder() 请求中.

 2.静态变量(用户定义的变量)

 JMeter 允许对一个测试计划(*.jmx)设置用户定义的变量, 因此我们可以把象 URL 等需要统一修改的值作为变量定义起来(如下图);
 jmeter <wbr>技巧 <wbr>参数 <wbr>正则表达式

变量在使用时可以使用 ${变量名} 的方式引用, 如下图:
 jmeter <wbr>技巧 <wbr>参数 <wbr>正则表达式

3.从 Response 中获得数据
 可以使用 JMeter 提供的 后置处理器(Post Processers) --> 正则表达式提取器 (Regular expression_r 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]"的位置.
 jmeter <wbr>技巧 <wbr>参数 <wbr>正则表达式

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

提取出来的变量可以这样被引用(如下图), 其中"_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.)
 jmeter <wbr>技巧 <wbr>参数 <wbr>正则表达式

4.测试结果分析
 我们使用3个线程同时对测试项目进行压力测试(如下图)
 jmeter <wbr>技巧 <wbr>参数 <wbr>正则表达式

通过对结果的分析我们看到了提取出来的变量确实在起作用, 而且, 这个变量是每个线程各自独立的(如下图)
 jmeter <wbr>技巧 <wbr>参数 <wbr>正则表达式

后记

 对原 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).

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luckarecs/article/details/7053571

智能推荐

人体红外传感器HC-SR501_hc sr501工作原理-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏18次。本文记录的是如何用stm32使用HC-SR501。实验平台:野火指南者stm32f103vet6。实验现象:一旦有人体经过,LED会亮红色。HC-SR501 传感器工作原理人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10UM 左右的红外线,被动式红外探头就是靠探测人体发射的 10um 左右的红外,进行工作的。人体发射的 10um 左右。_hc sr501工作原理

微信小程序云开发之创建数据库表和初始化云环境_微信云开发 自动创建表-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏59次。微信小程序云开发创建数据库表1.进入小程序后点击云开发,开启云开发功能。2.开启云开发功能后会进入云开发控制台后点击左上角的数据库,后点击下面的“+”创建数据表。表名随便取,你开心就好,我的表名叫testDatabase。2.创建完表后,点击右侧的“+添加记录”会弹出一个弹窗,这个弹窗就是填写你所需要的字段。看你需要自己定义字段名,字段类型和值。3.一次只能创建一条数据,且每次创建每一条数据的字段名和类型必须一样。创建完后每一条数据都会多一个“_id”字段,这是云开发数据库自动给_微信云开发 自动创建表

使用选项卡创建CSS3 / jQuery跨浏览器下拉菜单-程序员宅基地

文章浏览阅读126次。CSS3/jQuery dropdown menu with tabs tutorial. This is our seventh CSS3 menu. Today we will make dropdown menu with parental tabs (as first level). Part of the work we pass on to the shoulders of jQuer..._./images/tabs/left_memu_1.png

Hypack 2016-2018设置使用测试与相关下载_hypack2016-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏9次。Hypack 2016-2018使用测试与相关下载1、hypack 2016、hypack 2017、hypack2018通过现场使用测试,发现64位版本破解无效,32位破解成功。2、Hypack 6.2以前的版本,导航硬件典型配置库文件为nmea.DLL。(配置为nmea.DLL输出WGS84与本地54坐标XY出现错误)3、Hypack 2016-2018版本导航硬件配置库文件应该采用G..._hypack2016

CiteSpace使用入门教程_citespace怎么用-程序员宅基地

文章浏览阅读8.1k次,点赞4次,收藏17次。CiteSpace软件的使用及应用_citespace怎么用

这6种最佳移动自动化测试工具你知道吗?_移动应用测试工具有哪些-程序员宅基地

文章浏览阅读1k次。它还带有一个客户端库的特性,可以托管 Java、Python、C# 等中的锅炉代码,以帮助 QA 更快、更有效地开发测试脚本。testRigor 是超级可靠的,因为它为人类各自创建了一个测试套件,也就是说,它不依赖于 XPath 之类的源。它是一个基于云的移动自动化测试工具,允许用户在各种设备和操作系统版本上以连续的时间间隔快速运行测试。总而言之,它是一个很好的工具,但既不是免费的也不是开源的。ZAPTEST 的卖点是它的投资回报率计算器,它允许像您这样的企业计算这种自动化工具的投资回报率。_移动应用测试工具有哪些

随便推点

一次实战中对tp5网站getshell方式的测试-程序员宅基地

文章浏览阅读711次。0x00 前言之前接触tp5的站比较少,只知道利用RCE漏洞getshell的方式。在最近对一个发卡平台渗透的过程中,由于php版本限制,无法直接使用RCE的payload拿shell,于是结合该网站尽可能多的测试一下tp5+php7.1环境下的getshell方法。0x02 正文拿到站点后,访问首页如下测试中,发现是thinkphp的站,报错如下不过看不出来具体版本,不确定是否存在RCE,于是...__method=__construct&method=get&filter[]=call_user_func≥t[]=phpinfo

浮动清除与弹性布局_怎么禁用弹性布局-程序员宅基地

文章浏览阅读1.7k次。浮动清除与弹性布局浮动布局弊端:父元素高度塌陷。https://blog.csdn.net/Victorymh/article/details/95494748清除浮动方式:方法一:设置父元素高度(仅仅只适用于知道子元素具体有多高)方法二:在父元素的最后1个子元素后面添加1个空的div,不需要设置其他任何的样式,只需要设置clear:both;清除左右浮动,让父元素重新计算子元素的高度。在这里插入图片描述方法三:最佳清除浮动解决方案,伪元素(:after)解决方案。这里的clear只是个类名_怎么禁用弹性布局

vue3的代码改成vue2的转换_vue3组件 转 vue2-程序员宅基地

文章浏览阅读8.7k次。vue3<!DOCTYPE html><html><head><meta charset="utf-8"><title>Vue的方法_侠课岛(9xkd.com)</title><script src="https://unpkg.com/vue@next"></script></head><body> <div id="hello-vue" class="_vue3组件 转 vue2

vue2.0与支付个人总结-程序员宅基地

文章浏览阅读275次。最近在使用vue写webapp,app中要求可以实现线上支付,研究了微信H5支付与支付宝H5支付。其中微信H5支付处在内测阶段,需要申请,按照格式写了邮件七个工作日也没得到回复邮件,据说微信H5支付对于单量和交易额有要求,满足要求后才有很大几率开通。支付宝H5支付相对申请较为简单,人工技术客服强大,基本能解决很多问题,不得不说这点还是阿里..._vue2.0 调用app支付

yml配置文件中map的配置-程序员宅基地

文章浏览阅读6.5k次。yml中map的配置文件

python中摄氏度的符号咋打_linux下怎么方便的输入度数符号 °-程序员宅基地

文章浏览阅读5k次。你的位置:问答吧-> Linux 入门-> 问题详情linux下怎么方便的输入度数符号 °在windows下可以用Alt 0176输入,在MAC下也有方便的方法可以输入,在linux下呢?参见:http://anonymouse.org/cgi-bin/anon-w...egree_(symbol)作者: mu..._linux 输入法 摄氏度

推荐文章

热门文章

相关标签