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里調用實現參數的過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM