JMeter接口测试-3.断言及参数化测试

1. 断言

JMeter官方断言(Assertion)的定义

  • 用于检查测试中得到的响应数据是否符合预期,用于保证测试过程中的数据交互与预期一致

断言的目的:

  • 一个取样器可以添加多个不同形式的断言,根据你的检查需求来添加相应的断言,当Sampler下所有的断言都通过了, 那才算取样器HTTP请求验证成功。

常用四种断言

一、Response Assertion(响应断言)
二、JSON Assertion(JSON断言)
三、Duration Assertion(持续时间断言)
四、beanshell 断言(自由断言)

1.1 Response Assertion(响应断言)

作用:判断响应的报文内容
作用对象包含: 响应文本、响应内容、响应状态码、响应信息等

案例

  • 登录用例结果验证

操作步骤:

1. 测试计划-线程组
2. 线程组-HTTP请求
3. HTTP请求->断言->响应断言
4. 测试计划->监听器->察看结果树
5. 测试计划->监听器->断言结果

响应断言详解

  1. Apply to:断言应用的范围

    • 通常发出一个请求只触发一个请求,所以勾选“main sampie only”就可以;若发一个请求可以触发多个服务器请求,就有main sample 和sub-sample之分了
    • Jmeter Variable Name to use
      • 作用于Jmeter变量(输入框中可输入Jmeter的变量名称)
  2. 测试字段:

  • 响应文本
    • 一般的http响应,都勾选“响应文本”
    • 匹配从服务器返回的响应文本(不包括Response Headers)
  • 响应代码
    • http响应代码,如101,200,302,404,501等
    • 当我们要验证404,501等http响应代码时,需要勾选“忽略状态”
    • 因为当http 响应代码为400,500时,jmeter默认这个请求时失败的
  • 响应信息
    • 响应代码对应得响应信息,例如“OK"
  • 响应头
    • 匹配响应头
  • 请求头
    • 匹配请求头
  • url样本
    • 对取样器的url进行断言,如果请求没有重定向,就请求url,如果有重定向,就请求url和重定向url
  • 文档(文本)
    • 匹配文档内容
  • 忽略状态
    • 一个请求多项响应断言时,忽略某一项断言的响应结果,而继续下一项断言
  • 请求数据
    • 匹配请求数据
  1. 模式匹配

    • 包括
      • 返回结果包括你指定的内容,支持正则匹配
    • 匹配
      • 相当于 相等 。当返回值固定时,可以返回值做断言,效果和相等相同
      • 正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。 即正则表达式必须能匹配整个返回值,而不是返回值的一部分
    • 相等
    • 返回值固定时,与返回值验证
    • 不支持正则匹配
    • 同时对大小写敏感
    • 字符串
      • 指返回结果包括你指定的内容,
      • 与包括类似,但是字符串不支持正则匹配
      • 同时对大小写敏感
      • 就相当于取反
      • 如果断言结果为true,勾选“否”后,断言结果为false
      • 如果断言结果为false,勾选“否”后,断言结果为 true
  2. 要测试的模式

    • 输入结果期望值(空格要去掉)

    • 需要匹配的正则表达式、字符串。可以添加多项,每一项会分开进行验证,若某一项验证失败,则其后的不会再进行验证。

    • 可配置多个验证内容,如下图显示

      在这里插入图片描述

  3. 自定义失败消息

    • 失败时,可自定义显示的信息
    • 例如:“失败了,看看日志吧”

1.2 JSON Assertion(JSON断言)

作用: 针对JSON文档的校验

在这里插入图片描述

JSON断言详解:

  • Assert JSON Path exists

    • Additionally assert value
      • 选中进行验证断言内容
    • Match as regular expression
      • 使用正则表达匹配
  • Expected Value

    • 期望结果内容
  • Expect null

    • 预期为null
  • Invert assertion(will fail if above conditions met)

    • 取反,上面的不符合pass,上面的有符合的fail

JSON断言规则

$ 根节点
@ 现行节点
. 子节点
…不管位置,选择所有符合条件的
* 匹配所有元素节点
[,] 支持迭代器中做多选
?() 支持过滤操作
[] 迭代器的标示,子元素操作符
() 支持表达式计算

案例:

  • 商品信息接口用例结果验证

实现步骤:

  • HTTP取样器-商品信息接口
  • 在HTTP取样器下面创建JSON断言
  • 配置JSON断言
  • 在这里插入图片描述

1.3 Duration Assertion(持续时间断言)

判断是否在给定的时间内返回响应结果

作用: 断言服务器响应请求的时间是否小于指定值;
在这里插入图片描述

  • 持续时间(毫秒):
    • 这里的持续时间为毫秒,比如:10 毫秒。
  • 断言响应时间是否超过设置的值(10),如果超过则断言失败,反之成功

2. 接口参数化

2.1 介绍

参数化使用场景

1. 多个请求都是同一个ip地址,若服务器地址更换了,则脚本需要更改每个请求的ip
2. 注册账号,不允许账号重复;想批量注册用户时
3. 模拟多个用户登录,需要用到不同用户信息登录时

JMeter参数化的概念

  • 进行测试时,若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据。
  • 自动化测试脚本的一种常用技巧,可将脚本中的某些输入使用参数来代替,如登录时利用GET/POST请求方式传递参数的场景,在脚本运行时指定参数的取值范围和规则
  • 脚本在运行时,根据需要选取不同的参数值作为输入

参数化的四种方式及使用场景对比

参数化 使用场景
1 CSV Data Set Config 适用于参数取值范围较大的时候使用,该方法具有更大的灵活性
2 User Parameters 适用于参数取值范围很小的时候使用
3 User Defined Variables 一般用于Test Plan中不需要随请求迭代的参数设置,如:Host、Port Number
4 函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值