開源性能測試工具JMeter快速入門(一)
一、JMeter簡介
二、JMeter功能介紹
三、JMeter腳本
四、關於JMeter小提示
一、JMeter簡介
1.定義
JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟件做壓力測試,它最初被設計用於Web應用測試,但後來擴展到其他測試領域。
1)它可以用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、DB、FTP 服務器, 等等。
2)JMeter 可以用於對服務器、網絡或對象模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。
3)JMeter能夠對應用程序做功能/回歸測試,通過創建帶有斷言的腳本來驗證程序是否返回了預期結果。為了最大限度的靈活性,JMeter允許
4)JMeter支持的協議有:Web(Http、Https)、SOAP、FTPd、JDBC、郵件、MongoDB、TCP、原生命令或Shell腳本
2.JMeter的優勢
1)可對任何DB進行壓力測試(通過JDBC)
2)純Java,可移植性強
3)輕量組件支持包(預編譯的JAR使用javax.swing.*)
4)多線程(多個線程並發或通過單獨的線程組對不同功能同時操作)
5)計時精確
6)緩存和離線分析,回放測試結果
7)完全開源,可對JMeter進行二次開發,增加業務對應所需的插件
3.JMeter不足
1)錄制功能操作不方便。需要第三方工具Badboy或使用Browser代理錄制
2)入門困難,同時網上學習資源較少
3)報表類型少,場景設計比LR復雜
4)不支持進程模式
5)大並發時的結果不準確。
二、JMeter功能介紹
1.測試計劃
啟動JMeter後,默認打開了一個測試計劃,一個完整的測試計劃劃包含一個或多個線程組、邏輯控制、取樣發生控制、監聽器、定時器、斷言和配置元件。
2.線程
相當於LR中的VUser,每個JMeter測試計劃的第一步就是添加線程組。在線程組裏設置並發用戶量、並發時間或並發次數、線程的啟動頻率。
JMeter的線程組有三種類型:
setup thread group: setup ,進行測試前的準備初始化工作,即init
teardown thread group:teardown,測試結束後的垃圾回收等清理工作,即end
thread group:最常用的線程組,相當於Action .一個線程相當於一個LR中的Vuser,這些線程在腳本運行過程中無法改變。
3.測試片段(Test Fragment)
測試片段元素像是控制器上的一種特殊的線程組,在測試樹上與線程組同級。但它不被執行,除非引用 。
4.取樣器Sampler
性能測試中向服務器發送請求並等待響應時間的最小單元,每個取樣器有不同的屬性可以編輯。
5.邏輯控制器
可自定義JMeter發送請求的行為邏輯 ,與Sampler結合使用可以模擬復雜的請求序列。常用的邏輯控制器有:IF Controller、While Controller、Runtime Controller、事務控制器、隨 機控制器、交替控制器、吞吐量控制器、模塊控制器等。
6.監聽器
對JMeter測試結果進行收集處理並進行可視化展現出的一系列元件,包括發送的請求數據、返回的結果數據、響應時間的統計、吞吐量、錯誤率、返回結果狀態等。常見的監聽器有:圖 形結果、查看結果樹、用表格查看結果、聚合報告等。
7.配置元件
維護Sampler需要的配置信息,並根據實際需要修改請求內容 。一般配置元件放在請求開始前。
8.定時器
即思考時間。一來為了真實地模擬用戶並發行為,二來控制每個線程間的請求間隔時間以減少服務器壓力。
9.斷言
即檢查點。壓力測試前提是功能正確。常用的斷言有:響應斷言、XML斷言、HTML斷言、XPath斷言。
10.前置處理器
用來修改請求的設置。eg.Http URL重寫修復符可實現URL重寫,當RUL中有sessionID一類的session信息時,可通過該處理器填充發出請求的實際sessionID
11.後置處理器
即關聯。用於對Sampler發出請求後得到的服務器響應數據進行處理。一般用於提取響應中的特定數據,如用後置處理器中的正則表達式提取器對服務器返回的特定數據進行關聯操作。
開源性能測試工具JMeter快速入門(一)