測試
- 類型
smoke test:冒煙測試.在最小負載下,系統可以正常運行.
load test:負載測試.主要是根據每秒並發的用戶或請求來評估系統的性能.
stress test,spike testing(壓力測試,穿透測試):評估系統極限和在極端條件的穩定性.
soak test:浸泡測試.一段時間內系統的穩定性和性能.
- 測試方式
windows:
./k6.exe run ./scripts/smoke-test-demo.js
linux:
k6 run ./scripts/smoke-test-demo.js
smoke test
冒煙測試是一個在最小負載下的普通負載測試.
價值:
驗證測試腳本沒有錯誤;
驗證系統在最小負載小沒有拋異常;
測試腳本示例:
load testing
負載測試是一種性能測試,用於確定系統在正常條件和峰值條件下的行為.通常用於確保服務可以很好滿足大量用戶同一時間訪問.
價值:
評估在典型和峰值負載下系統的當前性能;
當進行系統(代碼,基礎設施)調整后,確保依舊滿足性能標准.
要求99%的請求在1.5秒內響應.thresholds 用於確保系統滿足你設置的性能標准.
整個負載流程是逐步增加系統負載,持續一段時間后,負載又逐漸降低的過程.
常見的負載性能標准:
99%請求在5秒內完成;
95%請求應該在1秒內完成;
99%用戶可以第一次就成功登陸
壓力測試
壓力測試是一組不同類型的負載測試.用於評估系統在高負載情況下的可用性和穩定性.
價值:
確認極端條件系統的情況;
確認系統最大的容量;
確認系統的臨界點和失效模型;
確認壓力測試后,系統能否自恢復;
壓力測試是系統臨界點評估的測試,核心是判定系統的臨界點而不是摧毀系統.
穿透測試
穿透測試是壓力測試的一個變種.不同的是,壓力測試是逐步的進行壓力的增減,而穿透測試講究的是迅速的進行極端壓力請求.
價值:
確認迅速的極端訪問下的系統行為;
確認迅速的極端訪問后系統能否自恢復;
穿透測試是對大型突發情形的預演.系統在這種情形的反應可以分為四種:
優秀: 在突發請求下,系統運行正常.響應時間在高低訪問量下相似;
好: 響應時間變慢.但是系統未發生錯誤.所有請求都被處理;
一般: 突發請求下有異常發送.但是請求正常后,服務自恢復;
差: 系統崩潰,無法自恢復;
浸泡測試
浸泡測試:關注系統長時間運行的可靠性.用於揭示系統長時間處理壓力下而產生的性能和可靠性問題.
可靠性問題典型的有:bugs,內存泄漏,存儲配額不足,配置不正確,基礎設施故障等
性能問題典型的有:與數據庫交互不協調,內存泄漏,資源泄漏,大數據量
浸泡測試可以在幾小時內模擬幾天的訪問量;
價值:
驗證系統不存在導致中斷或運行一段時候重啟的bug或內存泄漏問題;
驗證服務重啟后不丟失請求;
發現偶發的競爭條件相關的bugs;
確認數據庫不會耗盡分配的存儲空間后停止;
確認日志不會耗盡分配的磁盤空間;
確認你依賴的其他服務不會大訪問量下不會掛掉;