天天看點

JMeter基礎操作之接口關聯,斷言,螢幕

Jmeter關聯

什麼是Jmeter關聯,為什麼需要關聯?

由于性能測試是基于接口的,HTTP協定是無狀态的,為了解決這個問題就有session和token的方式,在一般登入後伺服器生成之後,後續請求就需要攜帶session或者token的值,而我們這裡所說的關聯其實就是使用擷取到伺服器響應中的session或者token為後續請求添加的過程

那麼Jmeter如何實作關聯呢?

在jmeter中使用 後置處理器—>正規表達式提取器 實作關聯的

JMeter基礎操作之接口關聯,斷言,螢幕

正規表達式提取器:

允許使用者從作用域内的sampler請求的伺服器響應結果中通過正規表達式提取值所需值,生成模闆字元串,并将結果存儲到給定的變量名中

正規表達式:JSESSIONID=(.*?);

JMeter基礎操作之接口關聯,斷言,螢幕

具體操作

步驟一:

添加的時候一定注意,那一條請求的響應有關聯的内容就添加到這個請求,一般都是添加給登入請求

JMeter基礎操作之接口關聯,斷言,螢幕

應用名稱寫sessionid,後續請求sessionid這個變量名就指代擷取的session值,

正規表達式:這個網站是在登入請求的響應頭cookie中擷取的,上面使用這個正規表達式從響應頭擷取内容

模闆: 1 1 1

比對數字:0代表随機 這裡大家注意,我提取出來隻有一個值選擇0或者1就沒有啥意義了

預設值:我這裡不需要就不填

步驟二

需要在目前事物控制器,添加HTTP cookie管理器,

JMeter基礎操作之接口關聯,斷言,螢幕

注意:HTTP cookie管理器添加後,它的作用域是全局的,目前事物管理器中後續請求都會自動攜帶

Jmeter斷言

什麼是斷言,斷言有什麼作用?

不管是在自動化測試還是性能測試工具中都有斷言這個概念,簡單的來了解一下,在 參數化 中,我們對使用者名和密碼進行了參數化,那麼怎樣來判斷JMeter參數化的使用者有沒真正的登入成功呢?或者有沒有進入到登入成功的頁面。這就需要用到 斷言 了。

如何添加斷言?

步驟一:右鍵點選“HTTP請求”---->添加---->斷言---->響應斷言。

JMeter基礎操作之接口關聯,斷言,螢幕

步驟二:打開響應斷言,進行設定。

1.apply to(應用範圍):

選項分為:main sample and sub sample, main sample only , sub-sample only , jmeter variable

大多數勾選“main sample only” 即可,因為我們一個請求,實質上隻有一個請求。但是當我們發一個請求時,可以觸發多個伺服器請求,類似于ajax那種,那麼就有main sample 和 sub-sample之分了。

2.要測試的響應字段

選項如下:響應文本、Document(text)、URL樣本、響應資訊、Response Headers、Lgnore Staus 等選項。

響應文本: 雖然接口傳回的響應消息體資料格式有多種形式,但是對于一般普通http響應,勾選“響應文本”即可

Document(Text):一切Apache Tika 支援伺服器響應,包括文本響應,還支援 PDF, Office, Audio, Video formats。jmeter會用Apache Tika 去解析伺服器響應内容,會很耗記憶體,而且也很容易解析失敗。是以一般普通http請求,不要選擇這個。

url樣本:是對sample的url進行斷言。如果請求沒有重定向(302),那麼就是這個就是請求url。 如果有重定向(且跟随重定向),那麼url就包含請求url 和 重定向url

響應代碼:http響應代碼,如101,200,302,404,501等。但當我們要驗證404,501等http響應代碼時,需要勾選“ ignore status”。因為當http 響應代碼為400,500時,jmeter預設這個請求時失敗的。

3.模式比對規則

選項有: 包括、 比對、 Equals、 Substring 、否。

a.包括:傳回結果包括你指定的内容,支援正則比對相當于 equals 。當傳回值固定時,可以傳回值做斷言,效果和equals相同

b.比對 :

● 相當于 equals 。當傳回值固定時,可以傳回值做斷言,效果和equals相同

●正則比對 。 用正規表達式比對傳回結果,但必須全部比對。 即正規表達式必須能比對整個傳回值,而不是傳回值的一部分。

c.Equals : 傳回結果與你指定斷言完全一緻

