• JMETER(七) 后置处理器


    后置处理器
    Sampler 用来模拟用户请求,有时候服务器的响应数据在后续请求中需要用到,我们必须要对这些响应数据进行处理,后置处理器即是用来完成这项工作的。比如系统登录成功后我们要获取SessionID,在后面的业务操作中服务器会验证这个SessionID,获取SessionID这个过程可以用后置处理器中的正则表达式提取器来完成。

    1、Regular Expression Extractor(正则表达式提取器)

    例如,如果我们需要模拟网站上的用户活动,那么为此,我们需要获取与正在测试的站点相关的链接。只需排除通向其他资源的所有链接。最简单的方法是使用正则表达式从页面中提取所有链接。

    参数说明:

    apply to(应用范围)

    • Main sample and sub-samples: 匹配范围包括当前父取样器并覆盖至子取样器
    • Main sample only: 匹配范围是当前父取样器
    • Sub-samples only: 仅匹配子取样器
    • JMeter Variable Name to use: 支持对Jmeter变量值进行匹配

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

    • Body:响应数据的主体部分

    • Body (unescaped) :针对替换了转义码的Body部分,响应正文,替换了所有 Html 转义代码。请注意,处理 Html 转义时不考虑上下文,因此可能会进行一些不正确的替换(请注意,此选项对性能影响很大,因此仅在绝对必要时才使用它并注意其影响)

    • Body as a Document:返回内容作为一个文档匹配(请注意, Body as a Document 选项会影响性能,因此请确保它适合您的测试)

    • Request Headers:请求头部信息

    • Response Headers:响应头部信息

    • URL:只匹配URL链接

    • Response Code:匹配响应代码,比如返回200代表成功

    • Response Message:匹配响应信息,比如返回成功字样。

    • Name of created variable:创建变量的名称,匹配出来的信息通过次名称进行访问

    • Regular Expression:正则表达式,用于解析响应数据的正则表达式

    • Template:正则表达式可以设置多个模板,语法是:' $1$ ' 表示第一个模板,' $2$ ' 表示第二个模板,等等。$0$表示全文匹配

    • Match No. (0 for Random):匹配数字,在匹配时往往会出现多个值匹配的情况,如果匹配数为0则代表随机匹配值。正数表示匹配哪一个;负数取所有值,可以与For EachController一起使用来遍历

    • Default Value:如果正则表达式不匹配,则引用变量将设置为默认值。这对于调试测试特别有用

    • Use empty default value:使用空默认值

    示例:https://www.cnblogs.com/liho/p/14201784.html

    2、JSON Extractor

    有许多工具和方法可以测试和自动化 API 测试。但是,虽然不同的工具适合不同的需求,但Apache JMeter™对于负载测试的用户来说具有很大的优势。使用JMeter,您可以通过向线程组添加更多用户和循环来轻松地将功能 API 测试转换为性能测试。

    添加一个 HTTP Request 并填写请求的数据,返回json数据

    现在我们需要解析 JSON 响应,所以我们可以验证我们得到的值。为此,让我们添加 JSON 提取器

    Right click on HTTP Request->Add->Post Processors->JSON extractor

    参数说明:

    Apply to

    • Main sample only: 仅主样本

    • Sub-samples only: 仅子样本

    • Main sample and sub-samples : 主样本和子样本

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

    • Names of created variables:变量名称,有多个变量时逗号分隔

    • JSON Path Expressions:用法

    1. $.data.msg,
    2. $.data[0].id
    3. $.data[*].id,获取所有id
    • Match No. (0 for Random): 匹配数字(0代表随机,1代表第一个,-1代表所有)**

    • Compute concatenation var(suffix _ALL): 是否统计所有数据,即将匹配到的所有值保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作**

    • Default Values:找不到时默认值,一般设置为NOT FOUND,当json提取器要提取两个值(或两个以上)的时候,一定要填写默认值

    添加侦听器获取值json值

  • 相关阅读:
    用vuex写了一个购物车H5页面的示例代码
    css如何引入外部字体?
    移动开发中更好的图片自适应
    常见样式问题七、word-break、word-wrap、white-space区别
    你真的了解word-wrap和word-break的区别吗?
    css中word-break、word-wrap和white-space的区别
    另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新
    应该用forEach改变数组的值吗? 原生JS forEach()和map()遍历的异同点
    Vue 全家桶介绍
    Spring MVC配置MyBatis输出SQL
  • 原文地址:https://www.cnblogs.com/liho/p/15732759.html
Copyright © 2020-2023  润新知