天天看點

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

CSV Data Set Config in Sharing Mode - Made Easy

為了使性能測試更加真實,最好不要在每個線程組中使用相同的使用者。是以,您需要一種方法來配置 Apache JMeter™ 以使用具有唯一使用者資料的不同使用者,并提出有關如何有效存儲将在測試運作期間使用的使用者資料的想法。

為此,JMeter 有一個非常有用的配置元素,稱為 CSV 資料集配置。 “CSV 資料集配置”允許使用 CSV 檔案作為外部資料源,您可以在其中保留唯一的使用者資料,如姓名、電子郵件和密碼。借助這個配置元素,JMeter 能夠逐行讀取 CSV 檔案,然後使用拆分參數為不同的線程配置設定不同的值。

乍一看,所有“CSV 資料集配置”參數似乎都是不言自明的。但其中之一可能并不像您想象的那麼簡單。此參數為“共享模式”。這篇博文将解釋您需要了解的有關此選項的所有資訊。

Understanding the JMeter CSV Data Config Element

建立一個包含五個線程的 user group:

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
您将看到“線程組”中的所有 5 個使用者都使用相同的電子郵件和密碼執行了登入。 發生這種情況是因為這些值是在請求采樣器中寫死的,并且它們與該線程組中的所有 5 個使用者相關:
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

Multiple Users With Multiple Requests

但是如果你想在不同的使用者下登入怎麼辦?要模拟真實的 Web 應用程式負載,您可能希望使用具有不同憑據的不同使用者。為此,JMeter 具有“CSV 資料集配置”元素,旨在幫助解決此類情況。

此元素的主要思想是它逐行讀取 CSV 檔案并将其值提供給目前線程組的線程。有許多有用的文章和實踐會議通過不同的示例解釋了這個 JMeter 元素。

但首先,讓我們建立一個簡單的 CSV 檔案,其中包含一個使用者清單(每個使用者在單獨的一行),電子郵件和密碼在每行之間用逗号分隔:

csv 檔案的内容:

[email protected],123qwe

[email protected],234wer

[email protected],345ert

[email protected],456rty

[email protected],567tyu

[email protected],678yui

[email protected],789uio

[email protected],890ipo

[email protected],901opq

[email protected],012pqw

‘All threads’ Sharing Mode

讓我們将“CSV 資料集配置”元素添加到我們的性能腳本中(右鍵單擊“測試計劃” -> 添加 -> 配置元素 -> CSV 資料集配置)。 在此元素中,您需要指定包含使用者詳細資訊和變量名稱的檔案名,這些檔案名将用作從檔案中擷取的這些值的容器。

請記住,有兩個選項:您需要指定 CSV 檔案的完整路徑,或者您可以隻使用檔案名。 但在這種情況下,該檔案應與 JMX 性能腳本位于同一檔案夾中。 這次您将使用預設共享模式:所有線程。

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

Current thread’ Sharing Mode

當我們希望每個線程分别打開和讀取 CSV 檔案時,應使用“目前線程”共享模式。 在這種情況下,

每個使用者都會從頭到尾讀取 CSV 檔案

。 讓我們将共享模式更改為“目前線程”值并驗證性能腳本這次的行為。

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

如您所見,這次所有線程都嘗試在同一使用者下運作登入請求。 原因很簡單。 由于每個線程從頭到尾分别讀取檔案,我們線程組的所有 5 個線程都使用第一行的值執行登入請求。

目前,您線上程組中隻配置了 1 個循環。 如果你想確定在下一個循環中每個線程都會讀取第二行,讓我們用“循環計數”中的“2”值更新我們的線程組。

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

由于您有 5 個線程和 2 個循環,是以總共應該有 10 個請求。 前 5 個請求應該在第一個使用者(CSV 檔案的第一行)下執行登入操作,而接下來的 5 個請求應該在第二個使用者(CSV 檔案的第二行)下執行登入操作。

讓我們運作腳本并确認。 但在此之前,在目前線程組中添加一個“Constant Timer”可能會很有用。 由于您想顯示兩個循環使用來自 csv 檔案的不同行,是以您需要避免第一個線程執行第一個循環并啟動第二個循環而第二個線程剛剛開始第一個循環執行的情況。 在這種情況下,“檢視結果樹”偵聽器中的請求将是混合的。 讓我們為此添加一個 2 秒的逾時時間(右鍵單擊“測試組”-> 添加 -> 計時器 -> 恒定計時器)。

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

Current thread group’ Sharing Mode

在’Current thread group’共享模式下,每個檔案由每個線程組單獨打開(不要與每個線程單獨讀取檔案的“目前線程”混淆。這基本上意味着每個線程組中的每個線程 從頭到尾讀取 CSV 檔案,互不影響。

要實際展示這種共享模式,您需要再建立一個線程組。 您可以複制粘貼現有的并适當地重命名線程組和登入采樣器。

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

運作腳本後,可以發現每個線程組分别使用了CSV檔案:

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

Edit’ Sharing Mode

這種共享模式通常會給很多 JMeter 使用者帶來很多困惑。 當您選擇“共享模式”配置元素下的“編輯”選項時,此字段将轉換為輸入。 然後,您可以在此字段中提供您自己的字元串,而不是使用預定義的字元串。

這種共享模式的主要思想是您可以在多個線程組中使用同一個 CSV 檔案,但隻有指定的線程組才會在彼此之間共享該檔案。 好像有點複雜吧? 讓我們舉一個例子來說明這一點。

首先,您需要添加一個額外的線程組(您可以按照我們在上一段中所做的相同方式複制粘貼),這次讓我們将“CSV 資料集配置”元素複制粘貼到每個線程組下:

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

現在您需要以這種方式配置每個“CSV 資料集配置”:

線程組 1:“共享模式”=“SharedWithThreadGroup1and3”

線程組 2:“共享模式”=“所有線程”

線程組 3:“共享模式”=“SharedWithThreadGroup1and3”

“線程組 1”配置示例:

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

在這種情況下,第一個和第三個線程組的值應該互相比對。 這樣的配置告訴 JMeter 在兩者之間共享一個 CSV 檔案,而第二個線程組将使用它自己的 CSV 副本。 讓我們再次運作腳本并再次驗證正在進行的請求:

第一線程組:

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode

如您所見,前兩個線程組從頭開始讀取 CSV 檔案并使用第一行,而第三個線程組則沒有。 由于第三個線程組與第一個線程組具有相同的“共享模式”值,是以它繼續從第一個線程組結束的行(提供的示例中的第一行)讀取檔案。

通過提供這種共享模式“CSV 資料集配置”元素,您可以非常靈活地以任何您想要的方式控制 CSV 檔案共享。 這種目前模式可以這樣形象化:

jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode
jMeter 裡 CSV Data Set Config Sharing Mode 的含義詳解Current thread’ Sharing Mode