目錄

一、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功能介紹

spacer.gif111.png

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發出請求后得到的服務器響應數據進行處理。一般用于提取響應中的特定數據,如用后置處理器中的正則表達式提取器對服務器返回的特定數據進行關聯操作。