d.SubString:與 “包括”差不多,都是指傳回結果包括你指定的内容,但是subString不支援正則字元串

e.否:就相當于取反。 如果上面斷言結果為true,勾選“否”後,最終斷言結果為false。如果上面斷言結果為false,勾選“否”後,則最終斷言結果為 true。

4.要測試的模式: 其實就是斷言的資料。 點選“添加” 按鈕, 輸入要斷言的資料。

Jmeter監聽器

1.什麼是監聽器,有什麼作用?

監聽器用來監聽及顯示JMeter取樣器測試結果,能夠以樹、表及圖形形式顯示測試結果,也可以以檔案方式儲存測試結果,JMeter測試結果檔案格式多樣,比如XML格式、CSV格式。預設情況下,測試結果将被存儲為xml格式的檔案,檔案的字尾: “.jtl”。另外一種存儲格式為CSV檔案,該格式的好處就是效率更高,但存儲的資訊不如xml格式詳細。

2.Jmeter監聽器預覽

首先我們來看一下JMeter的監聽器,路徑:線程組(使用者)->添加->監聽器;我們可以清楚地看到JMeter5中共有16個監聽器如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

3.Jmeter解釋器詳解

3.1 察看結果樹

察看結果樹,顯示取樣器請求和響應的細節以及請求結果,包括消息頭,請求的資料,響應的資料。

(1)察看結果樹,放的位置不同,檢視的結果也不同。線上程組下添加察看結果樹,檢視線程組下所有請求的結果;放在具體某個請求下,隻檢視此請求的結果;若放在某個控制器節點下,則檢視此控制器下節點執行的結果;

(2)該監聽器推薦做調試用,在實際運作壓測時,應該禁用,因為大量請求時,啟用該監聽器時列印的日志比較多,會造成大IO消耗,影響壓力機性能。

1、添加 察看結果樹 ,路徑:線程組 > 添加 > 監聽器 > 察看結果樹,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

名稱:控制器的描述性名稱,顯示在左邊節點上,并用于命名事務

注釋:控制器注釋資訊,非必填項

檔案名:載入檔案名

Log/Display Only: 僅日志錯誤、Success ;勾選中顯示對應的日志資訊

Configure:定義report中自己所關心的資料項。

取樣器結果:

Thread Name: 線組名稱

    Sample Start: 啟動開始時間

    Load time: 加載時長

    Latency: 等待時長

    Size in bytes: 發送的資料總大小

    Headers size in bytes: 發送頭大小

    Body size in bytes: 發送資料的其餘部分大小

    Sample Count: 發送統計

    Error Count: 錯誤統計

    Response code: 傳回碼

    Response message: 傳回消息

    Response headers:傳回頭資訊

請求

  資料擷取方式、路徑、位址等以及傳遞的參數、cookie

響應資料

  響應加載的頁面html

3、作用

1)檢視請求結果,請求成功的測試通常為綠色;紅色則代表失敗。

注:在沒有對請求斷言的情況下,顯示綠色并不一定是成功,隻代表響應碼是200或300系列,顯示紅色說明響應碼是400或500系列。是以要想确定請求傳回的是正确的,必須要加上斷言,隻有斷言成功才會顯示綠色。

2)檢視對應Sampler的測試結果的請求、響應資料。

取樣器結果:顯示的是取樣器相關參數(用戶端參數與響應參數)
請求:發送請求的具體内容
響應資料:伺服器傳回的相應參數
           

3.2 彙總報告

彙總報告,為測試中的每個不同命名的請求建立一個表行。這與聚合報告類似,隻是它使用更少的記憶體。提供了最簡要的測試結果資訊,同時可以配置将相應的資訊儲存至指定的檔案中(支援xml、csv格式的檔案)。單擊Configure按鈕,可以配置結果儲存各種選項

1、添加 彙總報告 ,路徑:線程組 > 添加 > 監聽器 > 彙總報告,如下圖所示

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空;

Label 取樣器别名,如果勾選Include group name ,則會添加線程組的名稱作為字首

#Samples 取樣器運作次數

Average 請求(事務)的平均響應時間

Min 請求的最小響應時間

Max 請求的最大響應時間

Std. Dev 響應時間的标準方差

Error % 事務錯誤率

Throughput 吞吐量 也就是TPS

Received KB/sec 每秒收到的千位元組

Sent KB/sec 每秒發送的千位元組

Avg. Bytes 響應平均流量

3.3聚合報告

