Jmeter原理


 

JMETER是運行在JVM虛擬機上的,每個進程的開銷比loadrunner的進程開銷大,如果以進程的方式來運行每台負載機上的進程數量不會允許太多,當有大量並發時就需要大量的負載機,jmeter選擇了以線程方式來運行。jmeter通過線程組來驅動多個線程運行測試腳本對被測服務器發起負載,每一個負載機上都可以運行多個線程組。jemter運行場景不僅可以再gui方式中完成,還可以運行命令行,而且命令行的運行方式對於負載機的資源消耗會更小。Jmeter基本原理是建立一個線程池,多線程運行取樣器產生大量負載,在運行過程中通過斷言來驗證結果的正確性,可以通過監聽來記錄測試結果;

  如果取樣器中有參數化需求,可以通過配置元件或者前置處理器來完成;

  如果取樣器中有關聯需求,可以通過后置處理器來完成;

  如果要模擬負載場景,比如模擬多少用戶,運動多長時間,可以通過線程組完成;

  如果要模擬並發場景,可以通過定時器來完成;

  如果要控制業務的執行邏輯,比如登錄只運行一次,可以通過控制器來完成;

  一:jmeter遠程運行,遠程運行架構圖

 

  1:控制機

  運行多台jmeter負載機進行性能測試時,被選中作為管理機的那台機器就是控制機。控制機也可以參與腳本的運行,同時它也擔負管理遠程負載機指揮遠程負載機運行工作,且收集遠程負載機運行測試結果。

  2:負載機

  負載機就是向被測應用服務發起負載(請求)的機器。控制機同時也是一台負載機。jmeter負載機受控制機(jmeter負載機)的管理。與支持其他遠程運行的測試工具一樣,負載機受控制機管理首先要啟動一個客戶端程序(Agent:jmeter-server.bat),這樣控制機才可以接管負載機。控制機會把運行的腳本隱蔽的發送到遠程負載機,但是運行的測試腳本有參數文件或者依賴jar包時,控制機並不能把他們發送到遠程負載機,這種情況就需要手動拷貝,也可以用工具實現自動拷貝。

  3:遠程運行邏輯

  遠程負載機首先啟動agent程序,待控制機連接;控制機連接上遠程負載機;控制機發送指令(腳本及啟動命令)啟動線程;負載機運行腳本,回傳狀態(包括測試結果);控制機收集結果並顯示

二、Jmeter結構體系及運行原理https://www.cnblogs.com/luihengk/p/6897955.html

把Jmeter的結構體系拆分為三維空間,如圖:

 

X1~X5是負載模擬的一個過程,使用這些組件來完成負載的模擬;

X1:選擇協議,模擬用戶請求,檢查服務器響應是否正確,然后收集結果信息;

X2:完善測試腳本部分,包括參數化,關聯等;

X3:控制測試腳本業務邏輯;

X4:集合點,模擬用戶並發;

X5:用戶數,一個線程代表一個用戶;

Y1可以理解為選擇協議,包含負載模擬部分,負責模擬用戶請求;

Y2可以理解為檢查點,結果驗證部分,負責驗證結果正確性;

Z可以理解為監控器,負責結果的收集,監聽器不僅可以放在線程組之內,也可以放在線程組之外;

Jmeter運行原理:

Jmeter基本原理是建立一個線程池,多線程運行取樣器產生大量負載,在運行過程中通過斷言來驗證結果的正確性,可以通過監聽來記錄測試結果;

如果取樣器中有參數化需求,可以通過配置元件或者前置處理器來完成;

如果取樣器中有關聯需求,可以通過后置處理器來完成;

如果要模擬負載場景,比如模擬多少用戶,運動多長時間,可以通過線程組完成;

如果要模擬並發場景,可以通過定時器來完成;

如果要控制業務的執行邏輯,比如登錄只運行一次,可以通過控制器來完成;

三、Jmeter科普:https://www.cnblogs.com/feifei-cyj/p/7746389.html

1、測試分類

  從圖中可以看出,性能測試在整個軟件測試環節中占了50%的內容,比如負載測試、壓力測試、性能測試、大數據量測試、恢復測試、內容泄露測試、競品測試(比較測試)和可靠性測試。

2、性能測試流程

  

  (1)業務學習:通過查看文檔,手動操作系統來來了解系統性能;

  (2)需求分析:分析系統非功能需求,圈定性能測試的范圍,了解系統的性能指標;

  (3)工作評估:工作量分解,評估工作量,計划資源投入;

  (4)設計模型:圈定性能測試范圍后,把業務模型映射成測試模型;

  (5)計划編寫:計划測試工作,在文檔中明確列出測試范圍、人力投入、持續時間、工作內容、風險評估、風險應對策略等;

  (6)腳本開發:錄制或者編寫性能測試腳本;

  (7)測試環境准備:性能測試環境准備包括服務器與負載機兩部分,服務器是被測系統的運行平台,負載機是我們用來生產負載的機器,用來安裝負載工具,運行測試腳本;

  (8)測試數據准備:根據測試模型來准備被測系統的主數據與業務數據;

  (9)測試執行

  (10)缺陷管理:對性能測試過程中發現的缺陷進行管理;

  (11)性能分析:對性能測試過程中暴露出來的問題進行分析,找出原因;

  (12)性能調優:性能測試人員與開發人員一起來解決性能問題;

  (13)測試報告:測試工作的重要交付文件,對測試結果進行報告,主要包括性能指標說明(tps、rt、cpu等);

  性能測試主要交付件:

