在平時的工作中,無論是開發工程師還是測試工程師,在做接口測試時都應該用過postman。postman起初是chrome上面的一個插件,后來逐步演變成桌面應用程序,使用起來也便捷方便了不少。
postman除了能請求接口這樣的基本功能外,還有一些高級的用法,比如:設置環境變量、對接口返回值進行斷言測試、設置接口前置和后置腳本、Mock接口、接口運行器設置接口循環執行次數(注意,這里的執行並不是並發執行,而是順序執行)等等。不過在真實的工作場景中,我們更希望整個團隊能共享同一份接口配置,這樣有助於接口聯調和測試,提高工作效率。
在postman中增加了Team的概念,可以為每個團隊創建對應的工作空間,然后可以邀請對應的同事加入到team中,這樣所有人都可以看到team 工作空間下的接口。只不過postman對普通版本做了限制,對team中接口的數量、Mock接口調用次數等都是有明確次數要求的。如下圖所示:
對於目前的項目,接口數量分分鍾都能達到上限,因此為了比較好的體驗,付費是個選擇。但是postman的收費相對比較貴,價格表如下圖所示:
postwoman就是為了對抗postman的收費而出現的:“你收費,我偏不收費,不僅不收費,我還開源”。在github上postwoman的描述信息是:“A free, fast and beautiful API request builder (web alternative to Postman) used by 62k+ developers.”。翻譯成漢語就是:“一個開源、快速並且漂亮的接口請求器,已經被6萬2千的開發者使用,是Postman的一個web端的替代方案”。
接下來我們來看看postwoman的使用體驗以及功能設計,是否真的如它說的這么厲害:
安裝postwoman
postwoman主要是使用vue開發的,它有兩種安裝方式,一種是使用命令行npm命令進行安裝,另外一種是使用docker。我個人推薦大家使用docker的方式安裝,沒啥,主要是方便,不需要再去裝其他工具。可以直接拉取postwoman的鏡像,然后運行即可,命令如下:
$ docker pull liyasthomas/postwoman # 拉取postwoman的鏡像
$ docker run -p 3000:3000 liyasthomas/postwoman # 啟動鏡像
執行完之后,如果沒有報錯,就可以直接訪問postwoman了,默認的端口號是3000,如果你在自己電腦上部署,可以直接通過http://ip:3000進行訪問。其主頁面如下所示:
postwoman的主功能介紹
postwoman主要有五大功能(如上圖所示),分別是:
- Home(首頁)
- RealTime(實時請求)
- GraphQL(API查詢語言)
- Document(文檔/接口描述)
- Settings(設置)
下面分別對上面的這5個大類功能做介紹:
Home(首頁)
首頁主要是對普通的http(s)接口進行請求和管理。這和postman的請求接口的功能類似,都可以創建Collections集合、創建環境變量、編寫Pre-request Script和對結果進行斷言校驗的Tests等等。
不過,需要注意的是,postwoman並沒有使用數據庫,但會將用戶創建的數據保存到瀏覽器的local Storage中。也就是說如果你清除了瀏覽器緩存,那么之前保存在local storage數據也將被清理掉。
需要說明一點,postwoman可以使用github和Google賬號登錄,但是我本地驗證的時候沒辦法拉起來登錄授權頁面(F12看的應該是某個接口請求失敗,網絡原因),大家可以自己在本地實驗下。
RealTime(實時請求)
這個應該是postwoman特有的功能,可以用於長連接服務的請求驗證,比如:WebSocket(以wss://開頭)、SSE、Socket.IO、MQTT。這其中我們應該對WebSocket和MQTT比較熟悉,MQTT請求的界面展示如下所示:
可以看到如果mqtt連接建立之后,還可以訂閱某個topic,或者向某個topic發送Message,這個功能在平時工作中還是比較常用的。比如:之前MQTT都是下載一個專門的桌面工具才能正常操作和查看。
GraphQL(API查詢語言)
這里牽扯到一個知識點GraphQL,它是一種由facebook提出的用於API查詢的語言。GraphQL有什么使用場景呢?比如我們在平時的工作中會碰到某些接口,我們想要請求某個信息,但是它卻返回了很多額外的信息。比如:一個商品菜單請求接口,本來只需要返回商品的基本信息等,但是它有可能會將商品的創建者、用戶評論、詳細描述等信息一並返回。
造成這種情況的原因有很多,比如為了兼容PC端和移動端接口,所以接口越設計越龐大。或者某些奇葩的需求,需要根據不同的條件,商品展示不同的樣式內容等。那能不能根據我們請求參數的不同,返回不同的內容呢?GraphQL就是用來干這個的,它官方文檔有一句話:“ask exactly what you want.”。
在postwoman中舉了一個具體的例子,如下圖所示:
Document(文檔/接口描述)
這個功能可以將任何導出的postwoman collection導入進來,然后以文檔的形式查看,如下所示:
個人感覺這個功能設計用處不是特別大,我唯一想到的場景是,可以將其他人導出的collection導入進來,我們可以查看基本的接口定義。
Settings(設置)
設置模塊沒有什么特別的地方,都是比較基礎的配置,比如:可以配置賬號登錄、整體界面的主題色、設置啟用代理。
總結
坦白講,postwoman並沒有我想象中的那么強大,我起初以為它應該提供PostMan付費版的所有功能,這樣對抗postman才有意思。不過postwoman也有一些好用的功能,比如:可以測試mqtt和websocket、支持GraphQL。另外,postwoman比較好的一點是它是開源的,因此我們可以基於它做一些定制化,制定適合公司自己的接口測試平台。
但是postwoman最讓我失望的是它沒有用到數據庫,只是將接口數據存到了localStorage中,這樣會非常不方便,沒辦法做到團隊間數據同步。另外,它也沒有提供對接口做數據權限的控制(沒用到數據庫,也沒辦法控制其實)。
不過,如果你僅僅是自己使用,並且不想再安裝個postman客戶端軟件,那么postwoman也是不錯的選擇。