1. 程式人生 > >JMeter測試工具Timer定時器的介紹使用

JMeter測試工具Timer定時器的介紹使用

JMeter常被定義成效能測試工具或是自動化測試工具,都沒錯,它就是測試工具,關鍵看你怎麼使用它; 後起之秀JMeter與革命前輩Loadrunner比較,timer可以根據實際場景設定思考時間用於等待或是集合點同時併發; 言歸正傳,我們來看看Jmeter的timer成員有哪些,具體作用是什麼? 1、Constant Timer 等待時間(思考時間)
Constant Timer Name:恆定時間元件名稱(可以理解是等待(思考)時間), Comments:註釋,隨意; Thread Delay(in milliseconds):執行緒等待時間,單位毫秒; tips:用法(場景),更真實的模擬使用者場景,需要設定等待時間,或是等待上一個請求的時間,才執行,給sampler之間的思考時間;
2、Synchronizing Timer 集合時間(集合點)
Synchronizing Timer Name:Synchronizing Timer 同步定時器名稱(集合點) Comments:註釋,可以讓定時器變得有意思,一目瞭然; Grouping Number of Simulated Users to Group by: 同組使用者數量,設定為0,等效於執行緒組中的執行緒數(Number of Threads(users)); Timeout in milliseconds:超時時間,單位毫秒,預設為0;如果設定為0,定時器等待同組的使用者數,如果設定大於0,將以等待的最大執行緒數執行;如果超時,等待的使用者數沒有到達,定時器將停止等待;如果超時了,設定併發的使用者數大於執行緒數,那麼指令碼無法停止;
tips:執行緒組使用者數100,新增同步定時器,
執行緒數(100) 定時器等待執行緒數(視情況而定) 超時設定(預設為0,單位毫秒) 設定效果(指令碼執行達到的效果)
100 100 0 使用者等待達到100個使用者,同時併發請求
100 90 100 1、剛好超時100ms,且等到90個使用者併發請求; 2、等到90個使用者,未超時,繼續等到結束,再併發,這時使用者數將大於90; 3、等到小於90和使用者,又超過了設定100ms,那麼以等到的使用者併發請求,可能小於90;
100 110 0 使用者無法達到110個使用者,執行緒將一直等待,不會停止;
100 100 100 1、剛好超時100ms,等到100個使用者併發請求;
2、超時100ms後,定時器以等到的最大使用者數併發請求; 3、如果超時100ms,使用者數沒有到達100,將以等到的使用者數併發請求,這是使用者數可能小於100;
100 0 0 定時器設定的使用者數等效於執行緒的使用者數,超時預設設定為0,使用者同時併發請求
插入講一個重點定時器:BeanShell Timer
Name:名稱,隨意; Comments:註釋,隨意; Reset bsh.Interpreter before each call: Reset Interpreter:是否每次迭代重置解析器,預設false,官方建議長時間執行的指令碼中設定True; Parameters to be passed to BeadShell(=> String Parameters and Stringp[] bsh.args): Parameters:BeanShell的入參;入參可以是單個變數,也可以是陣列; Script File (overrides script): File Name:BeanShell 指令碼可以從指令碼檔案中讀取; Script (Variables:ctx vars props log prev):編寫的指令碼(。。。),如: try{ Thread.sleep(${sleeptime}); log.error("${sleeptime}"); log.warn(ctx.getThreadNum().toString()); vars.put("company","www.baidu.com"); log.info(vars.get("company")); log.warn(props.get("log_level.jmeter")); props.put("log_level.jmeter","ERROR"); log.warn(props.get("log_level.jmeter")); }catch(InterruptedException e){ e.printStackTrace(); } tips:解釋一下指令碼中呼叫JMeter的執行屬性: Log,直接呼叫log類,如log.error()寫日誌,info,warn等等 Ctx,可以獲取JmeterContent例項獲取執行時資訊;如獲取執行緒號log.info(ctx.getThreadNum().toString()); Vars,訪問變數獲取對應的值,也可以設定變數;如vars.put("company","www.baidu.com"); comany可以直接被其他元件呼叫${company} Props,直接訪問及修改Jmeter的屬性,如log.warn(props.get("log_level.jmeter"));改變日至級別props.put("log_level.jmeter","ERROR"); Prev,訪問前面sampler的結果, 3、Gaussian Random Timer 高斯定時器
這三類定時器,個人理解差不得太多,都有一個固定延遲時間,然後再給一個延遲偏差; 例如:Gaussian Random Timer 高斯定時器; Gaussian Random Timer Name:定時器的名稱,隨意 Comments:註釋,隨意; Tread Delay Properties:單位都是毫秒,固定延遲300ms,偏差100ms,意思是時間延遲300-400ms之間; Deviation (in milliseconds):偏差值,是一個浮動範圍; Constant Delay offset (in milliseconds):固定延遲時間 4、Uniform Random Timer 暫停一個隨機時間;
同上解讀,只是偏差是隨機,意思:0-100ms之間,可能是55ms 5、Poisson Random Timer 泊松定時器
同上