記錄自己常用的 JMeter 設定情境

常用元件

Test Plan

  • 設定變數 (可以 call java func)
  • 若希望一個做完 Thread Group 才做下一個 Thread Group 可以勾選 (Run Thread Groups consecutively)

Thread Group

  • 需要多少個 User (thread)
  • 每個 thread 持續時間,
  • Ramp-up 時間,用於模擬 User 逐漸上升的狀況
  • 設定執行次數 (Loop Controller 也可以達成相同的效果)

例: 每個 User 持續 20 秒,並在 5 秒達到總共 10 個 User, 因 Loop Count 設定 infinite 時,就是看 User 的持續時間, 這邊就是跑 20 秒,不管次數了,若有設定 count 就是跑幾次結束。

Loop Controller

  • 設定次數

Transaction Controller

  • 用於需要依序步驟的處理,常見案例:登入拿 token ,根據取得 token 呼叫下一支 API
  • 如果啟用 Generate parent sample ,報表顯示上會將同一個 Transaction group by 一起,比較好閱讀

HTTP Request

  • 常搭配 HTTP Header Manager

JSON Extractor

  • 放在 Http Requset 之後或裡面,把 JSON Response 需要的值轉成變數在後面使用

View Results Tree

  • 報表,可以細看每次的 req/res 結果
  • 根據放的區塊不同,記錄的範圍不一樣
  • 例:你呼叫兩隻 API,若你想分開看,就在各自的 HTTP Request 裡面新增,這樣就會有獨立的紀錄。大多數的元件邏輯都相同。

Aggregate Report、Summary Report

  • 常看的欄位
  • P90:90% User 的位於的 Response 區間
  • Throughput:rps (Request per Second) 每秒的承載量,若表示該 API 能承受的請求量,越高越好。
  • Error

Summary Report

  • 我會放在最外層,這樣可以大概看一下,多個 testcase 跑完,整體的狀況

Graph Results、Aggregate Graph

  • 可以用來協助確認在哪個時間點,API 速率有明顯變化

Assertion

  • 檢查用,確認回傳是否符合預期

情境

想要知道 API 在 10 個 user 下 qps 的狀況

設定如下

- Thread Group
    - Http Request
    - View Result Tree
    - Aggregate Report

看 Report 中 P90 、Error、Throughput

先登入拿 token 後,呼叫另外一支 API

- Thread Group
    - Transaction Controller
        - Http Request
            - JSON Extractor
        - Http Request
            - HTTP Header Manager
            - JSON Assertion
            - View Result Tree (1)
        - View Result Tree (2)

看 View Result Tree (1) 有沒有都 pass,若異常這邊會有 fail 在 (2) 也會看到 fail , 拆成兩個在確認錯誤會比較方便。