JMeter基本元素簡介
一、測試計劃
測試計劃對象有一個複選框叫做“Functional Testing”(函數測試模式),如果選中,它将使jmeter記錄服務端傳回的每一個樣例的資料,如果你在測試監聽器中選擇了一個檔案,資料将會寫到這個檔案。如果你正在運作一個很小的測試來確定jmeter配置正确,這是非常有用的,你的伺服器也傳回了希望的結果。得到的結論是,這個檔案會快速的變的很大,jmeter性能将受到影響。
如果你正在做壓力測試,這個選項建議關掉(它預設是關掉的)。
如果你沒有記錄資料到檔案,這個選項不會有效果。你也可以在監聽器中配置哪些字段要存儲。
image1
二、線程組
線程組元素是任何測試計劃的開始點。所有的控制器和樣本器必須在一個線程組下。其他元素,例如:監聽器可以直接放在測試計劃下,這樣的話,它将應用于所有的線程組。顧名思義,線程組元素控制着線程的數量,jmeter将使用這些線程執行你的測試。線程組的管理允許你做如下的事情:
- 設定線程的數量;
- 設定提升的周期;
-
設定執行測試的次數;
每一個線程都将獨立于其他線程,完整的、完全的執行測試計劃。多個線程被用來模拟并發連接配接到服務應用。提升周期告訴jmeter花費多長時間提升到所有的線程數,如果線程數設定為10,提升周期設定為100秒,jmeter将花費100秒喚起10個線程并且運作。每一個現場将在前一個線程開始10(100/10)秒後開始。如果有30個線程,提升周期設定為120,每一個連續的線程将會延遲4秒。提升周期需要足夠的長以避免測試開始時,巨大的工作負載,并且使得最後一個線程開始間隔第一個線程結束足夠的短。
提升周期 = 線程的數量做上下調整
預設的,線程組配置隻執行一次。線程組也提供了一個排程器。點選線程組底部的複選框,可以使額外的區域有效或失效,那些區域可以輸入測試的周期、啟動延遲、啟動開始時間和結束時間。你可以配置持續時間和啟動延遲控制每一個線程組的持續時間和多少秒後啟動。當測試開始後,jmeter将等待啟動延遲時間後,啟動啟動線程組中的線程,并且執行配置的持續時間。這兩個選項将覆寫掉配置的開始時間和結束時間。或者(雖然沒有推薦哪個更适合)你可以設定其他的兩個域,開始時間和結束時間。當測試開始以後,jmeter等待到達開始時間。在每一個周期的結尾,jmeter檢查結束時間是否已經到達,如果到了,運作将停止,否則,測試将繼續進行直到循環結束。
image2
三、控制器
jmeter有兩種類型的控制器:樣本器和邏輯控制器。他們駕馭着測試的程序。樣本器告訴jmeter發送請求給服務,例如:添加http請求樣本,如果你想jmeter發送http請求。你也可以通過給樣本器添加一個或多個配置元素定制請求。邏輯控制器讓你定制邏輯,jmeter使用這個邏輯決定什麼時候發送請求。例如:你可以添加交替邏輯控制器交替執行兩個http請求樣本。
3.1 樣本器
樣本器告訴jmeter發送請求給服務并且等待相應。他們按照在樹中出現的順序執行。控制器可以用來修改樣本器的重複次數。jmeter的樣本器包含:
- FTP Request
- HTTP Request (can be used for SOAP or REST Webservice also)
- JDBC Request
- Java object request
- JMS request
- JUnit Test request
- LDAP Request
- Mail request
- OS Process request
- TCP request
每一個樣本器都有幾個可以設定的屬性。你可以在測試計劃中添加一個或更多的配置元素定制樣本器。如果你打算發送同一種類型的多個請求到相同的服務,可以考慮使用預設的配置元素。每一個控制器都有一個或多個預設元素。記得為你的測試計劃添加一個監聽器來觀看和存儲每一個請求的結果到硬碟上。如果你對jmeter平台的響應的基本驗證感興趣,添加一個斷言器到樣本器。例如:壓力測試一個web應用,服務傳回一個成功的http響應碼,但是頁面可能有錯誤或者缺失了一部分。你可以添加斷言器确定http的标簽。通用的錯誤字元串等。jmeter讓你通過正規表達式建立斷言器。
image3
3.2 邏輯控制器
邏輯控制器可以改變來自子元素的請求順序。他們可以修改自己的請求,使jmeter重複請求。為了了解測試計劃中邏輯控制器的效果,看一下下面的測試樹:
image4
這個測試計劃的第一個事情就是隻執行一次的登入請求,随後的疊代将跳過這一步,這是僅執行一次控制器的效果。登入之後,下一個樣本器将加載搜尋頁,這是一個簡單的請求,沒有通過邏輯控制器。加載搜尋頁之後,我們想執行一次搜尋。實際上我們想執行兩個不同的搜尋,可是,我們想在兩次搜尋之間重新加載搜尋頁,我們可以通過4個簡單的http請求元素來執行(加載搜尋頁、搜尋A、加載搜尋頁、搜尋B)。在這裡,我們使用代替方案,使用交替控制器,它一次傳遞一個子請求通過測試,它保持着子元素的順序。交替兩個子請求可能過于頻繁了,但它也可以很容易的有8個,或者20個子請求。
提醒一下,http預設請求 是屬于交替控制器的,設想一下,搜尋A和搜尋B共享相同的路徑資訊,兩個搜尋請求,命中相同的後端搜尋引擎。相比配置兩個相同資訊的http樣本器,我們可以抽象出資訊到一個單一的配置元素。當交替控制器傳遞請求時,它會用http預設請求中的值去填充空白項。是以我們将那些請求的PATH項空白,把這些資訊放到配置元素中。這充其量隻是一個小小的好處,但是它展示了這個特性。
樹中的下一個請求是另外一個http預設請求,這次是添加到線程組本身。線程組有一個内嵌的邏輯控制器。它使用這個元素像上面描述的那樣。它填充任何請求的空白資訊。它在web測試中非常的有用,在你所有的http請求樣本器中省去域名項,把這些資訊放到http預設請求元素中,并添加到線程組中。你可以在不同的服務上測試你的應用,而僅僅修改一個配置項,否則你要編輯每一個樣本器。
最後一個元素是http cookie管理器,cookie管理器應該添加到所有的web測試中,否則jmeter将會忽略cookie,将他添加到線程組的級别,我們確定了所有的http請求共享相同的cookie。
四、測試碎片
測試碎片元素是一個特殊類型的控制器,它存在測試計劃樹中,和線程組有相同的級别。它差別與線程組的地方就是除非它包含在子產品控制器或者include控制器,否則他不會被執行。
這個元素就是為了測試複用的。
五、監聽器
監聽器提供了通路jmeter收集的測試用例的資訊。圖結果監聽器在圖上繪制響應的次數。視圖結果樹展示請求和響應的細節,還可以顯示響應的xml和html。其他的監聽器提供總結和聚集的資訊。
另外的,監聽器可以将資料傳輸的檔案中為以後使用呢。jmeter的每一個監聽器都可以指定檔案的路徑。也有一個配置按鈕可以選擇哪個檔案儲存。監聽器可以在測試的任何地方添加,直接包含在測試計劃下。它自從它的這個級别以下的元素中擷取資料。
JMeter的一些基礎元素介紹完了,下一篇将介紹如何使用。