『動善時』JMeter基礎 — 54、JMeter聚合報告詳解

繁華似錦Fighting發表於2021-07-12

提示:聚合報告元件的使用和察看結果樹元件的使用方式相同。本篇文章主要是詳細的介紹一下聚合報告元件內容,不做示例演示。

1、聚合報告介紹

在使用JMeter進行效能測試時,聚合報告(Aggregate Report)可以說是必用的監聽器。

(1)聚合報告的生成方式

聚合報告有2中生成方式:

  1. 在已有.jtl檔案的情況下,直接選擇載入檔案即可生成聚合報告。
  2. 在執行JMeter的過程中,動態生成聚合報告。

提示:我們一直使用GUI模式操作JMeter,所以看到的聚合報告元件中的內容,是第二種生成方式。等之後我們介紹非GUI模式操作JMeter時,會講解第一種方式生成的聚合報告。

(2)聚合報告的資料來源

聚合報告中統計的資料來源,其實都是從統計的SampleResult中收集的資料。

需要特別注意的是

  1. 聚合報告中的每一行,代表一個請求。注意:同名的請求會只顯示一個,把結果合併。
  2. 聚合報告中的每一列資訊,是由SamplingStatCalculator類的不同方法實現統計的,相同名稱的請求會共用同一個SamplingStatCalculator
  3. 不管是JMeter實時生成聚合報告,還是根據已經存在.jtl結果檔案生成的聚合報告,最終的底層都是呼叫StatGraphVisualizer類的add(sampleResult)方法來生成表格的一行資料,傳遞的引數為每個請求的請求結果(sampleResult)資訊。
    add方法的呼叫時機:
    1)根據.jtl檔案生成報告時,每解析一行資料就呼叫一次add方法。
    2)實時執行生成聚合報告,每請求一次,就呼叫一次add方法。

提示:

  1. 注意:使用聚合報告時,測試計劃中不要用相同的的請求取樣器名稱。
  2. 觀察聚合報告的結果發現,聚合報告是累加的,即每次執行的結果統計都是基於前一次執行的結果進行統計,包括髮起的請求樣本數等都是疊加的。

2、聚合報告介面詳解

新增聚合報告元件方式:選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 聚合報告

介面內容如下圖所示:

image

聚合報告介面說明:

  • 名稱聚合報告元件的自定義名稱,見名知意最好。
  • 註釋:即新增一些備註資訊,對該聚合報告元件的簡短說明,以便後期回顧時檢視。

(1)將所有資料寫入一個檔案

在JMeter中,我們可以將指令碼測試中每個使用者的訪問內容,都儲存到一個檔案中。

需要操作聚合報告元件中的如下位置:

image

說明:

  • 檔名:輸入一個檔案的完整路徑,字尾可以為.csv.html等。檔案若不存在,則建立該檔案;若已存在該檔案,執行結果選擇覆蓋原有檔案即可。
  • 顯示日誌內容:
    1)僅日誌錯誤:僅儲存錯誤的日誌資訊到檔案中。
    2)僅成功日誌:僅儲存正常響應的日誌資訊到檔案中。
  • 配置(configure):配置測試結果檔案中需要記錄的內容,可以依據自己需求來選擇。
    如下圖所示:
    image

提示:我們可以點選“瀏覽”按鈕,選擇已儲存的聚合報告檔案,來檢視之前指令碼的請求結果。

(2)聚合報告列表項介紹

  1. Label:請求的名稱,就是指令碼中Sampler的名稱。
  2. # Samples(樣本):總共發給伺服器的請求數量,如果模擬10個使用者,每個使用者迭代10次,那麼總的請求數為:10*10 =100次。
  3. Average(平均值):預設情況下是單個Request的平均響應時間,當使用了Transaction Controller(事務控制器) 時,也可以用Transaction的時間,來顯示平均響應時間 ,單位是毫秒。
  4. Median(中位數):50%使用者的響應時間小於該值。
  5. 90% Line(90% 百分位):90%使用者的響應時間小於該值。
  6. 95% Line(95% 百分位):95%使用者的響應時間小於該值。
  7. 99% Line(99% 百分位):99%使用者的響應時間小於該值。
  8. Min(最小值):最小的響應時間。
  9. Maximum(最大值):最大的響應時間。
  10. Error%(異常%):錯誤率=錯誤請求的數量/請求的總數。
  11. Throughput(吞吐量):預設情況下表示每秒完成的請求數(Request per Second)。
  12. Received KB/sec (接收資料):每秒從伺服器端接收到的資料量。
  13. Sent KB/sec(傳送):每秒傳送到伺服器端的資料量。

