Postman  PM好幫手

在前端&後端分工越來越細的情況下,API layer獨立的情況變得越來越常見。對於系統維護&交接上也變得較有彈性。那麼如何測試&驗證API就也相對重要,接下來為你介紹”Postman”,讓你驗證API不求人!

Postman是Google Chrome的其中一個extension,主要用來模擬HTTP Request,讓Client能夠測試API。同時Postman也有Native App(mac OS, Window, Linux)可以使用。本篇文章則是針對測試API這部分做更深的介紹。

Postman支援大部分API的呼叫方式,目前較常見的為以下四大部分為 「GET, POST, PUT, DELETE」,當然也有一些不常見的呼叫方式,但這裡先不討論。下面介紹會以Google Translate API當作範例。要使用Google Translate API必須先去Google Developer Console那邊申請API Key,才有權限能使用Google Translate API。

注一:申請API Key教學

GET

目標:當前端需要”取得”後端資料時使用,取得後端的Json檔。

Step1 :

Step2 :

附圖為Google Translate API中取得Google支援翻譯語言清單的API。

範例 or 例子:

POST

當前端需要”送值”到後端資料時使用,新增資料或是帳號登入,附圖為Google Translate API中取得Google支援翻譯語言清單的API。

其他兩個好用小功能:a)Collection & b)Export

Postman中常用的功能(,在測試API時),能把API做分類管理(有點類似Folder的概念)並命名,這樣在管理上也會比較方便。還可以將API輸出成JSON檔傳給前端工程師方便他們直接import進Postman做測試。

1)分類管理

2)將API輸出成JSON

釐清問題–以資料排序為例

在專案進行中常會有一些奇耙的事情發生,之前我們就遇到一個問題,APP中的呈現的資料兩邊平台順序不一樣,iOS App的列表顯示的資料順序為A、B、C、D,Android App顯示的資料順序卻是A、C、D、B。排序功能其實在App上面很常見,例如電商的推薦商品or人氣商品等等都會需要排序功能,因為這也會影響到使用者在瀏覽時第一眼看到的物件,如果兩者順序不同,得到的數據就無法做分析比較了。

如果這時候沒有Postman直接測試API的回傳值取得正確排序的話,這個問題就有可能會演變成需要耗費3位平台工程師的時間(iOS、Android、Backend)去比較後端吐出資料的正確排序&前端App顯示的排序。但我們其實可以直接用Postman就將問題釐清,直接戳排序的API觀看回傳的JSON判斷到底iOS還是Android顯示錯誤,或是兩邊都錯。在釐清問題上面使用Postman可以讓PM不用因為一些相對簡單的問題去煩工程師,讓工程師能專心在coding上面。

方便驗證

有些資料必須分頁進行填寫&傳送或是必須滿足設定條件才能建立,像是參加人數到達一定數量等等。如果是在一般測試流程上面當然可以一步一步跟著Flow下去測試,也可以檢測流程上是不是有地方需要修正,但如果遇到需要較快創立資料的情況時,選擇使用Postman也是一種替代方式。因為只需要將API中的body值稍微修改一下就能建立一筆資料,不用一步一步重新輸入資料,不過這邊需要稍微注意一下,如果API原本的設計不是那麼完善的話很有可能會被戳爆或是建立錯誤資料。使用前,請先跟工程師要一份API文件再下去動作。

實際產出

通常,後端實作的東西如果不是有技術背景的人是不會曉得實際產出,除了技術文件之外,直接傳Postman的JSON檔是最快讓客戶知道有實際產出的。這時候就可以把已經測試過的API用Postman裡面的Collection功能整個Export成JSON檔傳給客戶,讓他們知道有東西產出,也可以讓他們直接import做使用,分擔彼此測試工作量。但這邊需注意要將文檔整理清楚,免得客戶亂戳API造成悲劇。

例外情況

但其實Postman不是萬能的,像是有些API因為安全性考量的部分會在API這端呼叫加上額外限制,例如限制特定IP Address才能呼叫,或是擋不同domain的request。這時候就無法使用Postman去驗證API,只能先請工程師設定測試環境把呼叫限制拿掉,或是直接在做後台Admin將API做成功能使用。

總結

Postman在測試API方面對PM來說真的是一個非常好用的工具(review),不僅可以讓PM更深入了解API回傳的資料結構,以及對照流程上面是不是有缺少值,在有新功能需要實作時更可以先行判斷是不是會有地方衝突的。讓PM不要無腦的工程師問問題討罵XD