性能測試思想(What is performance testing?)



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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM