【P48】JMeter 断言持续时间(Duration Assertion)

文章介绍了JMeter中的DurationAssertion,用于设置取样器执行的超时时间,当超过设定值时会报错。在测试计划设计中,创建了线程组、JSR223Sampler并添加了断言持续时间断言,通过示例展示了如何配置和检查请求是否超过预设的100毫秒。当脚本使请求延迟1秒时,断言失败,显示了超时错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、断言持续时间(Duration Assertion)参数说明

可以控制取样器的执行是否超过某个时间,如果超时则报错,持续时间断言器也叫超时断言器

使用场景:我们一般用超时断言器来检测业务是否达到某个超时时间

使用频率:一般

右键 >>> 添加 >>> 断言 >>> 断言持续时间(Duration Assertion)

在这里插入图片描述

Apply to

  • Main sample and sub-samples:作用于父节点取样器及对应子节点取样器;对所有取样器进行断言

  • Main sample only:只作用于父节点取样器;只对主取样器进行断言

  • Sub-samples only:只作用于子节点取样器;只对子取样器进行断言(子取样器:原始取样器,通过后置处理器处理后,获取的请求结果)

Duration to Assert(断言持续时间)

  • Duration in milliseconds(持续时间(毫秒)):断言执行时间

二、测试计划设计

(1)、测试计划右键 <<< 添加 <<< 线程(用户)<<< 线程组

在这里插入图片描述

  • 循环次数:10

  • 其它参数默认即可

(2)、线程组右键 <<< 添加 <<< 取样器 <<< JSR223 Sampler

在这里插入图片描述

log.info("我是:JSR223 Sampler");

(3)、线程组右键 <<< 添加 <<< 断言 <<< 断言持续时间

在这里插入图片描述

  • 持续时间(毫秒):100

(4)、线程组右键 <<< 添加 <<< 监听器 <<< 查看结果树

(5)、点击启动,点击查看结果树,查看请求信息

在这里插入图片描述

如图,取样器都请求成功,断言成功

(6)、修改 JSR223 Sampler

在这里插入图片描述

  • 语言:java
log.info("我是:JSR223 Sampler");
Thread.sleep(1000L);

(7)、点击清除全部,点击启动,点击查看结果树,查看请求信息

在这里插入图片描述

如图,取样器都请求失败,断言失败;断言持续时间 中给出了失败原因

### JMeter 断言的使用方法 #### 什么是断言断言元件(Assertion)用于验证测试结果是否符合预期。它可以通过检查服务器的响应数据,确保其符合期望的模式或值,从而验证性能测试脚本的正确性[^2]。 --- #### 常见的断言类型及其用途 以下是几种常见的断言类型以及它们的应用场景: 1. **Response Assertion (响应断言)** - 验证响应中的文本、代码或其他字段是否满足条件。 - 可以指定不同的测试字段,例如响应文本、响应代码、响应头等[^1]。 2. **Size Assertion (大小断言)** - 检查响应的字节大小是否在预设范围内。 - 对于文件下载类请求非常有用。 3. **XPath Assertion (XPath 断言)** - 如果响应是 XML 格式,则可以利用 XPath 表达式提取并验证特定节点的内容。 4. **JSON Assertion (JSON 断言)** - 当服务器返回的是 JSON 数据时,推荐使用此断言来校验 JSON 结构和内容[^4]。 5. **Duration Assertion (持续时间断言)** - 确保某个采样器执行的时间不超过设定的最大阈值。 6. **BeanShell Assertion (Beanshell 断言)** - 提供更灵活的方式通过编写 Java/Beanshell 脚本来实现复杂的逻辑验证。 7. **MD5Hex Assertion (MD5 Hex 断言)** 和 **SHA Checksum Assertion (SHA 校验码断言)** - 这两种主要用于对比哈希值的一致性,适用于安全性和完整性检测。 8. **Compare Assertion (比较断言)** - 将两个不同线程组的结果进行逐项比对分析。 9. **HTML Assertion (HTML 断言)** - 自动解析 HTML 文档结构,并报告潜在错误如标签不闭合等问题。 --- #### 如何配置 Response Assertion? 假设我们需要确认 HTTP 请求返回的状态码为 `200 OK` 并且页面上存在关键词 `"success"` 的情况,具体操作如下所示: 1. 找到目标 sampler 或者 test plan 下右键菜单 -> Add -> Assertions -> Response Assertion; 2. 设置 Apply To 参数决定应用范围,默认选中 “Main sample and sub-samples” 即可覆盖整个请求链路; 3. 测试字段部分勾选需要检验的部分比如这里我们选择 `Text Response`; 4. 添加一条新的规则,在 Pattern Matching Rules 复选项里至少激活一项匹配策略(Contains, Matches, Equals...),然后填入关键字 `success` ; 5. (可选)如果希望自定义失败提示信息可以在下方填写相关内容以便后续排查问题更加直观明了。 ```plaintext Apply To: Main sample and sub-samples Test Field: Text Response Pattern Match Rule: Contains Patterns to Test: success Custom Failure Message: The response does not contain the expected keyword 'success'. ``` 上述过程完成后保存设置重新运行测试即可看到对应的反馈效果。 --- #### JSON 断言实例演示 当 API 接口返回复杂嵌套层次较多的 json object 类型 payload 时候,单独依靠简单字符串查找可能不够精确可靠因此引入专门针对此类情形设计出来的工具——json path expression parser 来定位所需属性位置进而完成进一步判定动作。 假定有这样一个典型的 restful api endpoint `/users/{id}` 返回如下格式化后的 body: ```json { "userId": 1, "username": "admin", "emailAddress": "admin@example.com" } ``` 现在我们要保证每次调用该接口都能获取正确的 email 地址即 admin@example.com ,那么按照前面提到的方法新建一个 Json Path Extractor 同时配合相应语法书写查询语句 `$..emailAddress` 获取实际值并与预先存储的标准值做一致性核对最后得出结论。 --- ### 注意事项 - 不同类型的断言适合解决各自领域内的特殊需求,请根据实际情况合理选用合适的组件组合起来构建全面可靠的自动化验收框架体系。 - 正确理解各个参数含义对于提高调试效率至关重要,务必仔细阅读官方文档说明材料加深印象积累经验教训不断优化改进现有流程机制提升整体质量水平。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值