JMeter?介紹:?一個非常優秀的開源的性能測試工具。
優點:你用著用著就會發現它的重多優點,當然不足點也會呈現出來。
從性能工具的原理劃分:
Jmeter工具和其他性能工具在原理上完全一致,工具包含4個部分:
(1)負載發生器:用于產生負載,通常以多線程或是多進程的方式模擬用戶行為。
(2)用戶運行器:通常是一個腳本運行引擎,用戶運行器附加在線程或進程上,根據腳本要求模擬指定的用戶行為。
(3)資源生成器:用于生成測試過程中服務器、負載機的資源數據。
(4)報表生成器:根據測試中獲取的數據生成報表,提供可視化的數據顯示方式。
測試計劃元件
??
Test?Plan?(測試計劃):用來描述一個性能測試,包含與本次性能測試所有相關的功能。也就說本的性能測試的所有內容是于基于一個計劃的。
下面看一下一個計劃下面都有哪些主要的功能模塊(右鍵單擊“測試計劃”彈出菜單)。
Threads?(Users)線程?用戶
雖然有三個添加線程組的選項,名字不一樣,?創建之后,其界面是完全一樣的。之前的版本只有一個線程組的名字。現在多一個setUp?theread?Group?與terDown?Thread?Group?
1)?setup?thread?group??
一種特殊類型的ThreadGroup的,可用于執行預測試操作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執行測試前進行定期線程組的執行。
2)?teardown?thread?group.??
一種特殊類型的ThreadGroup的,可用于執行測試后動作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執行測試結束后執行定期的線程組。
可能你還是不太理他們與普通的線程組有什么不同。?如果您用過junit,想必你不會對setup?,teardown這2個字眼陌生。?即時每用過,也沒關系。?熟悉loadrunner的應該知道,loadrunner的腳本除了action里是真正的腳本核心內容,還有初始化“環境”的初始化腳本和測試完畢后對應的清除信息的腳本塊。?那么這里?setup?thread?group?和?teardown?thread?group?就是分別指這兩部分。??其實從本質上來看,他們并沒有什么不同。
3)?thread?group(線程組).
?????這個就是我們通常添加運行的線程。通俗的講一個線程組,,可以看做一個虛擬用戶組,線程組中的每個線程都可以理解為一個虛擬用戶。線程組中包含的線程數量在測試執行過程中是不會發生改變的。
測試片段(Test?Fragment)
?
測試片段是在2.5版本之后新加的一個選項。
測試片段元素是控制器上的一個種特殊的線程組,它在測試樹上與線程組處于一個層級。它與線程組有所不同,因為它不被執行,除非它是一個模塊控制器或者是被控制器所引用時才會被執行。
控制器
JMeter有兩種類型的控制器:取樣器(sample)和邏輯控制器(Logic?Controller),用這些原件來驅動處理一個測試。
取樣器(Sampler)
?
?? 取樣器(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)
?
? 這個監聽器可不是用來監聽系統資源的元件。它是用來對測試結果數據進行處理和可視化展示的一系列元件。?圖行結果、查看結果樹、聚合報告。都是我們經常用到的元件。
到此,我們已經簡單了解了jmeter的基本組成原件,我們后序的性能測試工作也就是使用這些元件來完成測試任務。
2023最新Jmeter接口測試從入門到精通(全套項目實戰教程)