聚合報告,記錄這次性能測試的總請求數、錯誤率、使用者響應時間(中間值、90%、最少、最大)、吞吐量等,用以幫助分析被測試系統的性能。在聚合報告中,各個響應時間不能超過客戶的要求,就是合格,例如不能超過響應時間3s,大于3s就是不合格的.聚合報告應該是最詳細的報告了,也是最為常用的報告。是在壓測過程中最常用的監聽器。該監聽器對于每個請求,它統計響應資訊并提供請求數,平均值,最大,最小值,中位數、90%、95%、錯誤率,吞吐量(以請求數/秒為機關)和以kb/秒為機關的吞吐量。單擊Configure按鈕,

1、添加 聚合報告 ,路徑:線程組 > 添加 > 監聽器 > 聚合報告,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空;

Label :每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這裡顯示的就是 Name 屬性的值

#Samples :表示測試中一共發出了多少個請求,如果模拟10個使用者,每個使用者疊代10次,那麼這裡就顯示對應的 HTTP Request的執行次數是100

Average :平均響應時間——預設情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也可以以Transaction 為機關顯示平均響應時間

Median :50%使用者的響應時間

90%Line :90%使用者的響應時間

Min :最少響應時間

Max :最大響應時間

Error% :本次運作測試中出現錯誤的請求的數量/請求的總數

Throughput :吞吐量,預設情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數

(接收/發送)KB/sec :每秒從伺服器端接收到的資料量,相當于LoadRunner中的Throughput/Sec

3.4後端監聽器

後端監聽器,是一個異步偵聽器,可以将資料推入都資料庫中,提供了InfluxDB,graphite選項

1、添加 後端監聽器,路徑:線程組 > 添加 > 監聽器 > 後端監聽器,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕
JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空;

Backend Listener implementation:BackendListenerClient類的實作,Jmeter預設提供如下兩種實作,因為我們使用的influxdb作為持久存儲

org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient

org.apache.jmeter.visualizers.backend.graphite.InfluxdbBackendListenerClient 因為我們使用的influxdb作為持久存儲,是以後續隻介紹InfluxdbBackendListenerClient

Async Queue size:異步隊列大小 隊列值包含異步處理時的度量标準。除非有一些特定的性能問題,否則最好不要從預設的5000。

3、我們使用InfluxdbBackendListenerClient

influxdbMetricsSender:org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
influxdbUrl:influx資料庫的url。example : http://influxHost:8086/write?db=jmeter
application:被測試的應用名稱。此值也作為名為“application”的标記存儲在“events”中
measurement:使用預設的”jmeter“就行
summaryOnly:為true的情況下,隻輸出所有請求的集合資料報告,為flase的情況下,輸出每條資料的詳情報告、
samplersRegex:正規表達式将與樣本名稱比對并發送到後端。預設比對所有
testTitle:測試名稱。預設的設定為 Test name。該值作為名為“text”的字段存儲在“事件”度量中。 JMeter在測試的開始和結束時自動生成一個注釋,其值以'started'和'ended'結尾
percentiles:要發送到後端的百分位數,多個值已;分割
TAG_WhatEverYouWant:自定義标簽。您可以根據需要添加任意數量的自定義标簽。對于它們中的每一個,隻需建立一個新行并在其名稱前加“TAG_”
           

3.5彙總圖

彙總圖,我們可以看到表格顯示的結果與圖形結果,絕大多數都是對圖形的設定。

1、添加 彙總圖 ,路徑:線程組 > 添加 > 監聽器 > 彙總圖,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空;

Column settings

Columns to display  選擇要在圖表中顯示的列
Rectangles color      單擊右側顔色矩形打開彈出對話框,選擇自定義顔色。(就是點選)

Foreground color     允許更改值文本顔色
Value font                 允許定義文本的字型設定
Draw outlines bar?   在條形圖上繪制或不繪制邊界線
Show number grouping?     是否顯示Y軸标簽中的數字分組
Value labels vertical?          更改值标簽的方向。(預設為水準)
Column label selection       按結果标簽過濾
           

Title

在圖表的頭部定義圖表的标題

Graph size

根據目前JMeter視窗大小的寬度和高度計算圖形大小。使用“ 寬度”和“ 高度”字段定義自定義大小。機關是像素。

X Axis settings

定義X軸标簽的最大長度(以像素為機關)

Y Axis settings

為Y軸定義自定義最大值。

Legend

定義圖表圖例的放置和字型設定

