jmeter測試中,測試數據通常和測試用例分離mysql
測試數據通常能夠使用csv構造,進行參數化sql
但也能夠使用mysql等數據庫構造shell
方案一:一個線程循環調用mysql數據,不是併發,不適用於性能測試,更適合接口測試數據庫
記錄一下:bash
需求:若是sex是0,那麼執行操做1併發
若是 sex是1,那麼執行操做2函數
具體操做根據實際狀況肯定,這個例子用bash shell sample代替具體的操做性能
本地mysql數據庫中我新建了 個database,取名jmeter,其中建立了user表測試
1.首先須要配置jmeter 的mysql源url
添加JBDC connection Configuration
注意:
variablename for create pool:jetertest(jmetertest這個名字本身定義的,記住下面要使用)
max number of Conection JDBC鏈接池最大鏈接數
0:線程之間獨立,不共享線程池
n :確保該值大於等於最大線程數
Database url:
jdbc:mysql://127.0.0.1:3306/YourDatabaseName?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
2. 建立一個 JDBC request
3.在debug sample 能夠看到結果sexarray
4. 循環遍歷mysql返回的sexarray,使用循環控制器和計數器來實現
(1)循環控制器,設置最大的循環次數,在debug sample能夠看到一共有4條數據,也就是sex_#=4
(2)計數器 由於循環數據的格式爲sex_1,sex_2,sex_3,sex_4,這裏使用計數器來構造下劃線後面的1,2,3,4
sex_i
(3)使用函數助手來構造sex_i這種須要的格式sex_i
使用函數助手_v構造參數樣式
構造格式sex_${i},點擊生成,將截圖3上的字符串拷貝到if判斷語句
、
5 使用條件控制器if來判斷執行的請求
sex=0執行請求0 sex=1執行請求1
添加個bash shell sample 或者實際中須要的http請求等
6 運行結果分析
由於數據庫mysql sex分別爲0,1,1,1
那麼對應的beanshell取樣器0,1,1,1
注意這裏始終都是一個線程循環執行,不能算真正的併發
方案2:使用mysql數據庫構造併發的參數化
這裏使用
select sex from user where id =${id}
將${id}中的id進行參數化
select sex from user where id=1; select sex from user where id=2; select sex from user where id =3;select sex from user where id =4;
這樣每次就能夠循環取到每個sex中的值,sex_1就是咱們每次須要的值
下次在詳細寫