1. 程式人生 > 實用技巧 >效能測試理論知識

效能測試理論知識

效能測試思想講解

1.什麼是效能測試

什麼是軟體效能

定義:軟體的效能是軟體的一種非功能特性,它關注的不是軟體是否能夠完成特定的功能,而是在完成該功能是展示出來的及時性

比如:一個登入功能他能實現登入操作,但是登入過程需要10s才能進入主頁面,這就說明軟體的效能不好。

什麼是效能測試

定義:指通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項效能指標進行測試。

功能測試的時候關注的是1個人的操作,效能測試關注的是多個人。

效能測試什麼時候做

介面測試是最先做,效能測試是最後做。

效能測試是基於所有功能都測試完畢並且修復完成,基本不改變,正常測試流程已經全部走完,在上線前的兩三天做效能測試,效能測試通過則可以上線。

2.不同群體眼中的效能

使用者的視角:

  • 響應時間(還要讓我等多久?需要載入老半天才出現頁面?)
  • 確定性(為什麼總是失敗?閃退?無響應?)

開發視角:

  • 架構設計是否合理?——架構設計
  • 資料庫設計是否合理?——資料庫設計
  • 程式碼是否存在效能問題?——程式碼
  • 是否有不合理的記憶體使用?——程式碼
  • 是否有不合理的執行緒同步操作?——程式碼
  • 是否有不合理的資源競爭?——程式碼
  • 程式碼演算法是否還能進一步提升?——程式碼

系統管理員(運維)視角:

  • 伺服器資源使用合理嗎?——資源利用率
  • 資料庫使用合理嗎?——資源利用率
  • 系統是否實現擴充套件?——可擴充套件性(比如:伺服器動態擴充套件)
  • 最多支撐多少使用者訪問?——系統容量
  • 最大業務處理量?——系統容量
  • 系統有哪些潛在的瓶頸?——可擴充套件性
  • 更換哪些裝置,新增哪些機器可以提高系統性能?——可擴充套件性
  • 7×24小時連續不間斷業務訪問?——穩定性

測試眼中的效能:

官方回答:

  • 測試人員通常是作為軟體質量控制的一個角色,不僅僅是找BUG,更需要對整個軟體的質量負責,效能也屬於質量的一部分,因此測試人員眼中的效能應該是全面的,考慮的東西也需要全面。
  • 測試人員需要考慮全面的效能,包括使用者、開發、運維等各個視角的效能。
  • 測試人員在做效能測試時除開要關注表面的現象,比如:響應時間,也需要關注本質,比如:使用者看不到的伺服器資源利用率,架構設計是否合理,程式碼是否合理等方面。

實際測試:

  • 將開發視角看成一塊,運維視角也看成一塊,站在使用者的角度,模擬使用者操作。
  • 如果達標就通過,上線。
  • 如果不達標,就要判斷是開發的問題還是運維的問題。
    • 監控系統的物理資源,比如:CPU佔用100%(一般是85%以內,70%、60%、50%都ok),就是運維問題,或者是記憶體佔滿,頻寬打滿。
    • 運維已經調過物理資源,CPU、記憶體、頻寬等也都達標,測試發現還有效能問題,那就是開發問題。就要指派給開發去處理。

❓效能測試的指標?是誰定的?(面試題)

產品經理和專案經理制定。

3.效能測試的場景維度和型別

基準測試:

在給系統施加較低壓力時,檢視系統的執行狀況並記錄相關資料作為基礎參考。

比如:一個系統的效能要求是滿足100個人使用,我們就會取10-20個人去做測試就會得到一組資料,這個數就作為基準測試的基礎參考值

負載測試:

是指對系統不斷地增加壓力或增加一定壓力下的持續時間,直到系統的某項或多項效能指標達到安全臨界值,例如:某種資源已經達到飽和狀態。

正常是由小往大增加,需要注意的點是需要往安全的臨界值去加,而不是往超負荷的去加,也就是說效能是走上坡路的,尋找最佳效能的那個點。如果加到發現效能下降,就需要往回退,取更小的差值,比如60直接加到70的時候出現效能指標下降,就需要取65、66、67等慢慢嘗試,找到系統最優點。

壓力測試:

壓力測試是評估系統處於或超過預期負載時系統的執行情況,關注點在於系統在峰值負載或超出最大載荷情況下的處理能力。

70往上加,觀察軟體是如何處理這種情況:
①系統崩潰
②所有人都無法訪問
③一部分人可以訪問,一部分人無法訪問,需要錯峰訪問(比如:考試系統查分)

穩定性測試:

在給系統載入一定業務壓力(40%-60%)的情況下,使系統執行一段時間,一次檢測系統是否穩定。

併發測試:

測試多個使用者同時訪問同一個應用、同一個模組或者資料記錄時是否存在死鎖或者其他效能問題。

4.效能測試基本概念
  1. 響應時間(RT——Response-time)

    • 定義:從使用者傳送一個請求使用者接受到伺服器返回的響應資料的這段時間就是響應時間。

    • 關鍵路徑:http請求經過網路傳送到web伺服器進行處理,如果需要操作DB,再由網路轉發到資料庫進行處理,然後返回值給web伺服器,web伺服器最終把結果資料通過網路返回給客戶端。

    • 響應時間計算方法:

      響應時間=呈現時間+網路傳輸時間+伺服器端響應時間+應用延時時間

    • 響應時間和負載對應關係:

      理髮店模型:10個理髮師,理1個客戶需要1分鐘,當同時來的客戶數量小於等於10個,總時間只需1分鐘,當同時來11個客戶,總時間就需要2分鐘,以此類推21個客戶就需要3分鐘......

      拐點:

      • 響應時間突然增加。
      • 意味系統的一種或多種資源利用達到極限。
      • 通常可以利用拐點來進行效能測試分析與定位。
  2. 吞吐量

    • 定義:單位時間內系統處理的客戶端請求的數量。(判斷系統處理能力的一個指標)

    • 計算單位:一般使用 請求數/秒 作為吞吐量的單位,可以使用 頁面數/秒 表示。另外,從業務角度來說也可以使用 訪問人數/天頁面訪問量/天 作為單位。

    • 計算方法:throughput = (number of requests)/(total time)

    • 吞吐量和負載對應關係:

      拐點:

      • 吞吐量逐漸達到飽和。
      • 意味著系統一種或多種資源利用達到了極限。
      • 通常可以利用拐點來進行效能測試分析與定位。
  3. 併發數

    • 併發使用者數:某一物理時刻同時向系統提交請求的使用者數,提交的請求可能是同一個場景或功能,也可以是不同場景或功能。
    • 線上使用者數:某段時間內訪問系統的使用者數,這些使用者並不一定同時向系統提交請求。(日活——每日活躍使用者數)
    • 系統使用者數:系統註冊的總使用者資料。
    • 三者之間的關係:系統使用者數 >= 線上使用者數 >= 併發使用者數
  4. 資源利用率

    • 定義:指的是對不同系統資源的使用程度,通常以佔用最大值的百分比來衡量(CPU、記憶體)。

    • 通常需要關注的伺服器資源如下:

      • CPU:就像人的大腦,主要負責相關事物的判斷以及實際處理的機制。(一般不超過80%-90%)
      • 記憶體:大腦中的記憶塊區,將眼睛、面板等收集到的資訊記錄起來的地方,以供CPU進行判斷,但是是臨時的,訪問速度快,如果關機或斷電,記憶體中的資料就會消失。
      • 磁碟IO:大腦中的記憶區塊,將重要的資料儲存起來,永久儲存,關機或斷電也不會丟失,速度慢,以便將來再次使用這些資料。(通過檢視讀寫)
      • 網路:頻寬。(傳送/接收的速率)
    • 資源利用率和負載對應關係:

      拐點

      • 伺服器某資源使用逐漸達到飽和。
      • 通常可以利用拐點來進行效能測試分析與定位。
    • windows的資源監視器:

      工作管理員 --> 效能 --> 資源監視器

  5. 其他常用概念

    • PV(Page View,頁面訪問量):訪問一個URL,產生一個PV,每日每個網站的總PV量是形容一個網站規模的重要指標。
    • UV(Unique Visitor,使用者訪問):作為獨立的使用者,訪問站點的所有頁面均算一個UV。