iT邦幫忙

2022 iThome 鐵人賽

DAY 26
1
自我挑戰組

開始系統測試系列 第 26

Day 26 | 性能測試

  • 分享至 

  • xImage
  •  

(一)、性能測試的含義

  1. 什麼是性能測試
    • 測試軟體的性能表現,考量軟體執行得如何
      • 一般關注時間/效率、資源占用等情形
  2. 什麼時候進行
    • 已經通過系統測試,功能比較穩定時進行。

(二)、性能測試術語

  1. 請求 - 客戶端像伺服器發出請求獲得數據、文件或圖片等資源
  2. 響應 - 伺服器向客戶端發送數據、文件或圖片等資源
  3. 協議
    • 傳輸層協議 - tcp、udp
    • 應用層協議 - ftp、http、dns、dhcp、smtp、pop
  4. 響應時間
    • 應用程式從用戶發出請求開始,到客戶端接收到所有數據所消耗的時間
    • 網頁響應時間細分
      • 網路傳輸時間:N1+N2+N3+N4
      • 應用資料庫處理數據:A1+A3
      • 資料庫處理時間:A2https://ithelp.ithome.com.tw/upload/images/20221011/20140878pHDwhcuHK3.jpg
  5. 在線用戶 - 正在使用軟體的用戶
  6. 開發用戶
    • 指同一時刻與伺服器進行數據交換的所有用戶數量
    • 計算開發用戶數
      • 一般都根據以往經驗和行業標準進行估算
      • 參考其他同類產品
      • 分析歷史數據
      • 試營運
  7. 虛擬用戶 - 性能測試工具使用虛擬用戶模擬真實用戶的行為
  8. 吞吐量與吞吐率
    • 吞吐量 - 指一段時間內伺服器處理的位元組數,直接顯現伺服器的乘載能力
      • 從吞吐量和VU關聯圖可以看出,吞吐量再VU增長到一定數量時,系統出現瓶頸,此時吞吐量不再隨著VU增大,而是趨近於平衡
      • 實際測試時,吞吐量在測試前是未知的,必須通過不斷添加虛擬用戶來測試,來找到吞吐量最大值
    • 吞吐率(Throughout)
      • 單位時間內從伺服器返回的位元組數,即吞吐量/時間,也可以是單位時間內處理的客戶請求數
      • 是衡量網路性能的一個重要指標,吞吐率越大表是系統的負載能力越強
  9. 每秒任務數(TPS,Transaction Per Second)
    • 表示每秒系統處理的任務數量,是衡量系統處理能力的重要指標
    • 如果每個任務對應一筆業務,那麼TPS就表示伺服器每秒處理的業務筆數
  10. 點擊率(Hit Per Second)
    • 指每秒鐘用戶向伺服器條間的HTTP請求數量
    • 點擊一次可能會向伺服器發出多個HTTP請求
      • 通常伺服器都有防刷新機制,以防止刷新導致的巨大壓力
    • 點擊率僅僅反映客戶端提交的請求數,不能表示伺服器當前承受的壓力,因為伺服器不能處理全部請求時,可以拒絕客戶端的部份請求
    • 若把每次點擊視為一次提交事務來對待,則點擊率與TOS同義。
  11. 思考時間(Think Time)
    • 也稱休眠時間、等待時間
    • 指用戶在進行操作時,每個請求間的時間間隔
    • 負載測試一般忽略思考時間,壓力或可靠性測試根據實際情況設置一個思考時間,通常思考時間設置為3~5秒
  12. 資源利用率
    • 資源利用率
      • 指伺服器系統中不同硬體資源被占用的程度,包含CPU使用率、記憶體使用率、硬碟使用率、網路等
      • 性能測試中常用資源利用率進行橫向比對,如CPU使用率很高,而其他資源較低,可知CPU是系統瓶頸
      • 配置優化測試中,通過比較配置優化前後的系統資源利用率來判斷優化結果。
    • 性能計數器(Counter)
      • 是描述伺服器或操作系統性能的一些數據指標,主要是通過添加計數器來觀察系統資源的使用情況
      • 計數器在性能測試中發揮著「監控和分析」的關鍵作用,尤其是分析系統可擴展性和定位性能瓶頸時
      • 性能測試中分析測試結果時,必須機於多個不同的計數器進行分析

(三)、性能測試分類

  1. 負載測試(Load Testing)
    • 通過對被測系統不斷地加壓,直到超過預定的指標或者部份資源達到了飽和狀態不能再加壓為止
    • 此方法主要是為了尋找系統最大的負載能力,為性能優化提供依據
  2. 壓力測試(Stress Testing)
    • 當系統已經達到一定的飽和程度,測試系統處理業務的能力,測試系統是否會出現崩潰等
    • 一般通過模擬負載等方法,使系統資源達到一個較高水平
    • 此方法一般用於系統穩定性測試
  3. 併發測試(Concurrency Testing)
    • 模擬多個用戶同時訪問同一應用、模組或數據,觀察系統是否存在死結、系統處理速度明顯下降等性能問題
  4. 體積測試/洪水測試(Volume Testing)
    • 尋找軟體系統某向指標的極限值(如最大併發用戶數、資料庫紀錄數、最大負載等)的測試,是一種測試目標
  5. 可靠性测试(Reliability Testing)
    • 或稱穩定性測試、健壯性測試
    • 當系統在一定的業務壓力下持續運作一段時間,觀察系統是否達到要求的穩定性
    • 可靠性測試一般必須給出一個明確的要求,如系統能夠持續無故障運行幾天
    • 是一種測試目標
  6. 配置測試(Configuration Testing)
    • 配置測試
      • 通過調整軟/硬體環境,了解不同環境對系統性能的影響從而找到系統的最佳配置
      • 此方法一般用於系統優化和規劃
    • 基準測試
      • 在一定的軟硬體和網路環境下,模擬一定數量的虛擬用戶運行一種或多種業務,將測試結果作為基線數據,在系統優化或系統評測過程中,通過運行相同的業務場景來比測試結果,確定優化是否達到效果,或為系統的選擇提供依據

(四)、性能測試流程

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

  1. 設計
    • 定義待測試的業務流程、業務的平均處理量、業務處理量的最高峰值、組合業務流程、系統整體用戶和響應時間目標
  2. 建構
    • 設計配置和配置測試系統及基礎設施,使用自動化性能測試解決方案建構測試腳本和負載方案
    • 具體包括:編寫腳本、增強腳本、設計場景
  3. 執行
    • 包含運行負載方案和測量系統性能,對系統資源進行監控
  4. 分析、診斷和調節
    • 主要測量系統性能,並使負載測試進入下一級別,重點查找問題原因以幫助工程師迅速解決問題,並適時調節系統參數以提高性能

上一篇
Day 25 | 介面測試和易用性測試
下一篇
Day 27 | Web測試
系列文
開始系統測試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言