宇宙最強jmeter詳細介紹到底有多強

2020-08-10 16:33:33

在这里插入图片描述

jmeter工具介紹
一、原理
二、與loadrunner對比
三、目錄結構
四、體系結構及控制元件使用

一、原理

向伺服器提交請求,並從伺服器取回請求返回的結果。
即建立一個執行緒池,多執行緒執行取樣器產生大量負載,在執行過程中通過斷言來驗證結果的正確性,通過監聽器來記錄測試結果。

二、與loadrunner對比

  • loadrunner由c語言開發,jmeter純java開發

  • jmeter開源,loadrunner收費

  • jmeter小巧,下載下來直接解壓到指定目錄下,設定jdk環境就可以了。

  • loadrunner太大,將近4GB

  • jmeter不支援ip欺騙,loadrunner支援。

三、目錄結構

在这里插入图片描述

  • bin目錄

在这里插入图片描述

examples:存放jmeter使用範例
ApacheJMeter.jar :Jmeter原始碼包
jmeter.sh:啓動檔案
jmeter.properties:jmeter組態檔
jmerter-server:啓動負載生成器檔案
jmeter.log:

  • /docs目錄——幫助文件
  • /extras目錄——提供對Ant的支援檔案,也用於持續整合
  • /lib目錄——jar包,安裝外掛也放這裏
  • /printable_docs目錄——使用者手冊

四、體系結構及控制元件使用

1.結構
在这里插入图片描述

2.常用控制元件

測試計劃(Test Plan)
一個jmx檔案只能有一個測試計劃,測試計劃中可以定義變數(多是不常變化的數據,例如伺服器ip,數據庫ip等),引入jar包,編輯測試模式。
run thread groups consecutively:獨立執行每個執行緒組
run teardown thread groups after shutdown of main threads:主執行緒結束後執行tear down執行緒組
functional test mode:函數測試模式(只有當你需要記錄每個請求從伺服器取得的數據到檔案時才需要選擇函數測試模式。選擇這個選項很影響效能。)
在这里插入图片描述

工作臺(最新版沒有工作臺,可用代理服務檯【http代理伺服器】)
控制元件暫存區,測試過程中把暫時不用的控制元件放到這裏。這裏的控制元件不會儲存在jmx檔案裡,如果要儲存,要及時把控制元件歸位。在这里插入图片描述

3.執行緒組(Thread Users)
一個測試計劃內可以存在多個執行緒組。每個執行緒組之間的變數相互獨立。
在这里插入图片描述

Thread Group
Name:執行緒組名稱
Comments:描述/備註
Action to be taken after a sampler error:取樣器錯誤後執行以下操作
continue/start next thread group/stop thread/stop test/stop test now:繼續/啓動下個執行緒/停止執行緒/停止測試/立刻停止
thread properties:執行緒屬性
number of threads(users):執行緒數量
ramp-up period(in seconds):執行緒啓動間隔時間
loop count:回圈次數
scheduler configuration:排程器設定
duration:持續時間
startup delay:啓動延遲
在这里插入图片描述

setup thread group
測試初始化操作,即執行緒組開始之前執行的內容,用於初始化測試環境,測試數據準備等。在这里插入图片描述
tear down執行緒組
測試執行後操作,即執行緒組執行完成之後執行的內容。可用於清理測試環境,清空測試數據等。
在这里插入图片描述

4.Test Fragment 測試片段
與執行緒組同級別,但是預設不會執行。只有被模組控制器參照的時候纔會執行。
5.Sampler 取樣器(線上程組下add)
模擬使用者操作,向伺服器發出http請求、webservice或java請求等。
在这里插入图片描述

http請求(Http request)較爲常用
例如:Get方法
在这里插入图片描述

post方法:
在这里插入图片描述

Flow control Action 測試活動(老版本叫Test Action)
請求的執行動作,放在取樣器後定義,例如執行某個請求之後暫停等操作。
在这里插入图片描述

debug sampler 偵錯取樣器
一般只需要改動name,把需要關注的變數填寫在name裡,多個變數用逗號隔開即可
在这里插入图片描述

在这里插入图片描述

6.Pre Processors 前置處理器
取樣器請求前執行的操作,可以是獲取測試數據,修改參數等。
平時很少用到,常用的是後置處理器。
在这里插入图片描述

7.Post Processors 後置處理器
請求執行後的處理,常用的是正則表達式提取器和jason提取器
在这里插入图片描述

regular expression extractor 正則表達式提取器
需要某個請求的response裡的內容時,可以通過正則表達式來提取。用偵錯取樣器來看正則取出來的內容對不對。
參照名稱:提取的內容賦給變數,這裏的參照名稱就是變數名稱
在这里插入图片描述

8.Logic Controller 邏輯控制器
在这里插入图片描述

if控制器
根據指定表達式的值決定是否執行該節點下的子節點,預設使用JavaScript的語法進行判斷。如果if控制器裡的語句爲真,則繼續執行。爲假,不執行。
Interpret Condition as Variable Expression?:選中這一項時表示:判斷變數值是否等於字串true
Evaluate for all children:如果選中這一項,在每個子結點執行前都會計算表達式
注:新版本JMeter中的If Controller,在Expression輸入框中直接輸入判斷的表達式,如1 == 1、${threadNum} > 2,而不做求值計算(true/false)就執行JMeter是沒有效的,達不到預期的效果。利用JMeter自帶的函數助手(Function Helper)中的__jexl3函數或__groovy函數,對判斷條件的表達式進行求值計算,生成對應的求值運算函數,然後將此運算函數複製到If Controller的Expression輸入框中即可
在这里插入图片描述

