Apache JMeter 是Apache組織的開放源代碼項目,是一個100%純Java桌面應用,用於壓力測試和性能測試。java
1.可以對HTTP和FTP服務器進行壓力和性能測試,也能夠對任何數據庫進行一樣的測試shell
2.徹底的可移植性和100%的純java數據庫
3.徹底Swing的輕量級組建支持編程
4.徹底多線程框架容許多個線程併發取樣和經過單獨的線城組對不一樣的功能同時取樣緩存
5.精心的GUI設計容許快速操做和更精確的計時服務器
6.緩存和離線分析/回放測試結果cookie
7.高可擴展性:session
可連接的取樣器容許無限制的測試能力多線程
各類負載統計表和可鏈接的計時器可供選擇併發
數據分析和可視化插件提供了很好的可擴展性以及個性化
具備提供動態輸入到測試的功能
支持腳本編程的取樣器
1.負載發生器:用於產生負載,一般以多線程或者多進程的方式模擬用戶行爲
2.用戶運行器:一般是一個腳本運行引擎,用戶運行期附加在線城或進程上,根據腳本要求模擬指定的用戶行爲。
3.資源生成器:用於測試過程當中服務器、負載機的資源數據。
4.報表生成器:根據測試中得到的數據生成報表,提供可視化的數據顯示方式
1) 性能測試工具---協議
2) 自動化測試工具---對象識別技術
1) 查看jmter.log
在bin目錄下。
2) log_leve.jmeter屬性
修改jmeter的log級別。默認時INFO 。修改成DEBUG級別將會更詳細。只有調試時會開啓DEBUG模式。
3) Java虛擬機啓動配置
Jmeter 修改內存可在Jmeter.bat中修改HEAP,以下圖:
TestPlan(測試計劃):用來描述一個性能測試,包含與本次性能測試全部相關的功能。也就是說本次的性能測試的全部內容是基於一個測試計劃的
下面看一下一個測試計劃主要有拿些功能模塊(右鍵「測試計劃」彈出菜單)。
Threads(users)線程 用戶
1.SetUp thread group (SetUp 線程組)
一種特殊類型的線程組,可用於執行預測試操做。這些線城的行爲徹底像一個正常的線程組元件。不一樣的是,這些類型的線程執行測試前進行按期線程組的執行。
2.tearDown線程組
一種特殊的線程組,可用於執行測試後動做。這些線城的行爲徹底像一個正常的線程組元件。不一樣的是,這些類型的線程執行測試後執行按期線程組。
3.線程組
這個就是咱們一般添加運行的線程。通俗的講一個線城組,能夠看做一個虛擬用戶組, 線程組中的每一個線程均可以理解爲一個虛擬用戶。線程組中包含的線程數量在執行過程當中是不回發生改變的。
測試片斷元素是控制器上的一個種特殊的線程組,它在測試樹上與線程組處於一個層級。它與線程組有所不一樣,由於它不被執行,除非它是一個模塊控制器或者是被控制器所引用時纔會被執行。
做用:
1.在腳本開發過程當中能夠用來備份元件。
2.其下的元件能夠被模塊控制器調用,咱們能夠利用它來模塊化請求供模塊控制器調用。
取樣器(Sample)是性能測試中向服務器發送請求,記錄響應信息,記錄響應時間的最小單元,JMeter 原生支持多種不一樣的sampler ,如 HTTP Request Sampler 、 FTP Request Sample 、TCP Request Sample 、JDBC Request Sampler 等,每一種不一樣類型的 sampler 能夠根據設置的參數向服務器發出不一樣類型的請求。(在jmeter 的全部sampler 中,Java Request Sampler 和 Beanshell Request Sampler 是兩種特殊的可定製的 Sampler ,後面會深刻討論。)
邏輯控制器(Logic Controller)
邏輯控制器,包括兩類無件,一類是用於控制test plan 中 sampler 節點發送請求的邏輯順序的控制器,經常使用的有 若是(If)控制器 、switch Controller 、Runtime Controller、循環控制器等。另外一類是用來組織可控制 sampler 來節點的,如 事務控制器、吞吐量控制器。
配置元件(Config Element)
配置元件(config element)用於提供對靜態數據配置的支持。CSV Data Set config 能夠將本地數據文件造成數據池(Data Pool),而對應於HTTP Request Sampler和 TCP Request Sampler等類型的配製無件則能夠修改Sampler的默認數據。(例如,HTTP Cookie Manager 能夠用於對 HTTP Request Sampler 的cookie 進行管理)
定時器(Timer)
定時器(Timer)用於操做之間設置等待時間,等待時間是性能測試中經常使用的控制客戶端QPS的手端。相似於LoadRunner裏面的「思考時間」。JMeter 定義了Bean Shell Timer、Constant Throughput Timer、固定定時器等不一樣類型的Timer。
前置處理器(Per Processors)
用於在實際的請求發出以前對即將發出的請求進行特殊處理。例如,HTTP URL重寫修復符則能夠實現URL重寫,當RUL中有sessionID 一類的session信息時,能夠經過該處理器填充發出請求的實際的sessionID 。
後置處理器(Post Processors)
用於對Sampler 發出請求後獲得的服務器響應進行處理。通常用來提取響應中的特定數據(相似LoadRunner測試工具中的關聯概念)。例如,XPath Extractor 則能夠用於提取響應數據中經過給定XPath 值得到的數據。
斷言(Assertions)
斷言用於檢查測試中獲得的相應數據等是否符合預期,斷言通常用來設置檢查點,用以保證性能測試過程當中的數據交互是否與預期一致。
監聽器(Listener)
這個監聽器可不是用來監聽系統資源的元件。它是用來對測試結果數據進行處理和可視化展現的一系列元件。 圖行結果、查看結果樹、聚合報告。都是咱們常常用到的元件。