Apache JMeter控制器

JMeter有兩種類型的控制器:取樣器和邏輯控制器。

取樣器指示JMeter向一個服務器發送請求。例如,如果你想讓JMeter發送HTTP請求,那么添加一個HTTP請求器。你可以向一個取樣器中添加一個或多個配置元件來定制請求。查看取樣器獲得更多信息。

邏輯控制器允許你定制JMeter何時發送請求。例如,你可以添加交替(Interleave)邏輯控制器來在兩個HTTP請求取樣器之間輪流。查看邏輯控制器獲得更多信息。

2.1 取樣器

取樣器指示JMeter向服務器發送請求。JMeter目前有如下取樣器:

1、FTP請求
2、HTTP請求
3、JDBC請求
4、JAVA對象請求
5、LDAP請求
6、SOAP/XML-RPC請求
7、WEB服務(SOAP)請求(Alpha Code)

每個取樣器有幾個可以設置的屬性。你可以向取樣器添加一個或多個配置元件來進一步的控制取樣器。除此之外,JMeter以你向樹中添加取樣器的順序發送請求。

如果你想向一個服務器發送同種類型(例如:HTTP請求)的多個請求??紤]使用缺省配置元件(Defaults Configuration Element)。每個控制器有一個或多個缺省元件(見下文)。

記得向線程組添加一個監聽器來查看和/或存儲請求結果到磁盤。

如果想讓JMeter在請求的回復上做基本的驗證,添加一個斷言到請求控制器。例如,在對WEB應用做壓力測試時,服務器會返回一個成功的“HTTP回復”代碼,但頁面可能會有錯誤或缺少內容。你可以添加斷言來檢查某些特定的HTML標簽,一般的錯誤字符串,等等。JMeter允許你使用正則表達式創建這些斷言。

2.2 邏輯控制器

邏輯控制器允許你定制JMeter何時發送請求。邏輯控制器可能包話如下的子元件:取樣器(請求),配置元件,其它的邏輯控制器。邏輯控制器能夠更改它的子元件中的請求的順序。他們可以自己修改請求,使JMeter重復請求,等等。

要理解邏輯控制器對測試計劃的影響,假設如下的測試樹:

1、測試計劃
2、線程組
3、僅一次控制器
4、登錄請求
5、加載搜索頁
6、交替控制器
7、搜索‘A’
8、搜索‘B’
9、默任HTTP請求
10、默任HTTP請求
11、Cookie管理器

這個測試首先是執行登錄請求,它在整個測試過程中只執行一次。后面的反復執行將跳過它。這是由于使用了僅一次控制器。

登錄后,取樣器接著會加載搜索頁(想像一個用戶登錄進去,然后打開搜索頁來搜索信息這樣一個WEB應用。)這只是一個簡單的取樣器請求,沒有用任何邏輯控制器過濾。

加載完搜索頁后,我們想搜索一下,事實上,我們想做兩種不同的搜索。然而,我們想在每個搜索之間重新加載搜索頁面。我們可以通過使用四個簡單的HTTP請求元件(加載搜索頁面,搜索‘A’,加載搜索頁面,搜索‘B’)。或者使用交替控制器,它一次傳遞一個子請求到這個測試。按子元件的排列順序。交替2個子請求可能有點大材小用,但是如果有8或是20個子請求,那么它使用它將很簡單。

注意HTTP默任請求是在交替控制器里。設想一下,“搜索A”和“搜索B”共享相同的目錄信息(一個規范的HTTP請求包括域,端口,方法,協議,路經,參數和一些其它可選選項)This makes sense-兩個搜索請求,都使用相同的后臺搜索引擎(我們可以暫說它是一個servlet或是cgi腳本)。勝于配置兩個使用相同路經信息的HTTP取樣器,我們能夠把信息提取到單獨的一個配置元件。當交替控制器把請求從“搜索A”傳遞到“搜索B”時,它會把HTTP默任請求配置元件值填在空白值里。因此我們把那些請求的路經信息置空,把那些信息放在配置元件里。在這個例子里,只利用一點它的優勢,以后還來會再論述它。

這個樹的下一個元件是另一個HTTP默任請求,這次單獨把它放在線程組里。線程組有一個內置的邏輯控制器,因些,它可以向上面說的那樣,精確的使用配置元件。它會填上空白處來傳遞任何一個請求。它在網站測試時,置空你所有的HTTP取樣器的域值,把那些信息放在HTTP默任請求元件里,然后加到線程組時特別有用。通過這樣做,你可以在不同的服務器上通過簡單的改變你的測試計劃里的一個值來測試你的應用。否則,你不得不在每個取樣器,每個值修改一次。

最后一個元件是HTTP Cookie管理器。你因該在所有的網站測試里添加一個Cookie管理器,否則JMeter會忽略Cookie。通過添加它到線程組這一層,我們可以確保所有的HTTP請求可以共享相同的Cookie。

你可以添加多個邏輯控制器來達到各種不同的結果。看內置邏輯控制列表。

3. 監聽器

當JMeter運行時,監聽器可以提供訪問JMeter所收集的關于測試用例的信息。圖像結果監聽器在一個圖表里繪制響應時間。查看結果樹監聽器具體的顯示取樣器的請求和響應,然后以HTML和XML格式顯示出來。其它的監聽器提供匯總或組合信息。

此外,監聽器能處理一個為日后所用,收集到一個文件里的數據。在JMeter里的每個監聽器都可以指定一個文件,用來存儲數據。

你可以在測試的任何地方添加監聽器。它們只會收集從這個元件開始到這一層最低層的數據。

JMeter自帶很多有趣的監聽器。

4. 定時器

默任, JMeter線程發送出的每個請求是不間斷的。我們建意你通過添加一個可用的定時器到你的線程組里來指定延遲時間。如果你不添加延時,JMeter可能在較短的時間內發送大量的請求致使你的服務器癱瘓。

定時器將導致JMeter在線程組里,在每個請求間,延遲一定時間。

如果你想在一個線程組里添加一個以上的定時器,JMeter會在執行你所應用的那個取樣器之前累加所有的計時器,然后以那累加后的時間來做停頓。

5. 斷言

斷言允許你斷言從被測的服務器端接收到的響應的事實。使用斷言,你能“根本上測試”你的應用返回的你預期的結果。

例如,你可以斷言一個查詢將返回包括一些特定文本的記錄。這個文本可能是PERL格式的正態表達式,并且你可以指明這個返回將包括文本或它應該可能匹配整個反應。

你可以添加斷言到任意一個取樣器里,例如,你可以添加斷言到一個HTTP請求來檢查文本“</HTML>”。JMeter會檢查這個文本是否在HTTP響應里,如果JMeter找不到,它將把這個請求標記為“失敗的請求”。

要查看斷言結果,添加斷言監聽器到這個線程組。

6. 配置元件

配置元件工作和取樣器很接近,盡管它不能發送請求(HTTP代理服務器除外),它可以補充或修改請求。

只有在你放置元件的樹分枝里面,才能訪問配置元件。例如,如果你把HTTP Cookie管理器放在一個簡單邏輯控制器里,那么只有你放在簡單邏輯控制器里的HTTP請求控制器才能訪問這個Cookie管理器(見圖1)?!熬W頁1”和“網頁2”可以訪問這個Cookie管理器,但“網頁3”則不行。

并且,在樹分枝里的配置元件比在父級分枝同樣的元素有更高的優先權。例如,我們定義兩個HTTP默任請求元件“默任網頁1”和“默任網頁2”。因為我們把“默任網頁1”放在循環控制器里,只有“網頁2”可以訪問它。因為我們把它放在線程組里,其它HTTP請求將使用“默任網頁2”。

