浅谈监听器之断言结果

浅谈监听器之断言结果

在进行测试过程中,断言是一种关键组件,用于验证采样器(如HTTP请求)的响应数据是否符合预期。而“断言结果”监听器则是展示这些断言执行情况的重要工具,它帮助用户快速识别哪些断言通过或未通过,从而判断测试是否成功。

添加断言结果监听器

  1. 打开JMeter测试计划:首先,确保你已启动JMeter并创建或打开了一个测试计划。
  2. 定位到测试元件:在你需要监控的采样器(例如HTTP请求)之下或者测试计划的任意位置(但通常建议放在采样器直下),右键点击选择“添加” > “监听器” > “断言结果”。

基本设置

○ 名称:为监听器指定一个有意义的名称,便于识别。
○ Filename:如果需要将断言结果保存到文件,可以在这里指定文件路径和名称。不填则只在JMeter GUI中显示结果。

理解断言结果界面

● 断言结果监听器会列出每个断言执行的详细情况,包括但不限于:

○ 样本标签:执行断言的取样器名称。
○ 断言名称:执行的具体断言类型。
○ 失败消息:如果断言未通过,会提供失败的原因或描述。

实战场景

● 性能测试:在大规模性能测试中,利用“断言结果”监听器可以快速定位到那些因服务器响应不符合预期而导致的性能瓶颈或问题。
● 功能验证:在功能测试场景下,通过配置精确的断言和观察其结果,可以验证系统是否按预期工作。
● 自动化测试报告:通过将断言结果导出到文件,可以集成到持续集成/持续部署(CI/CD)流程中,生成详细的测试报告。

应用实例

我们通过SpingBoot框架编写如下测试接口代码:

@PostMapping(value = "/login",produces = "application/json;charset=UTF-8")public String authenticate(@RequestBody JSONObject request) {String validUsername = "admin";String validPassword = "password";String response = "{\"total\":2,\"data\":[{\"id\":123,\"name\":\"John Doe\",\"email\":\"johndoe@example.com\",\"phone\":\"123-456-7890\",\"address\":{\"street\":\"123 Main St\",\"city\":\"New York\",\"state\":\"NY\",\"zip\":\"10001\"},\"interests\":[\"sports\",\"music\",\"travel\"]},{\"id\":456,\"name\":\"Jane Smith\",\"email\":\"janesmith@example.com\",\"phone\":\"987-654-3210\",\"address\":{\"street\":\"456 Elm St\",\"city\":\"Los Angeles\",\"state\":\"CA\",\"zip\":\"90001\"},\"interests\":[\"reading\",\"cooking\",\"hiking\"]}]}";if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {return response;} else {return response;}}

我们编写如下测试脚本
在这里插入图片描述
线程组:保持默认
HTTP信息头管理器:名称content-type,值为application/json;charset=UTF-8
HTTP请求:协议http,服务器名称或IP为127.0.0.1,端口设置为8091,方法为post,路径/login,内容编码为utf-8,消息体数据设置如下

{"username": "admin","password": "password"}

运行脚本,查看结果树,在HTTP请求的响应数据中Response Body查看结果如下:

