Jmeter——效能測試的認知以及思考bug(一)

2023-03-16 12:01:04

前言

效能測試是一個全棧工程師/架構師必會的技能之一,只有學會效能測試,才能根據得到的測試報告進行分析,找到系統效能的瓶頸所在,而這也是優化架構設計中重要的依據。

測試流程:

  1. 需求分析→環境搭建→測試計劃→指令碼開發→執行與監控→缺陷管理→結果與報告
    壓力測試
  • 1、執行緒組設定,這裡的執行緒數與同步定時器的使用者數量一樣
  • 2、新增HTTP cookie管理器
  • 3、預設請求值
  • 4、新增一個事務控制器,可以當作一個業務
  • 5、在事務控制器下新增,同步定時器
  • 設定使用者數量,這裡與執行緒組的執行緒數一樣,超時時間可設定
  • 6、新增指令碼(http請求)
  • 7、新增檢視結果樹
  • 8、新增->監聽器
  • 9、在最後新增一個聚合報告,新增處:新增->監聽器
  1. 負載測試實戰
  • 1、執行緒組的設定50個使用者(持續時間:按秒計算,這裡300=60*5,意思就是執行時長為5分鐘)
  • 2、新增HTTP cookie管理器
  • 3、預設請求值
  • 4、新增一個事務控制器,可以當作一個業務
  • 5、在事務控制器下新增,高斯隨機定時器
  • 總的延時 = 固定延遲時間 + 高斯隨機生成的偏差值(說明:單位都是毫秒,固定延遲300ms,偏差100ms,意思是時間延遲300-400ms之間)
  • 6、新增指令碼(http請求)
  • 7、新增->監聽器
  • 8、在最後新增一個聚合報告,新增處:新增->監聽器

第一章 Bug引發的又一次思考

1. 開啟一個頁面非常慢是Bug嗎

  1. 開啟一個頁面非常慢是Bug嗎
  • 可能是,原因:網路慢、使用者端運算能力不足、資源大到現有的網路無法承載、伺服器端資源響應時間過長。
  1. 頁面開啟慢的影響是什麼?
  • 使用者體驗不好,從而導致使用者流失
  • 使用者流失會導致專案失敗
  • 專案失敗可能會導致公司破產

2. 頁面響應耗時可以提前預知嗎?

  1. 在測試階段是否能夠發現頁面響應慢

    當然可以

  2. 如何在測試階段發現頁面響應慢?

  • 模擬大量使用者存取
  • 監控每個請求的響應是否準確
  • 監控伺服器的資源使用

第2章 效能測試認知

1. 企業級軟體為什麼要做效能測試

  1. 歷史上由於效能問題引發的事件
  • 12306網站崩潰,使用者購票失敗
  • 淘寶雙十一網站崩潰
  1. 網站崩潰或慢對使用者的影響
  • 離開
  1. 企業為什麼要做效能測試?
  • 提升使用者體驗
  1. 細化效能測試的目的
  • 預估軟體效能瓶頂,預估軟體優化時間
  • 驗證是否存在多並行的邏輯問題

2. 什麼是效能測試?

  • 效能是用來描述產品除功能外的所具有的速度,效率和能力的綜合能力評價

  • 對產品或是物品的效能驚喜定性或是定量的量測過程

  • 在這個過程中我們使用一些工具來進行場景的模擬,從而進行效能測試

