1. 程式人生 > >JMeter常用函式整理

JMeter常用函式整理

一、"_csvRead"函式


  csvRead函式是從外部讀取引數,csvRead函式可以從一個檔案中讀取多個引數。


  下面具體講一下如何使用csvread函式:


  1.新建一個csv或者text檔案,裡面儲存要讀取的引數,每個引數間用逗號相隔。每行表示每一組引數,每列表示每種引數:


  比如:


  admin,123


  manager,456


  2.開啟Jmeter的函式助手,選擇csvread函式:

      



  其中:


  CSV file to get values from | *alias:要讀取的檔案路徑,應該是絕對路徑


  CSV檔案列號| next| *alias:從第幾列開始讀取,注意第一列是0


  點選生成按鈕,則生成了函式,為:${__CSVRead(D:\test.txt,1)}csvread就是從test.txt檔案中讀取第一列的引數。以此類推。


  3.將生成的引數拷貝到需要引數化的引數的值一項中,如果要修改要讀取的引數的列,則可以直接在引數值中修改數字而不用重新在csvread函式生成中修改。


  4.jmeter執行的時候,如果有多個執行緒,順序讀取第一行的數字,如果執行緒組多餘檔案中的行數,則迴圈讀取。


  5.利用該功能,可以實現不同引數需要不同引數值的問題,只需要在需要引數化的地方將生成的CSVRead函式字串貼上過去,然後修改表示第幾列的數字就可以了。


 二、"_ StringFromFile"函式


  功能:這個函式是從一個檔案中取到一個字串,這個函式和LoadRunner中的File變數差不多,不過LoadRunner可以直接從數 據庫中查詢記錄,自動生成檔案,而Jmeter需要我們藉助第三方工具生成文字作用:可以用來實現引數化http請求傳送的引數,使得在Jmeter執行 時引數化了的引數在每個執行緒讀取不同的內容。如果某個引數每次傳送請求的時候不能重複才可以儲存到資料庫中,則用這個功能十分方便。


  使用:


  1.首先需要一個文字檔案,可以手工生成,也可以通過資料庫查詢工具查出結果,然後拷貝到一個文字檔案中。


  2.點選Jmeter的“選項”,選擇“函式助手對話方塊”(或者使用快捷鍵“Ctrl+F”),在“選擇一個功能”的下拉框中選擇“_StringFromFile”


  3.設定“_StringFromFile”函式的值,具體如下:


    ● 輸入檔案的全路徑:輸入前面生成的檔案的完整路徑,即檔案路徑+檔名.副檔名(檔案路徑可以寫成相對路徑或絕對路徑,預設讀取位置為/bin下)


    ● 函式名稱:輸入某個名稱,用於儲存在測試計劃中其他的方式使用的值。


    ● 檔案開始結束序號:第三,第四個引數是檔案開始的序號,也就是檔案讀取的其起始行數。第四個引數是檔案的結束序號,也就是要讀取檔案的最後行。假如咱們生 成的文字檔案有200行,如果開始序號設定成50,結束行設定成150,那麼這個函式會按順序從第50行,一直讀取到150行,如果測試的迴圈次數超過了 檔案行數,比如迴圈了102次,那麼最後一次迴圈讀取的檔案內容和第一次的一樣,函式會自動迴圈讀取。檔案的起始序號和結束序號也可以不用設定,這樣函式 會從第一行讀取到最後一行,然後再迴圈讀取。


  4.注意:該函式每次讀取檔案中的一行,如果執行緒組中有多個執行緒,則每個執行緒順序讀取一行,如果有多次迴圈,則每次迴圈順序讀取一行。
 


  三、"_Random"函式



  功能:這個函式是從某個數字段隨機讀取資料替換引數,可以利用在測試需要新增多條資料記錄而且某些欄位需要唯一性的測試指令碼中,隨機生成的引數是數字


  作用:可以用來實現引數化http請求傳送的引數,使得在Jmeter執行時引數化了的引數在每個執行緒去不同的隨機數。如果某個引數每次傳送請求的時候不能重複才可以儲存到資料庫中,則用這個功能十分方便。


  使用:


  1.點選Jmeter的“選項”,選擇“函式助手對話方塊”(或者使用快捷鍵“Ctrl+F”),在“選擇一個功能”的下拉框中選擇“_Random”。


  2.配置“_Random”函式,第一個引數是“一個範圍內的最小值”,即所要取的隨機數的最小值,我們設定成1;第二個引數是“一個範圍內的 最大值”,即所要取的隨機數的最大值,我們設定成100;第三個引數是“函式名稱”,即用於儲存在測試計劃中其他的方式使用的值,我們設定成 Random。設定好上面的三個引數後,點選“生成”按鈕,這樣就會在對話方塊的最下面生成一個字串 “${__Random(1,100,Random)}”,在我們編寫的指令碼中,找到要替換的引數,把它的值換成前面生成的字串就可以了,然後每次執行 的時候,這個引數會變成一個1到100之間的隨機數。


  四、"_counter"函式



  功能:這個函式是一個計數器,用於統計函式的使用次數,它從1開始,每呼叫這個函式一次它就會自動加1,它有兩個引數,第一個引數是布林型的, 只能設定成“TRUE”或者“FALSE”,如果是TRUE,那麼每個使用者有自己的計數器,可以用於統計每個執行緒歌執行了多少次。如果是FALSE,那就 使用全域性計數器,可以統計出這次測試共運行了多少次。第二個引數是“函式名稱”


  格式:${__counter(FALSE,test)}


  使用:我們將“_counter”函式生成的引數複製到某個引數下面,如果為TRUE格式,則每個執行緒各自統計,最大數為迴圈數,如果為FALSE,則所有執行緒一起統計,最大數為執行緒數乘以迴圈數


  五、"_time”函式


  功能:Jmeter執行時取當前時間到變數,利用該功能,可以將某個引數增加time函式,然後用該引數作為查詢條件查詢,然後以該引數作為斷 言,這樣可以使得斷言更精確,因為時間實時變化的,使用該方法,需要注意的是,要先新增一個全域性的使用者引數,具體在斷言操作中有描述。


  格式:${__time(MMddmmss,TEST)}


  使用:新增jmeter的time函式,選擇選項——函式助手,然後選擇__time函式


  在“ormat string for SimpleDateFormat (optional)”中輸入值“MMddhhmmss”,表示取月日時分秒。


  然後,點選生成,則生成了time引數。


  六、"_intSum”函式


  功能:用於計算多個整數的和,可以是計算正整數和負整數的和,它有N個引數,最少有3個引數,最多不限。最後一個引數是函式名稱,前面的其它參 數是要求和的整數。這個函式在函式對話方塊中只顯示3個引數,如果要計算多個整數,可以通過新增引數實現,不過最後一個引數一定要是函式名稱。再新增的引數 會在函式名稱後面,這個時候,需要我們手動將函式名稱引數放到最後一個。


  格式:${__intSum(1,100,test)}


 