3.6 斷言結果

斷言結果,對相應的請求添加斷言。對取樣器進行斷言後,我們希望知道斷言結果;此元件可以幫助我們顯示斷言結果(察看結果樹元件中也可以看到)。消耗了大量資源(記憶體和CPU),性能測試時候不建議使用。

作用:用于檢查測試中得到的響應資料等是否符合預期,用以保證性能測試過程中的資料互動與預期一緻,一般與結果樹結合使用。

1、添加 斷言結果 ,路徑:線程組 > 添加 > 監聽器 > 斷言結果,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空。

3.7比較斷言可視化器

比較斷言可視化器,和比較斷言配合使用。

1、添加 比較斷言可視化器 ,路徑:線程組 > 添加 > 監聽器 > 比較斷言可視化器,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空。

3.8 生成概要結果

生成概要結果,該測試元素可以放置在測試計劃中的任何位置。生成到目前為止對日志檔案和/或标準輸出的測試運作的摘要。顯示了運作總計和差異總計。在适當的時間邊界每n秒(預設為30秒)生成一次輸出,是以将同步在同一時間運作的多個測試。

1、添加 生成概要結果 ,路徑:線程組 > 添加 > 監聽器 > 生成概要結果,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空。

3.9 圖形結果

圖形結果,通過圖形展示出本次性能測試資料的分布。 圖形結果一般作為聚合報告的分析輔佐

1、添加 圖形結果 ,路徑:線程組 > 添加 > 監聽器 > 圖形結果,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

名稱:控制器的描述性名稱,顯示在左邊節點上,并用于命名事務

注釋:控制器注釋資訊,非必填項

檔案名:載入檔案名

Throught:吞吐量,可以了解成TPS(TPS表示每秒通過的事物數,QPS表示每秒查詢接口數。jmeter中如果隻有單接口,那麼TPS=QPS。如果是多接口的混合場景,隻有在事物控制器下執行,才能将其了解為TPS)

樣本數目。在這裡,我們可以把樣本數量簡單了解成是jmeter一共向伺服器發起了多少次請求;

最新樣本。jmeter最後一次發送請求的響應時間。機關是毫秒;

平均。所有請求響應時間的平均值。機關是毫秒;

偏離。标準方差,學過統計學的同學應該知道這個概念。如果你對這個概念一無所知也沒有關系,偏離越小就代表測試的總體結果與平均值越接近;

吞吐量。被測系統每分鐘能處理的請求個數,這是判斷伺服器性能好壞的重要名額(也可以說是最重要的名額)。在上面的圖形結果報表裡我們可以看到系統的吞吐量是138.985每分鐘,這就代表着系統每分鐘可以處理138.985個請求;

中值。就是響應時間的中間值,學術一點中值指的是有50%的值大于這個值,另外50%的值小于這個值。蒙圈了吧?實際上中值指的是如果有9個數,那麼我們從小到大排列這些數,排在第5個的數就是這一組數的中值。那麼如果有10個數呢?10個數的話第5個和第6個數的平均值就是這組數字的中值;
           

3.10 JSR223 Listener

JSR223 Listener,允許将JSR223腳本代碼應用于示例結果。

1、添加 SR223 Listener ,路徑:線程組 > 添加 > 監聽器 > JSR223 Listener,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空;

Label 取樣器别名,如果勾選Include group name ,則會添加線程組的名稱作為字首

Samples 取樣器運作次數

Average 請求(事務)的平均響應時間

Min 請求的最小響應時間

Max 請求的最大響應時間

Std. Dev 響應時間的标準方差

Error % 事務錯誤率

Throughput 吞吐量 也就是TPS

Received KB/sec 每秒收到的千位元組

Sent KB/sec 每秒發送的千位元組

Avg. Bytes 響應平均流量

3.11郵件觀察儀

郵件觀察儀, 如果測試運作從伺服器收到太多失敗的響應,則可以将郵件程式可視化工具設定為發送電子郵件,這個不錯,起到及時通知效果,下面我使用的是163 SMTP進行測試。可以實作。

1、添加 郵件觀察儀 ,路徑:線程組 > 添加 > 監聽器 > 郵件觀察儀,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空;

Message中

From代表,發件人

Address代表 收件人

Success Limit 代表成功次數大于x時發送郵件

Failure Limit 代表失敗事務大于4時,發送郵件

SMTP sever

Host 填寫郵件伺服器名稱

Login發件人的郵箱位址

