1.简介

  前置处理器是在发出“取样器请求”之前执行一些操作。如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行。前置处理器最常用于在取样器请求运行前修改其设置,或更新未从响应文本中提取的变量。前置处理器主要是用来处理请求前的一些准备工作,比如参数设置、环境变量设置等等。

2.预览前置处理器

  首先我们来看一下JMeter的前置处理器,路径:线程组(用户)->添加->前置处理器();我们可以清楚地看到JMeter5中共有8个前置处理器(不包括jp@gc开头的前置处理器,这个是宏哥安装的插件),如下图所示:

如果上图您看得不是很清楚的话,宏哥总结了一个思维导图,关于JMeter5的前置处理器类型,如下图所示:

通过以上的了解,我们对前置处理器有了一个大致的了解和认识。下面宏哥就给小伙伴或则童鞋们分享讲解一些通常在工作中会用到的前置处理器。

3.常用前置处理器详解

这一小节,宏哥就由上而下地详细地讲解一下常用的前置处理器。

3.1JSR223 PreProcessor

JSR223 预处理程序,用于对于采集器进行处理,且是在sampler启动之前 。

1、我们先来看看这个JSR223 PreProcessor长得是啥样子,路径:线程组 > 添加 > 前置处理器 > JSR223预处理程序,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Language:语言,开发脚本选择的语言,使用的JSR223语言,可根据需要选择;

Parameters:参数,传递给脚本的参数;

File Name:文件名,本地开发的脚本文件(会覆盖在JMeter里编写的脚本);

Script compilation caching:存储编译的脚本,默认勾选;

Script:要运行脚本。编写脚本的区域。

3.1.1实例

用法类似Beanshell 取样器,可以参考:Jmeter(十五) - 从入门到精通 - JMeter导入自定义的Jar包 这篇文章。具体用法如下:

1、新建测试计划,线程组下添加JSR223 预处理程序,如下图所示:

2、然后再添加调试取样器,如下图所示:

3、参考脚本代码:

import com.bjhg.test.BeanShellJMeter;

BeanShellJMeter bs = new BeanShellJMeter("宏哥","北京");

vars.put("username",bs.getUserName());

4、配置好以后,点击“保存”,运行JMeter,查看表格结果,如下图所示:

3.2用户参数

用户参数,用于做几组参数给线程组的各个线程使用,如果线程数多于用户参数组数,则多出来的线程则从第一组用户参数开始依次调用参数组;简单来说就是给不同线程组(用户)使用不一样的变量值。

1、我们先来看看这个用户参数长得是啥样子,路径:线程组 > 添加 > 前置处理器 > 用户参数,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Update Once Per Iteration:标识是否每轮迭代更新一次元素;

3.2.1实例

1、新建测试计划,线程组下添加用户参数,如下图所示:

2、然后再设置线程数为3,如下图所示:

3、配置好以后,点击“保存”,运行JMeter,查看表格结果,如下图所示:

3.3HTML链接解析器

HTML链接解析器,用于从前一个sampler返回的html页面中按照规则解析链接和表单,再根据此处理器所在的sampler中的规则进行匹配修改,而后该sampler会执行;

1、我们先来看看这个HTML链接解析器长得是啥样子,路径:线程组 > 添加 > 前置处理器 > HTML链接解析器,如下图所示:

3.3.1实例

1、新建测试计划,线程组下添加1个仅此一次控制器,在仅此一次控制器下再添加1个HTTP信息头管理器,2个取样器 度娘搜索 和 点击链接,如下图所示:

(1)HTTP信息头管理器

(2)度娘搜索(此取样器为一个搜索请求,返回HTML页面)

(3)点击链接(此取样器添加一个HTML链接解析器,解析器会将取样器返回的HTML页面按照取样器中的各个正则表达式匹配并发送此取样器)

2、然后再在点击链接 添加HTML链接解析器,如下图所示:

3、配置好以后,点击“保存”,运行JMeter,查看表格结果(),如下图所示:

(1)度娘搜索结果

(2)点击链接结果

3.4HTTP URL 重写修饰符

HTTP URL重写修改器,此处理器与HTTP Link Parser类似,但专用于使用url重写来存储sessionId而非cookie的http request,在线程组级别添加此修改器则应用于所有sample,若为单个sample添加则只适用该sample。顾名思义就是帮我们重定向URL请求;重写URL来存储会话id。我们知道浏览器与服务器之间的会话一般用cookie来管理,在JMeter中就是HTTP Cookie管理器,但是在实践工作中还有另外一种会话保持方式。比如系统只允许登录成功的用户才可以访问系统,当用户登录成功后返回一个SessionID(或者JsessionId)给用户,后续访问都需要验证这个SessionID。如果后续请求都是以Get的方式提交表单,那么SessionID需要附加在URL链接中,而且每一个Get的请求都是如此,这种重复的工作,显然是可以用一个操作来完成的,在JMeter中这个操作就是HTTP URL重写修饰符。

