需求:
數(shù)據(jù)庫有50w個用戶名棠耕;
JMeter需要隨機(jī)取其中一個作為登錄接口的參數(shù)。
首先要解決MySQL怎么隨機(jī)取數(shù)據(jù)
百度到了這個結(jié)果:
SELECT 字段名 FROM 表名 ORDER BY rand() LIMIT 數(shù)量;
其中rand()就是隨機(jī)函數(shù)了, 首先隨機(jī)順序排序, 然后取一個數(shù)據(jù), 就達(dá)成要求了.
再來看看JMeter怎么從數(shù)據(jù)庫中取數(shù)據(jù)吧
- JMeter添加線程組;
- 線程組下添加JDBC Connection Configuration
-
配置JDBC Connection Configuration
- 數(shù)據(jù)庫連接池名稱
- 數(shù)據(jù)庫URL
- JDBC數(shù)據(jù)庫類, 選擇com.mysql.jdbc.Driver
- 數(shù)據(jù)庫用戶名
- 數(shù)據(jù)庫密碼
- 線程組下添加JDBC Request
-
配置JDBC Request
- 要綁定的數(shù)據(jù)庫連接池名稱(這個要告訴JMeter從哪個數(shù)據(jù)庫連接池運(yùn)行SQL腳本, 自然要和JDBC Connection Configuration 一致)
- SQL腳本
- 變量名稱(name后面帶個s, 說明肯定和一般的變量名稱不一樣)
variables names設(shè)置為A,C皱坛,那么如下變量會被設(shè)置為:
A_#=2 (總行數(shù))
A_1=第1列, 第1行
A_2=第1列, 第2行
C_#=2 (總行數(shù))
C_1=第3列, 第1行
C_2=第3列, 第2行
如果返回結(jié)果為0夫偶,那么A_#和C_#會被設(shè)置為0冤灾,其它變量不會設(shè)置值球昨。
如果第一次返回6行數(shù)據(jù),第二次只返回3行數(shù)據(jù)蚕断,那么第一次那多的3行數(shù)據(jù)變量會被清除欢伏。
可以使用 ${A_#}
、${A_1}
...來獲取相應(yīng)的值
最后把取到的值用起來就搞定了
- 線程組下添加登錄的HTTP請求
- 配置HTTP請求
其他配置就不在本文詳述了, 只提這個關(guān)鍵的內(nèi)容: 上一個步驟中, 我們設(shè)置了Variable names
為user_account
, 這里我們在用的時候, 就要寫user_account_1
就是SQL腳本取到的值的第一個數(shù)據(jù)了.