{"total":2,"data":[{"id":123,"name":"John Doe","email":"johndoe@example.com","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"janesmith@example.com","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}

响应断言:测试字段选择响应文本,模式匹配规则选择包含,如上述返回消息内容可知有total字段,所以测试模式中添加输入total1字符,让这个查找的字段不存在
运行脚本,查看断言结果
在这里插入图片描述

最佳实践

● 定期检查:定期查看断言结果,及时调整断言设置或修复测试脚本中的问题。
● 区分监听器:为不同的测试目标或需求配置独立的断言结果监听器,保持结果的清晰可读。
● 优化输出:合理配置输出内容,避免不必要的信息干扰,特别是在进行大量测试时。

总结

通过上述指南,你可以有效地使用JMeter的“断言结果”监听器来监控和分析测试执行过程中的断言情况,进而提升测试的效率与准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA多线程】线程的状态控制

目录 1.JDK中的线程状态 2.基础操作 2.1关闭 2.2中断 2.3.等待、唤醒 2.4.阻塞、唤醒 1.JDK中的线程状态 在JDK的线程体系中线程一共6种状态: NEW(新建): 当线程对象创建后,但尚未启动时,线程处于新建状态。RUN…

python毕业设计选题校园食堂菜谱推荐系统

✌网站介绍:✌10年项目辅导经验、专注于计算机技术领域学生项目实战辅导。 ✌服务范围:Java(SpringBoo/SSM)、Python、PHP、Nodejs、爬虫、数据可视化、小程序、安卓app、大数据等设计与开发。 ✌服务内容:免费功能设计、免费提供开题答辩P…

stack(leetcode练习题,牛客)

文章目录 STL用法总结32 最长有效括号思路代码 496 下一个最大元素思路代码 856 括号的分数思路 最优屏障思路代码 STL用法总结 关于stack的知识,可以看点击查看上面的博客,以下题目前三个全在leetcode,最后一个在牛客 32 最长有效括号 思路…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十章 Linux设备树

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

代理IP在数据采集中具体有哪些作用

在当今信息化高速发展的时代,从市场趋势分析到消费者行为预测,从产品优化到服务改进,大数据都在其中扮演着不可或缺的角色。但数据的采集、整理和分析并非易事,特别是在面对海量的网络数据时,我们往往需要借助一些技术…

前端 SSE 长连接

使用 const options {withCredentials: true, // 默认 false}const eventSource new EventSource(/api, options);eventSource.addEventListener(open, () > {});eventSource.onmessage (event) > {}; // 或addEventListener(message,callback)eventSource.addEvent…

程序员拔火罐技能的分享

一.背景 之前为了考“中医康复理疗师”的证书,自学了拔火罐。自学主要是在自己大腿上练习,然后拿家人做小白鼠。后来考试没有那么严格也就顺利通过了。操作过程中,积累的一些小知识,分享给大家,有空在家里给家人服务体…

CTF ssrf 基础入门 (一)

0x01 引言 我发现我其实并不是很明白这个东西,有些微妙,而且记忆中也就记得Gopherus这个工具了,所以重新学习了一下,顺便记录一下吧 0x02 辨别 我们拿到一个题目,他的名字可能就是题目类型,但是也有可能…

FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前文章分享FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发,这次我们分享如何回复留言 按…

Jenkins+Gitlab持续集成综合实战

一、持续集成应用背景: DevOps:(英文Development(开发)和Operations(技术运营)的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程&#…

NCRE3 2-1 网络总体设计基本方法

这部分记忆的比较多 概览 设计网络建设总体目标确定网络系统方案设计原则网络系统总体设计设计网络拓扑结构进行网络设备选型网络系统安全设计 设计网络建设总体目标 这部分视频没说到 确定网络系统方案设计原则 这部分视频没说到 网络系统总体设计 核心层网络结构设计 …

嵌入式Linux八股(四)——MCURTOS

嵌入式Linux八股完整文章目录 嵌入式Linux八股(一)——语言篇_嵌入式软件八股-CSDN博客 嵌入式Linux八股(二)——Linux_linux嵌入式的八股文有哪些-CSDN博客 嵌入式Linux八股(三)——计算机基础_嵌入式哪…

【Vue实战教程】之Vue工程化项目详解

Vue工程化项目 随着多年的发展,前端越来越模块化、组件化、工程化,这是前端发展的大趋势。webpack是目前用于构建前端工程化项目的主流工具之一,也正变得越来越重要。本章节我们来详细讲解一下如何使用webpack搭建Vue工程化项目。 1 使用we…

基于Python的哔哩哔哩国产动画排行数据分析系统

需要本项目的可以私信博主,提供完整的部署、讲解、文档、代码服务 随着经济社会的快速发展,中国影视产业迎来了蓬勃发展的契机,其中动漫产业发展尤为突出。中国拥有古老而又璀璨的文明,仅仅从中提取一部分就足以催生出大量精彩的…

源码拆解SpringBoot的自动配置机制

SpringBoot相比于Spring系列的前作,很大的一个亮点就是将配置进行了简化,引入了自动化配置,仅靠几个注解和yml文件就取代了之前XML的繁琐配置机制,这也是SpringBoot的独有特点,下面我们从源码角度,一点点拆…

Golang | Leetcode Golang题解之第273题整数转换英文表示

题目: 题解: var (singles []string{"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"}teens []string{&…

IEC61850 协议解读

1. IEC61850 协议介绍 IEC 61850 是定义 变电站 自动化系统 中 设备 及设备之间相互交互的 国际标准。 给出英文定义:IEC 61850 is the international standard for defining devices within substation automation systems and how they interact with one anoth…

Java基础-Java多线程机制

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、引言 二、多线程的基本概念 1. 线程与进程 2. 多线程与并发 3. 多线程的优势 三、Java多线程的实…

git命令使用详细介绍

1 环境配置 设置的信息会保存在~/.gitconfig文件中 查看配置信息 git config --list git config user.name设置用户信息 git config --global user.name "有勇气的牛排" git config --global user.email “1809296387qq.com”2 获取Git仓库 2.1 本地初始化一个仓…

Android Studio入门级教程(二)——项目开发基础(Java新手向))持续更新ing

目录 前言: 一.使用Log工具打印日志 常见语法: 如何使用? 二.工程目录结构 三.编译配置文件build.gradle 四.运行配置文件AndroidManifest.xml 五.界面显示与逻辑处理 六.创建新的app页面 1.包含的步骤 在layout目录下创建XML文件…