這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Apache JMeter應用程式是開源軟體,100%的純Java應用程式,旨在載入測試功能行為和測量效能。它最初設計用於測試Web應用程式,但已經擴充了其他測試功能。
Jmeter能做什嗎?
Apache JMeter可用於測試靜態和動態資源,WebLive App程式的效能。它可用於類比伺服器,伺服器組,網路或對象的重負載,以測試其強度或分析不同負載類型下的整體效能。
Apache JMeter功能包括:
- 針對許多不同的應用程式/伺服器/協議類型進行負載和效能測試:
- Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.net, …)
- SOAP / REST Webservices
- FTP
- 通過JDBC串連的Database
- LDAP
- 通過JMS的面向訊息的中介軟體(MOM)
- 郵件 - SMTP(S)、POP3(S)和IMAP(S)
- 本機命令或shell指令碼
- TCP
- Java對象
- 全功能的測試IDE,允許測試計劃的快速錄製(瀏覽器或本地應用),構建和調試。
- 在任意Java相容的作業系統(Linux、Windows、Mac OSX,等等)上使用命令列模式(非GUI/headless模式)載入測試
- 具有完整且即時的動態HTML報告
- 通過從最流行的響應格式(HTML、Json、XML或其它文字格式設定)中提取資料的能力,輕鬆地進行關聯
- 完整的可擴充性和100%的java純度
- 完整的多線程架構允許通過許多線程進行並發採樣,並通過單獨的線程組同時採樣不同的功能。
- 緩衝和離線分析/重播測試結果
- 高可擴充核心:
- 可插拔的Samplers(取樣器)實現無限制的測試能力;
- 可程式化的Samples(取樣器)(JSR223相容語言,如Groovy和BeanShell);
- 可以使用可插拔的timers(定時器)選擇多種負載統計;
- 資料分析和可視化外掛程式具有極大的可擴充性和個人化功能;
- 可以使用函數為測試提供動態輸入或提供資料操作;
- 通過第三方開源庫如Maven、Graddle和Jenkins,輕鬆實現持續整合。
jmeter不能做什嗎?
就目前的工作上的業務,使用的是tcp的私人協議。介面測試載入器從最初至現在,由不同的人用不同的語言寫過多個版本(雛形),光是java版本的就有三個,還有perl版本的,python版本的,目前較為完善的是golang版本的,它也兼作了效能測試工具。
雖然是迄今為止最完善的,但依然有許多的弊端,諸如:
編寫者不能以此工具的維護為第一優先任務,因而會耽誤測試工期;
編寫者請假、離職等因素導致工具的開發和維護受到影響;
工具本身存在一些設定上的弊端;
工具本身存在bug、有效能上的瓶頸;
……
基於上述,我時常想,究竟有沒有現成的壓測工具支援對私人協議進行介面測試和效能測試?如果不能直接支援,需要解決哪些問題?私人協議的測試,在“使用成熟的工具”和“自行編寫工具”之間,哪個更可靠,哪個更有價值呢?等等。
就拿JMeter舉例,上面提到了那麼多,只是知道jmeter很強悍,支援的協議類型和測試情境很多,不僅可以進行效能測試,還支援功能測試。然而,若不是能熟練使用Jmeter,熟悉相關協議,即便有了真實的情境,也不知道使用可以用Jmeter來解決問題,以及該怎麼使用JMeter。
所以,無論是從正面還是反面,都應該掌握JMeter,掌握它支援的各種協議和情境的相關知識,掌握介面測試和效能測試的相關概念和技能。
jmeter不是瀏覽器
JMeter不是瀏覽器,因為它工作在協議層。就web-service和remote services而言,Jmeter看起來像是一個瀏覽器(或多個瀏覽器);然而,Jmeter不會執行瀏覽器支援的所有操作。
尤其地,JMeter不會執行HTML頁面中的js,也不會像瀏覽器那樣渲染HTML頁面(可以將HTML作為響應查看,但是時間不包含在任何samples(樣本)中,並且一次只顯示一個線程中的一個樣本)。
教程和更多資訊
Jmeter有著龐大且詳實的官方文檔——http://jmeter.apache.org/index.html,這是我後續會花大量精力研讀和實踐的資訊來源。
敬請期待……