脚本调试

关联,在脚本中,是必应用到的一个设置方法,将脚本中,每次都会动态变化的特殊值进行关联。一个能正确执行的脚本,都需要进行关联(LR、jmeter)。

Jmeter关联:

在脚本回放过程中,客户端发出请求,通过Jmeter中的正则表达式提取器所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法称作关联。通俗点说,就是把脚本中某些写死的(hard-coded)数据,转变成撷取自服务器所送的、动态的、每次都不一样的数据。

关联分两种,提取单个字符串和多个字符串。

先添加正则表达式提取器,如下所示:

正则表达式提取器:

允许用户从服务器的响应中通过使用perl的正则表达式提取值。该元素会作用在指定范围取样器,用正则表达式提取所需值,生成模板字符串,并将结果存储到给定的变量名中。

提取单个字符串

假如想匹配Web页面的如下部分:

name="csrf_token" value="a8443cafdd8ea7f9"/>

提取该值,正则表达式写为:name="csrf_token" value="(.+?)"/>。

修改脚本如下:

可以添加一个取样器 来查看所得的所有值

运行脚本,可以查看到如下结果:

token=6a353e4b0c9fd4e6
token_g=1
token_g0=name="csrf_token" value="6a353e4b0c9fd4e6"/>
token_g1=6a353e4b0c9fd4e6

 提取多个字符串

假如想匹配Web页面的如下部分:

name="csrf_token" value="a8443cafdd8ea7f9"/>并提取csrf_token和a8443cafdd8ea7f9。

添加正则提取器,写入正则表达式,如下所示,正则表达式为:name="(.+?)" value="(.+?)"/>。

我们先运行一遍

我们得到了几个值:

token=csrf_token41bbd186910d7c23
token_g=2
token_g0=name="csrf_token" value="41bbd186910d7c23"/>
token_g1=csrf_token
token_g2=41bbd186910d7c23

这就是我们要找的值

上面报错没关系  因为我们还没有修改那个变量名

token_g1 _g2 是系统自己帮你创建的名字  你可以直接使用

token_g1=csrf_token
token_g2=41bbd186910d7c23

再运行一次   就可以了

正则表达式提取器详解:

先看一张图,就是正则提取器的面板,如下所示:

名称: 随意设置, 最好具有业务上的意义, 方便区分

注释: 随意设置, 一般不填写

Apply to: 应用范围, 包含4个选项。

  Main sample and sub-samples: 匹配范围包括当前父取样器并覆盖子取样器。

  Main sample only: 匹配范围是当前父取样器(一般默认选择这个) 。

  Sub-samples only: 仅匹配子取样器。

  Jmeter Variable: 支持对Jmeter变量值进行匹配。

要检查的响应字段: 针对响应数据的不同部分进行匹配, 共七个选项。

  主体: 响应数据的主体部分, 排除Header部分; Http协议返回请求的主体部分就是

  Body:(一般默认选择这个)

  Body(unescaped) : 针对替换了转义码的Body部分。

  Body as a Document: 返回内容作为一个文档进行匹配。

  信息头: 只匹配信息头部分的内容。

  URL: 只匹配URL链接。

  响应代码: 匹配响应代码, 比如状态码200代表成功等。

  响应信息: 匹配响应信息, 比如”成功” “OK”等。

  引用名称: 即下一个请求要引用的参数名称, 如填写token, 则可用${token}引用它。

正则表达式: 正则表达式提取器根据该处的设置进行信息匹配

模板: 用$$引用起来, 如果在正则表达式中有多个正则表达式, 则可以是$1$, $2$等等, 表示解析到的第几个值给token, $1$表示第一个模板, $0$表示全文匹配。

匹配数字: 用正则表达式匹配的时候, 可能出现多个值的情况, 为正数用来确定取一组值中的第几个, 为0表示随机取匹配值, 负数取所有值。

默认值: 如果没有匹配到可以指定一个默认值。

正则表达式匹配注意事项:

  如果不能匹配,那么显示变量名称,如  ${token}

正则的操作符与含义如下所示:

本文仅代表作者观点,系作者@请多指教 发表。
欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
文章出处: http://www.cnblogs.com/yushengaqingzhijiao/p/7652639.html

