From Gossip@caterpillar

JUnit Gossip: 入門

首先請先至 JMeter網站 下載檔案,在撰寫本文時,所使用的是JMeter 2.2的版本,下載完檔案之解開檔案,在bin目錄下可以發現ApacheJMeter.jar,在Windows下可以直接double-click來開啟檔案,或是在文字模式下執行java -jar ApacheJMeter.jar來執行檔案。



JMeter中每次只能開啟一個測試計畫(Test Plan),一個測試計畫包括執行緒群組(Thread Group),一個執行緒群組可以發出數個執行緒,每個執行緒可以模擬一個使用者,您可以在測試計畫中加入取樣器(Sampler)、接聽器 (Listener)等,說明如下:

取樣器(Samplers) 可設定傳送請求至伺服器的元素,例如HTTP、HTTPS、FTP、SOAP、JDBC等請求。
設定元素(Configuration Elements) 如果有多個請求,而每個請求中包括了一些共同設定,則可以使用設定元素,而不必在個別的取樣器中設定。
計時器(Timers) 設定每個執行緒的請求之間的時間間隔,例如可以用來摸擬使用者請求、觀看與點選下一個頁面的行為。
接聽器(Listeners) 以各種表格、圖形或分析來觀看請求的回應結果。
邏輯控制器(Logic Controller)
可根據某些條件來判斷是否執行請求。
驗證(Assertions) 驗證回應是否符合預期的值。

在這邊以一個實際的例子,來示範如何使用JMeter測試Web頁面的回應,首先請在測試計畫上按滑鼠右鍵,執行「新增/執行緒群組」,接著在新增的執行緒群組上,按滑鼠右鍵,執行「新增/取樣/HTTP要求」:



上圖是假設對 http://caterpillar.onlyfun.net/Gossip/index.html 進行請求的一個範例設定,如果是動態Web應用程式,而您想要設定請求參數值,則可以在下面的「送出含參數的請求」中新增設定。

接著請在執行緒群組中,按右鍵執行「新增/接聽/結果圖形」以及「新增/接聽/彙整報告」,如圖所示:



接著要模擬使用者的請求,請選擇執行緒群組:



上圖中,顯示執行緒數量為15,這相當於模擬15個使用者對網站的請求,而啟動延遲(ramp-on period)設定為10秒,這表示這15個執行緒(使用者)會在10秒內陸續請求網站,迴圈次數設定為5,表示重複以上情境五次。

啟動延遲預設是0,也就是有開始就啟動所有的執行緒,不建議使用過小的啟動延遲,這會造成瞬間過高的峰值請求,合理的啟動延遲是根據點擊率來計算,例如預 計每秒會有10個點擊率,而您會有100個使用者(執行緒),則啟動延遲可以設定為100/10=10。過大的啟動延遲也不鼓勵,因為有可能在最後一個執 行緒啟動時,第一個執行緒早就結束了。

完成以上設定之後,請選擇「測試計畫」並執行選單上「檔案/儲存測試計畫」,之後執行選單上「執行/開始」,JMeter就會準備執行緒、發出請求、收集請求結果:





現在假設您要請求 http://caterpillar.onlyfun.net 下各個不同的頁面,則您可以在執行緒群組中,新增「設定元素/HTTP要求預設值」,設定相同的請求設定:



接著再「新增/取樣/HTTP要求」,假設分別請求 /Gossip/index.html 與 Gossip/CppGossip/CppGossip.html:



接著同樣的,您可以運行測試,預設的HTTP請求與取樣的HTTP請求將結合,彙整報告中會根據您設定的請求加以歸類:



在您的請求越來越多後,您可能想模擬每個使用者停下來觀看頁面,而後再點選頁面的行為,這時您可以使用計時器,例如「新增/計時器/一致隨機計時器」:



上圖的設定,模擬使用者大概二秒(2000)到三秒(因為隨機延遲1000)的時間觀看完頁面並點選下一個頁面的請求。