前言
效能測試是一個全棧工程師/架構師必會的技能之一,只有學會效能測試,才能根據得到的測試報告進行分析,找到系統效能的瓶頸所在,而這也是最佳化架構設計中重要的依據。
測試流程:
- 需求分析→環境搭建→測試計劃→指令碼開發→執行與監控→缺陷管理→結果與報告
壓力測試
- 1、執行緒組設定,這裡的執行緒數與同步定時器的使用者數量一樣
- 2、新增HTTP cookie管理器
- 3、預設請求值
- 4、新增一個事務控制器,可以當作一個業務
- 5、在事務控制器下新增,同步定時器
- 設定使用者數量,這裡與執行緒組的執行緒數一樣,超時時間可設定
- 6、新增指令碼(http請求)
- 7、新增檢視結果樹
- 8、新增->監聽器
- 9、在最後新增一個聚合報告,新增處:新增->監聽器
- 負載測試實戰
- 1、執行緒組的設定50個使用者(持續時間:按秒計算,這裡300=60*5,意思就是執行時長為5分鐘)
- 2、新增HTTP cookie管理器
- 3、預設請求值
- 4、新增一個事務控制器,可以當作一個業務
- 5、在事務控制器下新增,高斯隨機定時器
- 總的延時 = 固定延遲時間 + 高斯隨機生成的偏差值(說明:單位都是毫秒,固定延遲300ms,偏差100ms,意思是時間延遲300-400ms之間)
- 6、新增指令碼(http請求)
- 7、新增->監聽器
- 8、在最後新增一個聚合報告,新增處:新增->監聽器
第一章 Bug引發的又一次思考
1. 開啟一個頁面非常慢是Bug嗎
- 開啟一個頁面非常慢是Bug嗎
- 可能是,原因:網路慢、客戶端運算能力不足、資源大到現有的網路無法承載、服務端資源響應時間過長。
- 頁面開啟慢的影響是什麼?
- 使用者體驗不好,從而導致使用者流失
- 使用者流失會導致專案失敗
- 專案失敗可能會導致公司破產
2. 頁面響應耗時可以提前預知嗎?
-
在測試階段是否能夠發現頁面響應慢
當然可以
-
如何在測試階段發現頁面響應慢?
- 模擬大量使用者訪問
- 監控每個請求的響應是否準確
- 監控伺服器的資源使用
第2章 效能測試認知
1. 企業級軟體為什麼要做效能測試
- 歷史上由於效能問題引發的事件
- 12306網站崩潰,使用者購票失敗
- 淘寶雙十一網站崩潰
- 網站崩潰或慢對使用者的影響
- 離開
- 企業為什麼要做效能測試?
- 提升使用者體驗
- 細化效能測試的目的
- 預估軟體效能瓶頂,預估軟體最佳化時間
- 驗證是否存在多併發的邏輯問題
2. 什麼是效能測試?
-
效能是用來描述產品除功能外的所具有的速度,效率和能力的綜合能力評價
-
對產品或是物品的效能驚喜定性或是定量的量測過程
-
在這個過程中我們使用一些工具來進行場景的模擬,從而進行效能測試
3. 效能測試案例
- 測試需求:測試20個使用者訪問網站在負載達到30QPS時的平均響應時間
- QPS:Query Per Second 每秒查詢率。(一臺查詢伺服器每秒能夠處理的查詢次數,作為域名伺服器的效能經常用每秒查詢率來衡量)
- 測試步驟
- 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. 效能測試的分類
- 效能測試的分類
- 壓力測試、負載測試、併發測試、穩定性測試
- 什麼是壓力測試?
- 壓力測試也叫強度測試,它是指逐步給系統增加壓力,測試系統的效能變化,使系統某些資源達到飽和或系統崩潰的邊緣,從而確定系統所能承受的最大壓力
- 舉個例子:百米賽跑,逐步增加你的負重,直到你完不成百米的程度,也就是崩潰的邊緣你所能承受的最大負重
- 什麼是負載測試?
- 被測試系統正常服務的前提下,系統所能承擔的最大服務負荷數量(即最大併發數量),最終分析出系統效能的瓶頸
- 舉個例子:百米賽跑,設定必須15秒完成,負重奔跑(不斷增加負重)
- 壓力測試和負載測試的區別
- 壓力測試要測試出系統即將崩潰時,能夠承受的最大併發數
- 負載測試是滿足系統指標要求的情況下,能夠承受的最大併發數
- 什麼是併發測試
- 舉個例子:商場賣貨,售後員根據庫存表單記錄表賣貨
- 倉庫管理員應該在出貨時同時更新庫存表單記錄表,但由於使用者過多,表單記錄更新不及時
- 導致倉庫已經沒有貨了,但是售貨員看到庫存表單記錄表中還顯示有庫存,仍然在賣貨,但已經發不出去貨了
5. 效能測試場景剖析
- 電商秒殺、學習系統考試、12306搶票、新聞熱點事件、
網路遊戲運營、影片網站播放
6. 必知必會的效能測試指標
- 併發使用者量:同一單位時間進行同一操作的使用者數量
- 吞吐量:單位時間內系統成功傳輸的資料量,單位通常是MB、GB
- 吞吐率:又叫Throughput,單位時間內系統成功處理的請求數量,通常單位為(請求數量/每秒、req/s)
7. 效能測試基本流程
- 標準效能測試流程
8. 簡述 效能測試流程?
1.分析效能需求。挑選使用者使用最頻繁的場景來測試,比如:登陸,搜尋,下單等等。確定效能指標,比如:事務透過率為100%,TOP99%是5秒,最大併發使用者為1000人,CPU和記憶體的使用率在70%以下
2.制定效能測試計劃,明確測試時間(通常在功能穩定後,如第一輪測試後進行)和測試環境和測試工具
3.編寫測試用例
4.搭建測試環境,準備好測試資料
5.編寫效能測試指令碼
6.效能測試指令碼調優。設定檢查點、引數化、關聯、集合點、事務,調整思考時間,刪除冗餘指令碼
7.設計測試場景,執行測試指令碼,監控伺服器,
8.分析測試結果,收集相關的日誌提單給開發
9.迴歸效能測試
10.編寫測試報告