使用資料庫進行引數化
引數化效能指令碼的另一種方法是通過 JDBC 使用資料庫資料。JDBC 是一個應用程式程式設計介面,用於定義客戶端如何訪問資料庫。
首先,將 JDBC 驅動程式下載到你的資料庫(請參閱資料庫供應商)。例如,可以在這裡找到 mysql 驅動程式。然後,你可以通過使用以下表單將 .jar 檔案新增到測試計劃中來新增它:
但最好在 lib 資料夾中新增 Jar 檔案並重啟 JMeter。
之後,使用“JDBC 連線配置”元素配置資料庫連線。像這樣: 右鍵單擊 Thread Group - > Add - > Config Element - > JDBC Connection Configuration
‘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 驅動程式類
- 使用者名稱
- 密碼
螢幕中的其餘欄位可以保留為預設值:
我們假設我們將測試使用者憑據儲存在資料庫中:
現在,當配置資料庫連線時,我們可以新增 JDBC 請求本身並使用其查詢從資料庫獲取所有憑據: 右鍵單擊 Thread Group - > Add - > Sample - > JDBC Request
通過使用’Select Statement’查詢和’Variable Names’,我們可以解析對自定義變數的響應。
我們現在將擁有可在後續請求中進一步使用的 JMeter 變數。將使用增量字尾(email_1,email_2,email_3 ……)建立指定的變數。
要在登入請求中使用這些變數,我們需要新增一個計數器,用於從 JDBC 查詢響應中訪問正確的值。要在 JMeter 中新增’Counter’元素: 右鍵單擊 Thread Group - > Add - > Config Element - > Counter
之後,我們可以使用__V 函式更新登入請求。這將返回計算變數名稱表示式的結果,並可用於計算巢狀變數引用:
指定的配置足以使用資料庫值跨不同使用者執行指令碼: