如果遇見了一個全新的協議,怎么從零開始,完成接口測試?以 WebSocket 為例。
WebSocket 協議在2008年誕生,2011年成為國際標准。現在所有瀏覽器都已經支持了。WebSocket 的最大特點就是,服務器可以主動向客戶端推送信息,客戶端也可以主動向服務器發送信息,是真正的雙向平等對話。
WebSocket 的其他特點:
• 建立在 TCP 協議之上,服務器端的實現比較容易。
• 與 HTTP 協議有着良好的兼容性。默認端口也是80和443,並且握手階段采用 HTTP 協議,因此握手時不容易屏蔽,能通過各種 HTTP 代理服務器。
• 數據格式比較輕量,性能開銷小,通信高效。
• 可以發送文本,也可以發送二進制數據。
• 沒有同源限制,客戶端可以與任意服務器通信。
• 協議標識符是ws(如果加密,則為wss),服務器網址就是 URL。
ws–>http(未加密) 無證書
wss–>https(加密) 有證書
第一步:
很多時候第一反應向開發工程師求助,因為開發工程師基於新協議已經完成了接口開發,向開發工程師求助顯然是最好的辦法。找到一些學習脈絡,包含了協議的說明文檔、代碼開發文檔、實現代碼等內容,了解協議的原理。向開發求助是個方法。
那么 WebSocket 用 Fiddler 怎么搞定?,其實主要就是修改了 Fiddler 中 Rules 下的 Customize Rules,如果感興趣可以自己去搜一下。當面對陌生技術問題的時候,應該使用最熟悉的技術去嘗試解決問題。雖然 Fiddler 截獲 WebSocket 接口的辦法,所截獲的全部消息都在日志里面,根本無法操作。但是,可以借助 Fiddler 分析 WebSocket 的接口,一開始給 Fiddler 這款工具的定位一樣,那就是通過它輔助分析我們的被測接口。處理HTTP、HTTPS,推薦用Fiddler。
但是在處理TCP,UDP 就用WireShark。Websocket是應用層協議,建立在 TCP 協議之上,服務器端的實現比較容易。因為應用層是在傳輸層的基礎上包裝數據,所以我們還是從底層開始了解Websocket到底是個啥?是如何工作的?
可以通過---- wireshark(網絡封包分析軟件)抓包工具抓到WebSocket接口
wireshark下載地址:https://www.wireshark.org/download.html
以下是python實現的websocket 接口連接。
#導入websocket的create_connection類 from websocket import create_connection # 建立和WebSocket接口的鏈接 ws = create_connection("ws://echo.websocket.org/") # 打印日志 print("Hello, World") # 客戶端發送Hello,World ws.send("Hello, World") print("Receiving...") # 將WebSocket的返回值存儲result變量 result = ws.recv() # 打印返回的result print("Received '%s'" % result) # 關閉WebSocket鏈接 ws.close()
# 建立和WebSocket接口的鏈接
ws = create_connection("ws://echo.websocket.org/")
執行上面語句之后,客戶端就會與服務器進行連接。
實例對象的send()方法用於向服務器發送數據。
ws.send("Hello, World")