隨著各種行動裝置與各式各樣的載體出現,API 讓前後端程式開發人員能夠更快速串接新功能,又能夠在不同裝置上帶給使用者不一樣的體驗。每每當程式要上線前,總是讓開發人員既期待又怕受傷害,一方面是辛辛苦苦的孩子終於要出世了,一方面又會怕會不會有新的 BUG 出現(我養 BUG,BUG 養我)
這時候測試就很重要啦,既能夠保證功能如需求完成,又能保護下次新加功能不會改 A 爛 B。
好的 API 讓前端輕鬆串接,專注呈現各式各樣的體驗;後端只需要專注於保證穩定功能的輸出,大家開開心心 ~ API 沒寫好,輕則資料呈現錯誤,重則 APP 閃退負評滿點…
API 測試從這三個地方著手,一定面面到位
1. 功能:是否完成 API 主要的目的
以取得商品資料來說,輸入了商品編號作為查詢必要參數,是否有正確回應商品資料?回應的商品資料格式是否正確?是否支援像是顏色等選填參數?
如果沒有此商品,API 是否有正確回應找不到商品的錯誤?或者是否有非預期的情況發生?
⚠️ 測試通常都著重於正確的情況,但錯誤的情況也是很重要,至關使用者體驗與是否能夠透過此方式主動發現問題
另外,選填參數也是常常會忽略的地方,例如:頁數、每頁幾個、日期,這些是否有符合規定?數字是否負數?起始日期是否小於結束日期?
2.性能:是否能夠"及"時處理完?
這邊特別強調是及時,因為每隻 API 對於速度的要求不一,是否能夠在容許的請求時間內回應決定在使用情境上。
通常合理的要求回應時間多半低於 500 毫秒 (ms)。
3.安全性:牽涉到需要存取權限的 API 是否有驗證機制?
多半而言每個人只能夠查詢自己的個人資料,別人必須無法存取。那 API 應該透過什麼方式來實現權限控管?驗證機制會是使用什麼方式?
延伸說明
API 由三個部分組成
-
Header
通常包含常用且通用的參數:api-key, token, language …
-
URL (Method)
存取的位置,包含取用的方法:GET, POST, PUT, DELETE …
-
Body
最重要的資料本人,通常還會有不同的格式,但大多為 JSON
HTTP Response Code
-
1xx:系統接收到了
-
2xx:正確
-
3xx:導頁
-
4xx:客戶端錯誤(參數不對)
-
5xx:伺服器端錯誤(非預期錯誤)
詳細資料可以參考:HTTP 狀態碼
一步一腳印,慢慢全面測試 API
讓上線成為一件幸福的事情
(這不是什麼名人錦句,這我自己說的)