非功能測試之性能測試基礎

說明:該篇博客是博主一字一碼編寫的,實屬不易,請尊重原創,謝謝大家!

一、性能測試的含義

1.什麼是性能測試

  • 測試軟件的性能表現,考量軟件運行的如何。
    √     一般關注時間/效率、資源佔用等情況。
    √     既要馬兒快點跑,又要馬兒少吃草。

舉例:QQ聊天

  • 功能方面
    功能缺陷:點擊發送消息,信息沒有發送過去
  • 性能方面
    時間/效率:點擊發送消息,3分鐘後對方纔收到
    資源佔用:點擊發送消息,電腦卡死,鼠標動不了CPU達到百分之99內存佔滿

2.什麼時候進行性能測試

  • 已通過系統測試,功能比較穩定。

3.誰關注性能

  • 用戶
    √     用戶體會到的性能是軟件對用戶操作的響應時間,是用戶從提交或輸入一個 url 地址到系統將全部數據呈現出來的時間。

  • 系統管理員和性能測試工程師
    √     除與用戶的視角一樣外,還關注與系統狀態相關的信息,如系統資源的使用情況,包括 CPU 的使用、內存的使用情況、磁盤 I/O、數據交互等。
    √     還關注硬件資源的可擴展性即規劃性能部分,如系統支持 100 個用戶併發沒問題,支持 200 個呢?

  • 軟件開發工程師
    √     關注以上所有問題,還關注內存泄露、數據庫是否死鎖、中間件以及和應用程序服務器等問題。

二、性能測試術語

1.請求

客戶端向服務器發出的請求獲得數據或文件、圖片等資源。

2.響應

服務器向客戶端發送數據或文件、圖片等資源。

3.協議

  • 傳輸層協議
    √     tcp、udp

  • 應用層協議
    √     ftp、http、dns、dhcp、smtp、pop

4.響應時間

  • 應用系統從用戶發出請求開始,到客戶端接收到所有數據所消耗的時間。
  • 網頁響應時間細分
    √     網絡傳輸時間:N1+N2+N3+N4。
    √     應用服務器處理數據:A1+A3。
    √     數據庫處理時間:A2。
    在這裏插入圖片描述

5.在線用戶

正在使用軟件的用戶。

6.併發用戶

  • 指同一時刻與服務器進行數據交互的所有用戶數量。(如登錄丶下單等,瀏覽可不算)
    √     在線用戶未必是併發用戶。
  • 計算併發用戶數
    √     一般都根據以往經驗和行業標準進行估算。
           ✰     如電信業併發用戶數常爲在線用戶的萬分之一;
           ✰     OA 軟件併發用戶數一般在在線用戶數的 5%-20%。
    √     參考其他同類產品。
    √     分析歷史數據(一年或半年內的每天需要處理的交易業務量)。
    √     試上線運行。

7.虛擬用戶

性能測試工具使用虛擬用戶模擬真實用戶的行爲。

8.吞吐量與吞吐率

  • 吞吐量
    √     指一段時間內服務器處理的字節數,直接體現服務器的承載能力。
    在這裏插入圖片描述
    √     從吞吐量和 VU 關聯圖可看出,吞吐量在 VU 增長到一定數量時,軟件系統出現性能瓶頸,此時吞吐量不再隨 VU 增多而增大,而是趨於平衡。
    √     實際測試時,吞吐量在測試前是不知道的,必須通過不斷添加虛擬用戶來測試,以找到吞吐量的拐點,即吞吐量的最大值。

  • 吞吐率(Throughout)
    √     指單位時間內從服務器返回的字節數,即吞吐量/測試時間,也可以是單位時間內處理的客戶請求數。
    √     它是衡量網絡性能一個重要指標。通常情況下吞吐量越大,吞吐率的值也越大,吞吐率越大表示系統的負載能力越強。

9.每秒事務數(TPS,Transaction Per Second)

  • 表示每秒系統處理的事務數,是衡量系統處理能力的重要指標。
  • 如果每個事務對應一筆業務,那麼 TPS 即表示服務器每秒處理的業務筆數。

10.點擊率(Hit Per Second)

  • 指每秒鐘用戶向服務器提交的 HTTP 請求的數量。
  • 點擊一次可能會向服務器發出多個 HTTP 請求。
    √     通常服務器都具有防刷新機制,以防刷新導致的巨大壓力。
  • 點擊率僅僅反映客戶端提交的請求數,不能表現服務器當前承受的壓力,因爲服務器不能處理全部請求時可以拒絕客戶端的部分請求。
  • 若把每次點擊作爲一次提交事務來對待,則點擊率與 TPS 同義。

11.思考時間(Think Time)

  • 也稱"休眠時間"、等待時間。
  • 指用戶在進行操作時,每個請求之間的時間間隔。
  • 負載測試一般忽略思考時間,壓力或可靠性測試根基實際情況設置一個思考時間。通常思考時間設置爲 3-5s。

12.資源利用率

  • 資源利用率
    √     指服務器系統中不同硬件資源被佔用的程度,主要包括 CPU 利用率、內存利用率、磁盤利用率、網絡等。
    √     性能測試中常用資源利用率進行橫向對比,如 CPU 使用率很高,而其他資源較低,可知 CPU 是系統瓶頸。
    √     配置調優測試中,通過比較配置調優前後的系統資源利用率來判斷調優效果。

  • 性能計數器(Counter)
    √     是描述服務器或操作系統性能的一些數據指標。主要是通過添加計數器來觀察系統資源的使用情況。
    √     計數器在性能測試中發揮着「監控和分析」的關鍵作用,尤其是分析系統可擴展性和定位性能瓶頸時。
    √     性能測試中分析測試結果時,必須基於多個不同的計數器進行分析。

三、性能測試分類

1.負載測試(Load Testing)

  • 通過對被測試系統不斷的加壓,直到超過預定的指標或者部分資源已經達到了一種飽和狀態不能再加壓爲止。
  • 此方法主要是爲了尋找系統最大的負載能力,爲性能調優提供依據。

2.壓力測試(Stress Testing)

  • 當系統已經達到一定的飽和程度(如 CPU、磁盤等已經處於一種飽和狀態)時,測試系統處理業務的能力,測試系統是否會出現崩潰等。

  • 一般通過模擬負載等方法,使系統資源達到一個較高水平。

  • 此方法一般用於系統穩定性測試。

3.併發測試(Concurrency Testing)

  • 通過模擬用戶併發訪問,測試多用戶同時訪問同一應用、模塊或數據,觀察系統是否存在死鎖、系統處理速度明顯下降等性能問題。

4.容量測試(Volume Testing)

  • 尋找軟件系統某項指標的極限值(如最大併發用戶數、數據庫記錄數、最大負載、工作量等)的測試,是一種測試目標。

5.可靠性測試(Reliability Testing)

  • 或稱穩定性測試,健壯性測試。
  • 當系統在一定的業務壓力下,讓系統持續運行一段時間,觀察系統是否達到要求的穩定性。
  • 可靠性測試一般必須給出一個明確的要求,如系統能夠持續無故障運行多少天。
  • 是一種測試目標。

6.配置測試(Configuration Testing)

  • 配置測試
    √     通過調整系統軟/硬件環境,瞭解不同環境對系統性能的影響,從而找到系統的最優配置。
    √     此方法一般用於系統調優和規劃。

  • 基準測試
    √     在一定的軟硬件及網絡環境下,模擬一定數量的虛擬用戶運行一種或多種業務,將測試結果作爲基線數據,在系統調優或系統評測過程中,通過運行相同的業務場景來比較測試結果確定調優是否達到效果或爲系統的選擇提供決策依據。

四、性能測試流程

性能測試過程分爲四個階段:測試設計、構建、執行、分析。

1.設計階段

定義待測試的業務流程、業務的平均處理量、業務處理量的最高峯值、組合業務流程、系統的整體用戶和響應時間目標。

2.構建階段

  • 設計設置和配置測試系統及基礎設施、使用自動化性能測試解決方案構建測試腳本和負載方案。

  • 具體包括:編寫腳本、增強腳本、設計場景。

3.執行階段

包括運行負載方案和測量系統性能,對系統資源進行監控。

4.分析、診斷和調節階段

主要測量系統性能並使負載測試進入下一級別,重點查找問題原因以幫助開發工程師迅速解決問題,並實時調節系統參數以提高性能。

五、主流性能測試工具

在這裏插入圖片描述