自动化测试实践:揭秘WebSocket在接口测试中的应用

如何写接口自动化?这个问题,但凡涉足过自动化测试的人员都能娓娓道来。Requests、urlib、jmeter、curl等等,不在话下。那么,如何获取接口的url、参数、响应等信息呢?!答案就更是随口而出:看接口文档、swagger/apifox等管理工具接口定义。再不济,如果是web应用,通过浏览器看接口请求啊。的确如此,有“一万”种方法可以帮助我们获取到想要的接口信息。

可是,接口文档和接口定义/说明的有无,往往取决于开发人员的自觉性。我们虽然能够要求,但也不能百分百确定一定能够获得。因此,通过浏览器等工具获取请求接口就成了我们常用的手段。

我们以访问“51testing”网站为例,简单说明浏览器获取接口请求的常见方式。

如下图1所示,为访问51testing网站首页时的浏览器面板截图。通过network>Fetch/XHR就能获得http请求的url、status、response等信息。在我们编写自动化测试用例时,这是常用且熟知的获取接口请求信息的方法。

图1访问51testing首页的浏览器network面板信息

但是,上述寻找接口路径/方法,是完全可行的吗?

让我们以下图2为例。图2为51testing客服对话窗口,当我们想模拟自动化测试,获取发送请求的接口信息时,却发现唯一一个通过Fetch/XHR获得的接口(https://chat2445.talk99.cn/chat/msg.dll cmd=xx)请求体Payload和响应体Response中,没有任何与窗口对话中发送的内容(“测试”)有关的信息。那么,这条信息,是如何发送出去的呢?!

图2 51testing客服对话窗口

继续对话,查看Fetch/XHR,仍无任何接口请求。直到……在WS条目中发现了真相。原来,是websocket啊;果然,是websocket啊!

图3 51testing客服对话窗口

那么,什么是websocket呢?又为何要用websocket呢?

WebSocket是一种在Web应用程序中提供双向通信的协议。它允许在客户端和服务器之间创建持久性的连接,从而使得数据能够以低延迟和高效率进行双向传输。一些常见应用场景包括:1)即时通讯应用程序:像聊天应用、在线游戏等需要实时双向通信的应用场景中,WebSocket能够提供更好的性能和用户体验;2)实时数据更新:像股票市场、天气预报、实时地图等需要实时数据更新的应用中,WebSocket可以用来推送实时数据给客户端,而不需要客户端不断地发起请求;3)在线协作工具:像GoogleDocs、Trello等在线协作工具可以使用WebSocket来实现多用户实时编辑、更新等功能;4)实时游戏:在线多人游戏需要实时的玩家位置、动作等信息同步,WebSocket可以帮助实现这些功能。显而易见,客服对话窗属于第1种。

那么,websocket的url、请求内容和响应如何在浏览器中获取呢?!

如下图4所示,可以点击ws的链接,通过Request URL得到的url,再通过Messges获得发送的请求(All下拉列表选择“send”)和收到的响应(All下拉列表选择“receive”)。

图4 websocket的url、请求和响应等查看方式

如此,我们知道了,我们一些“看不见”的接口是如何发送请求的了。但是问题又来了:知道了websocket的请求方式,如何使用自动化脚本方式模拟呢?

我们以python为例,使用websocket库,模拟websocket请求,发送聊天信息。代码样例如下所示:

import websocket

import json

def on_message(ws,message):

print(f"Received message:{message}")

def on_error(ws,error):

print(f"Error occurred:{error}")

def on_close(ws):

print("Connection closed")

def on_open(ws):

print("Connection established")

#发送消息

message={

"c":20001818,

"u":"e6054702278504214c792f583376d5ab",

"v":"6817201c3614948f68de93ab151e53e5",

"role":2,

"meeting":False,

"cId":876105175,

"site":0,

"g":10063915,

"winId":"b6f2f684f577413abb2ab166433b060e",

"flag":False,

"robot":False,

"msg":"你好"

}

ws.send(json.dumps(message))

if__name__=="__main__":

websocket.enableTrace(True)

