jmeter(七)定時器

weixin_34239169發表於2017-08-13

知識來源有點複雜,其他測試工作者的部落格,百度百科,蒐集的電子文件,個人理解等等,限於水平和理解能力,可能有些內容有錯誤的地方。。。

jmeter提供了很多元件,幫助我們更好的完成各種場景的效能測試,其中,定時器(timer)是很重要的一個元件,最新的3.0版本jemter提供了9種定時器(之前6種),下面一一介紹:

一、定時器的作用域

1、定時器是在每個sampler(取樣器)之前執行的,而不是之後(無論定時器位置在sampler之前還是下面);

2、當執行一個sampler之前時,所有當前作用域內的定時器都會被執行;

3、如果希望定時器僅應用於其中一個sampler,則把定時器作為子節點加入;

4、如果希望在sampler執行完之後再等待,則可以使用Test Action;

二、定時器的作用

1、固定定時器(Constant Timer)

7044269-2b7c337507eb2b6c.png

如果你需要讓每個執行緒在請求之前按相同的指定時間停頓,那麼可以使用這個定時器;需要注意的是,固定定時器的延時不會計入單個sampler的響應時間,但會計入事務控制器的時間。

對於“java請求”這個sampler來說,定時器相當於loadrunner中的pacing(兩次迭代之間的間隔時間);

對於“事務控制器”來說,定時器相當於loadrunner中的think time(思考時間:實際操作中,模擬真實使用者在操作過程中的等待時間)。

這裡附上一個傳送門,對loadrunner中的pacing和think time有比較全面的解釋:https://zhidao.baidu.com/question/1431215934913423459.html

我們通常說的響應時間,應該大部分情況下是針對某一個具體的sampler(http請求),而不是針對一組sampler組合的事務 。

2、高斯隨機定時器(Gaussian Random Timer)

7044269-248f1960a2326a85.png

如需要每個執行緒在請求前按隨機時間停頓,那麼使用這個定時器,上圖表示暫停時間會分佈在100到400之間,計算公式參考:Math.abs((this.random.nextGaussian() * 300) + 100)

傳送門(什麼是高斯隨機分佈):https://zhidao.baidu.com/question/89318504.html

3、均勻隨機定時器(Uniform Random Timer)

7044269-5aea87a2342a173d.png

和高斯隨機定時器的作用差異不大,區別在於延時時間在指定範圍內且每個時間的取值概率相同,每個時間間隔都有相同的概率發生,總的延遲時間就是隨機值和偏移值之和。

下面表示的是隨機延遲時間的最大值是100毫秒:

(1)Random Delay Maximum(in milliseconds):隨機延遲時間的最大毫秒數

(2)Constant Delay Offset(in milliseconds):暫停的毫秒數減去隨機延遲的毫秒數

4、固定吞吐量定時器(Constant Throughput Timer)

7044269-cfa916f88d6e2474.png

可以讓JMeter以指定數字的吞吐量(即指定TPS,只是這裡要求指定每分鐘的執行數,而不是每秒)執行。

吞吐量計算的範圍可以為指定為當前執行緒、當前執行緒組、所有執行緒組等範圍,並且計算吞吐量的依據可以是最近一次執行緒的執行時延。這種定時器在特定的場景下,還是很有用的。

5、同步定時器(Synchronizing Timer)

7044269-21382decaa7d9deb.png

這個定時器和loadrunner當中的集合點(rendezvous point)作用相似,其作用是:阻塞執行緒,直到指定的執行緒數量到達後,再一起釋放,可以瞬間產生很大的壓力(人多力量大- -哈哈!)

(1)Number of Simulated Users to Group by:模擬使用者的數量,即指定同時釋放的執行緒數數量

(2)Timeout in milliseconds:超時時間,即超時多少毫秒後同時釋放指定的執行緒數

6、BeanShell定時器(BeanShell Timer)

7044269-11d681170579d4ad.png

這個定時器,一般情況下用不到,但它可以說是最強大的,因為可以自己變成實現想要做的任何事情,例如:希望在每個執行緒執行完等待一下,或者希望在某個變數達到指定值的時候等待一下。

這裡給大家介紹下BeanShell:

BeanShell是一種鬆散型別的指令碼語言(這點和JS類似),一種完全符合java語法的java指令碼語言,並且又擁有自己的一些語法和方法。

傳送門(另外一位部落格園作者的部落格):http://www.cnblogs.com/jssy/archive/2006/10/23/537101.html

7、泊松隨機定時器(Poisson Random Timer)

7044269-2b43c539cd8735c3.png

這個定時器在每個執行緒請求之前按隨機的時間停頓,大部分的時間間隔出現在一個特定的值,總的延遲就是泊松分佈值和偏移值之和。

上面表示暫停時間會分佈在100到400毫秒之間:

(1)Lambda(in milliseconds):蘭布達值

(2)Constant Delay Offset(in milliseconds):暫停的毫秒數減去隨機延遲的毫秒數

傳送門(什麼是泊松隨機數):http://baike.baidu.com/link?url=CJ0_Qtuilzp3a4Xos9N7V_hFQjaf_zb_aM1wggqxIYGDGWjtKsp6JSjRIQ110lE38sQOKYcgNUMjRuMAPGb3xK

8、JSR223定時器(JSR223 Timer)

7044269-ba007ecfe1a10aa5.png

在jemter最新的版本中,新增了這個定時器,可以這麼理解,這個定時器相當於BeanShell定時器的“父集”,它可以使用java、JavaScript、beanshell等多種語言去實現你希望完成的事情;

我們都知道jemter是一種開源的純java工具,可以自己構件各個元件,jar包去完成各種事情。

傳送門(關於JSR223):http://wenku.baidu.com/link?url=GUFnww9nb_1D6MlFd1YksYrNVk1NXF74ov8kJL06MmqVdmH_Q9v4YnWK-_gZ-04zL4QEqD9VN48OrXi4JyXpxosNZd8LBfIWhyhhxgUbrAC

9、BSF定時器(BSF Timer)

7044269-5654b9172fb16e91.png

BSF Timer,也是jmeter新的版本中新增的定時器,其使用方法和JSR223 Timer很相似,只需要在jmeter的lib資料夾匯入其jar包,就可以支援指令碼語言直接訪問Java物件和方法的一定時器。

有了它 , 你就能在java application中使用javascript, Python, XSLT, Perl, tcl, ……等一大堆scripting language. 反過來也可以;

就是在這些scripting language中呼叫任何已經註冊過了的JavaBean,java object。它提供了完整的API實現通過Java訪問指令碼語言的引擎。

由於本人對java瞭解不深,只能通過查閱相關資料,簡單描述下其作用,不足之處,希望指正。

傳送門(BSF):http://baike.baidu.com/link?url=0RRkO1WqT1SdaXIzohqnEU8lcilpc_Sqwy7HtfpzCdCX1kyyLC5qttpF8jayTWFZi_tCbFbzMEw8FxHFYnIGYK

Has anything you're done made your life better?

分類:Jmeter

相關文章