1 測試計划
2 測試腳本
3 測試程序
4 測試報告或者階段性測試報告

  (14)評審:對性能報告中的內容進行評審,確認問題,評估上線風險。

3、性能測試成功與失敗要素

  重點關注點:

1 評估系統,需求分析
2 場景設計、用例設計
3 測試執行、是否通過
4 性能診斷優化

  (1)評估系統,需求分析

  對性能測試進行需求分析,通常情況下測試人員會直接依賴需求人員或者項目經理的口述或者有缺陷的文檔。實際上,大多數情況下我們測試人員需要自己來引導相關的運維人員和需求人員給出具體的需求數據,並對這些數據進行二次分析,得出我們真實的性能需求。

  對於初次上線的系統,我們需要使用同行的系統數據,進行用戶行為分析和商業數據結構的估算為前提,利用性能估算法推算。得到的負荷和響應時間數據可以被應用於驗證所計划的模型的能力,並幫助做出對策。

  對於已經上線的系統,我們可以通過運維人員獲取TPS和時間的比例分布圖、用戶數和時間的分布圖、數據庫ER關系圖、容量數據等,直接精確得出目前系統的用戶行為和業務數據關系,進而得出我們需要的性能需求。

  (2)場景設計、用例設計

  (3)測試執行、是否通過--需要關注的指標

  

  (4)性能診斷優化

4、不同角色看性能

  技術部門一般有下面幾種角色:開發、測試、架構師、運維人員、(系統管理員、DBA)

  (1)黑盒測試的角度

  黑盒測試只關心應用程序的單步響應時間,性能好壞就看應用時間多少,也就是數據流經過服務器、服務器集群經過網絡傳輸后往返的時間總和。

  (2)開發角度

1 架構合理性
2 數據庫設計合理性
3 代碼
4 系統內存的使用方式
5 系統線程使用方式
6 系統資源是否有惡性,不合理競爭

  (3)系統管理員角度

1 硬件資源利用率
2 JVM
3 DB
4 系統是否支持7*24的服務
5 擴展性,兼容性,最大容量,可能的瓶頸

  (4)性能測試的角度

復制代碼
 1 服務器硬件的性能
 2 根據需求和歷史數據制定性能目標
 3 建立性能通過模型
 4 對開發代碼框架和硬件框架進行性能分析
 5 針對開發發布版本的基准測試
 6 執行軟件性能驗收及穩定性測試
 7 生產環境的配置及優化
 8 制定性能測試的測試用例
 9 制定性能測試的場景設計
10 協調各部門配合
11 特定的性能分析
復制代碼

5、性能測試相關術語

  (1)負載:模擬一萬五操作對服務器造成壓力的過程,比如模擬100個用戶進行發帖。

   (2)性能測試(Performance Testing):模擬用戶負載來測試系統在負載情況下,系統的響應時間,吞吐量等指標是否滿足性能需求。

  (3)負載測試(load Testing):在一定軟硬件環境下,通過不斷加大負載(不同虛擬用戶數)來確定在滿足性能指標情況下能夠承受的最大用戶數。這些性能指標包括:TPS(每秒事務數)、RT(事務平均響應時間)、CPU using(CPU利用率)、MEM using(內存使用率)等軟硬件指標。

性能關注響應時間,負載表示這個系統能承受多大用戶量

  (4)配置測試(Configuration Testing):為了合理地調配資源,提高系統運行效率,通過測試手段來獲取、驗證、調整配置信息的過程。

  (5)壓力測試\強度測試(Stress Testing):在一定軟硬件環境下,通過高負載的手段來使服務器資源處於極限狀態,測試系統在極限狀態下長時間運行是否穩定,確定是否穩定的指示包括TPS、RT、CPU using、MEM using等。

  (6)穩定性測試(Endurance Testing):在一定軟硬件環境下,長時間運行一定負載,確定系統在滿足性能指標的前提下是否運行穩定。一般我們會在滿足性能要求的負載情況下加大1.5倍-2倍的負載量進行測試。

  (7)TPS:每秒完成的事務數,通常指每秒成功的事務數,性能測試中重要的綜合性性能指標。一個事務是一個業務度量單位,有時一個事務會包括多個子操作,為了統計方便,會把着多個子操作記為一個事務。

  (8)RT/ART(Response Time\average response time):響應時間/平均響應時間,指一個事務花費多長時間完成,一般取平均響應時間。

  (9)PV(page view):每秒用戶訪問頁面的次數,此參數用來分析平均每秒有多少用戶訪問頁面。

  (10)Vuser虛擬用戶(Virtual user):模擬真實業務邏輯步驟的虛擬用戶,虛擬用戶模擬的操作步驟都被記錄在虛擬用戶腳本里。Vuser腳本用語描述Vuser在場景中執行的操作。

  (11)Concurrency並發,並發分為狹義和廣義兩類。狹義的並發,即所有用戶在同一時刻作品同一件事情或者操作;廣義的並發,即多個用戶進行完全一樣的操作。

  (12)場景(Scenario):性能測試過程中為了模擬真實用戶的業務處理過程,在loadrunner中構建的基於事務、腳本、虛擬用戶、運行設置、運行計划、監控、分析等一系列動作的集合,稱之為性能測試場景。場景中包含了待執行腳本、腳本組、並發用戶數、負載生成器、測試目標、測試執行時的配置條件等。

  (13)思考時間(Think Time):模擬真實用戶在實際操作時的停頓間隔時間。也就是說,用戶在進行操作時,每個請求之間的間隔時間。

  (14)標准差(Std. Deviation):標准差越小,說明波動越小,系統越穩定。

6、性能測試通過標准


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM