JMeter參數(shù)化4種實現(xiàn)方式(小結)
1 參數(shù)化釋義
什么是參數(shù)化?從字面上去理解的話,就是事先準備好數(shù)據(jù)(廣義上來說,可以是具體的數(shù)據(jù)值,也可以是數(shù)據(jù)生成規(guī)則),而非在腳本中寫死,腳本執(zhí)行時從準備好的數(shù)據(jù)中取值。
參數(shù)化:是自動化測試腳本的一種常用技巧,可將腳本中的某些輸入使用參數(shù)來代替,如登錄時利用GET/POST請求方式傳遞參數(shù)的場景,在腳本運行時指定參數(shù)的取值范圍和規(guī)則。
腳本在運行時,根據(jù)需要選取不同的參數(shù)值作為輸入,該方式稱為數(shù)據(jù)驅動測試(Data Driven Test),而參數(shù)的取值范圍被稱為數(shù)據(jù)池(Data Pool)。
JMeter提供了多種參數(shù)化方式,下面就其中常用的4種展開闡述。
方式 | 適用場景 |
---|---|
CSV Data Set Config | 我們通常所指的參數(shù)化。數(shù)據(jù)存儲在文件中,參數(shù)化取值范圍大,靈活性強 |
User Parameter | 適用于參數(shù)取值范圍很小時 |
函數(shù)助手 | _Random等函數(shù),生成隨機數(shù)字和隨機字符串實現(xiàn)參數(shù)化 |
User Defined Variables | 用戶自定義變量,更多用于設置全局變量 |
2 參數(shù)化實現(xiàn)
2.1 CSV Data Set Config
在JMeter中提起參數(shù)化,我們默認就想到CSV Data Set Config(以下簡稱CSV),CSV能夠讀取文件中的數(shù)據(jù)并生成變量,被JMeter腳本引用,從而實現(xiàn)參數(shù)化。下面我們來詳細探究一下。
CSV簡介
線程組右鍵–>添加–>配置元件–>CSV Data Set Config,就創(chuàng)建了一個CSV,界面是這個樣子的:
各項參數(shù)詳解如下:
參 數(shù) | 描 述 | 必 須 |
---|---|---|
Name | 腳本中顯示的這個元件的描述性名稱 | 是 |
Filename | 文件名。待讀取文件的名稱。可以寫入絕對路徑,也可以寫入相對路徑(相對于bin目錄),如果直接寫文件名,則該文件要放在bin目錄中。對于分布式測試,主機和遠程機中相應目錄下應該有相同的CSV文件 | 是 |
File Encoding | 文件編碼。文件讀取時的編碼格式,不填則使用操作系統(tǒng)的編碼格式 | 否 |
Variable Names | 變量名稱。多個變量名之間必須用分隔符分隔。如果該項為空,則文件首行會被讀取并解析為列名列表 | 否 |
Ignore first line | 是否忽略首行?如果csv文件中沒有表頭,則選擇false | 是 |
Delimiter | 分隔符。將一行數(shù)據(jù)分隔成多個變量,默認為逗號,也可以使用“\t”。如果一行數(shù)據(jù)分隔后的值比Vairable Names中定義的變量少,這些變量將保留以前的值(如果有值的話) | 是 |
Allow quoted data? | 是否允許變量使用雙引號?允許的話,變量將可以括在雙引號內,并且這些變量名可以包含分隔符 | 否 |
Recycle on EOF? | 遇到文件結束符是否再次循環(huán)?默認為 true | 是 |
Stop thread on EOF? | 遇到文件結束符是否停止線程?默認為 true | 是 |
Recycle on EOF? | 當Recycle on EOF為False時,停止線程,當Recycle on EOF為True時,此項無意義,默認為 false | 是 |
Sharing mode | 線程共享模式。1、All threads(默認):一個線程組內,各個線程(用戶)唯一順序取值;2、current thread:一個線程組內,各個線程(用戶)各自順序取值;3、線程組各自獨立,但每個線程組內各個線程(用戶)唯一順序取值; | 是 |
需要著重說明一下的是Sharing mode
,也就是線程共享模式。線程共享模式,是指多個線程對文件數(shù)據(jù)取值順序模式,JMeter提供了3種模式:
All threads
:所有線程。如果腳本有多個線程組,在這種模式下,各線程組的所有線程也要依次唯一順序取值。例如,腳本有2個線程組,各有2個線程,文件內有5行數(shù)據(jù),腳本運行時,將如下圖一樣循環(huán)往復取值:
Current thread group
:當前線程組。各個線程組之間隔離,線程組內的線程順序唯一取值。
Current thread:當前線程。這種模式下,每個線程獨立,順序唯一取值。
CSV實例
下面看一個實例。首先有userInfo.txt的文件,放置在bin目錄中,內容如下:
- 文件名:文件在bin目錄中,使用相對目錄
- 變量名稱:兩列數(shù)據(jù)分別屬于mobile和password兩個變量
- 分隔符:以逗號分割
在HTTP請求中引用CSV生成的變量的方式是${變量名}
的方式:
運行腳本,察看結果樹:
可以看到,文件中的數(shù)據(jù)被腳本成功引用。JMeter使用CSV實現(xiàn)參數(shù)化就是這么簡單。
注意事項
CSV使用中最常見的一個問題是文件路徑不對。當遇到這種問題時,因為運行腳本沒有明顯提示,許多人遇到后會感覺很懵,不知道問題在哪。其實,仔細觀察會發(fā)現(xiàn)右上角黃色三角處數(shù)字在增加,點擊該區(qū)域便打開了日志,日志里記錄了相應錯誤:File userInfo2.txt must exist and be readable
,也就是提示參數(shù)化文件不存在或路徑不可達。
2.2 User Parameters
User Parameters,也就是用戶參數(shù),也能實現(xiàn)參數(shù)化。
創(chuàng)建方式:HTTP請求上右鍵–>添加–>前置處理器(Pre processors)–>用戶參數(shù)。
通過【添加變量】添加mobile和password兩個變量,通過【添加用戶】添加3組數(shù)據(jù):
在HTTP請求中引用參數(shù)化的數(shù)據(jù):
運行腳本,設置好的數(shù)據(jù)被成功引用。
這種方式相對來說簡易一些,數(shù)據(jù)范圍有限,適用場景也少。而且,每個線程會一直使用一組數(shù)據(jù)。例如,設置4個線程并發(fā),那么線程1使用用戶_1的數(shù)據(jù),線程2使用用戶_2的數(shù)據(jù),線程3使用用戶_3的數(shù)據(jù),線程4使用用戶_1的數(shù)據(jù),無論各個線程循環(huán)多少次。
2.3 用戶定義的變量
用戶自定義的變量,也可以實現(xiàn)請求參數(shù)的參數(shù)化。
創(chuàng)建方式:線程組上右鍵–>配置元件(config element)–>用戶定義的變量。
如上圖,用起來也很簡單,添加變量名和相對應的值就可以了。后面引用變量和前面一樣,使用${mobile}
的方式。
【用戶定義的變量】一般并非用來做HTTP請求參數(shù)化,而是用來定義全局變量,比如參數(shù)化文件路徑、host、url等。
【用戶定義的變量】創(chuàng)建在【線程組】上,則在線程組內生效,如果創(chuàng)建在【Test Plan】上,則對所有線程組生效。
2.4 Random
函數(shù)助手中的Random函數(shù),
創(chuàng)建方式:Tools–>函數(shù)助手對話框–>選擇一個功能–>_Random:
上圖中,生成了一個表達式:${__Random(8000,9000,)}
,我們用這個表達式替換想要參數(shù)化的變量值,例如下圖中的price變量:
運行腳本,察看結果樹,可以看到效果:
這種方式適用于值在一定區(qū)間無規(guī)律隨機取值的變量參數(shù)化,例如價格、數(shù)量等,并不適用于有較強規(guī)則的變量進行參數(shù)化,例如手機號。
到此這篇關于JMeter參數(shù)化4種實現(xiàn)方式(小結)的文章就介紹到這了,更多相關JMeter參數(shù)化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Character.UnicodeBlock中cjk的說明詳解
這篇文章主要為大家詳細介紹了Character.UnicodeBlock中cjk的說明,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09一文詳解各種ElasticSearch查詢在Java中的實現(xiàn)
Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是當前流行的企業(yè)級搜索引擎,下面這篇文章主要給大家介紹了關于各種ElasticSearch查詢在Java中實現(xiàn)的相關資料,需要的朋友可以參考下2023-11-11java 漢諾塔Hanoi遞歸、非遞歸(仿系統(tǒng)遞歸)和非遞歸規(guī)律 實現(xiàn)代碼
漢諾塔(Hanoi) 算法Java實現(xiàn)。通過三個函數(shù),分別對Hanoi進行遞歸、非遞歸和非遞歸規(guī)律實現(xiàn)。2013-05-05IDEA報錯:Unable to save settings Failed to save settings
這篇文章主要介紹了IDEA報錯:Unable to save settings Failed to save settings的相關知識,本文給大家分享問題原因及解決方案,需要的朋友可以參考下2020-09-09