使用資料庫進行引數化

引數化效能指令碼的另一種方法是通過 JDBC 使用資料庫資料。JDBC 是一個應用程式程式設計介面,用於定義客戶端如何訪問資料庫。

首先,將 JDBC 驅動程式下載到你的資料庫(請參閱資料庫供應商)。例如,可以在這裡找到 mysql 驅動程式。然後,你可以通過使用以下表單將 .jar 檔案新增到測試計劃中來新增它:

StackOverflow 文件

但最好在 lib 資料夾中新增 Jar 檔案並重啟 JMeter。

之後,使用“JDBC 連線配置”元素配置資料庫連線。像這樣: 右鍵單擊 Thread Group - > Add - > Config Element - > JDBC Connection Configuration

StackOverflow 文件

‘JDBC 連線配置’引數:

  • 名稱 - 將線上程組樹中顯示的連線配置的名稱
  • 變數名稱 - 將用作資料庫連線的唯一識別符號的名稱(可以使用多個連線,每個連線將繫結到不同的名稱)
  • 最大連線數 - 連線池中允許的最大連線數。在 0 的情況下,每個執行緒將獲得其自己的池,其中包含單個連線
  • Max Wait(ms) - 如果在 db 連線期間超過指定的超時,則池會引發錯誤
  • Eviction Runs 之間的時間(毫秒) - 從資料庫中驅逐未使用的連線的執行緒執行之間暫停的毫秒數
  • 自動提交 - 是為相關資料庫連線開啟自動提交
  • 空閒時測試 - 在檢測到有效請求之前檢查空閒連線。更多細節:BasicDataSource.html#getTestWhileIdle
  • Soft Min Evictable Idle Time(ms) - 指定連線在資料庫池中空閒之前可以被驅逐的時間段。更多細節:BasicDataSource.html#getSoftMinEvictableIdleTimeMillis
  • 驗證查詢 - 將用於驗證資料庫是否仍在響應的執行狀況檢查查詢
  • 資料庫 URL - 資料庫的 JDBC 連線字串。請看這裡的例子
  • JDBC 驅動程式類 - 適當的驅動程式類名稱(特定於每個資料庫)。例如,MySql db 的’com.mysql.jdbc.Driver’
  • 使用者名稱 - 資料庫使用者名稱
  • 密碼 - 資料庫密碼(將在測試計劃中未加密儲存)

在我們的例子中,我們只需要設定必填欄位:

  • 變數名繫結到池。
  • 資料庫 URL
  • JDBC 驅動程式類
  • 使用者名稱
  • 密碼

螢幕中的其餘欄位可以保留為預設值: StackOverflow 文件

我們假設我們將測試使用者憑據儲存在資料庫中: StackOverflow 文件

現在,當配置資料庫連線時,我們可以新增 JDBC 請求本身並使用其查詢從資料庫獲取所有憑據: 右鍵單擊 Thread Group - > Add - > Sample - > JDBC Request

通過使用’Select Statement’查詢和’Variable Names’,我們可以解析對自定義變數的響應。

StackOverflow 文件

我們現在將擁有可在後續請求中進一步使用的 JMeter 變數。將使用增量字尾(email_1,email_2,email_3 ……)建立指定的變數。

要在登入請求中使用這些變數,我們需要新增一個計數器,用於從 JDBC 查詢響應中訪問正確的值。要在 JMeter 中新增’Counter’元素: 右鍵單擊 Thread Group - > Add - > Config Element - > Counter

StackOverflow 文件

之後,我們可以使用__V 函式更新登入請求。這將返回計算變數名稱表示式的結果,並可用於計算巢狀變數引用:

StackOverflow 文件

指定的配置足以使用資料庫值跨不同使用者執行指令碼: StackOverflow 文件 StackOverflow 文件