Jmeter脚本调试之关联----(正则表达式)的更多相关文章

  1. Jmeter脚本调试——关联(正则表达式)

    关联,在脚本中,是必应用到的一个设置方法,将脚本中,每次都会动态变化的特殊值进行关联.一个能正确执行的脚本,都需要进行关联(LR.jmeter). Jmeter关联: 在脚本回放过程中,客户端发出请求 ...

  2. jmeter脚本调试过程

    1.添加监听器:查看结果树,再回放脚本 2.权限验证,例如:cookies a.谷歌浏览器F12获取session

  3. 调试JMETER脚本的5种方法

    如果你曾经设计过JMeter脚本,我敢打赌你至少有一次弄清楚Json Extractor无法正常工作的原因.你猜怎么着?我去过那儿! 你知道为什么最好的JMeter Performance Engin ...

  4. Jmeter关联,正则表达式提取器使用1

    Jmeter关联,正则表达式提取器使用    一.Jmeter关联的方式: Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态 ...

  5. Jmeter 压力测试笔记(3)--脚本调试/签名/cookie/提升吞吐量/降低异常率/提升单机并发性能

    import XXXsign.Openapi2sign;---导入jar包中的签名方法 String str1 = "12121"; ---需要被签名的字段:向开发了解需要哪些哪些 ...

  6. Jmeter脚本录制方法(一)——分别使用Badboy录制和Jmeter自带的代理服务器录制

    Jmeter录制方式分三种,分别是:使用Badboy录制.Jmeter自带的代理服务器录制和手工录制,今天先介绍前两种录制方法. Badboy录制 Badboy是用C++开发的动态应用测试工具, 其拥 ...

  7. Jmeter脚本录制方法(二)——手工编写脚本(jmeter与fiddler结合使用)

    jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...

  8. Jmeter脚本录制方法(二)手工编写脚本(jmeter与fiddler结合使用)

    jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...

  9. Jmeter脚本录制方法(一)分别使用Badboy录制和Jmeter自带的代理服务器录制

    Jmeter录制方式分三种,分别是:使用Badboy录制.Jmeter自带的代理服务器录制和手工录制,今天先介绍前两种录制方法. Badboy录制 Badboy是用C++开发的动态应用测试工具, 其拥 ...

随机推荐

  1. 动态生成表格的每一行的操作按钮如何获取当前行的index

    for(var i=0; i<10; i++) { $("#tableList").append( $("<tr>").append( $(& ...

  2. 总结一下现在关于Design Support Library的几个博客

    原文转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0713/3179.html 关于Design Support Libr ...

  3. 利用reverse索引优化like语句的方法详解

    在有一些情况下,开发同学经常使用like去实现一些业务需求,当使用like时,我们都知道使用like 前%(like '%111')这种情况是无法使用索引的,那么如何优化此类的SQL呢,下面是一个案例 ...

  4. python集合增删改查,深拷贝浅拷贝

    集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. 关系 ...

  5. 浏览器兼容性--IE11以及Edge等下载文件的中文名出现乱码,前后端解决方案

    项目中有用到文件下载功能,之前在处理下载时对IE浏览器下文件下载名进行过处理,测试也没有问题,但是功能上线后,业务反馈IE11文件下载文件名依然乱码.打印User-Agent字符串如下: IE11 U ...

  6. C#设计模式之二十二访问者模式(Visitor Pattern)【行为型】

    一.引言   今天我们开始讲"行为型"设计模式的第九个模式,该模式是[访问者模式],英文名称是:Visitor Pattern.如果按老规矩,先从名称上来看看这个模式,我根本不能获 ...

  7. IntelliJ IDEA 左侧列表设置忽略文件格式

    什么问题 idea 中设置忽略文件 Unity开发过程中使用Lua做逻辑开发 Unity会自动生成xx.meta文件 这种文件再使用Idea开发过程中没有用处 显示文件列表中会看着比较乱 如何设置 F ...

  8. php-基础知识-apache服务器

    一.支持php的服务器有:iis.apache.lighted(德国制造).nginx(俄罗斯制造,功能强大[反向代理.服务器集群.流媒体服务器........].轻量) 二.今天主要分享apache ...

  9. 优化设计提高sql类数据库的性能

    前言 在一个项目中,技术的统一性是最重要的,数据库的设计则是重点中的重点.NoSQL 是目前最流行的数据库,但是其实用性和功能性远不如sql数据库. 实际很多SQL数据库被诟病的性能问题大多是源于程序 ...

  10. Python学习_11_类和实例

    类和实例 类是对象创建实例的模板,而实例则是对象的实体.类使用class关键字定义: class MyClass:    pass python中创建实例直接使用工厂函数(类名加上一对括号),和其他的 ...