当前位置: 首页 > news >正文

自动化测试实践:揭秘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呢?

WebSocket 是一种在 Web 应用程序中提供双向通信的协议。

它允许在客户端和服务器之间创建持久性的连接,从而使得数据能够以低延迟和高效率进行双向传输。

一些常见应用场景包括:

  1. 即时通讯应用程序:像聊天应用、在线游戏等需要实时双向通信的应用场景中,WebSocket 能够提供更好的性能和用户体验;

  2. 实时数据更新:像股票市场、天气预报、实时地图等需要实时数据更新的应用中,WebSocket 可以用来推送实时数据给客户端,而不需要客户端不断地发起请求;

  3. 在线协作工具:像 Google Docs、Trello 等在线协作工具可以使用 WebSocket 来实现多用户实时编辑、更新等功能;

  4. 实时游戏:在线多人游戏需要实时的玩家位置、动作等信息同步,WebSocket 可以帮助实现这些功能。显而易见,客服对话窗属于第1种。

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

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

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

如此,我们知道了,我们一些“看不见”的接口是如何发送请求的了。

但是问题又来了:知道了websocket的请求方式,如何使用自动化脚本方式模拟呢?

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

1.import websocket 2.import json 3. 4.def on_message(ws, message): 5. print(f"Received message: {message}") 6. 7.def on_error(ws, error): 8. print(f"Error occurred: {error}") 9. 10.def on_close(ws): 11. print("Connection closed") 12. 13.def on_open(ws): 14. print("Connection established") 15. # 发送消息 16. message = { 17. "c": 20001818, 18. "u": "e6054702278504214c792f583376d5ab", 19. "v": "6817201c3614948f68de93ab151e53e5", 20. "role": 2, 21. "meeting": False, 22. "cId": 876105175, 23. "site": 0, 24. "g": 10063915, 25. "winId": "b6f2f684f577413abb2ab166433b060e", 26. "flag": False, 27. "robot": False, 28. "msg": "你好" 29. } 30. ws.send(json.dumps(message)) 31. 32.if __name__ == "__main__": 33. websocket.enableTrace(True) 34. ws = websocket.WebSocketApp("wss://chat2445.talk99.cn/chat/room/20001818/876105175/b6f2f684f577413abb2ab166433b060e", 35. on_message=on_message, 36. on_error=on_error, 37. on_close=on_close) 38. ws.on_open = on_open 39. ws.run_forever()

至此,我们简单总结一下。浏览器开发者工具功能十分强大,除了我们熟知的http请求,还可以捕获websocket请求。

然后,我们可以通过得到的请求信息,使用Python或其他开发语言帮助我们完成相关的接口测试。由此,完成我们“看不见”的接口自动化测试。

最后:下方这份完整的软件测试 视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

http://www.jsqmd.com/news/685361/

相关文章:

  • 3个核心技巧:让DownKyi成为你的B站视频收藏专家
  • 单入射方向光波导耦合光栅的优化
  • SE Office终极指南:如何在浏览器中免费编辑Office文档
  • 告别串口助手:用这款安卓蓝牙调试软件高效调试你的HC-05模块
  • 座椅镀膜厂家哪家好?2026防晒膜/遮阳膜/建筑膜品牌实力分析-优质膜类品牌优选推荐 - 栗子测评
  • 别再为STM32显示中文发愁了!手把手教你用W25Q64外挂字库(附完整代码)
  • 告别‘CScript’报错!Android Studio模拟器驱动安装最全避坑指南(Win10/Win11通用)
  • 灵魂商数(SQ) · 全域数学统一定义【乖乖数学】
  • GraalVM Native Image内存暴增紧急响应清单(含jcmd + native-image-agent + heapdump离线分析三件套)
  • Java的java.lang.foreign.MemorySegment数组访问与边界检查在安全API中的保证
  • 2026六相继电保护测试仪优质品牌推荐:微机保护测试仪、手持式继电保护测试仪、数模一体继电保护测试仪、电缆谐振试验装置选择指南 - 优质品牌商家
  • RK3568设备树与8250驱动实战:将普通UART口改造成智能RS485接口的完整指南
  • APP软件测试:内容与方法剖析
  • FanControl终极指南:5分钟实现Windows风扇精准控制
  • 3类典型农业场景Docker配置对比:温室环控/无人机巡田/溯源区块链,哪套方案让部署效率提升7.8倍?
  • 如何在网页中完整展示数组中所有对象的全部属性
  • 微信聊天记录永久保存终极指南:WeChatMsg让数据真正属于你
  • GD32F450 GPIO实战:从点亮LED到串口通信,手把手教你玩转复用功能
  • CodeCell ESP32-C3开发板:超小型RISC-V方案解析
  • 真皮镀膜推荐厂家哪家好?2026车衣/防晒膜/建筑膜品牌测评-行业优质品牌精选推荐 - 栗子测评
  • Python asyncio 与多任务并发
  • 企业级工作流系统终极指南:5步快速构建流程自动化平台
  • 如何永久备份微信聊天记录:免费工具WeChatMsg完整使用指南
  • Spring Boot 3.4 + Java 25虚拟线程微服务重构实战(亿级日活订单系统降本增效全链路复盘)
  • 51单片机IO口不够用?试试用74HC595芯片驱动LCD1602,实测节省8个引脚
  • AAEON FWS-2291/2292边缘网络设备深度评测与应用指南
  • Java的java.lang.ModuleLayer模块图解析与依赖关系在动态环境中的管理
  • 银行局域网如何通过WebUploader优化视频监控超大附件的断点校验与传输日志插件?
  • 2026年质量好的无添加果干长期合作厂家推荐 - 品牌宣传支持者
  • [具身智能-424]:国际和国内AI编程工具