運行jmeter.bat(在window平臺上)或jmeter(在unix平臺上)來運行JMeter。(運行成功后,會出現下面的界面)

測試計劃里的元件
測試計劃對象里有一個新的叫做“功能測試”的選擇框,。如果選中,JMeter將會記錄從每個服務器的每個樣本返回的數據。如果你在監(jiān)聽器里選擇一個文件,那么這些返回的數據會被寫入這個文件。如果你在測試是否JMeter被正確配置和服務器是否返回期望的結果,這是很有用的。結果是記錄返回數據的文件將會很快變的巨大,接著JMeter的性能也會降低。如果你在做壓力測試,這個選項應該關閉。(它默任是關閉的)
如果你沒有向文件中記錄數據,那么這個選項不會造成任何區(qū)別。
線程組
線程組元件是任何一個測試計劃的開始點。在一個測試計劃中的所有元件都必須在某個線程組下。顧名思義,線程組元件控制JMeter執(zhí)行你的測試計劃時候使用的線程數量。對線程組的控制允許你:
設置線程數
設置ramp-up period
設置測試要執(zhí)行的次數
每個線程將會完全獨立的運行測試計劃,互不干擾。多個線程用于模仿對服務器的并發(fā)訪問。
ramp-up period指示JMeter用于達到全部選擇的線程的時間。如果選擇了10個線程,并且ramp-up period是100秒,那么JMeter將使用100秒使10個線程啟動并運行。每個線程將在前一個線程啟動后10(100/10)秒后啟動。如果有30個線程并且ramp-up period是120秒,那么相繼的線程交間隔4秒。Ramp-up需要足夠長的時間來避免在開始測試時產生太大的負荷,并且有足夠短的時間使最后一個線程在第一個線程結束之前運行。(除非你想那樣做)開始的Ramp-up =線程數+必須的調節(jié)數,缺省情況下,線程組被配置為不確定的循環(huán)執(zhí)行它下面的元件。另外,你可以設置線程組在結束前循環(huán)的次數。如果次數設置為1,那么JMeter在停止前只執(zhí)行測試計劃一次。1.9版引入了一個測試運行行調度器,點擊線程組面板的下方的復選框來顯示兩個額外的字段,可以輸入運行開始和結束時間。當測試開始時,如果設置了調度器,JMeter將等待直到到了開始時間。在每個周期結束,JMeter將會檢查是否到達結束時間,如果是這樣的話,停止運行,否則測試繼續(xù)運行直到達到了重復限制。
2控制器
JMeter有兩種類型的控制器:取樣器和邏輯控制器。取樣器指示JMeter向一個服務器發(fā)送請求。例如,如果你想讓JMeter發(fā)送HTTP請求,那么添加一個HTTP請求器。你可以向一個取樣器中添加一個或多個配置元件來定制請求。查看取樣器獲得更多信息。邏輯控制器允許你定制JMeter何時發(fā)送請求。例如,你可以添加交替(Interleave)邏輯控制器來在兩個HTTP請求取樣器之間輪流。查看邏輯控制器獲得更多信息。
2.1 取樣器
取樣器指示JMeter向服務器發(fā)送請求。JMeter目前有如下取樣器:
FTP請求
HTTP請求
JDBC請求
JAVA對象請求
LDAP請求
SOAP/XML-RPC請求
WEB服務(SOAP)請求(Alpha Code)
每個取樣器有幾個可以設置的屬性。你可以向取樣器添加一個或多個配置元件來進一步的控制取樣器。除此之外,JMeter以你向樹中添加取樣器的順序發(fā)送請求。
如果你想向一個服務器發(fā)送同種類型(例如:HTTP請求)的多個請求??紤]使用缺省配置元件(Defaults Configuration Element)。每個控制器有一個或多個缺省元件(見下文)。
記得向線程組添加一個監(jiān)聽器來查看和/或存儲請求結果到磁盤。
如果想讓JMeter在請求的回復上做基本的驗證,添加一個斷言到請求控制器。例如,在對WEB應用做壓力測試時,服務器會返回一個成功的“HTTP回復”代碼,但頁面可能會有錯誤或缺少內容。你可以添加斷言來檢查某些特定的HTML標簽,一般的錯誤字符串,等等。JMeter允許你使用正則表達式創(chuàng)建這些斷言。
2.2 邏輯控制器
邏輯控制器允許你定制JMeter何時發(fā)送請求。邏輯控制器可能包話如下的子元件:取樣器(請求),配置元件,其它的邏輯控制器。邏輯控制器能夠更改它的子元件中的請求的順序。他們可以自己修改請求,使JMeter重復請求,等等。要理解邏輯控制器對測試計劃的影響,假設如下的測試樹:
測試計劃
線程組
僅一次控制器
登錄請求
加載搜索頁
交替控制器
搜索‘A’
搜索‘B’
默任HTTP請求
默任HTTP請求
Cookie管理器
這個測試首先是執(zhí)行登錄請求,它在整個測試過程中只執(zhí)行一次。后面的反復執(zhí)行將跳過它。這是由于使用了僅一次控制器。
登錄后,取樣器接著會加載搜索頁(想像一個用戶登錄進去,然后打開搜索頁來搜索信息這樣一個WEB應用。)這只是一個簡單的取樣器請求,沒有用任何邏輯控制器過濾。加載完搜索頁后,我們想搜索一下,事實上,我們想做兩種不同的搜索。然而,我們想在每個搜索之間重新加載搜索頁面。我們可以通過使用四個簡單的HTTP請求元件(加載搜索頁面,搜索‘A’,加載搜索頁面,搜索‘B’)?;蛘呤褂媒惶婵刂破?,它一次傳遞一個子請求到這個測試。按子元件的排列順序。交替2個子請求可能有點大材小用,但是如果有8或是20個子請求,那么它使用它將很簡單。注意HTTP默任請求是在交替控制器里。設想一下,“搜索A”和“搜索B”共享相同的目錄信息(一個規(guī)范的HTTP請求包括域,端口,方法,協議,路經,參數和一些其它可選選項)This makes sense-兩個搜索請求,都使用相同的后臺搜索引擎(我們可以暫說它是一個servlet或是cgi腳本)。勝于配置兩個使用相同路經信息的HTTP取樣器,我們能夠把信息提取到單獨的一個配置元件。當交替控制器把請求從“搜索A”傳遞到“搜索B”時,它會把HTTP默任請求配置元件值填在空白值里。因此我們把那些請求的路經信息置空,把那些信息放在配置元件里。在這個例子里,只利用一點它的優(yōu)勢,以后還來會再論述它。這個樹的下一個元件是另一個HTTP默任請求,這次單獨把它放在線程組里。線程組有一個內置的邏輯控制器,因些,它可以向上面說的那樣,精確的使用配置元件。它會填上空白處來傳遞任何一個請求。它在網站測試時,置空你所有的HTTP取樣器的域值,把那些信息放在HTTP默任請求元件里,然后加到線程組時特別有用。通過這樣做,你可以在不同的服務器上通過簡單的改變你的測試計劃里的一個值來測試你的應用。否則,你不得不在每個取樣器,每個值修改一次。
最后一個元件是HTTP Cookie管理器。你因該在所有的網站測試里添加一個Cookie管理器,否則JMeter會忽略Cookie。通過添加它到線程組這一層,我們可以確保所有的HTTP請求可以共享相同的Cookie。你可以添加多個邏輯控制器來達到各種不同的結果??磧戎眠壿嬁刂屏斜?。
3.監(jiān)聽器
當JMeter運行時,監(jiān)聽器可以提供訪問JMeter所收集的關于測試用例的信息。圖像結果監(jiān)聽器在一個圖表里繪制響應時間。查看結果樹監(jiān)聽器具體的顯示取樣器的請求和響應,然后以HTML和XML格式顯示出來。其它的監(jiān)聽器提供匯總或組合信息。此外,監(jiān)聽器能處理一個為日后所用,收集到一個文件里的數據。在JMeter里的每個監(jiān)聽器都可以指定一個文件,用來存儲數據。你可以在測試的任何地方添加監(jiān)聽器。它們只會收集從這個元件開始到這一層最低層的數據。JMeter自帶很多有趣的監(jiān)聽器。
4.定時器
默任,JMeter線程發(fā)送出的每個請求是不間斷的。我們建意你通過添加一個可用的定時器到你的線程組里來指定延遲時間。如果你不添加延時,JMeter可能在較短的時間內發(fā)送大量的請求致使你的服務器癱瘓。定時器將導致JMeter在線程組里,在每個請求間,延遲一定時間。如果你想在一個線程組里添加一個以上的定時器,JMeter會在執(zhí)行你所應用的那個取樣器之前累加所有的計時器,然后以那累加后的時間來做停頓。
5.斷言
斷言允許你斷言從被測的服務器端接收到的響應的事實。使用斷言,你能“根本上測試”你的應用返回的你預期的結果。例如,你可以斷言一個查詢將返回包括一些特定文本的記錄。這個文本可能是PERL格式的正態(tài)表達式,并且你可以指明這個返回將包括文本或它應該可能匹配整個反應。你可以添加斷言到任意一個取樣器里,例如,你可以添加斷言到一個HTTP請求來檢查文本“</HTML>”。JMeter會檢查這個文本是否在HTTP響應里,如果JMeter找不到,它將把這個請求標記為“失敗的請求”。要查看斷言結果,添加斷言監(jiān)聽器到這個線程組。
6.配置元件
配置元件工作和取樣器很接近,盡管它不能發(fā)送請求(HTTP代理服務器除外),它可以補充或修改請求。只有在你放置元件的樹分枝里面,才能訪問配置元件。例如,如果你把HTTP Cookie管理器放在一個簡單邏輯控制器里,那么只有你放在簡單邏輯控制器里的HTTP請求控制器才能訪問這個Cookie管理器(見圖1)?!熬W頁1”和“網頁2”可以訪問這個Cookie管理器,但“網頁3”則不行。并且,在樹分枝里的配置元件比在父級分枝同樣的元素有更高的優(yōu)先權。例如,我們定義兩個HTTP默任請求元件“默任網頁1”和“默任網頁2”。因為我們把“默任網頁1”放在循環(huán)控制器里,只有“網頁2”可以訪問它。因為我們把它放在線程組里,其它HTTP請求將使用“默任網頁2”。

圖1-實驗計劃顯示配置元件的Accessability
7.前置處理器
前置處理器在取樣器請求前執(zhí)行一些操作。如果前置處理器附有取樣器元件,那么它將先于這個取樣器元件執(zhí)行。前置處理器常用于在取樣器元件運行前修改它的設置,或是更新從響應文本里投取不出來的變量。當執(zhí)行前置處理器時,再具體參看作用范圍規(guī)則。
8.后置處理器
后置處理器在取樣器請求后執(zhí)行一些操作。如果后置處理器附有取樣器元件,它將在那個取樣器元件運行之后運行。后置處理器多用于處理響應數據,從里面抽取出有價值的東西。當執(zhí)行后置處理器時,再具體參看作用范圍規(guī)則。
9.執(zhí)行順序
1. 定時器–如果有的話
2. 取樣器
3. 后置處理器(除非SampleResult是空)
4. 斷言(除非SampleResult是空)
5. 監(jiān)聽器(除非SampleResult是空)