![


QQDQKMHKEQ[QVYM38UHQWH8.png](http://upload-images.jianshu.io/upload_images/2667804-6cf8779ce1d78427.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

圖1-實驗計劃顯示配置元件的Accessability

7. 前置處理器

前置處理器在取樣器請求前執行一些操作。如果前置處理器附有取樣器元件,那么它將先于這個取樣器元件執行。前置處理器常用于在取樣器元件運行前修改它的設置,或是更新從響應文本里投取不出來的變量。當執行前置處理器時,再具體參看作用范圍規則。

8. 后置處理器

后置處理器在取樣器請求后執行一些操作。如果后置處理器附有取樣器元件,它將在那個取樣器元件運行之后運行。后置處理器多用于處理響應數據,從里面抽取出有價值的東西。當執行后置處理器時,再具體參看作用范圍規則。

9. 執行順序

  1. 定時器 – 如果有的話
  2. 取樣器
  3. 后置處理器(除非SampleResult是空)
  4. 斷言(除非SampleResult是空)
  5. 監聽器(除非SampleResult是空)

五. 建立測試計劃

在這一部分,你將學到如何創建一個基礎的測試計劃來測試網站。你將會創建5個用戶向Jakarta網站上的兩個網頁發送請求。當然,你也可以讓每個用戶發送兩次。這樣,總的請求數為:(5個用戶)X(2個請求)X(重復2次)=20個HTTP請求。要創建這個測試計劃,你需要使用下面的元件:

線程組,HTTP請求,HTTP默任請求和圖形結果。

要創建更高級的測試計劃,參考創建一個高級的測試計劃網站。

5.1 添加用戶

處理每個JMeter測試計劃的第一步就是添加線程組元件。這個線程組會告訴JMeter你想虛擬的用戶數量,發送請求的頻率以及發送請求的數量。

繼續,首先,選中測試計劃,右鍵單擊選擇添加菜單,然后再選擇線程組。

這時你應該可以看到測試計劃下面有一個線程組了。如果你看不到這個元件,那么點擊測試計劃則會展開測試計劃樹。

下一步,你需要修改缺省的值,如果你還沒有選中它的話,在這個樹里選中線程組。你現在應該可以在JMeter窗口的右邊看到線程組控制面板(見下圖)。

Paste_Image.png

首先給這個線程組起一個有意義的名字,在名字域里,輸入Jakarta Users.

然后,在線程數里輸入5.

下一個輸入域,Ramp_Up Period,保持不變。這個值是告訴JMeter在開始各個線程之間延遲多長時間。例如,如果你輸入5,JMeter將會在5秒前完成該線程里的所有操作。因此,如果我們有5個線程和5秒Ramp_Up Period,延遲在開始線程之間會是1 秒(5個線程/5秒=1秒)。如果你設置此值為0,JMeter則會立刻開始此線程的所有操作。

最后,清除循環次數的復選項“永遠”,然后輸入2。這個值是告訴JMeter你的測試重復多少次。如果你輸入1,那么JMeter只會運行一次你的測試。要不停的運行你的測試計劃,選中“永遠”復選框。

在大多應用里,你必須手工接受你在控制面板里做的改動,但是,在JMeter里,控制面板能自動地接受你的變動如同你改動它們一樣。如果你更改元件的名字,樹將在你離開控制面板后被更新,以新文本顯示(例如,當選擇其它樹元件)。

完整的Jakarta Users線程組見下圖。

Paste_Image.png

5.2 增加缺省的HTTP請求屬性

我們已經定義了用戶,現在要定義他們將要執行的任務了。在這一部分,你將為你的HTTP請求指定缺省設置。然后,在5.3節,你將添加使用一些你設置的缺省設置的HTTP請求元件。

從選中Jakart Users這個元件開始,右鍵單擊選擇“添加”菜單,然后選擇“配置元件”->HTTP請求默任值。然后,選中這個元件看一下控制面板(見下圖)。

![
![


%UGDQ)2K65RE{3BQ1B[MZ7B.png](http://upload-images.jianshu.io/upload_images/2667804-90e99f3c8e2b4e3a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

跟大多數JMeter元件一樣,HTTP請求默任值面板也有一個你可以更改的名稱域。在這個例子,保持默任值不變。

跳過下一個WEB服務器名字和IP的域,對于你現在正在創建的這個測試計劃,所有的HTTP請求都發送到相同的WEB服務器,jakarta.apache.org。輸入這個域名。這個唯一一個我們將指定的缺省值,因些剩下的域都保持默任不變。

HTTP請求默任值元件不會告訴JMeter去發一個HTTP請求。它只是簡單的定義HTTP請求元件所用的一些缺省值。

下圖為完整的HTTP請求缺省元件

Paste_Image.png

5.3 增加Cookie支持

幾乎所有的網站應用程序都會使用Cookie支持,除非你的應用程序特別指定不使用Cookie。要添加Cookie支持,可以簡單地在你的測試計劃中給每個線程組添加一個HTTP Cookie管理器。這樣會確保每個線程可以得到它自己的Cookie,但通過所有交互的HTTP請求對象共享。

要添加HTTP Cookie管理器,先選中線程組,然后可以通過“編輯”菜單或右鍵彈出菜單來選擇“添加”->“配置元件”->“HTTP Cookie管理器”。

5.4 增加HTTP請求

在這個測試計劃中,我們需要實現兩個HTTP請求。第一個就是Jakarta網站首頁(http://jakarta.apache.org/),每二個就是工程向導網頁(http://jakarta.apache.org/site/guidelines.html)。

JMeter按照它們在樹的出現的次序來發送請求。

首先給Jakarta Users元件添加第一個HTTP請求(添加->取樣器-> HTTP請求)。然后從樹中HTTP請求元件并修改正面的屬性(見下圖)。

1.更改名稱域為“主頁”。
2.設置路經為“/”。注意你不必要設計服務器的名稱域,因為你已經在HTTP請求默任元件中設定過了。

Paste_Image.png

接下來,添加每二個HTTP請求,然后編輯下面的屬性。
1.更改名稱域為“項目方針”。
2.設置路經為“/site/guidelines.html”。

Paste_Image.png

5.5 添加監視器來查看測試結果

最后一個你需要給測試計劃添加的元件是監視器。這個元件用來將所有的HTTP請求結果存儲到一個文件中并且顯現出數據的可視模型。

選擇Jakarta Users元件,然后添加一個圖形結果監視器(添加->監視器->圖形結果)。然后,你需要指定一個目錄和一個輸出的文件名。你可以輸入到文件名域里,也可以選擇“瀏覽”按鈕來瀏覽目錄并輸入文件名。

Paste_Image.png

5.6保存測試計劃

盡管這并不必要,但我們還是建意你在運行測試計劃前將它保存在一個文件里面。要保存測試計劃,選擇菜單“文件”->“保存測試計劃”來保存。

JMeter允許你保存整個測試計劃樹,也可以只保存基中的一部分。要保存特別樹枝中的一些元件,首先選擇樹枝的起始元件,然后在右鍵彈出的菜單中選擇保存為菜單項。同樣的,也可以選擇合適的元件,然后選擇編輯菜單中的“另存為”。

5.7運行測試計劃

在 “運行” 菜單里選擇“啟動”。

如果測試運行正確,JMeter會在上方顯現一個綠色的長方形區域。當所有的測試結束時,它將會變成灰色。即使在你選擇了“停止”后,這個綠色的燈還將保持,直到所有的線程結束。

如果想在運行時停止測試計劃,選擇 “運行” 菜單里的“停止”。

如果你選擇了一個文件來保存你監聽器中的結果,那么你將有一個文件,它可以在任何的視圖中打開。每一個視圖將以它自己的樣子顯示結果。

相同的文件可以在多個視圖中打開,這是沒有問題的。在測試運行期間,JMeter確信沒有例子被多次保存在同一個文件中。

六.Badboy

由于JMeter不支持錄制,需要手工一點一點添加,所以對于新手可能很難做到位或是做好.現在常用的方法是使用Badboy錄制,然后生成JMeter腳本,然后用JMeter打開,添加監聽器來查看結果.

6.1下載Badboy
通過Badboy的官方網站下載Badboy的最新版本.
Badboy: http://www.badboy.com.au/

6.2安裝Badboy
安裝Badboy如同一般的Windows應用程序一樣,一路點”下一步”最后點”完成”就安裝好了.安裝完后在開始菜單及桌面都看不到,你需要到Badboy的安裝目錄下,找Badboy.exe,直接雙擊它即可啟動Badboy.

6.3啟動Badboy.
啟動Badboy,你可以看到下面的界面.

Paste_Image.png

6.4使用Badboy
在地址欄(圖中用紅色框住部分)中輸入你需要錄制的Web應用的URL,這里我們以http://www.baidu.com為例,并點擊GO按鈕開始錄制.

開始錄制后,你可以直接在Badboy內嵌的瀏覽器(主界面的右側)中對被測Web應用進行操作,所有的操作都會被記錄在主界面左側的編輯窗口中,在這個例子中,我們在Baidu中搜索Badboy.

錄制完成后,點擊工具欄中的”停止錄制”按鈕,完成腳本的錄制.

最后選擇”File”->”Export to JMeter”菜單,來導出為JMeter腳本格式.

然后啟動JMeter來打開你剛剛保存的測試腳本.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 主要文體來自 CDNS:https://www.cnblogs.com/ceshisanren/p/5639895...
    Amano閱讀 11,079評論 3 27
  • 在使用Jmeter進行接口的性能測試時,由于Jmeter 是JAVA應用,對于CPU和內存的消耗比較大,所以,當需...
    燕京博士閱讀 4,206評論 0 16
  • 1 Jmeter安裝配置 使用Jmeter前首先要安裝JDK,配置JDK環境變量。Jmeter不需要安裝,下載后...
    茶小汐閱讀 2,970評論 0 8
  • 一、基本概念 1.測試計劃是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器。 2.線程...
    Leo_0626閱讀 2,317評論 0 10
  • 1. JMeter 測試計劃 測試計劃 使用JMeter進行測試的起點,是其它JMeter測試元件的容器。 線程組...
    alamZheng閱讀 3,378評論 0 7