使用 FastAPI 和 Postman 進行負載測試:綜合指南
想像一下這樣的場景,您的新創公司開始受到關注。用戶數突然增加!現在,用戶數量不斷從 10 個增加到 100 個,並且已經使用您的應用程式相當長一段時間了。點擊一些按鈕,使用一些功能,向後端伺服器發出請求...
在這種情況下你不希望的是毫無準備。您希望確保您的應用程式對使用者可靠並且可用。這就是測試的用武之地,我們在這裡討論的是一種適合測試這種場景的特定類型的測試,負載測試。
在本指南中,我們將專注於使用 FastAPI 及其自動 OpenAPI 規範產生來簡化產生用於負載測試的 Postman 集合的過程。最後,您將了解如何利用 FastAPI 的 OpenAPI 規格和 Postman 大規模測試您的應用程式。
?為什麼要使用 FastAPI 和 Postman 進行負載測試?
FastAPI 具有內建的 OpenAPI 支持,可輕鬆記錄和測試您的 API。將 FastAPI 與 Postman 結合,您可以:
- 從 FastAPI API 的 OpenAPI 文件自動產生 Postman 集合。
- 透過將集合直接匯入 Postman 來簡化請求設定。
- 利用 Postman 強大的測試和腳本功能進行動態資料產生。
- 以程式方式擴展測試使用 Newman(Postman 的 CLI 工具)進行 CI/CD 整合。
FastAPI 和 Postman 之間的協同作用使開發人員能夠快速模擬真實的流量場景並識別應用程式中的瓶頸。
?️ 第 1 步:設定 FastAPI 和 Swagger
1.1 啟動您的 FastAPI 應用程式
確保您的 FastAPI 應用程式在本機或伺服器上運行。例如:
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)
伺服器啟動時,OpenAPI JSON端點將在http://127.0.0.1:8000/openapi.json可用。
1.2 驗證 OpenAPI JSON
開啟瀏覽器並導航至 http://127.0.0.1:8000/openapi.json 以確保 OpenAPI JSON 可以存取。
?步驟 2:將 OpenAPI JSON 匯出到 Postman
2.1 複製OpenAPI端點
您可以使用瀏覽器或透過curl在本機上儲存OpenAPI JSON檔案:
curl -o openapi.json http://127.0.0.1:8000/openapi.json
或只要複製 OpenAPI 端點 URL,http://127.0.0.1:8000/openapi.json。
2.2 將OpenAPI JSON導入Postman
- 開啟 Postman,然後點選左上角的匯入。
- 選擇下載的 openapi.json 檔案。
- Postman 將自動產生一個包含 OpenAPI 規格中定義的所有端點的集合。
如果您剛剛複製了端點 URL,則只需將 URL 貼上到點擊 匯入
時出現的模式頂部的輸入列即可2.3 組織並測試您的集合
檢查匯入的集合以確保所有端點均已正確配置。您也可以根據身份驗證或資料管理的需要新增環境變數或腳本。
?步驟 3: 準備在 Postman 中進行負載測試
3.1 將動態資料加入您的請求中
要模擬真實場景,請修改您的要求以包含動態資料。例如,使用Postman的內建變數或預先要求腳本:
預請求腳本範例:
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)
負載範例:
curl -o openapi.json http://127.0.0.1:8000/openapi.json
您也可以使用 $randomInt 等內建腳本來產生隨機值。
使用內建腳本的範例用例:
pm.variables.set("random_id", Math.floor(Math.random() * 10000));
這個內建腳本將在每個請求中傳回 0-1000 之間的隨機值。
3.2 配置集合中的變數
在 Postman 中使用集合變數來管理 API 基本 URL、驗證令牌或動態參數,而無需您的集合。這簡化了整個集合的更新和測試。
?步驟 4:使用 Postman 的 Collection Runner 執行效能測試
Postman 現在包含內建效能測試功能,可讓您模擬使用者流量並評估 API 的效能。
4.1 啟動 Collection Runner
- 點選 Postman 中的 Runner 按鈕(燒杯圖示)。
- 選擇從 FastAPI OpenAPI JSON.4.2 匯入的集合設定測試參數
4.2 配置性能測試設置
- 虛擬使用者:指定模擬並發負載的虛擬使用者數量。
- 測試持續時間:設定測試應運行的持續時間。
- 負載設定檔:在固定、上升、尖峰或尖峰負載設定檔之間進行選擇以模擬不同的流量模式。 4.3 執行負載測試
4.3 執行性能測試
點選「執行」開始效能測試。 Postman 將顯示即時效能指標,例如平均回應時間、錯誤率和吞吐量。
?第 5 步:分析測試結果
測試完成後,分析結果以確定效能瓶頸:
- 回應時間:檢查回應時間是否符合您的應用程式的效能標準。
- 錯誤率:識別測試期間發生的任何錯誤並調查其原因。
- 吞吐量:評估每秒處理的請求數,以確保其與預期負載保持一致。
Postman 提供詳細的指標,並允許您比較多個測試運行以追蹤效能隨時間的變化。
?使用 FastAPI 和 Postman 進行負載測試的最佳實踐
- 保持 OpenAPI 文件更新:確保您的 FastAPI 文件反映 API 的當前狀態,以便進行準確的測試。
- 使用動態資料:結合測試資料的變異性來模擬不同的現實場景。
- 監控系統資源:使用監控工具觀察測試過程中CPU、記憶體和網路的使用情況。
- 自動化測試:將效能測試整合到 CI/CD 管道中以進行持續評估。
- 根據發現進行迭代:根據效能測試結果定期更新您的測試和應用程式。
?結論
透過利用FastAPI的OpenAPI規格和Postman的效能測試功能,您可以有效地模擬使用者流量並識別潛在的效能問題。這種方法使您能夠確保 FastAPI 應用程式在不同的負載條件下保持穩健和回應。
測試愉快!
以上是使用 FastAPI 和 Postman 進行負載測試:綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。
