1. 断言
JMeter官方断言(Assertion)的定义
- 用于检查测试中得到的响应数据是否符合预期,用于保证测试过程中的数据交互与预期一致
断言的目的:
- 一个取样器可以添加多个不同形式的断言,根据你的检查需求来添加相应的断言,当Sampler下所有的断言都通过了, 那才算取样器HTTP请求验证成功。
常用四种断言
一、Response Assertion(响应断言)
二、JSON Assertion(JSON断言)
三、Duration Assertion(持续时间断言)
四、beanshell 断言(自由断言)
1.1 Response Assertion(响应断言)
作用:判断响应的报文内容
作用对象包含: 响应文本、响应内容、响应状态码、响应信息等
案例:
- 登录用例结果验证
操作步骤:
1. 测试计划-线程组
2. 线程组-HTTP请求
3. HTTP请求->断言->响应断言
4. 测试计划->监听器->察看结果树
5. 测试计划->监听器->断言结果
响应断言详解
-
Apply to:断言应用的范围
- 通常发出一个请求只触发一个请求,所以勾选“main sampie only”就可以;若发一个请求可以触发多个服务器请求,就有main sample 和sub-sample之分了
- Jmeter Variable Name to use
- 作用于Jmeter变量(输入框中可输入Jmeter的变量名称)
-
测试字段:
- 响应文本
- 一般的http响应,都勾选“响应文本”
- 匹配从服务器返回的响应文本(不包括Response Headers)
- 响应代码
- http响应代码,如101,200,302,404,501等
- 当我们要验证404,501等http响应代码时,需要勾选“忽略状态”
- 因为当http 响应代码为400,500时,jmeter默认这个请求时失败的
- 响应信息
- 响应代码对应得响应信息,例如“OK"
- 响应头
- 匹配响应头
- 请求头
- 匹配请求头
- url样本
- 对取样器的url进行断言,如果请求没有重定向,就请求url,如果有重定向,就请求url和重定向url
- 文档(文本)
- 匹配文档内容
- 忽略状态
- 一个请求多项响应断言时,忽略某一项断言的响应结果,而继续下一项断言
- 请求数据
- 匹配请求数据
-
模式匹配
- 包括
- 返回结果包括你指定的内容,支持正则匹配
- 匹配
- 相当于
相等。当返回值固定时,可以返回值做断言,效果和相等相同 - 正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。 即正则表达式必须能匹配整个返回值,而不是返回值的一部分
- 相当于
- 相等
- 返回值固定时,与返回值验证
- 不支持正则匹配
- 同时对大小写敏感
- 字符串
- 指返回结果包括你指定的内容,
- 与包括类似,但是字符串不支持正则匹配
- 同时对大小写敏感
- 否
- 就相当于取反
- 如果断言结果为true,勾选“否”后,断言结果为false
- 如果断言结果为false,勾选“否”后,断言结果为 true
- 包括
-
要测试的模式
-
输入结果期望值(空格要去掉)
-
需要匹配的正则表达式、字符串。可以添加多项,每一项会分开进行验证,若某一项验证失败,则其后的不会再进行验证。
-
可配置多个验证内容,如下图显示

-
-
自定义失败消息
- 失败时,可自定义显示的信息
- 例如:“失败了,看看日志吧”
1.2 JSON Assertion(JSON断言)
作用: 针对JSON文档的校验

JSON断言详解:
-
Assert JSON Path exists
- Additionally assert value
- 选中进行验证断言内容
- Match as regular expression
- 使用正则表达匹配
- Additionally assert value
-
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 | 函数 |


2318

被折叠的 条评论
为什么被折叠?



