Ch6 整合 (Integration)、效能 (Performance) 以及負載 (Load) 測試 | 可測試的 JavaScript (Testable JavaScript)
29 May 2021這一章由於內容太舊了,讀書會決定自訂研討內容。
整合 (Integration) 測試
單元測試 vs 整合測試
- 單元測試:獨立測試程式碼片段。
- 整合測試:測試程式碼片段的合併。
效能 (Performance) 測試
效能測試的目的是檢視造成效能瓶頸的程式碼在哪裡,效能測試是負載測試的其中一個面向。
瀏覽器效能測試
- 使用 cypress.io 產生 HAR 檔案 (cypress-har-generator)。
- 使用 Chrome DevTools 的 Network tab 上傳或 Google Admin Toolbox 來閱讀 HAR 檔案。
- 使用 cypress 產生 Lighthouse 報告 (cypress-lighthouse、cypress-audit)。
- 其他工具,可參考這裡。
負載 (Load) 測試
- 負載測試的目的是檢視應用程式可以處理多少事情、到達最大負載量時會如何反應,用以確認可接受的最長回應時間是多久,這個基準點有助於開發者決定接下來的策略。
- 註:最大負載量是指無法接受的回應時間,並非完全停擺。
瀏覽器負載測試
步驟
- 傳送較多的資料量給應用程式
- 測量 GET / POST 後回應時間、監視伺服器及其他機器的 CPU、記憶體與磁碟的使用狀況
追蹤資源使用率
用戶端追蹤
使用 Chrome Task Manager 和 Chrome DevTools 來追蹤應用程式的記憶體與 CPU 使用率。
伺服器端追蹤
- 使用 Node.js 的 V8 分析器 (profiler) 來檢視 CPU 與記憶體使用狀況。
- 使用 webkit-devtools-agent 分析 Node.js 應用程式中的 heap snapshot 與 JavaScript CPU profiles。