[JMeter] 取得 JSON Token 做為 Http Request Header 參數

一般公開對外的 REST API 基於安全性考量都會有認驗證機制,做法很多,其中一種做法就是透過使用指定格式來取得 token,後續的資料交換就改以 token 為識別是否為合法 request 並提供有效 response 的基準。因此測試情境也就需要有相應的處理:先取得 token 才能測試目標 api

今天簡單紀錄一下,取得 token 時內容沒有加密的做法,當做後續紀錄遇到加密 response 的比較基準

基本環境說明

  1. macOS Mojave 10.14.6
  2. JMeter 5.1.1
  3. 測試用 api : reqres.in

JMeter 設定

  1. Test Plan 右鍵 –> Add –> Threads (Users) –> Thread Group

    1addthread

  2. 建立 Login Http Header Manager

    用來管理取得 token 的 request header

    2header

    2loginheader

  3. 建立 Login HTTP Request

    用來實際取得 token,測試 api 用法請參考 reqres.in 說明

    3request

    3httprequest

  4. 建立 JSON Extractor

    取得回傳的 JSON 內容,並設定為 JMeter 變數

    4jsonextractor

    5extractoresetting

    • Names of created variables 為指定 JMeter 的變數名稱
    • JSON Path expression 為目標 JSON 屬性名稱
  5. 再次建立 Http Header Manager

    用來管理實際執行目標 api 的 header 設定, 並使用上方 JSON Extractor 設定的參數

    6header

  6. 建立測試目標 HTTP Request

    實際執行測試目標

    7request

  7. 加入 View Results Tree

    用來檢視各步驟的執行結果

    8viewresult

  8. 實際執行測試

    可以從 View Results Tree 看到 HTTP Request - Login 取得 token : QpwL5tke4Pnpja7X4,並可以看到 HTTP Request 的 request header 也正確使用 Authorization: Bear QpwL5tke4Pnpja7X4

    9gottoken

    10correctheader

心得

簡單的設定,沒有複雜的操作,上手難度不高,如果真實環境可以這麼簡單想必工作起來一定輕鬆寫意不少,不過也就是因為可以面對這麼多變的需求才顯得程式工作的挑戰性跟有趣

參考資訊

  1. reqres.in
  2. JMeter解析JSON內容,動態取得變數