1. 程式人生 > >Jmeter 連線Redis獲取資料集

Jmeter 連線Redis獲取資料集

  公司開展了新的業務活動,需要配合其他部門做壓測,由於指令碼中的手機號和使用者的uid需要引數化而且每次均不能重複,最初的考慮使用csv的方式來獲取資料,比較頭疼的問題是叢集節點需要維護測試資料,所以我將所有資料統一儲存到使Redis中,Redis 將測試資料提供給Jmeter 伺服器,設定如圖所示

一、Jmeter安裝 Redis 資料外掛

    1.Jmeter  外掛管理中Avaliable Plugins 搜尋redis,勾選 Reids Data Set 進行安裝,安裝的過程比較慢,安裝完成以後進行重啟

  

 

 

    2.Jmeter Plugins 外掛管理的網站直接下載Reids外掛,解壓後拷貝至lib目錄,然後重新啟動Jmeter

二、安裝完成以後,配置redis 相關資訊

  1、右鍵執行緒組- >新增 -> 配置元素 -> jp@gc - Redis資料集  

    

  2、配置redis 連線資訊

   Reids 資料集配置主要分為三部分

  • 資料配置資訊

    

  1. Redis key:Redis中的key,Redis資料庫中列表(有序資料)或集(無序資料)的名稱
  2. Variable Names:由資料集匯出到測試元素的變數的名稱(設定取出來的value存放在哪個變數中)
  3. Delimiter:儲存在Redis列表或集合中的行中使用的分隔符(取出的value有多個值時,變數名之間的分隔符)
  4. Date Sources Type:資料來源型別,有List、Set兩種選擇(在JMeter 3 中RANDOM_REMOVE 對應 List,RANDOM_KEEP 對應 Set)
  5. Recycle data on Flase: 資料是否重複使用
  • Reids連線配置資訊

    

  1. Redis server host:Redis伺服器地址
  2. Redis server port:Redis伺服器埠
  3. Timeout for connect in ms: 連線超時時間,預設2000 ms
  4. Password for connection:連線Redis的密碼
  5. Database:資料庫名稱,連線Redis的第幾個資料庫,預設為0
  • Redis 執行緒組配置資訊

  1. minIdle:至少有多少個狀態為idle(空閒)的jedis例項;預設為0;
  2. maxIdle:控制一個pool最多有多少個狀態為idle(空閒)的jedis例項;
  3. maxActive:控制一個pool可分配多少個jedis例項,通過pool.getResource()來獲取;如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis例項,則此時pool的狀態就成exhausted了,在JedisPoolConfig
  4. maxWait:表示當borrow一個jedis例項時,最大的等待時間,如果超過等待時間,則直接丟擲JedisConnectionException;
  5. whenExhaustedAction:表示當pool中的jedis例項都被allocated完時,pool要採取的操作;預設有三種WHEN_EXHAUSTED_FAIL(表示無jedis例項時,直接丟擲NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(則表示阻塞住,或者達到maxWait時丟擲JedisConnectionException)、WHEN_EXHAUSTED_GROW(則表示新建一個jedis例項,也就說設定的maxActive無用);
  6. testOnBorrow:在borrow一個jedis例項時,是否提前進行alidate操作;如果為true,則得到的jedis例項均是可用的;
  7. testOnReturn:在return給pool時,是否提前進行validate操作;
  8. testWhileIdle:如果為true,表示有一個idle object evitor執行緒對idle object進行掃描,如果validate失敗,此object會被從pool中drop掉;這一項只有在timeBetweenEvictionRunsMillis大於0時才有意義;
  9. timeBetweenEvictionRunsMillis:表示idle object evitor兩次掃描之間要sleep的毫秒數;
  10. numTestsPerEvictionRun:表示idle object evitor每次掃描的最多的物件數;
  11. minEvictableIdleTimeMillis:表示一個物件至少停留在idle狀態的最短時間,然後才能被idle object evitor掃描並驅逐;這一項只有在timeBetweenEvictionRunsMillis大於0時才有意義;
  12. softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基礎上,加入了至少minIdle個物件已經在pool裡面了。如果為-1,evicted不會根據idle time驅逐任何物件。如果minEvictableIdleTimeMillis>0,則此項設定無意義,且只有在timeBetweenEvictionRunsMillis大於0時才有意義;

  Redis 連線池配置資訊轉自:https://www.cnblogs.com/linjiqin/p/7473410.html

三、Redis 插入資料

  1、將測試資料填充Redis中

LPUSH user 13200039246,10000200039246

  2、通過程式語言方式插入redis資料庫

 #通過Python程式碼實現填充資料
 import redis
 pool = redis.ConnectionPool(host='xxx.xxx.xxx.xxx', port=6728)

 client = redis.Redis(connection_pool=pool)
 r.lpush('user', '13200039246,10000200039246')

四、通過Redis 資料集建立測試指令碼

  1、執行緒組新增到測試計劃

  • 右鍵單擊測試計劃 ->新增 ->執行緒(使用者) ->執行緒組

  2、將Redis資料集新增到執行緒組

  • 執行緒組 ->新增 ->配置元素 -> jp@gc-Redis資料集

  3、設定Redis資料集

  4、新增HTTP請求。

  • 執行緒組 ->新增 ->取樣器 -> HTTP請求

  介面的請求資料,只要我們正常填寫,只需要引用變數的地方,用${phone}和${uid}呼叫對應變數資料,這裡的變數名稱需要與redis 設定的變數名稱一致

 

   5、執行Jmeter指令碼,介面呼叫成功,說明Jmeter 連線Redis 資料庫成功了

 

四、總結

   通過Redis統一管理測試資料,JMeter獲取Redis對應列表的資料,然後設定變數名,在JMeter裡呼叫實現引數的過