性能測試工具 JMeter 入門基礎
JMeter :是一款很優秀的開源性能測試工具。
從性能工具的原理劃分:
Jmeter工具和其他性能工具在原理上完全一致,工具包含4個部分:
(1)負載發生器:通過多線程模擬並發,對目標產品產生負載。
(2)用戶運行器:通常是一個腳本運行引擎,用戶運行器附加在線程或進程上,根據腳本要求模擬指定的用戶行為。
(3)資源生成器:生成資源數據用於伺服器、負載機的測試。
(4)報表生成器:根據測試中霍地的數據生成報表,提供可視化的數據顯示方式。
測試計劃元件
Test Plan (測試計劃):是創建測試任務的最大單位,包含了本次性能測試所有的相關功能,本次性能測試的所有內容都是基於同一個計劃。
接下來我們再看一下計划下面有哪些功能模塊(右鍵單擊「測試計劃」彈出菜單)。
Threads(Users)線程 用戶
我們可以看到是有三種不同的線程組的,但是雖然名字不一樣我們創建之後的界面是完全一樣的,setUp theread Group 與terDown Thread Group 是新版本的JMeter新增的選項,我們看一下有什麼用。
1) setup thread group
用於執行預測試操作的ThreadGroup。線程的行為和正常的線程組元件沒有什麼區別,唯一不同的是這些類型的線程會在執行測試前進行定期線程組的執行。
2) teardown thread group
用於執行測試後操作的ThreadGroup。線程的行為同樣和正常的線程組元件沒有什麼區別,唯一不同的是這些類型的線程會在執行測試後進行定期線程組的執行。
這麼說你可能還是不太明白他們和普通的線程組到底有什麼不同,如果你有使用過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 等都是完美支持的。
邏輯控制器(Logic Controller)
邏輯控制器包含可兩類元件,一類是用於控制test plan 中 sampler 節點發送請求的邏輯順序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循環控制器等。另一類是用來組織可控制 sampler 來節點的,如 事務控制器、吞吐量控制器。
配置元件(Config Element)
配置元件(config element)用於提供對靜態數據配置的支持,比如HTTP cookie管理器可以靜態的保存cookie用來保持前後請求的關係。CSV Data Set config 可以將本地數據文件形成數據池(Data Pool),而對應於HTTP Request Sampler和 TCP Request Sampler等類型的配製無件則可以修改Sampler的默認數據。
定時器(Timer)
定時器(Timer)可以設置每個操作之間的等待時間,類似於LoadRunner裡面的「思考時間」,等待時間是我們在性能測試中常用的控制客戶端QPS的手段。JMeter 定義了Bean Shell Timer、Constant Throughput Timer、固定定時器等不同類型的Timer。
前置處理器(Per Processors)
顧名思義,用來在請求實際發出之前對請求進行特定的處理,比如可以定義一個用戶參數為隨機數,我們在實際請求中就可以使用這個隨機數,達到批量發不同請求的目的。
後置處理器(Post Processors)
與前置處理器對應,後置處理器用於對Sampler 發出請求後得到的伺服器響應進行處理,一般我們在這裡提取響應中的特定數據(類似LoadRunner測試工具中的關聯概念)。比如正則表達式提取器可以正則匹配響應中的參數並提取出來。
斷言(Assertions)
斷言是用來檢查測試中得到的響應數據是否符合預期,斷言一般用來設置檢查點,用以保證性能測試過程中的數據交互是否與預期一致。
監聽器(Listener)
監聽器是用來對測試結果數據進行處理和可視化的元件。其中圖形結果、查看結果樹、聚合報告都是我們經常用到的元件。
我們已經基本了解了JMeter的基本常用元件,我們的性能測試工作也主要是使用這些元件來完成測試任務。
註:希望繼續在IT行業突破提升自己的各位朋友,也歡迎加群384053806,不管你自我感覺牛不牛B。
推薦閱讀:
※Python Selenium設計模式-POM
※開發人員關於測試的總結
※2. 掀起介面測試的蓋頭-HTTP 初窺 (一)
※Selenium 2.0與Selenum 3.0介紹
※軟體測試要學什麼?面試時哪些基本知識要掌握?