軟件測試52講筆記--22 從0到1:API測試怎么做?常用API測試工具簡介

這是我購買的"極客時間"上的一套課程的筆記,總共52講,定期對其中的內(nèi)容做一筆記,鞏固學(xué)習(xí)內(nèi)容。

22 從0到1:API測試怎么做?常用API測試工具簡介

API 測試的基本步驟

  1. 準(zhǔn)備測試數(shù)據(jù)(可選);
  2. 通過API測試工具,發(fā)起對被測API的request;
  3. 驗證返回結(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)注的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評論 19 139
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 30,223評論 8 265
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,199評論 3 119
  • 今天周六,孩子在一陣咳嗽聲中醒來,前兩天感冒了,一直沒有好利索。起了床,吃過飯后,吃了點藥,就寫作業(yè)去了。...
    梔子花開在五月閱讀 195評論 0 1
  • 陳的打磨機(jī)開關(guān)壞了,讓我給整一下,好多天過去都快忘了,今天上班我?guī)想娎予F焊錫絲和松香,利用開工前大家懶散的那幾分...
    瞿桂林閱讀 33評論 1 0

友情鏈接更多精彩內(nèi)容