iT邦幫忙

1

Grafana k6 入門實戰

雷N 2025-03-07 00:09:021983 瀏覽
  • 分享至 

  • xImage
  •  

完整內容在此, 幹話王_Grafana k6 入門實戰

將 k6 從設計測試到開發再到 CI pipeline 整個完整寫一篇。

2024年9月,Grafana 決定把 k6 的icon改色,並於 v0.54.0 發佈。連 result output 也改成紅色了,還加入 Grafana 的字眼。


OpenTelemetry Demo 專案

OTel Demo 專案中本來就有 Python Locust 框架撰寫的測試,我們能翻寫成 k6 的版本來練習。Grafana 有提供一個 OTel demo 電商的線上網站https://otel-demo.field-eng.grafana.net/,我們能以此網站來進行 k6 的測試。

該Locust測試腳本的主要測試對象與行為︰

API端點測試 ︰

基礎服務檢測

  • GET / 首頁訪問

    • 洪水攻擊,根據 feature flagloadGeneratorFloodHomepage值,動態調整請求次數
  • GET /api/products/{id} 商品情查詢

  • GET /api/recommendations 商品推薦系統

  • GET /api/data/ 廣告推薦系統

購物車流程

  • GET /api/cart 查看購物車

  • POST /api/cart 添加商品到購物車。購物車操作包含: 隨機商品選擇(10種預設商品) 數量隨機(1-10件) 用戶ID綁定

結帳系統

  • POST /api/checkout 結帳操作

  • 兩種結帳模式: 單商品結帳 多商品結帳(2-4件隨機組合)

  • 使用預先載入的100組用戶資料

瀏覽器行為測試 ︰

UI操作驗證

  • 切換貨幣為瑞士法郎(CHF)

  • 點擊「Roof Binoculars」商品

  • 執行加入購物車按鈕操作

流量識別機制

所有請求添加synthetic_request=true header,方便識別該請求是測試產生的還是其他使用者產生的。

為此我們能根據以上的測試案例,區分成壓力測試以及功能測試

Test for Performance

k6 官方有一篇專門關於測試性能的測試入門文章,Test for performance

主要有,使用 thresholds 確認性能標準(performance criteria)。使用 scenarios 來配置多種負載模型。最重要的是團隊已經定義出 SLO 了,例如 99% 請求應該成功,99%請求應該≦1000ms的延遲,只有定義出 SLO,多種負載模型場景才能測試出系統是否滿足這些 SLO。

因為這裡主要是測試客戶端的性能表現,能參考 R.E.D. 或是 4 Golden Signals 中的 Latency、Traffic、Errors

這裡我們設定請求失敗率需要小於 1 %,也就是 1000 個請求最多只能有 9 個請求是失誤的。令一個則是 p95 的請求都要在 200ms 內取得回應,也包含了失敗請求的回應(Fail should fast return)。

設定 thresholds 之前我們要先知道 k6 提供了哪些內建指標

常用內建指標

  • checks︰rate類型,我們設定的斷言檢查通過比例,這是最重要的資料正確性檢查。

  • http_req_duration︰trend類型,就所有請請的總時間,等於 http_req_sending + http_req_waiting + http_req_receiving(即遠端伺服器處理請求並回應所需的時間,不包括初始的 DNS 查詢/連接時間)。

  • http_req_failed︰rate類型,http 回應 status >= 400的次數。

  • http_reqs︰counter類型,k6 產生了多少 http 請求。

  • browser_web_vital_fidbrowser_web_vital_lcp︰k6 browser 產生的指標,用來測量瀏覽器多久能看到內容以及跟元件互動。

  • 其他自己看,我幾乎沒在用,除了即時輸出至儀表板會用到,像是收到多少資料大小(data_received)、執行了幾次測試迭代(iterations)、測試持續時間(iteration_duration)、多少 VU 正在執行測試中(vus)。

  • 也能自己定義 metrics 設定於 thresholds 中。

我們就能利用內建指標,設定這次測試對象的 thresholds 作為測試的驗收標準(Criteria)

export const options = {
  thresholds: {
    checks: ['rate>0.95'], // the rate of successful checks should be higher than 95%
    http_req_failed: ['rate<0.01'], // http errors should be less than 1%
    http_req_duration: ['p(95)<150'], // 95% of requests should be below 150ms
  },
};

完整內容在此, 幹話王_Grafana k6 入門實戰


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言