ws=websocket.WebSocketApp("wss://chat2445.talk99.cn/chat/room/20001818/876105175/b6f2f684f577413abb2ab166433b060e",

on_message=on_message,

on_error=on_error,

on_close=on_close)

ws.on_open=on_open

ws.run_forever()

至此,我们简单总结一下。浏览器开发者工具功能十分强大,除了我们熟知的http请求,还可以捕获websocket请求。然后,我们可以通过得到的请求信息,使用Python或其他开发语言帮助我们完成相关的接口测试。由此,完成我们“看不见”的接口自动化测试。

文末了:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。同时我邀请你进入我们的软件测试学习交流平台,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,了解测试行业的最新趋势,助你快速进阶Python自动化测试/测试开发,稳住当前职位同时走向高薪之路。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Python中的包与模块

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、包的概述与功能 代码案例:包的结构 二、模块的划分与组合 划分模块的方法…

# 解决 win11 连接共享打印机,报错 0x00000709 问题

解决 win11 连接共享打印机,报错 0x00000709 问题 一、问题描述: 当我们连接一台共享打印机,出现报错 0x00000709 时,这是由于本机注册表本配置 RPC 远程调用,我们需要对自己的电脑进行修改,而不是主机&a…

必看项目|多维度揭示心力衰竭患者生存关键因素(生存分析、统计检验、随机森林)

1.项目背景 心力衰竭是一种严重的公共卫生问题,影响着全球数百万人的生活质量和寿命,心力衰竭的病因复杂多样,既有个体生理因素的影响,也受到环境和社会因素的制约,个体的生活方式、饮食结构和医疗状况在很大程度上决定了其心力衰竭的风险。在现代社会,随着生活水平的提…

设计软件有哪些?建模和造型工具篇(4),渲染100邀请码1a12

建模使用到的工具有很多,这次我们接着介绍。 1、PolyBoost PolyBoost是由Digimation公司开发的3ds Max插件,旨在增强软件的多边形建模功能。该插件提供了一系列强大的建模工具,如边缘控制、顶点编辑、面片调整等,使用户能够更加…

【Unity2D 2022:Particle System】添加粒子特效

一、创建粒子系统游戏物体 1. 创建粒子系统游戏物体Smog Effect 2. 给粒子特效添加精灵贴图 (1)启用Texture Sheet Animation(纹理表动画) (2)点击加号添加一个纹理,并将两张厌恶图片导入到纹理…

运维笔记:流编辑器sed命令用法解析

运维笔记 sed命令用法解析 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/arti…

大模型助力企业提效,九章云极DataCanvas公司联合腾讯搜狗输入法发布私有化解决方案

近日,九章云极DataCanvas公司与腾讯搜狗输入法的合作再次升级。在搜狗输入法开发者中心正式推出之际,九章云极DataCanvas公司作为搜狗输入法的首批开发合作伙伴,双方联合发布“企业知识管理助手”私有化解决方案。 “企业知识管理助手”整体私…

奶奶也能看懂的耦合协调度分析

不会计算?跟着文献学起来~ 案例数据连接(复制链接后粘贴到浏览器中): 耦合协调度数据​spssau.com/spssaudata.html?shareDataF363000CD033FF15E557BB75B9B0D412 假如你有这样一组数据: 如何进行计算分析耦合协调度…

如何快速从手动测试转向自动化测试

寻求具有无缝持续集成和持续交付 (CI/CD) 的高效 DevOps 管道比以往任何时候都更加重要。想象一下这样一个场景:您的软件组织显著减少了人工工作量、降低了成本,并更加自信地发布了软件更新。换句话说,通过将 Web UI 和 API 测试结合在一起&a…

智能家居ZigBee网关选型定制指南:主控,操作系统,天线设计,助力IoT开发者

随着科技的发展和人们生活水平的提高,智能家居以其便捷、舒适、安全等特点,逐渐走进千家万户,成为家装消费品换新升级的重要方向。在智能家居系统中,网关扮演着中枢控制器的角色,负责将各种设备连接到互联网上&#xf…

