性能測試基礎---jmeter參數化、關聯、事物、檢查的等

 

·Jmeter腳本加強·性能測試的腳本加強技術:參數化、關聯、事務、檢查點、思考時間和集合點。

·參數化:在Jmeter中,實現參數化的方式不少。本質上來講,參數化的實現方式有兩種:·文件方式:通常建議經過配置元件--CSV DATA SET CONFIG組件來實現。·函數方式:通常經過調用Jmeter內置的、第三方插件、自定義的函數來實現。通常經過函數助手來生成調用的字符串。

·調用方式:在jmeter中,任何鼠標點擊能夠輸入的地方(輸入字符串),均可以實現參數化操做,在Jmeter中,參數、變量、函數的調用方式是固定的:${參數名}   ${變量名}   ${函數名}
·CSV DATA SET CONFIG組件詳解:·FileName:文件名,即參數文件的名稱。可使用相對地址,也可使用絕對地址。·File encoding:參數文件的編碼,要求和實際編碼保持一致。默認爲空,對應的文件編碼格式爲ANSI。PS:建議參數文件使用記事本進行編輯,編碼格式採用默認的ANSI。
·Variable Names:參數名稱,又叫變量名稱。該處能夠填寫一個or多個參數名,也能夠不填寫。PS:·若是有多個參數名,則不論參數文件中的值的實際分隔符是什麼,參數名之間始終使用逗號進行分隔。·一個參數名只會讀取參數文件中的一列值。參數名和值是按順序一一對應。即第一個參數對應第一列值,第N個參數對應第N列值。·若是該處爲空,則Jmeter會讀取參數文件中的第一行的值做爲參數名,而後從第二行開始取值。不建議留空。
·Ignore first line:表示忽略參數文件的第一行,直接從第二行開始讀值。
·Delimiter:分隔符,用來指定參數文件的列的分隔符,要求和實際的分隔符保持一致。·Allow quoted data?:是否容許經過雙引號定義塊數據。即經過雙引號屏蔽值自己所攜帶的分隔符字符。·Recycle on EOF?:是指沒有值的時候,循環讀取。
·Stop thread on EOF?:該選項是在循環選項的值爲false時纔會起效。做用表示沒有值的時候,中止線程。
·sharing mode:該選項影響的是Jmeter中的參數的取值方式。可選模式有三種:·All threads:默認方式,全部線程。表示當前的測試計劃下的全部線程共用一個參數文件的副本。對於參數值採起先到先拿,順序獲取的方式。若是不設置Recycle on EOF爲true,則做用就是惟一取值。
·Current thread group:當前線程組。表示一個線程組中的全部線程共用一個參數文件的副本。若是有多個線程組,則參數文件會生成多個副本。線程組之間相互不影響,獨立取值。每個線程組中,仍是採起先到先拿,順序獲取的方式。
·Current thread:當前線程。表示每個線程都會擁有一個獨立的參數文件的副本。線程本身採起順序獲取的方式。線程之間相互不影響。該方式等價於LR中的默認參數取值方式。
PS:CSV DATA SET CONFIG中的變量更新變量值的時機是受到所在做用域的最高循環組件的影響的。

·關聯:關聯是用來解決請求之間的依賴關係的。在工具層面,工具須要解決的問題實際上是兩個:·先存:先保存服務器響應的數據·後用:在後續的請求中調用所保存的數據。
在Jmeter中,關聯通常都是經過後置處理器組件來實現。經常使用的是:正則表達式提取器、JSON Extractor。。
·正則表達式提取器:·要檢查的字段:默認是主體,即要從響應主體裏提取數據。·信息頭:是指響應的信息頭,目前不少token相關的數據多是經過響應頭來返回的。
·引用名稱:即變量名稱,由用戶本身指定,建議有意義。·正則表達式:該處填寫的是用來獲取數據的正則表達式。·一般來講,咱們截取關聯數據的左右固定的字符串,而後將須要關聯的數據替換爲"(.*?)"便可。   示例:  服務器返回:aaa數據bbbaaa和bbb是固定不變的,即爲左右邊界,數據是變化的。則最終的正則表達式能夠寫爲aaa(.*?)bbbPS:不管是左右邊界仍是數據自己包含回車換行的話,則不能用點「.」,要用「[\\s\\S]」替代。·模板:該處能夠填寫的內容有兩種:字符串常量、位置變量$N$,固然也能夠是組合。·字符串常量:不是位置變量格式的都是字符串常量。表示將字符串常量的值直接賦值給引用變量。·位置變量$N$:N表示將正則表達式第N對括號所對應匹配的值賦值給變量。PS:通常來講,咱們的正則表達式只有一對括號,因此模板不少時候就寫$1$便可。
·匹配數字:該處能夠填寫的數字有三種:正整數N,數字0,負數。·正整數N:表示將第N次匹配到的值賦值給變量。·數字0:表示將全部匹配到的值隨機取一個賦值給變量。·負數:一般填寫-1,表示將全部匹配到的值以相似數組的方式存入參數數組。效果爲:ParamName_1=Value_1,ParamName_2=Value_2,...,ParamName_N=Value_N.而且會自動生成一個參數叫ParamName_matchNr=N,用來存儲匹配到的值的個數。

·若是要所有拼裝爲一個特定的格式,則須要繼續添加後置處理器--BeanShell PostProcessor
示例代碼:int num = Integer.parseInt(vars.get("pa_matchNr"));String outstr="";for(int i=1;i<num;i++){String index="pa_"+i;outstr=outstr+vars.get(index)+",";}String index="pa_"+num;outstr=outstr+vars.get(index);vars.put("str",outstr);

·若是要遍歷,或者部分遍歷,則能夠經過邏輯控制器--foreach控制器來實現。正則表達式

相關文章
相關標籤/搜索