這是我購買的"極客時間"上的一套課程的筆記,總共52講,定期對其中的內(nèi)容做一筆記,鞏固學(xué)習(xí)內(nèi)容。
22 從0到1:API測試怎么做?常用API測試工具簡介
API 測試的基本步驟
- 準(zhǔn)備測試數(shù)據(jù)(可選);
- 通過API測試工具,發(fā)起對被測API的request;
- 驗證返回結(jié)果的response。
基于Spring Boot 構(gòu)建的API
這里作者提供了一個api的代碼,用于說明如何測試它。筆記就不寫了。
使用cURL 命令行工具進(jìn)行測試
主要介紹了一下參數(shù)的用法,然后參數(shù)都是大小寫敏感的。具體我就不照抄了,大家去看原文。
接下來分析了,Sesison、Cookie的場景下,如何用cURL工具測試。
使用圖形界面工具Postman進(jìn)行測試
這塊關(guān)注一下:保存測試用例和基于Postman的測試代碼自動生成。如何安裝、發(fā)送請求啥的沒什么好做筆記的,看原文就好。
1. 保存測試用例
可以用Collection來分類管理保存多個測試request。如果申請注冊了賬號,還可以在多個環(huán)境中共享這個Collection。
2. 基于Postman的測試代碼自動生成
有兩種做法:
- 將Postman中的測試request用自動化的方式直接轉(zhuǎn)換成API測試的代碼。目前Postman支持這個功能,將保存的測試request自動化轉(zhuǎn)換成常見測試框架直接支持的代碼,并且支持多語言哦?。ㄊ遣皇呛軓?qiáng)大)
- 利用Newman工具直接執(zhí)行Postman的Collection。
先把Postman的Collection導(dǎo)出成JSON文件,然后執(zhí)行命令:
newman run examples/sample-collection.json;
如何應(yīng)對復(fù)雜場景的API測試?
測試場景一:被測業(yè)務(wù)操作是由多個API調(diào)用協(xié)作完成。
實現(xiàn)了API調(diào)用和結(jié)果解析的代碼華,就可以很靈活的直接用代碼來處理這些場景了。
那么,如何才能高效地獲取單個前端操作所觸發(fā)的API調(diào)用序列?
解決這個問題的核心思路是,通過網(wǎng)絡(luò)監(jiān)控的手段,捕獲單個前端操作所觸發(fā)的 API 調(diào)用序列。比如,通過類似于 Fiddler 之類的網(wǎng)絡(luò)抓包工具,獲取這個調(diào)用序列;又比如,目前很多互聯(lián)網(wǎng)公司還在考慮基于用戶行為日志,通過大數(shù)據(jù)手段來獲取這個序列。
測試場景二:API 測試過程中的第三方依賴
在單體架構(gòu)下,通常只會在涉及到第三方 API 集成的場景中才會遇到這個問題,所以還不算嚴(yán)重。但是,在微服務(wù)架構(gòu)下,API 間相互耦合的依賴問題就會非常嚴(yán)重。
解決這個問題的核心思路是,啟用 Mock Server 來代替真實的 API。
測試場景三:異步API的測試
一直以來,這都是比較困難的部分。作者看來,對異步API的測試主要分為兩個部分:
一是,測試異步調(diào)用是否成功;
二是,測試異步調(diào)用的業(yè)務(wù)邏輯處理是否正確。
- 異步調(diào)用是否成功,這個還比較簡單,主要檢查返回值和后臺工作線程是否被創(chuàng)建兩個方面就可以了。
- 但是,對異步調(diào)用業(yè)務(wù)邏輯的測試就比較復(fù)雜了,因為異步 API 通常發(fā)生在一些比較慢的操作上,比如數(shù)據(jù)庫 I/O、消息隊列 I/O 等,此時測試往往需要去驗證數(shù)據(jù)庫中的值、消息隊列中的值等,這就需要測試代碼具有訪問和操作數(shù)據(jù)庫或者消息隊列的能力。
- 在實際工程項目中,這些能力一般會在測試框架級別提供,也就是說要求 API 測試框架中包含對應(yīng)的工具類去訪問和操作數(shù)據(jù)庫或者消息隊列等。
【心得】
Postman原來還有測試代碼自動生成的功能嘛,看來要好好發(fā)掘一下。
關(guān)于異步API的測試,目前還沒有做過,值得思考。
關(guān)于Mock Server的部分,作者后續(xù)會詳細(xì)展開,這塊也是我目前比較關(guān)注的。