《軟件性能測試過程詳解與案例剖析》讀書筆記

一、軟件測試基本概念

響應時間

定義:對請求做出響應所須要的時間。是用戶視角的軟件性能的主要體現,帶有主觀色彩,沒有絕對的長短。 「web頁面合理響應時間標準」:2/5/10秒,10秒爲上限web

上圖將響應時間劃分爲「呈現時間」和「系統響應時間」。「呈現時間」取決於數據在客戶端收到數據後呈現頁面所消耗時間,通常性能測試中不關注「呈現時間」,由於其很大程度上取決於客戶端表現。所以此處響應時間多爲「系統響應時間」。數據庫

頁面響應時間可被進一步分解爲:「網絡傳輸時間」、「數據庫延遲時間」和「應用服務器延遲時間」api

併發數

業務併發用戶數定義:同一時間段內訪問系統的用戶數量(雖然在訪問系統,但不必定對服務端產生壓力,好比只是在瀏覽系統)服務器

服務端承受的最大併發訪問數定義:從服務端承受的壓力出發,描述的是同時向客戶端發出請求的客戶,體現的是服務端承受的最大併發訪問數,常結合併發測試,來發現系統中存在的併發引發的資源競爭等問題。網絡

例:若是一個OA系統有2000名用戶,最高峯時有500人在線,其中40%在看系統公告,20%在發呆,20%在進行頁面跳轉,20%在填寫表單。則:系統用戶數爲2000,在線用戶數爲500,業務併發用戶數爲500,服務端承受併發數取決於業務併發用戶數及用戶業務場景。session

上圖用於估算業務併發用戶數: 其中,公式1中C爲平均併發用戶數,n是login session的用戶數,L是login session的平均長度,T是考察的時間段的長度,通常爲8小時工做時間。公式2給出了併發用戶數峯值計算方式,該公式由泊松分佈估算獲得。若知道平均每一個用戶發出的請求數u,可估算吞吐量爲u*C。架構

可經過「日誌分析」對應用服務器進行分析,從而瞭解併發數數據,推薦AWStats開源工具(http://awstats.sourceforge.net/)併發

吞吐量

  • 定義:單位時間內系統處理的客戶請求的數量,通常web系統用請求數/秒 或 頁面數/秒來衡量。從業務角度,可用訪問人數/天、業務數/小時衡量,或網絡角度字節數/天負載均衡

  • 在沒有遇到性能瓶頸時,吞吐量可計算爲:F=(N*R)/T。其中N表示用戶個數;R表示每一個用戶發出的請求數量,T表示性能測試所用的時間。函數

  • 經常使用於分析分析吞吐量的圖形是「吞吐量——VU數量(虛擬用戶數)」的關聯圖。雖然吞吐量指標被看作系統承受壓力的體現,但在不一樣併發用戶數量的狀況下,對一個系統施加相同的吞吐量壓力,可能獲得不一樣的測試效果。例如,對同一個系統,測試A採用100個VU,每一個VU間隔1s發出一個請求;測試B採用1000個併發,每隔10秒發出一個請求;二者吞吐量均爲100,但B會更容易出現性能瓶頸。 兩個不一樣系統可能具備不一樣用戶數和用戶使用模式,但若是具備基本一致的吞吐量,則能夠說他們具備基本相同的平均處理能力。

性能計數器:內存數、進程時間;資源利用率

思考時間(Think Time),或休眠時間

  • 用戶操做時每一個請求間的間隔時間。自動化測試角度來講,必須在測試腳本中讓各個操做之間等待一段時間。

RBI測試方法:Rapid Bottleneck Identify

性能降低曲線分析法:單用戶區域;性能平坦區;壓力區域;性能拐點

LoadRunner的性能測試過程

二、性能測試的應用領域

方法分類:

  • 性能測試:模擬業務壓力量和使用場景組合,驗證系統是否具備所宣稱的能力。
  • 負載測試:經過在被測系統上不斷增長壓力,直到性能指標達到飽和狀態,目的是找到系統的處理極限。經過「檢測-加壓-直到性能指標超過預期」的方法
  • 壓力測試:測試系統在必定飽和態下,例如CPU、內存等在飽和態下系統的會話能力,以及系統是否會出錯。經過增長訪問壓力(如併發量),檢測系統有無出錯信息,以及系統響應時間,以及系統在一段時間內的穩定性。通常會以*「CPU使用率達75%以上,內存使用率達70%以上,系統錯誤率,響應時間」來做爲描述。
  • 配置測試:經過對系統軟硬件調整,瞭解不一樣配置對系統性能影響程度,從而找到最優分配原則。通常用於性能調優和規劃能力
  • 併發測試:經過模擬用戶併發訪問,測試多用戶併發訪問一個應用時是否存在死鎖或其餘性能問題。主要關注內存泄露、線程鎖、資源爭用等。可針對系統或某種架構設計進行,可在開發各階段使用。
  • 可靠性測試:經過給系統加載必定的業務壓力(如資源在70%~90%使用率),讓應用持續運行一段時間,測試系統是否穩定。
  • 失效恢復測試:針對有冗餘備份和負載均衡的系統設計,能夠用來檢驗若是系統局部發生故障,用戶可否繼續使用系統,以及用戶將受多大程度的影響。

應用領域:

  • 能力驗證:對一個已部署系統的性能進行驗證。如性能測試,可靠性測試,壓力測試,失效恢復測試
  • 規劃能力:關心如何才能使系統具備咱們要求的性能能力,如系統可否支持將來一段時間內的用戶增加。 是一種探索性測試。如負載測試,配置測試和壓力測試
  • 性能調優:配置測試,負載測試,壓力測試和失效恢復測試
  • 發現缺陷:併發測試,壓力測試,失效恢復測試

三、性能計數器及性能分析方法

操做系統級別、應用服務器級別和數據庫級別上查看和記錄分析

操做系統計數器:

  • 內存分析(應用命令vmstat):
  • 處理器分析(命令top):
    1. 查看System\%Total processor Time性能計數器計數值:體現服務器總體的處理器利用率(或平均利用率)。當持續超過90%,則面臨瓶頸,需增長處理器
    2. 查看每一個CPU的Processor\%Processor Time 和 Processor\%User Time(系統非核心操做消耗的CPU時間,當服務器是數據庫服務器時,多是數據庫排序或函數操做消耗時間) 和 Processor\%Privileged Time
    3. 查看 System\Processor Queue Length,當其大於CPU數量總數+1時,說明出現處理器阻塞。當Processor\%Process Time較高時通常伴隨阻塞,反之則沒必要然。
  • 磁盤I/O分析方法:針對數據庫服務器、或文件服務器、流媒體服務器; Disk/Transfer 介於15~30ms爲良好,超過60ms則需考慮更換硬盤等
  • 進程分析方法:查看進程的%Processor Time值,反應進程消耗的處理時間。查看頁面失效。
  • 網絡分析

    應用服務器計數器:IIS應用服務器,Tomcat

    數據庫計數器

四、性能測試工具原理

性能測試不等同於性能測試工具;性能測試腳本錄製是指錄製服務端和應用之間的通訊數據,而非GUI操做,需先選擇錄製的協議

性能測試架構(以load runner爲例)

  • 虛擬用戶腳本生成器
  • 壓力產生器:用於根據校本內容產生實際的負載。(通常一臺具備512MB內存的PC機可順利運行200個左右的VU)
  • 用戶代理:是運行在負載機上的進程(可被看做壓力產生器的組成部分),通常之後臺方式在負載機上運行
  • 壓力調度和監控系統
  • 壓力結果分析功能
相關文章
相關標籤/搜索