更新時(shí)間:2021-11-04 09:21:46 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1428次
參數(shù)化是創(chuàng)建變量的行為,這些變量將在負(fù)載測(cè)試腳本上授予我們?cè)S多不同的配置選項(xiàng)。例如:
在 Web 服務(wù)上使用不同憑據(jù)登錄的變量
使用不同環(huán)境的變量(dev、master 等)
在電子商務(wù)網(wǎng)站中搜索產(chǎn)品列表的變量
難怪p arametrization是在一個(gè)主要方面性能測(cè)試的創(chuàng)建?,F(xiàn)在我們將討論使用JMeter進(jìn)行參數(shù)化的不同方法。
在JMeter 中,參數(shù)化性能腳本的常用方法之一是使用 CSV 文件。讓我們使用我們之前解釋的示例之一來(lái)看看這是如何工作的:使用不同的憑據(jù)登錄。假設(shè)我們有一個(gè)適用于一個(gè)特定用戶(hù)的登錄請(qǐng)求:

我們可以輕松地參數(shù)化該請(qǐng)求并在不同用戶(hù)之間運(yùn)行它。我們可以看到我們需要兩個(gè)變量來(lái)參數(shù)化這個(gè)腳本:用于存儲(chǔ)電子郵件和密碼。為此,我們需要提供一個(gè) CSV 文件,其中包含在登錄過(guò)程中使用的用戶(hù)憑據(jù)列表。(或者,您可以使用BlazeData)。讓我們創(chuàng)建一個(gè) csv 文件,其中包含具有電子郵件和密碼的不同用戶(hù):

現(xiàn)在創(chuàng)建了我們的 CSV 文件,讓我們按照以下步驟將“CSV 數(shù)據(jù)集配置”元素添加到我們的腳本中:
右鍵單擊線(xiàn)程組 -> 添加 -> 配置元素 -> CSV 數(shù)據(jù)集配置
“CSV 數(shù)據(jù)集配置”參數(shù)的簡(jiǎn)短說(shuō)明:
Name -將在 JMeter 樹(shù)中使用的元素名稱(chēng)。
文件名 -輸入文件的名稱(chēng)。根據(jù)活動(dòng)測(cè)試計(jì)劃的路徑解析相對(duì)文件名。還支持絕對(duì)文件名。
文件編碼-輸入文件的編碼,如果它不是平臺(tái)默認(rèn)值。
變量名稱(chēng) -將用作解析值容器的分隔變量名稱(chēng)列表。如果為空,文件的第一行將被解釋為變量名列表。
忽略第一行 -如果您想忽略 CSV 文件的第一行(如果變量名存儲(chǔ)在那里),則為 true。
Delimiter -將用于從輸入文件中拆分解析值的分隔符。
允許引用數(shù)據(jù)嗎?-如果您想忽略雙引號(hào)并允許此類(lèi)元素包含分隔符,則為 true。
在EOF上回收?-如果文件測(cè)試計(jì)劃應(yīng)該不止一次迭代文件,則為真。它將指示 JMeter 將光標(biāo)移動(dòng)到文件的開(kāi)頭。
在 EOF 上停止線(xiàn)程?-如果對(duì) CSV 文件進(jìn)行循環(huán)迭代,則為 false,如果您想在讀取整個(gè)文件后停止線(xiàn)程,則為 true。
所有線(xiàn)程-文件在所有虛擬用戶(hù)之間共享(默認(rèn))。
當(dāng)前線(xiàn)程組-該文件將為每個(gè)線(xiàn)程組打開(kāi)一次。
當(dāng)前線(xiàn)程-每個(gè)文件將分別為每個(gè)線(xiàn)程打開(kāi)。
編輯 -共享相同標(biāo)識(shí)符的所有線(xiàn)程也共享相同的文件。

在我們的例子中,添加“文件名”(user-credentials.csv) 和“變量名”(userEmail,userPassword) 配置值就足夠了,其余的保留默認(rèn)設(shè)置。
我們必須采取的最后一步是使用我們的新變量對(duì)登錄請(qǐng)求進(jìn)行參數(shù)化。這可以通過(guò)用 CSV 數(shù)據(jù)集配置的“變量名稱(chēng)”配置字段中的適當(dāng)變量替換初始值來(lái)完成,如下所示:

