自動化與效能測試的利器 – 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. 舉下列幾個例子: