另一種不用寫程式就完成測試的工具 — JMeter
這篇文章主要說明另一種不用寫程式就可以完成自動化測試, 效能測試的工具
當然這個工具也是免費, 同時也受到業界廣泛的使用, 求才求職的關鍵字 Jmeter
筆者將用10個問與答的方式介紹這個工具, 有其他問題歡迎交流
1. Jmeter自動化測試的原理是什麼?
Jmeter 主要透過發送Http Request 與驗證 http Response來達成自動化測試
舉例來說, 使用者登入的過程如果要用Jmeter 自動化測試
可以透過傳送一連串的 Http Request 的動作來達到
2. Jmeter是瀏覽器嗎?
Jmeter 不是瀏覽器
Jmeter 主要的目標是傳送 Http Request
因此Jmeter 沒有也不需要呈現或是執行回傳的 Http request
圖形顯示, JavaScript執行, 畫面表格的顯示等, Jmeter 不會用來顯示
(儘管可以事後設定顯示檢查回傳的 Http Request)
3. 為什麼 JMeter 廣泛的被使用在效能測試?
- 免費. 社群活耀 不斷的有更新版本
- 跨平台, 只要有Java runtime就可以執行
- 安裝執行容易. 整個 ZIP包. 解壓縮就可以執行 不需要額外複雜的設定與安裝程序
- 支援的通訊協定廣泛. 不只有 Http/Https 可以使用, 還支援許多其他的通訊協定
- Web – HTTP, HTTPS
- SOAP / REST
- FTP
- Database via JDBC
- LDAP
- Message-oriented middleware (MOM) via JMS
- Mail – SMTP(S), POP3(S) and IMAP(S)
- Native commands or shell scripts
- TCP
4. Jmeter 可以安裝額外擴充功能嗎
http://jmeter-plugins.org/downloads/all/
可以的. Jmeter 只要下載 Jmeter plugins 至相對應的目錄中. 就可以有額外的功能
最為推薦的就是額外新增的許多圖表功能, 這些圖表會讓效能分析結果更容易閱讀
- Response Codes per Second
- Response Latencies Over Time
- Connect Times Over Time
- Bytes Throughput Over Time
- Extracted Data Over Time
- DbMon Sample Collector
- JMX Monitoring Collector
- Response Times vs Threads
- Transaction Throughput vs Threads
- Response Times Distribution
- Response Times Percentiles
5. Jmeter與 Selenium進行自動化測試又什麼差異
Jmeter | Selenium |
不執行網頁內容 JavaScript, CS等 | 啟動瀏覽器
讓瀏覽器執行 JavaScript, CS |
主要傳送 Http Request | 主要定位網頁元件
模擬人點選網頁元件完成自動化 |
驗證 Http Response的文字內容 | 驗證網頁元件是否存在 |
6. Jmeter 與 LoadRunner的差異?
這個問題實質上大家更關心的是LoadRunner 也是業界普遍使用商用的工具
會不會有哪些功能因為 Jmeter免費所以做不到?
以最終要達到的效能測試來看, 其實兩者不會有差異
LoadRunner 畢竟是商用軟體 所以使用上與學習門檻互許會更低
參考: http://www.anztb.org/userfiles/files/JMeter%20LoadRunner%20Head%20to%20Head%2030%20Nov%202010%5D.pdf
7. Jmeter 效能測試的限制
Jmeter 主要透過啟動許多的 threads 來達到效能測試
因此, 可以啟動的 threads 取決於電腦的效能與記憶體大小
一般來說建議一台電腦開啟 300 threads 來進行效能測試
8. Jmeter 可以用來測試手機程式嗎
由於 Jmeter 是模擬 http request, 因此如果手機程式是遠端 web的 mobile 版本
可以透過 Jmeter 修改 User Agent 的方式發送 http request 進行效能測試
9. Jmeter 支援錄製與重放的測試嗎
Jmeter 本身可以成為 proxy模式, 錄製使用者所有的 Http Request自動產生相對應的 Jmeter scripts
或者可以使用另外一個工具 BodBoy 將錄製的結果, 另外儲存為 Jmeter Script檔案
10. Jmeter 可否在指令下透過 Jenkins CI 來執行?
jmeter -n -t your_test_script.jmx |
其他方式還可以使用 Marven, Ant來執行, 或是透過 Java 來執行
參考: https://www.blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui