1. 程式人生 > 其它 >效能測試基礎

效能測試基礎

什麼是軟體效能?

軟體的效能是個很大的概念,覆蓋面非常廣泛,對一個軟體系統而言,包括執行效率、資源佔用、穩定性、安全性、相容性、可擴充套件性、可靠性等等。
使用者視角的軟體效能:

  • 從使用者角度來說,軟體效能就是軟體對使用者操作的響應時間
    管理員視角的軟體效能
  • 系統的響應時間;
  • 系統執行時伺服器的狀態,如CPU利用情況,記憶體使用情況等;
  • 系統是否能夠實現擴充套件;
  • 系統支援多少使用者訪問;
  • 系統性能可能的瓶頸在哪裡;
  • 系統是否支援7*24小時的業務訪問。

產品開發人員視角的軟體效能

  • 使用者關心的響應時間;
  • 管理員關心的系統可擴充套件性等;
  • 架構設計是否合理;
  • 資料庫設計是否合理;
  • 程式碼是否存在效能方面的問題;
  • 系統中是否有不合理的記憶體使用方式。

什麼是軟體效能測試?

效能測試主要是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項效能指標進行測試!
效能測試的目的
評估系統的能力:測試中得到的壓力水平和響應時間資料可以用於驗證系統是否達到規劃時的水平。
識別體系中的弱點:將系統的壓力增加到一個極端水平,從而幫助發現系統薄弱環節並修復系統瓶頸。
驗證系統穩定性和可靠性:長時間的測試可能導致程式發生記憶體洩露等引起的隱藏問題,在一個生產負荷下執行測試一定時間,評估系統可靠性是否滿足要求。
系統調優:重複執行效能測試,以驗證系統調優是否取得預期效果。

效能測試指標:

併發使用者數

併發是指在某一給定時間內,某個特定點上進行會話操作的使用者數。Virtual User,模擬真實業務邏輯步驟的虛擬使用者,虛擬使用者模擬的操作步驟都被記錄在虛擬使用者腳本里。Vuser指令碼用於描述Vuser在場景中執行的操作。

併發:

併發分為狹義和廣義兩類。
狹義的併發,即所有的使用者在同一時間做同一件事情,這種操作一般針對同一型別的業務或者所有使用者進行完全一樣的操作,目的是測試資料庫和程式對併發操作的處理。
狹義併發強調對系統的請求操作是完全相同的,多適用於效能測試、負載測試、壓力測試;
廣義的併發,即多個使用者對系統發出了請求或進行了操作,但這些請求和操作是不同的。對整個系統而言,仍然有很多使用者同時進行操作。
廣義併發不限制對系統的請求操作,多適用於混合場景、穩定性測試場景。
小結:
廣義併發:同一時間段內,對系統發起請求的數量
狹義併發:在同一時刻,對系統(伺服器)發起的相同請求的數量

請求處理失敗了也算併發,但在TPS、處理數量上不算
做效能測試的前提要保證請求的成功率(正確性)
行業內要求和錢相關的請求正確率要達100%
其他一般請求要求成功率99.99%

響應時間

響應時間指的是客戶端發出請求到得到響應的整個過程所經歷的。
指從客戶端發一個請求開始時,到客戶端接收到從伺服器端返回的響應結果結束經歷的時間,響應時間由請求傳送時間、網路傳輸時間和伺服器處理時間三部分組成。

http協議就是通過瀏覽器訪問的響應時間包括前端頁面載入時間,但loadrunner裡不包含此部分時間。於是有了web前端效能測試之說
特別注意場景:大量樹狀結構容易出前端效能問題
注:併發和響應時間是相互關聯的,缺一不可

吞吐量

吞吐量是指單位時間內系統處理的客戶請求的數量,直接體現軟體系統的效能承載能力。
一般來說,吞吐量用請求數/秒或頁面數/秒來衡量,從業務的角度,吞吐量也可以用訪問人數/天或處理的業務數/小時等單位來衡量。從網路的角度來說,也可以用位元組數/天等單位來考察網路流量。

