Jmeter簡單應用6

    今天看到一篇文章,說Jmeter定時器的,感受不錯,就拿過來轉載了。javascript

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

1、定時器的做用域shell

一、定時器是在每一個sampler(採樣器)以前執行的,而不是以後(不管定時器位置在sampler以前仍是下面);app

二、當執行一個sampler以前時,全部當前做用域內的定時器都會被執行;dom

三、若是但願定時器僅應用於其中一個sampler,則把定時器做爲子節點加入;工具

四、若是但願在sampler執行完以後再等待,則可使用Test Action;性能

2、定時器的做用測試

一、固定定時器(Constant Timer)this

    這是一個很重要的定時器,若是你須要讓每一個線程在請求以前按相同的指定時間停頓,那麼可使用這個定時器;須要注意的是,固定定時器的延時不會計入單個sampler的響應時間,但會計入事務控制器的時間。線程

    對於「java請求」這個sampler來講,定時器至關於loadrunner中的pacing(兩次迭代之間的間隔時間);對於「事務控制器」來講,定時器至關於loadrunner中的think time(思考時間:實際操做中,模擬真實用戶在操做過程當中的等待時間)。

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

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

    若是你須要讓每一個線程在請求以前按隨機的時間停頓,那麼可使用這個定時器,上圖表示暫停時間會分佈在100到400之間,計算公式參考:Math.abs((this.random.nextGaussian() * 300) + 100)

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

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

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

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

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

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

 

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

    吞吐量計算的範圍能夠爲指定爲當前線程、當前線程組、全部線程組等範圍,而且計算吞吐量的依據能夠是最近一次線程的執行時延。這種定時器在特定的場景下,仍是頗有用的。

五、同步定時器(Synchronizing Timer)

    這個定時器和loadrunner當中的集合點(rendezvous point)做用類似,其做用是:阻塞線程,直到指定的線程數量到達後,再一塊兒釋放,能夠瞬間產生很大的壓力(人多力量大- -哈哈!)

(1)Number of Simulated Users to Group by:模擬用戶的數量,即指定同時釋放的線程數數量

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

六、BeanShell定時器(BeanShell Timer)

 

    這個定時器,通常狀況下用不到,但它能夠說是最強大的,由於能夠本身變成實現想要作的任何事情,例如:但願在每一個線程執行完等待一下,或者但願在某個變量達到指定值的時候等待一下。

這裏給你們介紹下BeanShell:

    BeanShell是一種鬆散類型的腳本語言(這點和JS相似),一種徹底符合java語法的java腳本語言,而且又擁有本身的一些語法和方法。

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

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

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

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

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

八、JSR223定時器(JSR223 Timer)

    在jemter最新的3.0版本中,新增了這個定時器,能夠這麼理解,這個定時器至關於BeanShell定時器的「父集」,它可使用java、JavaScript、beanshell等多種語言去實現你但願完成的事情;

    咱們都知道jemter是一種開源的純java工具,能夠本身構件各個組件,jar包去完成各類事情(咱們能夠理解爲專門定製)

九、BSF定時器(BSF Timer)

    BSF Timer,也是jmeter新的3.0版本中新增的定時器,其使用方法和JSR223 Timer很類似,只須要在jmeter的lib文件夾導入其jar包,就能夠支持腳本語言直接訪問Java對象和方法的一個開源項目的定時器。

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

    就是在這些scripting language中調用任何已經註冊過了的JavaBean,java object。它提供了完整的API實現經過Java訪問腳本語言的引擎。