公司開展了新的業務活動,須要配合其餘部門作壓測,因爲腳本中的手機號和用戶的uid須要參數化並且每次均不能重複,最初的考慮使用csv的方式來獲取數據,比較頭疼的問題是集羣節點須要維護測試數據,因此我將全部數據統一存儲到使Redis中,Redis 將測試數據提供給Jmeter 服務器,設置如圖所示html
1、Jmeter安裝 Redis 數據插件
1.Jmeter 插件管理中Avaliable Plugins 搜索redis,勾選 Reids Data Set 進行安裝,安裝的過程比較慢,安裝完成之後進行重啓redis
2.Jmeter Plugins 插件管理的網站直接下載Reids插件,解壓後拷貝至lib目錄,而後從新啓動Jmeter數據庫
2、安裝完成之後,配置redis 相關信息
一、右鍵線程組- >添加 -> 配置元素 -> jp@gc - Redis數據集 編程
二、配置redis 鏈接信息服務器
Reids 數據集配置主要分爲三部分編程語言
- Redis key:Redis中的key,Redis數據庫中列表(有序數據)或集(無序數據)的名稱
- Variable Names:由數據集導出到測試元素的變量的名稱(設置取出來的value存放在哪一個變量中)
- Delimiter:存儲在Redis列表或集合中的行中使用的分隔符(取出的value有多個值時,變量名之間的分隔符)
- Date Sources Type:數據源類型,有List、Set兩種選擇(在JMeter 3 中RANDOM_REMOVE 對應 List,RANDOM_KEEP 對應 Set)
- Recycle data on Flase: 數據是否重複使用
- Redis server host:Redis服務器地址
- Redis server port:Redis服務器端口
- Timeout for connect in ms: 鏈接超時時間,默認2000 ms
- Password for connection:鏈接Redis的密碼
- Database:數據庫名稱,鏈接Redis的第幾個數據庫,默認爲0
- minIdle:至少有多少個狀態爲idle(空閒)的jedis實例;默認爲0;
- maxIdle:控制一個pool最多有多少個狀態爲idle(空閒)的jedis實例;
- maxActive:控制一個pool可分配多少個jedis實例,經過pool.getResource()來獲取;若是賦值爲-1,則表示不限制;若是pool已經分配了maxActive個jedis實例,則此時pool的狀態就成exhausted了,在JedisPoolConfig
- maxWait:表示當borrow一個jedis實例時,最大的等待時間,若是超過等待時間,則直接拋出JedisConnectionException;
- whenExhaustedAction:表示當pool中的jedis實例都被allocated完時,pool要採起的操做;默認有三種WHEN_EXHAUSTED_FAIL(表示無jedis實例時,直接拋出NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(則表示阻塞住,或者達到maxWait時拋出JedisConnectionException)、WHEN_EXHAUSTED_GROW(則表示新建一個jedis實例,也就說設置的maxActive無用);
- testOnBorrow:在borrow一個jedis實例時,是否提早進行alidate操做;若是爲true,則獲得的jedis實例均是可用的;
- testOnReturn:在return給pool時,是否提早進行validate操做;
- testWhileIdle:若是爲true,表示有一個idle object evitor線程對idle object進行掃描,若是validate失敗,此object會被從pool中drop掉;這一項只有在timeBetweenEvictionRunsMillis大於0時纔有意義;
- timeBetweenEvictionRunsMillis:表示idle object evitor兩次掃描之間要sleep的毫秒數;
- numTestsPerEvictionRun:表示idle object evitor每次掃描的最多的對象數;
- minEvictableIdleTimeMillis:表示一個對象至少停留在idle狀態的最短期,而後才能被idle object evitor掃描並驅逐;這一項只有在timeBetweenEvictionRunsMillis大於0時纔有意義;
- softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基礎上,加入了至少minIdle個對象已經在pool裏面了。若是爲-1,evicted不會根據idle time驅逐任何對象。若是minEvictableIdleTimeMillis>0,則此項設置無心義,且只有在timeBetweenEvictionRunsMillis大於0時纔有意義;
Redis 鏈接池配置信息轉自:http://www.javashuo.com/article/p-yktqquis-kd.html測試
3、Redis 插入數據
一、將測試數據填充Redis中網站
LPUSH user 13200039246,10000200039246
二、經過編程語言方式插入redis數據庫ui
#經過Python代碼實現填充數據
import redis
pool = redis.ConnectionPool(host='xxx.xxx.xxx.xxx', port=6728)
client = redis.Redis(connection_pool=pool)
r.lpush('user', '13200039246,10000200039246')
4、經過Redis 數據集建立測試腳本
一、線程組添加到測試計劃spa
- 右鍵單擊測試計劃 ->添加 ->線程(用戶) ->線程組
二、將Redis數據集添加到線程組
- 線程組 ->添加 ->配置元素 -> jp@gc-Redis數據集
三、設置Redis數據集
四、添加HTTP請求。
接口的請求數據,只要咱們正常填寫,只須要引用變量的地方,用${phone}和${uid}調用對應變量數據,這裏的變量名稱須要與redis 設置的變量名稱一致
五、執行Jmeter腳本,接口調用成功,說明Jmeter 鏈接Redis 數據庫成功了
4、總結
經過Redis統一管理測試數據,JMeter獲取Redis對應列表的數據,而後設置變量名,在JMeter裏調用實現參數的過程。