jmeter元件執行順序及簡介

最近在學習Jmeter,在進行實操以前,先查看了官方文檔。由於官方文檔是英文的,爲了方便之後查看,本身翻譯了一部分,中間個別地方根據本身的理解簡單地翻譯了部分。若是翻譯等有問題,歡迎指正。服務器

1、執行順序多線程

一、控制器和取樣器是有序的,當執行測試計劃時,這些請求將按順序執行。以下圖:併發

二、一些控制器會影響它的子原件的順序,還有一些元件是分等級的。好比斷言,若是它的父元件是一個請求,那麼它將做用於這個請求;若是它的父元件是一個控制器,那麼它將做用於這個控制器下的所有的請求。以下圖:app

Assertion#1僅被應用於請求one,Assertion#2做用於請求two 和three。less

另外一個複雜點的列子:學習

這個例子中,(定時器)Timer#1將應用於請求Two\Three\Four,Assertion#1將應用於請求Three。Timer#2將應用於全部的請求。測試

通常狀況下,元件執行順序以下:spa

複製代碼
0.Configuration elements
1.Pre-Processors
2.Timers
3.Sampler
4.Post-Processors (unless SampleResult is null)
5.Assertions (unless SampleResult is null)
6.Listeners (unless SampleResult is null)
複製代碼

注意:Timers,Assertions,Pre- and Post-Processors 只有當一個sampler申請時纔會執行。線程

舉例說明以下圖:翻譯

在這個例子中,執行的順序以下:

2、測試計劃中的元件

一、線程組

線程組元件是全部測試計劃的開始點。全部的控制器和samplers必須在線程組下,其餘元件好比監聽器,也許會被直接添加在測試計劃下,這樣這個監聽器將做用於全部的線程組。

線程組管理容許你(下面所列爲線程組--線程屬性中能夠配置的信息):

》設置線程數

》設置ramp-up period 

》設置循環次數

每一個線程都是做爲一個總體執行測試計劃,而且徹底獨立於其餘線程。多線程用來模擬併發鏈接到你的服務應用中(Multiple threads are used to simulate concurrent connections to your server application.)

The ramp-up period tells JMeter how long to take to "ramp-up" to the full number of threads chosen.若是有10個線程,ramp-up period是100秒,那麼Jmeter將在100秒內啓動並執行這10個線程。每一個線程將在前一個線程開始後10(100/10)秒啓動。若是是30個線程,ramp-up period是120秒,那麼每一個連續(successive)的線程將延長4秒。

Ramp-up needs to be long enough to avoid too large a work-load at the start of a test, and short enough that the last threads start running before the first ones finish (unless one wants that to happen).

默認狀況下,都是設置爲恰好線程組循環一次。

線程組也提供了調度器。能夠在線程組--線程屬性中勾選框決定是否啓用調度器,而後在線程組-調度器配置框中,能夠設置持續時間、啓動延遲、啓動時間和結束時間。持續時間和啓動延遲是用來控制每一個線程組的持續時間,和在多少秒後每一個線程組開始時間。當測試執行時,Jmeter都會等待startup delay中設置的秒數,再去啓動此線程組下的線程,而且執行時間爲持續時間配置的秒數。注意,持續時間和啓動延遲優先於啓動時間和結束時間。

或者你可使用啓動時間和結束時間。當測試開始時,若是必要的話Jmeter會等待start-time到達。每一次循環結束後,Jmeter會檢查end-time是否到達了,若是是,那麼執行將中止。若是不是,將會繼續執行下去,知道循環結束。

二、控制器

Jmeter有兩種類型的控制器:Samplers和logical Controllers.

Samplers告訴Jmeter發送請求到服務器。好比,若是你想發送一個HTTP請求,你須要在Sampler中添加一個HTTP請求。你也能夠經過添加一個或多個配置到Sampler中來自定義一個請求。

Logical Controllers:你能夠經過自定義邏輯來使Jmeter決定何時發送請求。For example, you can add an Interleave Logic Controller to alternate between two HTTP Request Samplers.

2.1 Samplers

它告訴Jmeter發送請求到服務器,而且等待迴應。 Controllers can be used to modify the number of repetitions of a sampler.

若是你發送到服務器的多個請求都有同樣的類型(好比HTTP請求),能夠考慮使用一個默認值元件(好比HTTP請求默認值)。

記得添加監聽器來查看或保存請求的結果到電腦中。

2.2 Logic Controllers

邏輯控制器能夠經過他們的子元件來改變請求的順序,或重複請求等等。

以下列:

(1)由於Login Request在Once Only Controller下,因此登陸請求只執行一次,下次迭代將跳過登陸請求。

(2)接下來會執行Load Search Page,由於這個沒有加控制器,因此正常執行。

(3)Load Search Page執行後,將須要執行兩個searches。可是這兩個searches前加了Interleave Controller,因此每執行完一個search,將從新執行Load Search Page???

(4)Interleave Controller下的HTTP默認值請求,當search A 和B都是同樣的HTTP請求,只是個別信息有異,在這裏配置HTTP默認值請求,將節省配置步驟。

2.3 Test Fragments

Test Fragments是一種特別的控制器,跟線程組同一個級別。它區別於一個當被任何一個Module控制器或Include 控制器引用時纔開始執行的線程組??

它在測試計劃中純粹是爲了代碼重用。(這個仍是不明白作什麼用的、、、)

三、監聽器

監聽器能夠添加到測試中的任何一個地方。它們將從同等級或其下級元件中收集數據。

四、定時器

若是你不增長延時,Jmeter在短期內發送多個請求時,可能會壓垮服務器。

五、斷言

斷言能夠添加到任何一個Sampler中,它將做用於sampler範圍內。若是但願斷言只做用於單個sampler,能夠在這個sampler中添加子元件斷言。

要查看斷言的結果,能夠添加一個斷言監聽器到線程組中。結果與指望值不同的斷言,也能夠在tree view和table listeners中查看。

六、配置元件

配置元件做用於同一級別或其子級別中。以下圖:

(1)HTTP Cookie Manager 在Simple Controller下,這個元件將做用於Web Page1 和Web Page2,而對Web Page3沒有影響。

同時,一個在樹內部的配置元件會比父支擁有更高的優先級。

(2)Web Defaults1和Web Defaults2 :Web Defaults1將影響Web Page2,而Web Defaults2將影響除Web Page2之外的HTTP請求。

注意點:User Defined Variables這個配置元件與上面所說的規則不一樣,它將在測試開始時執行,不管你放在哪一個位置。

相關文章
相關標籤/搜索