我們常說的 API 測試,一般來說,測的是 Web API / REST API。這篇文章就是來講述怎樣做 API 的 Automation Test。
這裡我必須強調在測試過程中出現 500 Internal Server 都不是合理的 Status Code,我們故意輸入的錯誤資訊,都應當為 Bad Request,系統應該有阻擋並回傳正確的錯誤訊息。
但這個辦法真的是沒辦法之中的辦法,怎樣去應用那支 API,大概是用猜的。我是驗過一支 API 有幾千個 Attributes,這支 API 背後做了怎樣的邏輯處理是經過無數次測試推敲出來。。。整整花了一個禮拜時間去拆解。真心勸告需要寫 API 文件,不然這樣太浪費時間,太沒有效率了。
但慎防大家會經歷相同的不幸,還是要分享一下怎樣猜測的~XD
以這個 Demo 網站作為例子: https://automationintesting.online/
這裡是要給店家留言,提交表格會發出 API Request 到 Server (後端)。
打開 Browser 的 Developer Tool F12
,點選 Network
Tab,再在頁面操作輸入資料。
再來看看 Developer Tool 的內容,分別為 Headers
, Payload
, Response
來收集你需要的資訊。
整理一下所得的資訊:
URL: https://automationintesting.online/message/
Request:
Method: POST
Content-Type: application/json
Body: {
"description": string,
"email": string,
"name": string,
"phone": string,
"subject": string
}
Response:
Content-Type: application/json
Body:{
"messageId": int
"description": string,
"email": string,
"name": string,
"phone": string,
"subject": string
}
Success Status Code: 201
這些資訊大概讓你知道這支 API 長怎樣的,如何可以成功建立給店家的留言。
但還是很有限,至少還需要知道每個 attribute string 的長度限制,會有什麼的錯誤情境等,才比較好設計對應的 Test Cases。
如果有權限看 Database,或許也可以猜測 attribute 的長度限制,因為一般跟 database 設定的字數限制有關。剩下的就只能自己試出來,或是跟 Developer 查問了。
好~最壞情況的經驗分享過了,先給你點心理準備,因為還真的蠻多公司沒有 API 文件的。
有足夠的資料就可以開始來設計 Test Case 了,基本上同樣應用黑箱測試技術。
這裡提供 3 個方向去協助思考 Test Cases:
正常使用情境:
例如:測試登入 API,輸入正確的登入資料,預期登入應該會成功。
錯誤使用情境:
針對 Request Body 的每個 Attribute 的限制,輸入錯誤的資料,而每個測試情境只能有一個錯誤資料。
例如: 輸入錯誤的 Username / Password, 不輸入 Username / Password 等等。。。
特殊使用情境:
例如:註冊 API,Username 不能重覆註冊,但因為有註銷功能,註銷後應該可以再註冊。
以下我把常見的 API 主要分為幾個大類,提供一些發想測試的方向,不盡完美,也不是所謂的 SOP,僅供參考,讓你可以寫出最基本的 Test Cases。
推薦一個練習 API 測試用的網站:Dummy API
需要注冊取得 app-id 才能用,可以嘗試閱讀 API 文件,想像一下 Test Case 要怎樣設計。
明天的內容將會是應用 Python 作 API 測試。