【Linux|数据恢复】extundelete和ext4magic数据恢复工具使用

环境:Centos7.6_x86 一、extundelete工具 1、extundelete介绍 Extundelete 是一个数据恢复工具,用于从 ext3 或 ext4 分区中恢复删除文件。根据官网0.2.4版本介绍是支持ext4,但实际上使用发现ext4格式不行,会报以下错误&#xf…

大模型预训练结果到底是什么?

近日参加一个线下 AI 交流会议,会上有个非本行业的老师提问:“大家说的训练好的大模型到底是什么?是像 Word 软件一样可以直接使用的程序吗?” 这个问题看似简单,却一下把我问住了。的确,我们这些身处 AI 领…

strlen函数及其模拟实现(C语言)

文章目录 1.前言2. 介绍strlen函数2.1 strlen函数的作用2.2 strlen函数的原型 3. strlen函数实操演练4. strlen函数的模拟实现5. 总结 1.前言 在现实生活场景中,字符乃至字符串出现的形式占大多数。比如,整天数着自己小金库里钱的数目本质上也是一种符号…

Mybatis进阶——动态SQL(1)

目录 一、 <if> 标签 二、<trim> 标签 三、<where> 标签 四、<set> 标签 五、<foreach> 标签 六、<include> 标签 动态SQL 是Mybatis的强大特性之一&#xff0c;能够完成不同条件下的不同SQL拼接&#xff0c;可以参考官方文档&#…

CNAS软件测试公司作用分享,如何获取CNAS软件测试报告?

在软件测试行业&#xff0c;CNAS认可和CNAS软件测试公司是不可忽视的关键词。CNAS认可是指中国合格评定国家认可委员会对特定领域组织、机构或公司的能力和资质进行的认可过程。该认可遵循国际标准及相关法律法规&#xff0c;是评定组织或实验室技术能力和专业水平的权威认可&a…

同时执行多个python脚本扫描,报如下错误,原因为文件越大读取到内存占用内存越多。

killed nohup python $file unable to fork process cannot allocate memory ls: error while loading shared libraries: libdl.so.2 failed to map segment from shared object cannot allocate memory python进程被系统或者某个用户通过 kill 命令强制终止了

从语言模型到全能AI:大模型跨领域应用的挑战与机遇

1、引言 在人工智能技术的浪潮中,大模型以其强大的数据处理和学习能力,从最初的语言处理领域逐步扩展到各个业务场景中,成为推动科技进步的重要力量。然而,这种跨领域应用的过程并非一帆风顺,既面临挑战也蕴含机遇。本文将通过多个业务场景案例,深入探讨大模型在跨领域应…

2023年175家中国先进封装测试厂名录涵盖华芯邦重点项目广西华芯振邦半导体集成电路晶圆级封测制造项目和山东元瓷华芯集成电路先进封装产业化项目

与传统封装相比&#xff0c;先进封装给芯片的功能拓展增加了可能性。在当前的半导体技术领域中&#xff0c;先进封装技术的重要性日益凸显&#xff0c;它对于提升半导体产品的性能、可靠性和降低成本起到了关键作用。据统计2024年共有175家中国先进封装测试厂&#xff0c; 华芯…

卓豪Zoho CRM客户管理系统采购费用?

企业如何高效地管理客户关系&#xff0c;卓豪Zoho CRM&#xff0c;作为一款领先的客户关系管理系统&#xff0c;不仅为企业提供了一套完整的客户管理解决方案&#xff0c;更在价格上实现了公开透明和合理优惠&#xff0c;助力企业实现数字化转型&#xff0c;迈向更高效、更智能…

揭秘CISA:你不知道的信息安全认证,轻松掌握职场先机!

在当今的信息化时代&#xff0c;信息系统的安全和稳定是企业和组织的重要资产。信息系统审计是一项专业的工作&#xff0c;需要具备丰富的知识和经验&#xff0c;以及敏锐的洞察力和判断力。信息系统审计师是信息系统审计领域的专业人士&#xff0c;他们负责对信息系统的设计、…