为什么使用URL地址重写? 
    因为有些浏览器的安全设置,禁用了session.而session的原理则是把session的ID保存在客户端的cookie中。所以这个时候如果cookie功能被禁用的话,所有使用session的功能将失效.如果采用url地址重写技术,则server会把session经过编码以后,写到url地址后面当做参数来传递.这样既提高了客户端的安全性,同时也避免了功能被屏蔽的风险。

1、我们先来看看这个HTTP URL重写修饰符长得是啥样子,路径:线程组 > 添加 > 前置处理器 > HTTP URL重写修饰符,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Session Argument Name:会话参数名称,用于搜索sessionId,其他sample也可通过此参数来 调用其获取的sessionId;

Path Extension:路径扩展,如url添加了分号作为分割,则勾选此项;

Do not use equals in path extension:用于url不用等号来分割key和value的类型;

Do not use questionmark in path extension:用于不带?的类型;

Cache Session Id?:勾选此项则会存储在其挂载的sample上获取到的sessionId供后边的其他sample使用;

URL Encode:是否使用url编码;

3.4.1实例HTTP URL重写修饰符原理

3.5JDBC PreProcessor

数据库预处理器,用于在sample开始前查询数据库并获取一些值; jdbc预处理程序,和取样器的JDBC Request一样。可以参考宏哥的这一篇文章:Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)

1、我们先来看看这个JDBC PreProcessor长得是啥样子,路径:线程组 > 添加 > 前置处理器 > JDBC预处理程序,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Variable Name of Pool declared in JDBC Connection Configuration:连接池名称,需与JDBC链接配置中的Variable Name相同(此预处理器需要一个JDBC Connection Configuration,此配置器在配置元件中);

Query Type:数据库查询类型,根据需要自行选择;

Query:数据库语句输入框,根据需要输入,注意结尾不要加”;”;

Parameter values:参数名称,如果Query的语句中有”?”则此处填值,可以使用调用参数方式;

Parameter types:参数类型,与Parameter values对应,设置参数类型,与sql字段类型相同;

Variable names:设定此项可以获取固定列的所有值;

Result variable name:随意设定一个名称,则此名称会被作为一个参数并对应Query出来的内容;可以使用参数调用的方法来获取此设置的名称对应的值;

Query timeout(s):超时时间;

Handle ResultSet:有四个选项,结果保存的方式;

3.6RegEx User Parameters

正则表达式,使用正则表达式为从另一个HTTP请求中提取的HTTP参数指定动态值,配合regular expression extractor使用。暂时没找到好的例子,后面想到补充。。

1、我们先来看看这个JSR223 PreProcessor长得是啥样子,路径:线程组 > 添加 > 前置处理器 > JSR223预处理程序,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Regular Expression Reference Name:调用的正则表达式提取器中的引用名称;

Parameter names regexp group number:用于提取参数名称的正则表达式的组编号;

Parameter values regex group number:用于提取参数值的正则表达式的组编号。

3.7Sample Timeout

超时器,用于设定sample的超时时间,如果完成时间过长,此预处理器会调度计时器任务以中断样本;

1、我们先来看看这个Sample Timeout长得是啥样子,路径:线程组 > 添加 > 前置处理器 > Sample Timeout,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Sample timeout:超时时间;

3.8BeanShell PreProcessor

BeanShell是一种免费的java源码解释器,支持对象式的脚本语言,也可以嵌入到java源码中。添加了该处理器后,可直接在里面编写java代码,实现你要的功能操作。

用法类似Beanshell 取样器,可以参考:Jmeter(十五) - 从入门到精通 - JMeter导入自定义的Jar包 这篇文章。

1、我们先来看看这个BeanShell PreProcessor长得是啥样子,路径:线程组 > 添加 > 前置处理器 > BeanShell预处理程序,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Language:语言,开发脚本选择的语言,使用的JSR223语言,可根据需要选择;

Parameters:参数,传递给脚本的参数;

File Name:文件名,本地开发的脚本文件(会覆盖在JMeter里编写的脚本);

Script compilation caching:存储编译的脚本,默认勾选;

Script:要运行脚本。编写脚本的区域。

4.小结

  好了,今天到这里JMeter的所有前置处理器就已经介绍完了,感谢你耐心的阅读和学习。

您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波  推荐  不要忘记哦!!!

