效能測試基本知識理論和概念
1.效能測試介紹和相關概念
效能測試是一種評估在指定工作負荷下系統或應用的響應能力、可靠性、吞吐量、互操作性以及可擴充套件性的測試。效能測試可以定義為一種評估計算機、網路軟體應用或裝置的速率或效率的過程。可以對軟體應用、系統資源、目標應用元件、資料庫等進行效能測試。通常測試會包含一個自動化的測試套件,該測試套件了能夠很容易地反覆模擬各種正常值、峰值和異常值。測試過程可以比較應用在速度、資料傳輸率、吞吐量、貸款、效率或可靠性等方面變化。效能測試也作為評估瓶頸和單點故障的診斷工具。
1.1效能測試的一些概念:
負載測試和壓力測試都屬於效能測試,兩者可以結合進行;通過負載測試,確定在各種工作負載下系統的效能,目標是測試當負載逐漸增加時,系統各項效能指標的變化情況。
效能測試概括為三個方面:(1)應用在客戶端效能的測試(2)應用在網路上效能的測試(3)應用在伺服器端效能的測試。通常情況下,三方面有效、合理的結合,可以達到對系統性能全面的分析和瓶頸的預測。
應用在客戶端效能測試的目的是考察客戶端應用的效能,測試的入口是客戶端。它主要包括併發效能測試、疲勞強度測試、大資料量測試和速度測試等,其中併發效能測試是重點。
併發效能測試的過程是一個負載測試和壓力測試的過程,即逐漸增加負載,直到系統的瓶頸或者不能接收的效能點,通過綜合分析交易執行指標和資源監控指標來確定系統併發效能的過程。狹義的併發:使用者在同一時間內做同一事情 |
廣義的併發:使用者同時操作不同的功能(混合場景:登入、下訂單、、支付訂單) |
在效能測試中,一般先進行狹義的併發(單場景單介面做效能測試,可更好地定位問題),再進行廣義的併發(混合場景(驗證系統的穩定性,在多個關聯介面時,會不會出現新的問題))
(4)併發使用者數
系統使用者數:系統的註冊使用者數(包含殭屍使用者)
線上使用者數:登入系統的使用者(不一定對伺服器產生壓力)
併發使用者數:對伺服器產生壓力的使用者
併發使用者數的確定:老系統-找運維;新系統:競品、做過的專案、經驗
(5)事務
事務是效能指令碼中的一個重要特性。要度量伺服器的效能,需要定義事務,每個事務都包含事務開始和事務結束標記。事務用來衡量指令碼中一行程式碼或多行大媽的執行所消耗的時間。
(6)響應時間
響應時間=網路時間(N1+N2+N3+N4)+伺服器處理時間(A1+A3)+資料庫處理時間(A2)
web的HTTP請求中響應時間包括了前段渲染時間,但是loadrunner中是不統計前段渲染時間的。
tps(Transaction Pre Second)
伺服器每秒能處理的事務數,用來衡量伺服器處理能力。基於事務統計。
(7)吞吐量
指系統在單位時間內處理請求的數量,不嚴格意義上來說就是tps。
(8)點選率(Hit Per Second)
從客戶端發起請求伺服器的數量(衡量客戶端效能,需排除網路、本機產生的影響)。
(9)資源利用率
指系統資源的使用程度,比如伺服器(網路及資料庫)的CPU利用率,記憶體利用率,硬碟利用率,網路頻寬利用率等。
(10)CPU
大腦,主要進行判斷和處理,能反應出系統的繁忙程度,一般分為系統CPU(%sys)與使用者態CPU(%user),其中系統CPU是處理系統本身所佔用的資源,使用者CPU則是處理程式所佔用的資源。物件不同。
使用者態CPU高:程式碼、sql語句處理有問題;
系統態CPU高:核心、伺服器資源瓶頸。
(11)Load Average
指一段時間內CPU正在處理和等待CPU處理的事務,也就是CPU使用佇列的長度的統計資訊。eg:地鐵進站,等待乘客越多,load average越大。
(12)Memory
記憶區域,將各種資訊收集起來存放。資料從記憶體讀取要比從磁碟讀取速度快,而記憶體經常發生記憶體洩漏或記憶體溢位的現象。
(13)佇列
可以理解成進站排隊的現象,佇列長,說明處理可能達到了極限或者遇到了阻塞。
(14)網路
重點關注網路的流量,看是否存在網路頻寬的瓶頸。4
3.效能測試的目的: 識別系統的弱點,評估系統能力,發現系統性能瓶頸,提高系統可靠效能和穩定性。 4.效能測試實施過程: 4.1 定義驗收標準:負載下應用的各個模組可接受的效能指標是什麼?具體來說,就是定義好響應時間、吞吐量,以及資源利用率目標和約束條件。標準由專案干係人負責,測試過程中通常需要持續關注,,標準也可能根據實際情況進行調整。 4.2 定義測試環境:熟悉物理測試環境和產品環境對一次成功的測試執行來說非常關鍵。需要明確的東西包括硬體、軟體,以及測試下的網路環境設定,這將有助於制定有效的測試計劃並已開始就是別處測試風險。 4.3 規劃並設計測試用例:先了解應用的使用方法,再確定各個場景下真實的使用場景(包括變化),比如註冊模組,通常一天會有多少使用者註冊?註冊是不是在同時發生?還是分散的?通常一小時內有多少人註冊?等等。 4.4 準備測試環境:配置測試環境、工具和資源。包括測試的軟體硬體、網路資源環境,監控環境、測試工具的準備、資料的準備等等。 4.5 準備測試計劃:使用測試工具錄製好(配置好)測試場景(比如指令碼、API等等)。 4.6 執行測試:首先在輕量負載下執行測試計劃,驗證測試指令碼和輸出結果的正確性,驗證資料的正確性,關注伺服器的效能,伺服器日誌的警告⚠和錯誤❌。例如出現頻度高的錯誤可能代表測試指令碼、被測應用或系統資源有問題,或者三者都有。 4.7 分析結果、報告和重測試:檢查每一次成功只想的結果,識別需要解決的瓶頸。瓶頸可能和系統、資料庫或者應用有關。可以通過調整基礎設施(如增加執行能存等)、優化資料查詢等。對應的結果可以和基線資料對比。 基線資料收集的一些參考點: A.基線資料應該是應用程式特定的。 B.可以為系統、應用或者模組建立基線。 C.基線資料是指標資料/結果。 D.基線資料不應該過於概括。 E.隨時間變化可能需要重新定義基線資料。 F.基線資料可以當作共享的參考框架。 G.基線資料應該是可以重用的。 H.基線資料可以幫助識別效能的變化。5 【1】https://www.cnblogs.com/dream-future/p/7603020.html 【2】https://baike.baidu.com/item/%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F/6181425?fr=aladdin 【3】https://baike.baidu.com/item/%E5%86%85%E5%AD%98%E6%BA%A2%E5%87%BA/1430777?fr=aladdin 【4】https://www.cnblogs.com/wq-zhou/p/10631189.html 【5】Performance Testing with Jmeter sencond Edition ,Bayo Erinle There is no smoke without fire. An ounce of prevention is worth a pound of cure.