在这里插入图片描述

把條件結果改爲真,再次執行,發現該控制器下的請求也執行了。
在这里插入图片描述

在这里插入图片描述

事務控制器
在这里插入图片描述

Generate parent sample:勾選後,該控制器下的所有結果將在父結點中展示,如圖
在这里插入图片描述

Include duration of timer and pre-post processors in generated sample:選中這一項會統計定時器(timer)的時間,否則只統計採樣器(sample)的時間——沒用過,後續補充

  • 回圈控制器

指定該控制器下的請求執行次數,可以填寫具體數值,也可以設定爲變數。
選中永遠,會一直回圈執行。
在这里插入图片描述

while控制器
後續補充

once only controller 僅一次控制器
該控制器下的請求,針對每個執行緒只執行一次。

foreach controller foreach控制器
foreach控制器一般和使用者自定義變數一起使用。該控制器下的請求,根據設定的參數,相應執行多少次。
input variable prefix:輸入變數字首
start index for loop(exclusive):開始回圈欄位(不包含)(注:該處不填,預設從1開始。若無1,不執行)
end index for loop(inclusive):結束回圈欄位(含)
output variable name:輸出變數名稱(注:每次執行前會把取到的變數值賦給輸出變數名稱,所以需要呼叫自定義變數的值時,應當要傳輸出變數名)
add"" before number:數位之前加上下劃線
在这里插入图片描述

範例:如上,變數字首是account,勾選了加下劃線的選項,那使用者自定義變數命名規範爲account+數位,如下所示:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

執行結果如下:
在这里插入图片描述

簡單控制器
這是Jmeter裡最簡單的一個控制器,它可以讓我們組織我們的採樣器和其它的邏輯控制器(分組功能),提供一個塊的結構和控制,並不具有任何的邏輯控制或執行時的功能。
在这里插入图片描述

switch控制器
通過給switch value賦值來指定執行哪個節點。
switch value可賦值爲數值,指定執行該控制下某個節點。(注:switch控制器下的節點是從0開始計數的)
switch value 也可賦值爲某個節點名稱。
switch value如果不填,預設執行第一個節點
範例:在这里插入图片描述

執行結果如下:
在这里插入图片描述

Throughput Controller 吞吐量控制器
控制其下的子節點的執行次數與負載比例分配
Total Executions:設定執行次數
Percent Executions:設定執行比例(1~100之間)
在这里插入图片描述

沒用到,後續補充

7.Config Element 設定元件
在这里插入图片描述

CSV數據檔案設定
多用於數據讀取測試數據
範例:在這裏插入圖片描述
在这里插入图片描述

在这里插入图片描述

HTTP資訊頭管理器
定義資訊頭,在其覆蓋下的所有元件都會使用該資訊頭。
在这里插入图片描述

HTTP cookie管理器
暫時沒用到,後續補充,參照【鏈接】Jmeter使用入門
https://www.cnblogs.com/ceshisanren/p/5639895.html

JDBC Connection Configuration
只用於數據庫連線操作。該控制元件通常要配合JDBC Request使用
範例:
填寫數據庫地址資訊以及賬號密碼,選擇mysql jdbc 驅動(注:事先下載的數據庫jdbc驅動jar包放到jmeter安裝路徑的lib目錄下即可)
在这里插入图片描述

新增取樣器JDBC Request,填寫相應的sql語句等相關資訊
在这里插入图片描述

執行結果如下:
在这里插入图片描述

使用者定義的變數略

8.Timer 定時器
類似思考時間,控製取樣器的間隔時間。
在这里插入图片描述

固定定時器
固定定時器不計入單個取樣器的響應時間,只計入事務控制器的時間。
在这里插入图片描述

高斯隨機定時器
指定時間範圍內隨機。
在这里插入图片描述

同步定時器
loadrunner中集合點的存在,取樣器到該定時器下會暫停,達到指定執行緒數後併發。
沒用過,後續補充在这里插入图片描述

9.斷言
判斷請求響應值是否正確的控制元件,常用的是響應斷言。
在这里插入图片描述

範例:設定如果返回的code不是300,就判定爲錯誤(注:斷言要放在請求內部)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

10.Listener 監聽
檢視請求執行結果的控制元件,常用的是察看結果樹和聚合報告
在这里插入图片描述

察看結果樹
可檢視請求響應的結果、請求內容和響應數據。
可自定義把數據寫入 某個檔案內,請求很多的時候,可以通過查詢功能進行定位檢視。 在这里插入图片描述

聚合報告
在这里插入图片描述

lable:sampler的名字
樣本:每個sampler發出的請求數
平均值:平均響應時間,預設情況下是單個請求的平均響應時間,如果使用事務控制器,就是指單個事務平均響應時間。
中位數:50%使用者的響應時間
90%百分位:90%使用者的響應時間
95%百分位:95%使用者的響應時間
99%百分位:99%使用者的響應時間
最小值:最小響應時間
最大值:最大響應時間
注:以上單位爲ms
異常%:錯誤請求所佔百分比
吞吐量:預設表示每秒完成的請求數(TPS)

壓測綜合範例:
在这里插入图片描述
如果對軟體測試有興趣,想瞭解更多的測試知識,解決測試問題,以及入門指導,
幫你解決測試中遇到的困惑,我們這裏有技術高手。如果你正在找工作或者剛剛學校出來,
又或者已經工作但是經常覺得難點很多,覺得自己測試方面學的不夠精想要繼續學習的,
想轉行怕學不會的,都可以加入我們644956177。
羣內可領取最新軟體測試大廠面試資料和Python自動化、介面、框架搭建學習資料!