1、軟件測試基本概念
響應時間
定義:對請求作出響應所需要的時間。是用戶視角的軟件性能的主要體現,帶有主觀色彩,沒有絕對的長短。 “web頁面合理響應時間標准”:2/5/10秒,10秒為上限
上圖將響應時間划分為“呈現時間”和“系統響應時間”。“呈現時間”取決於數據在客戶端收到數據后呈現頁面所消耗時間,一般性能測試中不關注“呈現時間”,因為其很大程度上取決於客戶端表現。因此此處響應時間多為“系統響應時間”。
頁面響應時間可被進一步分解為:“網絡傳輸時間”、“數據庫延遲時間”和“應用服務器延遲時間”
並發數
業務並發用戶數定義:同一時間段內訪問系統的用戶數量(雖然在訪問系統,但不一定對服務端產生壓力,比如只是在瀏覽系統)
服務端承受的最大並發訪問數定義:從服務端承受的壓力出發,描述的是同時向客戶端發出請求的客戶,體現的是服務端承受的最大並發訪問數,常結合並發測試,來發現系統中存在的並發引起的資源競爭等問題。
例:如果一個OA系統有2000名用戶,最高峰時有500人在線,其中40%在看系統公告,20%在發呆,20%在進行頁面跳轉,20%在填寫表單。則:系統用戶數為2000,在線用戶數為500,業務並發用戶數為500,服務端承受並發數取決於業務並發用戶數及用戶業務場景。
上圖用於估算業務並發用戶數: 其中,公式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的性能測試過程
2、性能測試的應用領域
方法分類:
- 性能測試:模擬業務壓力量和使用場景組合,驗證系統是否具有所宣稱的能力。
- 負載測試:通過在被測系統上不斷增加壓力,直到性能指標達到飽和狀態,目的是找到系統的處理極限。通過“檢測-加壓-直到性能指標超過預期”的方法
- 壓力測試:測試系統在一定飽和態下,例如CPU、內存等在飽和態下系統的會話能力,以及系統是否會出錯。通過增加訪問壓力(如並發量),檢測系統有無出錯信息,以及系統響應時間,以及系統在一段時間內的穩定性。一般會以*“CPU使用率達75%以上,內存使用率達70%以上,系統錯誤率,響應時間”來作為描述。
- 配置測試:通過對系統軟硬件調整,了解不同配置對系統性能影響程度,從而找到最優分配原則。一般用於性能調優和規划能力
- 並發測試:通過模擬用戶並發訪問,測試多用戶並發訪問一個應用時是否存在死鎖或其他性能問題。主要關注內存泄露、線程鎖、資源爭用等。可針對系統或某種架構設計進行,可在開發各階段使用。
- 可靠性測試:通過給系統加載一定的業務壓力(如資源在70%~90%使用率),讓應用持續運行一段時間,測試系統是否穩定。
- 失效恢復測試:針對有冗余備份和負載均衡的系統設計,可以用來檢驗如果系統局部發生故障,用戶能否繼續使用系統,以及用戶將受多大程度的影響。
應用領域:
- 能力驗證:對一個已部署系統的性能進行驗證。如性能測試,可靠性測試,壓力測試,失效恢復測試
- 規划能力:關心如何才能使系統具有我們要求的性能能力,如系統能否支持未來一段時間內的用戶增長。 是一種探索性測試。如負載測試,配置測試和壓力測試
- 性能調優:配置測試,負載測試,壓力測試和失效恢復測試
- 發現缺陷:並發測試,壓力測試,失效恢復測試
3、性能計數器及性能分析方法
操作系統級別、應用服務器級別和數據庫級別上查看和記錄分析
操作系統計數器:
- 內存分析(應用命令vmstat):
- 處理器分析(命令top):
- 查看System\%Total processor Time性能計數器計數值:體現服務器整體的處理器利用率(或平均利用率)。當持續超過90%,則面臨瓶頸,需增加處理器
- 查看每個CPU的Processor\%Processor Time 和 Processor\%User Time(系統非核心操作消耗的CPU時間,當服務器是數據庫服務器時,可能是數據庫排序或函數操作消耗時間) 和 Processor\%Privileged Time
- 查看 System\Processor Queue Length,當其大於CPU數量總數+1時,說明出現處理器阻塞。當Processor\%Process Time較高時一般伴隨阻塞,反之則不必然。
- 磁盤I/O分析方法:針對數據庫服務器、或文件服務器、流媒體服務器; Disk/Transfer 介於15~30ms為良好,超過60ms則需考慮更換硬盤等
- 進程分析方法:查看進程的%Processor Time值,反應進程消耗的處理時間。查看頁面失效。
- 網絡分析
應用服務器計數器:IIS應用服務器,Tomcat
數據庫計數器
4、性能測試工具原理
性能測試不等同於性能測試工具;性能測試腳本錄制是指錄制服務端和應用之間的通信數據,而非GUI操作,需先選擇錄制的協議
性能測試架構(以load runner為例)
- 虛擬用戶腳本生成器
- 壓力產生器:用於根據校本內容產生實際的負載。(一般一台具有512MB內存的PC機可順利運行200個左右的VU)
- 用戶代理:是運行在負載機上的進程(可被看作壓力產生器的組成部分),一般以后台方式在負載機上運行
- 壓力調度和監控系統
- 壓力結果分析功能