效能測試

測試左移:使用 K6 和 Github Action 進行小範圍的 Load Testing

測試左移:使用 K6 和 Github Action 進行小範圍的 Load Testing

隨著產品快速迭代,團隊開始重視「測試左移(Shift Left Testing)」,也就是把測試往開發流程的前端推進。而性能測試(Performance Testing)過去往往是在部署或上線前才進行,是否可以相其他測試項目,提早發現系統瓶頸的機會。 本篇文章想要分享如何在開發階段就導入簡單的負載測試,透過使用 K6 和 Github Action 的整合,讓每次 push 程式碼就可以執行小範圍的負載測試,讓開發人員能夠提早發現潛在問題。 本篇文章裡會說明: * 在 Github 專案裡整合 K6 到 CI 的工作流程 * 在開發人員 push 時觸發負載測試 * 撰寫簡單的 K6 測試腳本 * 透過 Github comment 手動觸發負載測試 * 在 Grafana Cloud 上面看到測試結果 安裝 K6 環境 Load
Ryota.VL
我的 API 不可能這麼慢吧!看看 K6 怎麼拯救它

我的 API 不可能這麼慢吧!看看 K6 怎麼拯救它

前言 透過刻意練習,我們能夠從實務中獲取經驗與不足,並且定期回顧自己用到什麼技術或工具。今天我們就回顧前幾天我們使用的測試工具 K6,本篇文章透過執行效能測試的步驟。 什麼是 K6 K6 是一款開放原始碼的負載測試工具,專為測試網站、API 及應用程序的效能而設計,類似的工具還有 Locust 、JMeter。K6 由 Grafana Labs 支持,能夠幫助開發人員和測試人員模擬高併發的使用者行為,測試系統在高負載下的表現,從而找出效能瓶頸並進行優化。 撰寫效能測試腳本的步驟 1. 設計問題場景 想像我們有一個 /api/users 的 API,但由於資料庫查詢效率低,導致回應時間過長。這樣的問題會在高併發下更加顯著影響系統性能。 2. K6 測試腳本模擬高併發負載 使用 K6 來模擬多個併發請求,測試 API 的回應時間和效能。 3. 執行測試並分析報告 根據 K6 的報告,
Ryota.VL
使用影分身之術,挑戰多任務負載測試

使用影分身之術,挑戰多任務負載測試

前言 回到昨天的題目,我們只模擬尖峰時段,大量的購物車加入商的測試場景,但實際運行環境上,可能會不同的使用者做著不同的事情:購買商品、搜尋商品、加入到購物車、移除商品到購物車、結帳和付款等等。就像《火影忍者》裡的「影分身之術」吧!當主角鳴人同時分出數十個影分身,每個分身都在做不同的事:戰鬥、學習、探查,這就像我們的系統在面對多任務負載時的挑戰! 挑戰目標 模擬一個視訊串流平台的高負載場景,並測試系統在同時進行多任務操作(如影片上傳、即時觀看、評論、搜尋)的情況下,是否能保持系統穩定。 挑戰設計測試場景: * 場景 1:模擬用戶大量上傳影片,並且同時進行即時觀看,測試系統的寫入和讀取性能。 * 場景 2:在用戶大量提交評論的時候,同時進行影片的搜尋,測試系統在高頻率讀寫操作中,是否能夠維持回應的速度。 * 場景 3:模擬影片上傳的瞬間尖峰,同時用戶進行多條影片的即時觀看和評論,測試系統是否能夠承受高並發操作並平穩恢復。 測試背景資訊 系統架構
Ryota.VL
你的系統能撐過巨人的進擊嗎?迎戰週年慶流量浪潮

你的系統能撐過巨人的進擊嗎?迎戰週年慶流量浪潮

前言 最近雙 11 和百貨週年慶又快到了,光是想到那短時間內用戶如巨人般湧入網站,我才不會害怕!我害怕的是荷包變瘦!。但這時候,我們還是要考慮網站系統會瞬間承受巨大的流量衝擊,像是迎接一場巨大的戰鬥。今天,我們就來挑戰如何進行「尖峰期用戶行為模擬」的效能測試,讓你的系統在這樣的尖峰時段依然能夠穩定運行。 挑戰目標 在某些特定的時間點(如大型促銷活動或節假日),用戶行為會產生異常的峰值流量,例如短時間內大量商品加入購物車或支付請求同時發送。 挑戰設計下列測試場景: * 場景 1:模擬用戶在尖峰時段同時進行購物車操作(如一次性加入數千商品),測試系統在處理大量請求時是否會出現性能問題。 * 場景 2:測試用戶在高峰時同時提交訂單,系統是否能夠正確處理並保持一定的回應速度。 * 場景 3:測試在極端高峰(如秒殺活動)下,系統是否能夠平穩運行,並在流量回落後迅速恢復。 衝擊測試(Spike Testing) 衝擊測試是模擬系統突然受到高流量衝擊時的表現,目的是檢查系統是否能夠快速響應突發情況,並在流量回落後迅速恢復穩定。 系統架構 graph LR; A[
Ryota.VL
效能分析的基礎: The USE Method 和 The TSA Method

效能分析的基礎: The USE Method 和 The TSA Method

前言 在效能測試領域,如何準確找到系統瓶頸,並迅速定位效能問題,是每位測試工程師面臨的重要挑戰。Brendan Gregg 提出的兩個方法論— The USE Method 和 The TSA Method,提供了系統化的方式來進行效能分析和排除故障。本篇文章將介紹這兩種方法,並討論它們在效能測試中的應用,幫助你快速識別並解決系統的效能問題。 The USE Method 是什麼? The USE Method,全稱是 Utilization(使用率), Saturation(飽和度), and Errors(錯誤),是一種用來分析系統效能的檢查方法。它的核心目標是通過三個維度來檢查每個系統資源,從而系統化地找出效能瓶頸。 * Utilization(使用率):表示某個資源的使用程度,通常以百分比來表達。高使用率表明這個資源可能是系統瓶頸。 * Saturation(飽和度):表示資源的需求超過其最大處理能力。資源飽和意味著有任務在排隊等待,通常是導致效能下降的原因。 * Errors(錯誤):指的是資源在使用過程中出現的錯誤或失敗。
Ryota.VL