自動化與效能測試的利器 – JMeter

自動化與效能測試的利器 – JMeter

Apache JMeter

這篇文章主要說明 Jmeter 這個工具為什麼逐漸成為網站效能測試必備的工具,JMeter可以提供怎樣的網站自動化測試、效能測試、Restful API 測試與服務監控等。並且說明,JMeter 不可以做什麼、限制為何。以及目前市面上有哪些替代方案可以選擇。

 

JMeter 解決的商業問題

Jmeter 主要用來模擬各式的 Network Traffic 包含 HTTP, FTP, Java, LDAP…模擬這些 traffic 之後呢? 試想下列情境。

  • 網站在3000人登入並且使用的情況下,該網站的效能表現為何?網站是否會出現異常的狀況或是效能瓶頸為何?
  • HTTP Restful API 的 regression Automation testing
  • Service Availability monitoring。每 15 分鐘登入一次從日本、台灣、美國等區域 ,每次登入的時間是否在預期的反應時間內?
  • 網站由提供檔案上傳的功能時,模擬大量且持續的檔案上傳。網站是否會出現異常的狀況或是效能瓶頸為何?

也由於Jmeter 為 Opensource 免費,因此被廣泛的應用在自動化效能測試的領域

其他替代方案

除了Jmeter 之外,筆者接觸過的其他的方案還包含:

HP Loadrunner http://www8.hp.com/us/en/software-solutions/loadrunner-load-testing/

商用軟體目前比較廣泛使用的為 HP LoadRunner,

與Jmeter相比的話:HP LoadRunner 該使用者介面操作簡易,學習的門檻較低。唯一的缺點就是需要一筆投資。

JMeter 免費。會不會有些模擬的情境 JMeter 無法做到呢? 不會的。

 

ab Test http://httpd.apache.org/docs/2.2/programs/ab.html

ab test 這是一個簡單的工具,可以用來模擬http request.

與JMeter 相比的話,ab test 僅僅是簡單的http request 產生器。有許多情境無法做到,

例如:3000 人登入,這3000人是在10分鐘內,陸續開始完畢。其中有1000人是登入後瀏覽網頁A,有2000人都入後瀏覽網頁B.等

IXIA http://www.ixiacom.com/

IXIA 是網路封包測試的設備。功能強大。電信商用來模擬各式各樣網路流量的狀況。

將JMeter 相比,有些不公平。相對的 IXIA的設備相對是一大筆投資。

SOAPUI http://www.soapui.org/

SoapUI 也是 Http service 的測試。同樣也是 open source。

但是Soap UI 無法像 Jmeter 模擬許多效能測試的情境。

例如:3000 人登入,這3000人是在10分鐘內,陸續開始完畢。其中有1000人是登入後瀏覽網頁A,有2000人都入後瀏覽網頁B.等

自己寫程式 自己寫程式模擬當然彈性更大。

缺點是開發這樣的程式維護上最後通常會是一個問題。

 

Jmeter 的限制

說了這麼多 Jmeter 的好處,那麼Jmeter 有哪些限制?

  • Jmeter 不是瀏覽器:Jmeter 可以做到模擬瀏覽器的瀏覽行為,但是最終Jmeter 與瀏覽器還是有差異。例如瀏覽器Browser 會執行CSS, JavaScript,Jmeter不會。
  • Jmeter 效能瓶頸:每台電腦受限於 thread的限制,長時間最多僅可以模擬 200-300虛擬使用者(threads),長時間執行的結果Jmeter 本身也會 out of memory
  • Debug:Jmeter 在進行除錯的時候,相對有些”技巧” ,也表示需要一些學習門檻。

 

JMeter 測試報告

以終為始。那麼Jmeter 可以提供怎樣的測試報告結果呢?

由於JMeter 的定位比較像是模擬Browser,因此測試報告專注在於 end user 端的 response time。

而不是伺服器端的效能反映(雖然Jmeter 有額外的套件可以完成這件事情。但筆者不完全建議)。

Jmeter 的世界裡,測試報告稱為 Listener。通常我們看的是 Http Request 的 Response Time. 舉下列幾個例子:

Screenshot for View Results in Table

 

Screenshot for Aggregate Report

 

Screenshot for Graph Results

 

Screenshot for Aggregate Graph

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *