【性能测试】6_JMeter_JMeter断言

文章目录

  • 一、JMeter断言
    • [1.1 断言的概念](#1.1 断言的概念)
    • [1.2 JMeter中常用断言](#1.2 JMeter中常用断言)
  • 二、响应断言
    • [2.1 场景](#2.1 场景)
    • [2.2 操作方法](#2.2 操作方法)
    • [2.3 同一个HTTP请求下包含多个响应断言](#2.3 同一个HTTP请求下包含多个响应断言)
    • [2.4 参数详解](#2.4 参数详解)
      • [2.4.1 Apply to:适用范围](#2.4.1 Apply to:适用范围)
      • [2.4.2 测试字段:要检查的项](#2.4.2 测试字段:要检查的项)
      • [2.4.3 模式匹配规则](#2.4.3 模式匹配规则)
      • [2.4.4 测试模式](#2.4.4 测试模式)
  • 三、JSON断言
    • [3.1 场景](#3.1 场景)
    • [3.2 操作方法](#3.2 操作方法)
      • [3.2.1 查看json响应](#3.2.1 查看json响应)
      • [3.2.2 添加json断言](#3.2.2 添加json断言)
    • [3.3 参数详解](#3.3 参数详解)
  • 四、断言持续时间
    • [4.1 场景](#4.1 场景)
    • [4.2 操作方法](#4.2 操作方法)

一、JMeter断言

1.1 断言的概念

  • 断言: 让程序判断预期结果和实际结果是否一致。
  • 提示: JMeter断言是在请求的返回层面增加一层判断机制; 因为请求成功了, 并不代表结果一定正确, 因此需要检测机制提高测
    试准确性。

1.2 JMeter中常用断言

  • 响应断言
  • JSON断言
  • 断言持续时间(Duration Assertion)

二、响应断言

添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 断言 --> 响应断言(断言一定是在HTTP请求的子节点下)

2.1 场景

需求:jmeter 请求:https://www.baidu.com,让程序检查 响应数据中是否包含"百度一下, 你就知道"

2.2 操作方法

1、类型:

  • 响应文本:断言 响应体 中包含的字符串。
  • 响应代码:断言 响应状态码。

2、注意事项:

  • 一个响应文本中,可以放置多个 字符串 关键字。
  • 响应状态码,必须放在响应代码中。

2.3 同一个HTTP请求下包含多个响应断言

2.4 参数详解

2.4.1 Apply to:适用范围

  • Main sample and sub-samples: 作用于父节点取样器及对应子节点取样器;
  • Main sample only: 仅作用于父节点取样器;
  • Sub-samples only: 仅作用于子节点取样器;
  • JMeter Variable: 作用于jmeter变量(输入框内可输入jmeter的变量名称);

2.4.2 测试字段:要检查的项

  • 响应文本: 来自服务器的响应文本, 即主体, 不包括任何HTTP头
  • 响应代码: 响应的状态码, 例如: 200
  • 响应信息: 响应的信息, 例如: OK
  • Response Headers: 响应头部
  • Request Headers: 请求头部
  • Request Data: 请求数据
  • URL样本: 响应的URL
  • Document(text): 响应的整个文档
  • 忽略状态: 忽略返回的响应状态码

2.4.3 模式匹配规则

  • 包括: 文本包含指定的正则表达式
  • 匹配: 整个文本匹配指定的正则表达式
  • Equals: 整个返回结果的文本等于指定的字符串(区分大小写)
  • Substring: 返回结果的文本包含指定字符串(区分大小写)
  • 否: 取反
  • 或者: 如果存在多个测试模式, 勾选代表逻辑或(只要有一个模式匹配, 则断言就是OK) , 不勾选代表逻辑与(所有都必
  • 须匹配, 断言才是OK)

注意: Equals和Substring模式是普通字符串, 而不是正则表达式。

2.4.4 测试模式

即填写你指定的结果(可填写多个),按钮【添加】 、 【删除】 是进行指定内容的管理

三、JSON断言

该组件用来对JSON文档进行验证, 验证步骤如下:

  1. 首先解析JSON数据, 如果数据不是JSON, 则验证失败。
  2. 使用Jayway JsonPath 1.2.0中的语法搜索指定的路径。 如果找不到路径, 就会失败。
  3. 如果在文档中找到JSON路径, 并且要求对期望值进行验证, 那么它将执行验证操作。

添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 断言 --> JSON断言

3.1 场景

需求:让程序检查响应的JSON数据中, city对应的内容是否为"北京"

URL:https://www.weather.com.cn/data/sk/101010100.html

场景:响应数据可以转换为json数据时,首选json断言。否则为其它断言

3.2 操作方法

3.2.1 查看json响应

json 复制代码
{
    "weatherinfo": {
        "isRadar": "1",
        "rain": "0",
        "temp": "18",
        "city": "北京",
        "WSE": "1",
        "qy": "1011",
        "njd": "暂无实况",
        "cityid": "101010100",
        "WD": "东南风",
        "SD": "17%",
        "Radar": "JC_RADAR_AZ9010_JB",
        "time": "17:05",
        "WS": "1级"
    }
}

3.2.2 添加json断言

JsonPath语法 :https://github.com/json-path/JsonPath

json 复制代码
$. 代表整个json响应结果

第一种语法: $.一级键名.二级键名.三级键名 
$.weatherinfo.city

第二种语法:$...N级键名(N是几级,前面应该有几个点)
$..city

第三种语法:weatherinfo.city

3.3 参数详解

  • Assert JSON Path exists: 用于断言的JSON元素的路径
  • Additionally assert value: 如果您想要用某个值生成断言, 请选择复选框
  • Match as regular expression: 如果需要使用正则表达式, 请选择复选框
  • Expected Value: 期望值, 用于断言的值或用于匹配的正则表达式的值
  • Expect null: 如果希望为空, 请选择复选框
  • Invert assertion (will fail if above conditions met): 反转断言(如果满足以上条件则失败)

四、断言持续时间

断言持续时间:客户端发送请求,到收到服务器的响应时间,要求不超过指定的时间。

添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 断言 --> 持续时间断言

4.1 场景

需求:请求: https://www.jd.com ,让程序检查响应时间是否大于500毫秒

4.2 操作方法

相关推荐
@汤圆酱5 小时前
Jmeter如何实现接口关联?
测试工具·jmeter
网易测试开发猿6 小时前
吐血整理,性能测试-负载、并发/压力测试分析+常遇问题解决
软件测试·软件测试工程师·jmeter·压力测试·性能测试·负载测试·jmeter性能测试
少云清1 天前
【性能测试】5_JMeter _JMeter参数化
jmeter·性能测试
_OP_CHEN1 天前
【测试理论和实践】(十一)吃透性能测试核心概念!从入门到精通,一文扫清所有盲区
测试开发·压力测试·性能测试·负载测试·并发测试·基准测试·测试开发工程师
石头wang2 天前
jmeter java.lang.OutOfMemoryError: Java heap space 修改内存大小,指定自己的JDK
java·开发语言·jmeter
少云清3 天前
【性能测试】2_JMeter _JMeter文件目录
jmeter·性能测试
Wpa.wk3 天前
性能测试 - JMeter练习-JMeter录制Web端压测脚本操作步骤
java·前端·经验分享·jmeter·自动化
一颗没有尽头的心3 天前
jmeter使用
jmeter