Password 将smtp服務開啟,生成授權碼當作密碼

Connection Security 選擇協定

點選TestMail 測試下是否可以發送成功,就可以投入使用了

3.12響應時間圖

響應時間圖,響應時間圖形監聽器。有點和我們之前介紹的Aggregate Graph類似

1、添加 響應時間圖,路徑:線程組 > 添加 > 監聽器 > 響應時間圖,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空;

2.1 Graph setting 圖檔設定

2.2 Interval:橫坐标的刻度

2.3 Title 标題 預設

2.4 Line setting 線條設定 預設

2.5 Graph size 圖檔尺寸 預設

2.6 X Axis 橫坐标 預設

2.7 Y Aixs 縱坐标

2.8 Scale maximum value 縱坐标長度

2.9 increment scale 縱坐标的刻度 ;Legend 字型設定 預設

Interval (ms)                   X軸間隔的時間(以毫秒為機關)
Sampler label selection   按結果标簽過濾。可以使用正規表達式
Title                                 在圖表的頭部定義圖表的标題
Line settings                    定義線條的寬度
Graph size                       根據目前JMeter視窗大小的寬度和高度計算圖形大小。使用“ 寬度”和“ 高度”字段定義自定義大小。機關是像素。
X Axis settings                 自定義X軸标簽的日期格式
Y Axis settings                 為Y軸定義自定義最大值(以毫秒為機關)
Legend                            定義圖表圖例的放置和字型設定
           

3.13儲存響應到檔案

儲存響應到檔案,我們可以看到表格顯示的結果與圖形結果,看着挺複雜,其實稍微翻譯一下就知道,絕大多數都是對圖形的設定。

1、添加 儲存響應到檔案 ,路徑:線程組 > 添加 > 監聽器 > 儲存響應到檔案,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空;

檔案名稱字首:設定響應檔案所在路徑(路徑必須已存在)和檔案字首

Save Failed Responses only:隻儲存失敗的響應

Save Successful Responses only:隻保留成功的響應

Don’t add number to prefix:不添加數字到檔案名字首

Don’t add suffix:不添加檔案字尾,即擴充名(注:預設情況下,jmeter會根據伺服器傳回的結果自動生成合适類型的檔案,比如伺服器傳回json格式的内容,jmter會自動生成.json檔案)

Add timestamp:添加時間戳到檔案字首

Minimum Length of sequence number :最小序列号,不填預設從1開始。

3.14 簡單資料寫入器

簡單資料寫入器,對用來記錄取樣器響應結果,不會以圖形方式顯示。配合NON GUI模式使用。

1、添加 簡單資料寫入器 ,路徑:線程組 > 添加 > 監聽器 > 簡單資料寫入器,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空。

3.15 用表格檢視結果

用表格檢視結果,這個listener用來顯示每個請求的響應頭資訊,我覺得它最好用的一點就是可以按先後順序顯示每個請求的開始時間、耗時、響應狀态等,友善進行結果分析。

1、添加 用表格檢視結果 ,路徑:線程組 > 添加 > 監聽器 > 用表格檢視結果,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空。

Sample # : 一個系列号,我們線程使用者設定了5,這裡就有5個号

Start Time:每個使用者的開始時間,我們設定了1秒進5個使用者,是以,每個使用者進入時間不同,這裡精确到毫秒。

Thread Name:線程名稱,注意1-1,1-5,第一個1我也不知道表示什麼,後面的1到5很好了解,就是使用者1到使用者5.

Label:就是Http reques的名稱

Sampler Time:運作這個Sampler所消耗的時間,有時候也等于Duration time

Status:執行結果标記,成本綠勾,失敗紅叉。

Bytes:請求的響應檔案大小

Sent Byte:發送HTTP請求的資料包大小

Latency:這個字面意思是潛伏時間,不是延遲,暫時不好了解和解釋。一個網絡術語

Connet Time: 連接配接到伺服器消耗的時間。

3.16 BeanShell Listene

r

BeanShell Listener,通過BeanShell 監聽器可以通路JMeter提供的屬性和變量

1、我們先來看看這個 BeanShell Listener 長得是啥樣子,路徑:線程組 > 添加 > 監聽器 > BeanShell Listener,如下圖所示:

JMeter基礎操作之接口關聯,斷言,螢幕

2、關鍵參數說明如下:

Name:名稱,可以随意設定,甚至為空;

Comments:注釋,可随意設定,可以為空。