這里是清安,歡迎你閱讀本章內容,有需要可以加博主V:qing_an_an一起交流,
本篇會詳解jmeter的常用的控制器內容,了解它們的具體作用,
目錄
正則運算式
事務控制器
回圈控制器
僅一次控制器
吞吐量控制器
首先,專案地址:免費天氣API介面|天氣預報介面|全球天氣API介面|氣象預警|空氣質量
需要自己注冊,免費適用介面,學習夠了,在下文中注意appid&appsecret,這兩者自己注冊后系統會給到,接下來正文:
正則運算式
這個相信大家比較熟悉了,不管寫代碼還是用工具,多多少少都會接觸到一些,本篇首先就來說說這個:執行緒組》》添加》》后置處理器》》正則運算式提取
值得注意的是,這里只是告訴你添加到路徑,在不同需要的地方添加正則提取器方法大同小異,
我們先添加一個HTTP請求:

再添加一個查看結果樹,以及聚合報告,提前先全部加上,請求看看結果:

你們輸出是unicode的編碼的,所以這里可以通過一些轉碼直接轉成,或者直接搜搜Unicode轉碼,復制進去轉碼即可,這里我用了其他的方法,
jmeter中找到這個檔案,把這里修改了,然后在HTTP請求中添加一個BeanShell 監聽器即可,監聽器中我們復制如下代碼進去再次請求就是中文了:
String s=new String(prev.getResponseData(),"UTF-8");
char aChar;
int len= s.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s.charAt(x++);
if(aChar=='\\'){
aChar= s.charAt(x++);
if(aChar=='u'){
int value =0;
for(int i=0;i<4;i++){
aChar= s.charAt(x++);
switch(aChar){
case'0':
case'1':
case'2':
case'3':
case'4':
case'5':
case'6':
case'7':
case'8':
case'9':
value=(value <<4)+aChar-'0';
break;
case'a':
case'b':
case'c':
case'd':
case'e':
case'f':
value=(value <<4)+10+aChar-'a';
break;
case'A':
case'B':
case'C':
case'D':
case'E':
case'F':
value=(value <<4)+10+aChar-'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");}}
outBuffer.append((char) value);}else{
if(aChar=='t')
aChar='\t';
else if(aChar=='r')
aChar='\r';
else if(aChar=='n')
aChar='\n';
else if(aChar=='f')
aChar='\f';
outBuffer.append(aChar);}}else
outBuffer.append(aChar);}
prev.setResponseData(outBuffer.toString());
廢話就到這,接下來我們提取其中的city對應的值:執行緒組》》添加》》后置處理器》》正則運算式提取

根據你的請求來,這里值得注意的是正則表達會根據你回應的內容不同而提取不到內容,這里指定提取city對應的值深圳,各有用處,如果你想根據不同的回應內容提取不同的城市請查閱本篇:Jmeter--【作為測驗你必須知道】高級應用--斷言、變數的使用+報告輸出_清歡無別事-CSDN博客_jmeter斷言中使用變數
這里在正則在接下的講解中會起到一定的作用,正則決議:
():括起來的部分就是要提取的,
.:匹配任何字串,
+:一次或多次,
?:不要太貪婪,在找到第一個匹配項后停止,
而我此處的city之前的值就是告訴它去這個指定的值往后的值,直到,結束,這期間取到的值就是“深圳”了,
模板:用$$參考起來,如果在正則運算式中有多個正則運算式,則可以是$2$$3$等等,表示決議到的第幾個值給token,如:$1$表示決議到的第1個值,
匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0
那么問題來了我怎么看到提取的值呢,我們有一個Java請求可以幫到我們:執行緒組》》添加》》取樣器》》Java請求

這里的${}寫法是固定的,里面寫入我們的參考名稱即可,這樣跑一次就能得到我們的提取值

事務控制器
什么是事務控制器,將一系列的事務統計起來為一個事務進行展示,說起來有點抽象,上操作你就明白了,執行緒組》》添加》》邏輯控制》》事務控制器

這里有兩個選項,Include duration of timer and pre-post processors in generated sample在一般情況下不勾選,勾選后,在生成的樣本中包括計時器,預處理和后處理延遲,會把額外的時間算進來,增加干擾,
先不勾選第一項,我們看看聚合報告:

這里會把各項事務都計入其中,后續介面的程序中,事務多起來就不好看資料了,所以我們勾選Generate parent sample:

這里名稱不一樣是因為我更改了名稱,這里看是不是就是展示了一個事務呢還是非常方便的,
回圈控制器
可以看到執行緒組里面其實是有回圈的,但是這個回圈是一個大回圈,我們的回圈控制器是一個小回圈,可以單獨設定回圈次數,這里回圈次數我設定了5次,截圖就沒有放出來了,執行緒組》》添加》》邏輯控制》》回圈控制器

這里我新增一個請求,查看上海的空氣質量,看看聚合報告:

這里小妙招就是你可以把事務控制器放入回圈中,這個具體用途看場景,
僅一次控制器
通常用來存放登錄的事務,登錄一次后即可作業系統,而不用每次都要登錄,這個就看各位腦洞了,在里面添加json提取器啥的結合回圈控制室,事務控制器使用,執行緒組》》添加》》邏輯控制》》僅一性控制器
我將執行緒組中的回圈設定成5次,執行緒數設定成1,將另外兩個控制器禁用,這里看個人好吧,也可不禁用,

實際上它只會跑一次,所以叫僅一次,這里不妨可以想想,是不是可以提取值出來用于下一次的登錄什么的使用,下一篇會講到,引數化,
吞吐量控制器
吞吐量控制器可按照比例和數量進行分配,混合壓測的時候便于進一步控制比例,看看實體,執行緒組》》添加》》邏輯控制》》吞吐量控制器
同一個執行緒組里, 有10個并發, 7個做A業務, 3個做B業務,要模擬這種場景,可以通過吞吐量模擬器來實作.
這里添加了兩個吞吐量控制器,執行緒組》》10個執行緒數,回圈5次,也就是50次,準備時長不變為1S,兩個吞吐量控制器比例是60:40,換算也就是3:2,

這里還是可以看到的,樣本比這里的比例是30:20,也就是3:2,

這里有兩個選項,可以看到:
Total Executions:執行數量
percent Executions:執行百分比(1-100%)
這兩者都是可以選擇的,
本篇完,你學會了嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/380204.html
標籤:其他
上一篇:在Ubuntu20.04中為GTX560Ti安裝Nvidia驅動程式時,如何修復客戶端版本和內核模塊版本之間的“NVRM:API不匹配”?
