
試想一下,你有一個應用程序,你要性能測試,以及應用程序須要同時檢測被消耗數據。若是您有這種須要(而且您熟悉JMeter),那麼您可能會使用CSV數據集config。CSV數據集配置具備一些出色的功能,可以讓您控制測試將如何使用數據的大多數方面。redis
可是,CSV數據集配置的一個主要缺點是,一旦測試開始,若是要更新正在使用的數據,則須要有權訪問JMeter正在使用的文件。不然,您將鎖定可用於測試的數據。對於在本地計算機上運行的測試,這不該該成爲問題,您只需將CSV文件與新數據一塊兒保存(或刪除不須要的數據),JMeter只要有更改就能夠反映該更改。仍然打開該文件。瀏覽器
當您使用BlazeMeter擴展測試範圍時,就會出現問題。在這種狀況下,將CSV文件用於數據將意味着在雲中運行的每一個測試實例將擁有其本身的數據副本,這使得對數據進行更改爲爲問題。咱們想要的是一個更像Virtual Table Server(VTS)的流程,在這裏咱們將使用位於中央的數據源。這是咱們要使用Redis數據集插件解決的問題。安全
請注意,要遵循這種狀況,您須要擁有一個BlazeMeter賬戶,一個運行BlazeMeter的雲引擎能夠到達的Redis服務器以及在JMeter中安裝Redis數據集插件(您能夠從插件中獲取它)經理!)。服務器


個人Redis服務器託管在雲中,可是您也能夠將其安裝在本地計算機上。咱們要作的第一件事是使用redis-cli命令爲LPUSH或RPUSH添加一些值到Redis列表(取決於您是否但願將其添加到列表的開頭或結尾),以下 所示:微信
LPUSH列表鍵value1 value2 value3app
關於Redis的一件好事是,若是列表的鍵不存在,它將使用此命令建立。具體來講,在撰寫本文以前,我在名爲「 jmeter」的列表中添加了三行,其中每一個條目表明兩個變量,能夠由咱們的JMeter測試使用,以逗號分隔,以下所示:編輯器
LPUSH jmeter值11,值12值21,值22值31,值32工具
如今,我要使用SSH(安全Shell)進入個人Redis服務器並開始使用該列表。咱們可使用LRANGE命令檢查現有列表中的值。在這裏咱們使用性能
量程jmeter 0 -1測試
指定咱們要查看列表中的全部條目,從索引0(第一個)到-1(最後一個)。



所以,咱們能夠看到全部元素都已添加,而且每一個元素都具備所需的格式。接下來,咱們將配置JMeter以利用此數據集。
啓動JMeter,添加線程組,而後添加Redis數據集配置元素。在查看Redis數據集配置時,您將看到一些咱們須要指定的字段才能使它起做用。首先檢查鏈接配置:

咱們須要指定託管Redis的服務器的IP地址(或主機名),Redis使用的端口以及用於Redis身份驗證的密碼。請注意,若是您在本地運行Redis,則當咱們將此測試引入BlazeMeter時,沒法使用localhost(或127.0.0.1),在這種狀況下,您將須要可遠程訪問Redis服務器的公共IP地址。
另外一個重要信息是如何使用數據。

咱們須要指定在Redis中用於標識列表的鍵,並使用「變量名」字段來肯定如何在腳本中引用變量(請注意,這些變量應以逗號分隔)。因爲咱們在Redis服務器上用逗號分隔了值,所以咱們能夠將Delimiter保留爲其默認值。咱們還須要選擇數據源類型。
在這一點上,值得注意的是,咱們可使用Redis Set或Redis List。我選擇使用列表,由於它最適合咱們,就像使用CSV數據集配置同樣。使用Set和List的區別在於List具備特定的順序,而且能夠具備重複的值,而Set將以隨機順序檢索,而添加到Set的重複值將被忽略。
接下來,我將在測試中添加一個虛擬採樣器以說明該用例,而無需建立任何實際負載。

這樣咱們就能夠看到更改發生的時間,我將「虛擬採樣器」的名稱設置爲「虛擬:$ {first}和$ {second}」,標籤將告訴咱們從Redis讀取了什麼值。服務器。在本地進行此測試以確保咱們的測試能夠鏈接到Redis以後,讓咱們將該測試上傳到BlazeMeter。



請注意,與使用CSV數據集配置不一樣,咱們不須要包含任何其餘文件,由於咱們將遠程獲取數據。
在運行此測試時,咱們看到顯示的標籤中填充了來自Redis服務器的數據。

咱們去添加一個值到咱們的Redis列表中
RPUSH jmeter值41,值42

花幾分鐘時間,而後在測試運行時,JMeter將與您的Redis Server取得聯繫,以獲取其應使用的下一組值。當報告數據在BlazeMeter中更新時,咱們將看到一個新標籤。

向後工做,以查看什麼時候將這些數據引入測試中,咱們能夠將其隔離,並看到標籤「 Dummy:value41和value42」在整個測試過程當中的一部分開始顯示,同時對應於Redis的更改服務器。測試使用的是雲中的一個引擎仍是跨數百個引擎都不要緊,咱們以一種更新全部測試中使用的全部數據的方式構建了它(但請確保Redis Server能夠處理負載) !)。



您是否曾經進行過測試而且對本身進行了思考:「好吧,我但願我能在開始以前爲此添加更多數據」,而只須要放棄測試運行並從新開始進行您真正想要的測試?您是否曾經運行過「日誌重播」性能測試,該測試正在從CSV讀取URL,而且忽然但願您的全部虛擬用戶都專一於點擊一個URL?您是否曾經花時間設置一個大型測試事件,卻意識到一旦運行,您的1000個數據條目中就有一個是錯誤的,而且老是會致使錯誤?
測試時可使用多種方式訪問位於中心的可調整數據源,這些只是其中的幾種。

長按識別二維碼添加小編加自學羣哦
本文分享自微信公衆號 - 軟件測試test(gh_d29759b02f67)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。