如果我們現(xiàn)在運(yùn)行我們的測(cè)試腳本,JMeter 將用“user-credentials.csv”文件中的值替換這些變量。每個(gè) JMeter 虛擬用戶(hù)將從 csv 文件行之一接收憑據(jù)。
第一個(gè)和第二個(gè)用戶(hù)的登錄請(qǐng)求如下所示:


另一種參數(shù)化性能腳本的方法是使用數(shù)據(jù)庫(kù)數(shù)據(jù)。JDBC 是一個(gè)應(yīng)用程序編程接口,它定義了客戶(hù)端如何訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),我們將使用它來(lái)參數(shù)化我們的JMeter腳本。
首先,將相關(guān)的 JDBC 驅(qū)動(dòng)程序下載到您的數(shù)據(jù)庫(kù)中。例如,可以在此處找到mysql驅(qū)動(dòng)程序。然后,您需要使用以下表單將 .jar 文件添加到測(cè)試計(jì)劃中:

之后,使用“JDBC 連接配置”元素配置數(shù)據(jù)庫(kù)連接。按照以下步驟添加:
右鍵線(xiàn)程組->添加->配置元素->JDBC連接配置

“JDBC 連接配置”參數(shù):
Name -將顯示在線(xiàn)程組樹(shù)中的連接配置的名稱(chēng)。
變量名稱(chēng) -將用作 db 連接的唯一標(biāo)識(shí)符的名稱(chēng)(可以使用多個(gè)連接,每個(gè)連接都將綁定到不同的名稱(chēng))。
Max Number of Connections -連接池中允許的最大連接數(shù)。在 0 的情況下,每個(gè)線(xiàn)程將獲得自己的池,其中包含一個(gè)連接。
Max Wait (ms) -如果在數(shù)據(jù)庫(kù)連接期間超過(guò)指定的超時(shí),池會(huì)拋出錯(cuò)誤。
逐出運(yùn)行之間的時(shí)間 (ms) -從數(shù)據(jù)庫(kù)池中逐出未使用連接的線(xiàn)程運(yùn)行之間暫停的毫秒數(shù)。
自動(dòng)提交 -是為相關(guān)數(shù)據(jù)庫(kù)連接開(kāi)啟自動(dòng)提交。
空閑時(shí)測(cè)試 -在檢測(cè)到有效請(qǐng)求之前檢查空閑連接。
Soft Min Evictable Idle Time(ms) -指定連接在可以被驅(qū)逐之前可能在數(shù)據(jù)庫(kù)池中處于空閑狀態(tài)的時(shí)間段
驗(yàn)證查詢(xún) -將用于驗(yàn)證數(shù)據(jù)庫(kù)是否仍在響應(yīng)的健康檢查查詢(xún)。
數(shù)據(jù)庫(kù) URL - 數(shù)據(jù)庫(kù)的JDBC 連接字符串。
JDBC 驅(qū)動(dòng)程序類(lèi) - 驅(qū)動(dòng)程序類(lèi)的適當(dāng)名稱(chēng)(特定于每個(gè)數(shù)據(jù)庫(kù))。例如,MySql 數(shù)據(jù)庫(kù)的“com.mysql.jdbc.Driver”。
用戶(hù)名-數(shù)據(jù)庫(kù)用戶(hù)名。
密碼 -數(shù)據(jù)庫(kù)密碼(將在測(cè)試計(jì)劃中未加密存儲(chǔ))。
在我們的例子中,我們只需要設(shè)置必填字段:
綁定到池的變量名
數(shù)據(jù)庫(kù)網(wǎng)址
JDBC 驅(qū)動(dòng)程序類(lèi)
用戶(hù)名
密碼
屏幕中的其余字段可以保留為默認(rèn)值:

假設(shè)我們?cè)跀?shù)據(jù)庫(kù)中存儲(chǔ)了測(cè)試用戶(hù)憑據(jù):