資源利用率

資源利用率是指系統資源的使用程度,比如伺服器(網路以及資料庫)的CPU利用率、記憶體利用率、磁碟利用率、網路頻寬利用率等。
除了上述資源,我們還應該考慮資料庫連線池使用情況,JVM記憶體使用情況,sql執行效率等。
資源利用率:包含硬體(CPU、記憶體、IO、網路)、整個架構包含的節點利用率、中介軟體執行緒池利用率、資料庫連線池使用情況,SQL執行效率,居民記憶體使用率,gc次數及時間,負載均衡伺服器資源利用率,快取伺服器資源利用率、快取key命中率

TPS

服務端:1秒鐘(單位時間內)伺服器處理的請求(事務)的數量
工具端(客戶端):多少併發使用者數(VU),響應時間是多少

效能測試的型別

隨著壓力不斷增長,實測系統的資源會丌斷被消耗,TPS值會因為這些因素而發生變化,並且符合一定的規律。

  • 效能測試
  • 負載測試
  • 壓力測試
  • 穩定性測試/可靠性測試/疲勞測試
  • 容量測試
  • 網路效能測試


圖中
a點:效能期望值
b點:高於期望值,系統資源處於臨界點
c點:高於期望值,拐點
d點:超過最大負載,系統崩潰

效能測試

a點到b點之間的系統性能,指以系統預期效能指標為前提,對系統不斷增加壓力,以驗證系統能否達到預期效能。(單場景測試)
關注點:how much和how fast

負載測試

含義:主要用於描述常規的效能測試,通過模擬生產執行的業務壓力和使用場景組合來測試系統的效能是否滿足生產要求。
目的:在特定的執行條件下驗證系統的能力狀況。
b 點的系統性能,是指對系統丌斷地增加壓力或增加一定壓力下的持續
時間,直到系統的某項或多項效能指標達到極限,例如某種資源已經達
到飽和狀態等。
關注點:how much

壓力測試

含義:壓力測試是為了發現在什麼條件下應用程式的效能會變得不可接受。
• 壓力測試不負載測試的比較
實現方法基本相同
測試的目的不同
• b 點到d之間的系統性能,是指超過安全負載的情況下,對系統不斷施加壓力,直到系統崩潰,確定系統的瓶頸或不能接收使用者請求的效能點。

穩定性測試/可靠性測試/疲勞測試

含義
軟體可靠性: 在規定條件下,在規定時間內,軟體丌引起系統失效的概率
可靠性測試:在有使用代表性的環境中,持續執行系統某些功能,驗證系統穩
定性的過程
目的
儘量模擬客戶的使用環境,一定業務壓力下,持續執行過程N24小時,測試系統的穩定性
•a點到b點之間的系統性能,是指實測系統在接近生產環境的系統中,給系統載入一定於真實業務壓力相仿的壓力,使系統執行一段較長時間,以檢測系統是
否穩定,一般穩定性測試時間為N
12小時。

容量測試

含義
確定測試物件在給定時間內能夠持續處理的最大負載或工作量使測試物件處理大量的資料,以確定是否達到了將使被測物件發生故障的極限
• 目的
測試單業務在一定資料容量下效能表現,比如通訊錄、比如選人。
關注點:how much(而丌是how fast)

測試場景:
1.單場景:測試某個介面/功能的效能tps(並非所有功能/介面都需要測試,測重要的、和錢相關的場景),目的是測指標
2.混合場景:把多個單場景組合一起進行測試,目的是為了測bug(執行緒死鎖、資料庫死鎖)
3.穩定性場景:測試穩定性,目的是為了測試記憶體溢位(記憶體洩漏是過程,溢位是結果)
單場景一般跑15分鐘,溢位一般發現不了,所以需要跑穩定性。
穩定性測試一般以12小時為單位,n*12

主要介面,使用量多的接口才做效能測試
平均無故障時間
什麼時候測試測效能:開發指令碼等功能測試基本穩定之後,但介入專案要越早越好,提前瞭解需求,系統架構。