Jmeter訊息類的功能
${__threadNum}    :得到testplan的執行緒數
${__machineName}  :得到主機名字
${__time(EEE\, d MMM yyyy)}  :返回一定格式的時間資訊 。${__log(Message)}:寫入log檔案”…thread Name : Message” 。${__log(Message,OUT)}:輸出到命令列。${__log(${VAR},,,VAR=)} :以 “…thread Name VAR=value”形式輸出到log檔案。


Jmeter輸入類的功能
這裡Jason只介紹下${__XPath(File,//XX/XX/@XX)}  :XPath方式讀了File檔案的相應屬性.


Jmeter計算類的功能
${__counter(X)}    :自增函式,X(true/false)來控制是否分配執行緒來增加.
${__Random(X,Y,Z)} :隨機函式,X為最小值,Y為最大值,Z為儲存的變數名.


Jmeter的Properties檔案使用的功能類
之前Jason在Jmeter的P函式及properties檔案介紹了相關的內容.


Jmeter的變數操作類的功能
${__split(X,Y,Z)}   :用來分割變數用的,X為需要分割的變數或者String,Y為儲存的變數名,Z為分割符.
${__V}              :的使用主要來源於變數中含變數的情況 eg. ${A${N}} 可以用${__V(A${N})} 來顯示成功.
${__eval}           :主要用在對SQL的處理上,具體使用看下面的例子:
* name=Smith   * column=age * table=birthdays * SQL=select ${column} from ${table} where name=’${name}’
用${__eval(${SQL})}可以得到”select age from birthdays where name=’Smith’”.


Jmeter的String操作類的功能
${__regexFunction}  :對前一個響應進行正則規約提取.具體參考這裡.
${__char},${__unescape},${__unescapeHtml},${__escapeHtml} :主要用來對字元的編碼格式的轉換的.


Jmeter的指令碼操作類的功能
${__javaScript(X,Y)} :主要是使用Javascript來做一些簡單的操作.例如計算和字元處理等等.
eg. ${__javaScript(‘${sp}’.slice(7\,99999))}
${__BeanShell(X)}     :主要是利用BeanShell來實現一些具體的功能,BeanShell具體我們可以參考BeanShell.