(3)儲存聚合報告報表

  1. 在標籤中包含組名稱?:需要就勾選,不需要則取消勾選。
  2. 儲存表格資料:就是儲存聚合報告頁面中顯示的表格內容,而不是使用者的請求日誌資訊。
  3. 儲存表格標題:需要就勾選。

3、聚合報告中資訊點說明

(1)百分位數的說明

1、科普90% Line引數正確的含義

在這裡我覺得有必要說一下對 90%Line 的理解:

很多人都理解為:90%使用者的平均響應時間。我之前也一直這樣認為,但是後來才發現我錯了。

那看看JMeter 官網是怎麼說的?

90% Line - 90% of the samples took no more than this time. The remaining samples at least as long as this.

意思是:有 90% 的樣本不超過這個時間, 剩下的樣品至少只要等於或超過這個時間。

換句話說,就表示有90%的請求耗時,都在這個時間之內。

2、這裡涉及到一個數學中的概念:百分位數

百分位數:統計學術語,如果將一組資料從大到小排序,並計算相應的累計百分位,則某一百分位所對應資料的值,就稱為這一百分位的百分位數。可表示為:一組n個觀測值按數值大小排列,處於p%位置的值稱第p百分位數。

百分位通常用第幾百分位來表示,如以身高為例,身高分佈的第5百分位,表示有5%的人的身高小於此測量值,95%的身高大於此測量值。

3、再舉個例子:

有10個數:1、2、3、4、5、6、7、8、9、10,按由小到大將其排列。

求它的第90%百分位,也就是第9個數剛好是9 ,那麼他的90%Line就是9 。

4、那麼百分位數用在效能測試中有什麼意義呢?

它可以使用我們的分析結果更準確!

因為在評估一次測試的結果時,僅僅有平均響應時間是不夠的。假如在一次測試中,總共有100個請求被響應,其中最小響應時間為0.02秒,最大響應時間為110秒,平均事務響應時間為4.7秒。你會不會想到最小和最大響應時間,這樣如此大的偏差,是否會導致平均值本身並不可信?

如果我們把每個請求的響應時間用Excel統計出來,會發現那個最大值的出現機率,只不過是千分之一甚至萬分之一,剩下99%的使用者請求的響應時間,都是在效能需求所定義的範圍之內的。所以為了更準確的衡量整體請求的耗時情況,除了平均響應時間之外,還要有90%Line95%Line99%Line來輔助統計。

總結一下,聚合報告中的百分位數的含意:

  • Median:中位數,50%使用者的響應時間在小於該值,注意它與Average平均響應時間的區別。
  • 90% Line:90%使用者的響應時間小於該值。
  • 95% Line:95%使用者的響應時間小於該值。
  • 99% Line:99%使用者的響應時間小於該值。

(2)吞吐量說明

吞吐量(QPS):預設情況下表示每秒完成的請求數。

誤區:把吞吐量值當伺服器每秒處理的事務數的值(TPS)。

經常有的同學直接把聚合報告中的吞吐量當作TPS來看,這種做法是相當不嚴謹的。

那麼聚合報告中的吞吐量什麼情況下可以看成TPS?

從嚴格意義來講就是交易成功率為100%(一個完整的事務)。

還有一種情況是,交易失敗率在你可以接受的範圍內,也就是對當前測試整體結果影響不大,到了可以忽略的程度。

給大家舉個例子,大家都看過趙本山大叔的《鐘點工》小品,裡面有個經典的問題:把大象關進冰箱需要幾步?相信大家都知道答案。我們換種思維:假如我們把這個操作看成一個事務,如果找不到大象,或者沒有冰箱,這個事務都是無法完成的,也就是說這個事務最終會失敗(事務只有兩種狀態要麼成功要麼失敗)。

那麼這些步驟就不能算事務的完成,所以事務完成數和請求完成數之間還是有區別的。

參考:

相關文章