3. 效能測試案例

  1. 測試需求:測試20個使用者存取網站在負載達到30QPS時的平均響應時間
  2. QPS:Query Per Second 每秒查詢率。(一臺查詢伺服器每秒能夠處理的查詢次數,作為域名伺服器的效能經常用每秒查詢率來衡量)
  3. 測試步驟
  • 1、新增執行緒組(執行緒數+準備時長+迴圈次數)
  • 1.1、執行緒數:虛擬使用者數,一個虛擬使用者佔用一個程序或執行緒(設定多少個虛擬使用者=設定多少個執行緒)
  • 1.2、準備時長(s):設定的虛擬使用者數需要多長時間全部啟動。eg:執行緒數為20,準備時長為10,則說明需要10秒鐘啟動20個程序。
  • 1.3、迴圈次數:每個執行緒傳送請求的次數。eg:執行緒數為20,迴圈次數為5,那麼每個執行緒傳送5次請求,總請求數為20*5=100

  • 2、新增HTTP請求

  • 3、設定QPS限制:控制給定的取樣器傳送請求的吞吐量

  • 4、新增監視器-聚合報告、察看結果樹

  • 5、執行指令碼

  • 6、聚合報告解析(響應時間單位:毫秒)
  • 1)Label:每個Jmeter的element都有一個Name屬性,這裡顯示的就是Name屬性的值
  • 2)#Sample:表示你這次測試中一共發出了多少個請求,如果模擬10個使用者,每個使用者迭代10次,那麼這裡顯示100
  • 3)Average:平均響應時間-預設情況下是單個Request的平均響應時間當使用了Transaction Controller 時,也可以以Transaction為單位顯示平均響應時間
  • 4)Median:中位數,50%使用者的響應時間
  • 5)90%Line:90%使用者響應時間
  • 6)Min:最小響應時間
  • 7)Max:最大響應時間
  • 8)Error%:本次測試中出現錯誤的請求的數量/請求的總數
  • 9)Throughput:吞吐量-預設情況下白石每秒的請求數
  • 10)KB/sec:每秒從伺服器端接收到的資料量

4. 效能測試的分類

  1. 效能測試的分類
  • 壓力測試、負載測試、並行測試、穩定性測試
  1. 什麼是壓力測試?
  • 壓力測試也叫強度測試,它是指逐步給系統增加壓力,測試系統的效能變化,使系統某些資源達到飽和或系統崩潰的邊緣,從而確定系統所能承受的最大壓力
  • 舉個例子:百米賽跑,逐步增加你的負重,直到你完不成百米的程度,也就是崩潰的邊緣你所能承受的最大負重
  1. 什麼是負載測試?
  • 被測試系統正常服務的前提下,系統所能承擔的最大服務負荷數量(即最大並行數量),最終分析出系統效能的瓶頸
  • 舉個例子:百米賽跑,設定必須15秒完成,負重奔跑(不斷增加負重)
  1. 壓力測試和負載測試的區別
  • 壓力測試要測試出系統即將崩潰時,能夠承受的最大並行數
  • 負載測試是滿足系統指標要求的情況下,能夠承受的最大並行數
  1. 什麼是並行測試
  • 舉個例子:商場賣貨,售後員根據庫存表單記錄表賣貨
  • 倉庫管理員應該在出貨時同時更新庫存表單記錄表,但由於使用者過多,表單記錄更新不及時
  • 導致倉庫已經沒有貨了,但是售貨員看到庫存表單記錄表中還顯示有庫存,仍然在賣貨,但已經發不出去貨了

5. 效能測試場景剖析

  • 電商秒殺、學習系統考試、12306搶票、新聞熱點事件、
    網路遊戲運營、視訊網站播放

6. 必知必會的效能測試指標

  • 並行使用者量:同一單位時間進行同一操作的使用者數量
  • 吞吐量:單位時間內系統成功傳輸的資料量,單位通常是MB、GB
  • 吞吐率:又叫Throughput,單位時間內系統成功處理的請求數量,通常單位為(請求數量/每秒、req/s)

7. 效能測試基本流程

  1. 標準效能測試流程

8. 簡述 效能測試流程?

1.分析效能需求。挑選使用者使用最頻繁的場景來測試,比如:登陸,搜尋,下單等等。確定效能指標,比如:事務通過率為100%,TOP99%是5秒,最大並行使用者為1000人,CPU和記憶體的使用率在70%以下

2.制定效能測試計劃,明確測試時間(通常在功能穩定後,如第一輪測試後進行)和測試環境和測試工具

3.編寫測試用例

4.搭建測試環境,準備好測試資料

5.編寫效能測試指令碼

6.效能測試指令碼調優。設定檢查點、引數化、關聯、集合點、事務,調整思考時間,刪除冗餘指令碼

7.設計測試場景,執行測試指令碼,監控伺服器,

8.分析測試結果,收集相關的紀錄檔提單給開發

9.迴歸效能測試

10.編寫測試報告