更新時間:2021-11-04 09:21:46 來源:動力節(jié)點 瀏覽1150次
參數(shù)化是創(chuàng)建變量的行為,這些變量將在負載測試腳本上授予我們許多不同的配置選項。例如:
在 Web 服務(wù)上使用不同憑據(jù)登錄的變量
使用不同環(huán)境的變量(dev、master 等)
在電子商務(wù)網(wǎng)站中搜索產(chǎn)品列表的變量
難怪p arametrization是在一個主要方面性能測試的創(chuàng)建。現(xiàn)在我們將討論使用JMeter進行參數(shù)化的不同方法。
在JMeter 中,參數(shù)化性能腳本的常用方法之一是使用 CSV 文件。讓我們使用我們之前解釋的示例之一來看看這是如何工作的:使用不同的憑據(jù)登錄。假設(shè)我們有一個適用于一個特定用戶的登錄請求:
我們可以輕松地參數(shù)化該請求并在不同用戶之間運行它。我們可以看到我們需要兩個變量來參數(shù)化這個腳本:用于存儲電子郵件和密碼。為此,我們需要提供一個 CSV 文件,其中包含在登錄過程中使用的用戶憑據(jù)列表。(或者,您可以使用BlazeData)。讓我們創(chuàng)建一個 csv 文件,其中包含具有電子郵件和密碼的不同用戶:
現(xiàn)在創(chuàng)建了我們的 CSV 文件,讓我們按照以下步驟將“CSV 數(shù)據(jù)集配置”元素添加到我們的腳本中:
右鍵單擊線程組 -> 添加 -> 配置元素 -> CSV 數(shù)據(jù)集配置
“CSV 數(shù)據(jù)集配置”參數(shù)的簡短說明:
Name -將在 JMeter 樹中使用的元素名稱。
文件名 -輸入文件的名稱。根據(jù)活動測試計劃的路徑解析相對文件名。還支持絕對文件名。
文件編碼-輸入文件的編碼,如果它不是平臺默認值。
變量名稱 -將用作解析值容器的分隔變量名稱列表。如果為空,文件的第一行將被解釋為變量名列表。
忽略第一行 -如果您想忽略 CSV 文件的第一行(如果變量名存儲在那里),則為 true。
Delimiter -將用于從輸入文件中拆分解析值的分隔符。
允許引用數(shù)據(jù)嗎?-如果您想忽略雙引號并允許此類元素包含分隔符,則為 true。
在EOF上回收?-如果文件測試計劃應該不止一次迭代文件,則為真。它將指示 JMeter 將光標移動到文件的開頭。
在 EOF 上停止線程?-如果對 CSV 文件進行循環(huán)迭代,則為 false,如果您想在讀取整個文件后停止線程,則為 true。
所有線程-文件在所有虛擬用戶之間共享(默認)。
當前線程組-該文件將為每個線程組打開一次。
當前線程-每個文件將分別為每個線程打開。
編輯 -共享相同標識符的所有線程也共享相同的文件。
在我們的例子中,添加“文件名”(user-credentials.csv) 和“變量名”(userEmail,userPassword) 配置值就足夠了,其余的保留默認設(shè)置。
我們必須采取的最后一步是使用我們的新變量對登錄請求進行參數(shù)化。這可以通過用 CSV 數(shù)據(jù)集配置的“變量名稱”配置字段中的適當變量替換初始值來完成,如下所示:
如果我們現(xiàn)在運行我們的測試腳本,JMeter 將用“user-credentials.csv”文件中的值替換這些變量。每個 JMeter 虛擬用戶將從 csv 文件行之一接收憑據(jù)。
第一個和第二個用戶的登錄請求如下所示:
另一種參數(shù)化性能腳本的方法是使用數(shù)據(jù)庫數(shù)據(jù)。JDBC 是一個應用程序編程接口,它定義了客戶端如何訪問數(shù)據(jù)庫,我們將使用它來參數(shù)化我們的JMeter腳本。
首先,將相關(guān)的 JDBC 驅(qū)動程序下載到您的數(shù)據(jù)庫中。例如,可以在此處找到mysql驅(qū)動程序。然后,您需要使用以下表單將 .jar 文件添加到測試計劃中:
之后,使用“JDBC 連接配置”元素配置數(shù)據(jù)庫連接。按照以下步驟添加:
右鍵線程組->添加->配置元素->JDBC連接配置
“JDBC 連接配置”參數(shù):
Name -將顯示在線程組樹中的連接配置的名稱。
變量名稱 -將用作 db 連接的唯一標識符的名稱(可以使用多個連接,每個連接都將綁定到不同的名稱)。
Max Number of Connections -連接池中允許的最大連接數(shù)。在 0 的情況下,每個線程將獲得自己的池,其中包含一個連接。
Max Wait (ms) -如果在數(shù)據(jù)庫連接期間超過指定的超時,池會拋出錯誤。
逐出運行之間的時間 (ms) -從數(shù)據(jù)庫池中逐出未使用連接的線程運行之間暫停的毫秒數(shù)。
自動提交 -是為相關(guān)數(shù)據(jù)庫連接開啟自動提交。
空閑時測試 -在檢測到有效請求之前檢查空閑連接。
Soft Min Evictable Idle Time(ms) -指定連接在可以被驅(qū)逐之前可能在數(shù)據(jù)庫池中處于空閑狀態(tài)的時間段
驗證查詢 -將用于驗證數(shù)據(jù)庫是否仍在響應的健康檢查查詢。
數(shù)據(jù)庫 URL - 數(shù)據(jù)庫的JDBC 連接字符串。
JDBC 驅(qū)動程序類 - 驅(qū)動程序類的適當名稱(特定于每個數(shù)據(jù)庫)。例如,MySql 數(shù)據(jù)庫的“com.mysql.jdbc.Driver”。
用戶名-數(shù)據(jù)庫用戶名。
密碼 -數(shù)據(jù)庫密碼(將在測試計劃中未加密存儲)。
在我們的例子中,我們只需要設(shè)置必填字段:
綁定到池的變量名
數(shù)據(jù)庫網(wǎng)址
JDBC 驅(qū)動程序類
用戶名
密碼
屏幕中的其余字段可以保留為默認值:
假設(shè)我們在數(shù)據(jù)庫中存儲了測試用戶憑據(jù):
現(xiàn)在配置數(shù)據(jù)庫連接后,我們可以添加 JDBC 請求本身并使用其查詢從數(shù)據(jù)庫中獲取所有憑據(jù):
右鍵單擊線程組 -> 添加 -> 示例 -> JDBC 請求
通過使用“Select Statement”查詢和“Variable Names”,我們可以解析對自定義變量的響應。
我們現(xiàn)在將擁有可以在后續(xù)請求中進一步使用的 JMeter 變量。將使用增量后綴(userEmail_1、userEmail_2、userEmail_3.....)創(chuàng)建指定的變量。
要在“登錄請求”中使用這些變量,我們需要添加一個計數(shù)器,用于從 JDBC 查詢響應中訪問正確的值。要在 JMeter 中添加“計數(shù)器”元素,請按照以下步驟操作:
右鍵單擊線程組 -> 添加 -> 配置元素 -> 計數(shù)器
之后,我們可以使用“__V”函數(shù)更新“登錄請求”。這將返回評估變量名稱表達式的結(jié)果,并可用于評估嵌套的變量引用。它顯示在這里:
指定的配置足以使用數(shù)據(jù)庫值在不同用戶之間運行腳本:
如果您需要使用不同參數(shù)執(zhí)行相同動作的重復序列,您還可以使用“參數(shù)化控制器”插件。該控制器允許我們配置一組變量,以便在添加到該控制器的每個步驟中使用。首先,您需要安裝“參數(shù)化控制器”插件,因為它不包含在 JMeter 核心中。
讓我們將“登錄請求”移到單獨的控制器中并禁用它(右鍵單擊它并選擇“禁用”)。這是在測試計劃中包含模塊容器的最可取的方法,同時也是為了保持它們的可引用性,以便它們可以被使用。
安裝結(jié)束后,您可以添加兩個“參數(shù)化控制器”控制器,這些控制器具有存儲在變量中的不同用戶憑據(jù):
右鍵單擊線程組 -> 添加 -> 邏輯控制器 -> 參數(shù)化控制器
參數(shù)化控制器包含“用戶定義變量”部分,您可以在其中指定參數(shù)。將第一個用戶的憑據(jù)放在第一個參數(shù)化控制器中,將第二個用戶憑據(jù)放在第二個參數(shù)化控制器中。
現(xiàn)在我們需要在每個“參數(shù)化控制器”中添加對“可重用控制器”的引用。
我們可以通過添加一個“模塊控制器”來做到這一點,該控制器將運行選定模塊中的所有步驟。
在這種情況下,它將使用不同的參數(shù)調(diào)用“登錄請求”。要創(chuàng)建“模塊控制器”,請執(zhí)行以下步驟:
右鍵單擊“參數(shù)化控制器”->“添加”->“邏輯控制器”->“模塊控制器”
運行腳本時,您將看到“登錄請求”分別觸發(fā)了每個參數(shù)化控制器。如果您需要跨輸入?yún)?shù)的不同組合運行腳本,它會非常有用。
以上就是關(guān)于“JMeter參數(shù)化完整指南”的介紹,大家如果想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的JMeter教程,里面的內(nèi)容更加詳細,適合小白學習,希望對大家能夠有所幫助。