别忘了点 推荐 留下您来过的痕迹

Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)的更多相关文章

  1. Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)

    1.简介 后置处理器是在发出“取样器请求”之后执行一些操作.取样器用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们的势必要对这些响应数据进行处理,后置处理器就是来完成这项工作的.例如 ...

  2. Jmeter(十二) - 从入门到精通 - JMeter逻辑控制器 - 终篇(详解教程)

    1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...

  3. Jmeter(十四) - 从入门到精通 - JMeter定时器 - 下篇(详解教程)

    1.简介 用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容.填表.或者查找正确的链接等.为了模拟用户实际情况,在性能测试中我们需要考虑思考时间.若不认真考虑思考时 ...

  4. Jmeter(十五) - 从入门到精通 - JMeter导入自定义的Jar包(详解教程)

    1.简介 原计划这一篇是介绍前置处理器的基础知识的,结果由于许多小伙伴或者童鞋们在微信和博客园的短消息中留言问如何引入自己定义的Jar包呢???我一一回复告诉他们和引入插件的Jar包一样的道理,一通百 ...

  5. Jmeter(十九) - 从入门到精通 - JMeter监听器 -上篇(详解教程)

    1.简介 监听器用来监听及显示JMeter取样器测试结果,能够以树.表及图形形式显示测试结果,也可以以文件方式保存测试结果,JMeter测试结果文件格式多样,比如XML格式.CSV格式.默认情况下,测 ...

  6. Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)

    1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...

  7. 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)

    1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...

  8. Jmeter(二十二) - 从入门到精通 - JMeter断言 - 下篇(详解教程)

    1.简介 断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式.虽然我们的通过响应断言能够完成绝大多数的结果验证工作,但是JMeter还是为我们提供了适合多个场景的断言元件,辅 ...

  9. Jmeter(二十四) - 从入门到精通 - JMeter函数 - 中篇(详解教程)

    1.简介 在性能测试中为了真实模拟用户请求,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化.JMeter配置元件与前置处理器都能帮助我们进行参数化,但是都有局限性,为了帮助我们能够更好 ...

随机推荐

  1. <WP8开发学习笔记>获取手机的常用型号(如Lumia920,而非RM-822)

    之前WP7时代可以用API获得WP手机的型号如lumia510,但是到了WP8后用APi只能获得硬件版本号了如RM-822,这种型号可以让我们更详细的了解具体的硬件版本,比如国行和港行,设备版本号不一 ...

  2. 开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~

    不知道你是否在工作中有遇到过类似情况: dubbo接口调试复杂,需要通过telnet命令或者通过consumer调用来触发. telnet语句参数格式复杂,每次编写都要小心谨慎,一旦出错又需重来. 复 ...

  3. php 判断设备是手机还是平板还是pc

    1 <?php 2 //获取USER AGENT 3 $agent = strtolower($_SERVER['HTTP_USER_AGENT']); 4 5 //分析数据 6 $is_pc ...

  4. opencv3.1.0 计算机中丢失 opencv_world310d.dll _vs2017解决方法

    ---------------------------opencv1.exe - 系统错误---------------------------无法启动此程序,因为计算机中丢失 opencv_worl ...

  5. MFC中窗口启动后,CEdit编辑框默认光标位置设置,顺序的调节方法

    MFC中窗口启动后,CEdit编辑框默认光标位设置,顺序的调节方法 在编辑界面按下ctrl+D键,就会出现所有控件的Tab键顺序,按照自己想要的顺序依次点击控件,就可以重新安排顺序.数值1就是默认停留 ...

  6. Day7-微信小程序实战-交友小程序首页UI

    一般都是直接用微信提供的组件来进行布局的 在小程序中最好少用id,尽量用class 轮播图就是直接用swiper 直接在微信开发者文档里面->组件->swiper->示例代码 < ...

  7. 微信小程序入门-刘志敏-专题视频课程

    微信小程序入门-269人已学习 课程介绍        微信小程序入门基础,给入门级程序员好的教程.教程中对小程序的介绍到小程序的基本使用都做了详细的介绍,教程以实用的实现作为案例,如列表下拉刷新.抽 ...

  8. 深入浅出Transformer

    Transformer Transformer是NLP的颠覆者,它创造性地用非序列模型来处理序列化的数据,而且还获得了大成功.更重要的是,NLP真的可以"深度"学习了,各种基于tr ...

  9. 专家解读:利用Angular项目与数据库融合实例

    摘要:面对如何在现有的低版本的框架服务上,运行新版本的前端服务问题,华为云前端推出了一种融合方案,该方案能让独立的Angular项目整体运行在低版本的框架服务上,通过各种适配手段,让Angular项目 ...

  10. 防火墙识别、负载均衡识别、waf识别

    防火墙识别: 通过发送SYN和ACK数据包并分析回包可以大概判断端口是否被防火墙过滤,对应关系如下表: Python代码实现: #!/usr/bin/python from scapy.all imp ...