現(xiàn)在配置數(shù)據(jù)庫(kù)連接后,我們可以添加 JDBC 請(qǐng)求本身并使用其查詢(xún)從數(shù)據(jù)庫(kù)中獲取所有憑據(jù):
右鍵單擊線(xiàn)程組 -> 添加 -> 示例 -> JDBC 請(qǐng)求
通過(guò)使用“Select Statement”查詢(xún)和“Variable Names”,我們可以解析對(duì)自定義變量的響應(yīng)。

我們現(xiàn)在將擁有可以在后續(xù)請(qǐng)求中進(jìn)一步使用的 JMeter 變量。將使用增量后綴(userEmail_1、userEmail_2、userEmail_3.....)創(chuàng)建指定的變量。
要在“登錄請(qǐng)求”中使用這些變量,我們需要添加一個(gè)計(jì)數(shù)器,用于從 JDBC 查詢(xún)響應(yīng)中訪(fǎng)問(wèn)正確的值。要在 JMeter 中添加“計(jì)數(shù)器”元素,請(qǐng)按照以下步驟操作:
右鍵單擊線(xiàn)程組 -> 添加 -> 配置元素 -> 計(jì)數(shù)器

之后,我們可以使用“__V”函數(shù)更新“登錄請(qǐng)求”。這將返回評(píng)估變量名稱(chēng)表達(dá)式的結(jié)果,并可用于評(píng)估嵌套的變量引用。它顯示在這里:

指定的配置足以使用數(shù)據(jù)庫(kù)值在不同用戶(hù)之間運(yùn)行腳本:


如果您需要使用不同參數(shù)執(zhí)行相同動(dòng)作的重復(fù)序列,您還可以使用“參數(shù)化控制器”插件。該控制器允許我們配置一組變量,以便在添加到該控制器的每個(gè)步驟中使用。首先,您需要安裝“參數(shù)化控制器”插件,因?yàn)樗话?JMeter 核心中。
讓我們將“登錄請(qǐng)求”移到單獨(dú)的控制器中并禁用它(右鍵單擊它并選擇“禁用”)。這是在測(cè)試計(jì)劃中包含模塊容器的最可取的方法,同時(shí)也是為了保持它們的可引用性,以便它們可以被使用。
安裝結(jié)束后,您可以添加兩個(gè)“參數(shù)化控制器”控制器,這些控制器具有存儲(chǔ)在變量中的不同用戶(hù)憑據(jù):
右鍵單擊線(xiàn)程組 -> 添加 -> 邏輯控制器 -> 參數(shù)化控制器

參數(shù)化控制器包含“用戶(hù)定義變量”部分,您可以在其中指定參數(shù)。將第一個(gè)用戶(hù)的憑據(jù)放在第一個(gè)參數(shù)化控制器中,將第二個(gè)用戶(hù)憑據(jù)放在第二個(gè)參數(shù)化控制器中。

現(xiàn)在我們需要在每個(gè)“參數(shù)化控制器”中添加對(duì)“可重用控制器”的引用。
我們可以通過(guò)添加一個(gè)“模塊控制器”來(lái)做到這一點(diǎn),該控制器將運(yùn)行選定模塊中的所有步驟。
在這種情況下,它將使用不同的參數(shù)調(diào)用“登錄請(qǐng)求”。要?jiǎng)?chuàng)建“模塊控制器”,請(qǐng)執(zhí)行以下步驟:
右鍵單擊“參數(shù)化控制器”->“添加”->“邏輯控制器”->“模塊控制器”

運(yùn)行腳本時(shí),您將看到“登錄請(qǐng)求”分別觸發(fā)了每個(gè)參數(shù)化控制器。如果您需要跨輸入?yún)?shù)的不同組合運(yùn)行腳本,它會(huì)非常有用。

以上就是關(guān)于“JMeter參數(shù)化完整指南”的介紹,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的JMeter教程,里面的內(nèi)容更加詳細(xì),適合小白學(xué)習(xí),希望對(duì)大家能夠有所幫助。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)