一 軟件性能概述
1.軟件性能的概念:
軟件性能是與軟件功能相對應的一種非常重要的非功能特性,表明了軟件系統對時間及時性及資源經濟性的要求。
2.不同角色對軟件性能的理解
(1)從系統用戶角度看軟件性能:
影響因素:
1、功能粒度
2、客戶端網絡情況
3、服務器當前忙閑情況
4、……
(2)從系統運維人員角度看軟件性能:
影響因素:
1、功能升級
2、用戶量增加
3、服務器硬件磨損
4、數據量增加
5、 ……
(3)從開發人員角度看軟件性能:
影響因素:
1、機構設計
2、數據庫設計
3、內存使用方式
4、線程同步方式
5、資源競爭
6、 ……
3.常用性能指標:響應時間、並發用戶數、吞吐量、服務器性能計數器
4.軟件性能的影響因素:
(1)硬件設施(部署結構、機器配置)
(2)網絡環境(客戶端帶寬、服務器端帶寬)
(3)操作系統(類型、版本、參數配置)
(4)中間件(類型、版本、參數配置)
(5)應用程序(性能)
(6)並發用戶數(系統當前訪問狀態)
(7)系統數據量(系統數據量大小)
5.軟件性能生命周期模型
(1)性能需求分析:根據系統的業務特點制定明確的性能需求,為系統設計和性能測試提供依據
(2)概要設計:針對系統性能要求,從數據庫結構、軟件架構、部署結構等方面進行系統設計工作
(3)詳細設計:從單元粒度、算法邏輯復雜度、變量定義等方面進行系統的設計工作
(4)性能測試:對應不同的設計階段,可以將性能測試分解為單元性能測試、集成性能測試和系統性能測試
6.性能需求分析方法:響應時間、最大並發用戶數、吞吐量、資源利用率
7.軟件性能模型
二 軟件性能測試基礎
1.軟件性能測試定義:
狹義的軟件性能測試指為驗證軟件性能指標、評估系統服務能力、推薦系統軟硬件配置、完成系統性能優化等而開展的測試活動,這也是一般意義上人們對軟件性能測試的理解。
廣義的軟件性能測試指在測試過程中需要相關性能測試方法配合完成的系統測試活動,包括可靠性測試、可恢復性測試、穩定性測試、兼容性測試、可擴展性測試等。
2.軟件性能測試的目標
- 能力驗證
- 缺陷發現
- 能力規划
- 性能優化
3.常用性能測試方法
(1)基准測試:通過設計科學的測試方法、測試工具和測試系統,實現對一類測試對象的某項性能指標進行定量的和對比的測試。主要目的是檢驗系統性能與相關標准的符合程度。
(2)壓力測試:通過對軟件系統不斷施加壓力,識別系統性能拐點,來獲得系統提供的最大服務級別的測試活動。主要目的是檢查系統處於壓力情況下,應用的表現。
(3)負載測試:通過在被測系統上不斷施加壓力,知道達到性能指標極限要求。主要目的是找到特性環境下系統處理能力的極限。
(4)並發測試:指當測試多用戶並發訪問同一個應用、模塊、數據時是否發生隱藏的並發問題,如內存泄露、現成鎖、資源爭用問題。主要目的並非為了獲得性能指標,而是為了
發現並發所引起的問題。
(5)疲勞測試:通過讓軟件系統在一定訪問量情況下長時間運行,以檢驗系統性能在多長時間后會出現明顯的下降。主要目的是驗證系統運行的可靠性。
(6)數據量測試:通過讓軟件在不同數據量情況下運行,以檢驗系統性能在各種數據量情況下的表現。主要目的是找到支持系統正常工作的數據量極限。
(7)配置測試:通過被檢測系統的軟/硬件環境的調整,了解各種不同環境對系統性能的影響程度,從而找到系統各項資源的最優分配原則。主要目的是了解各種不同因素對系統性能影響的程度,從而判斷出最值得進行的調優操作。
三 性能測試過程模型
1.
2.HP性能測試過程
3.制訂性能測試計划:
(1)明確測試范圍
(2)制訂時間(進度)計划
(3)制訂成本計划
(4)制訂環境計划
(5)測試工具規划
(6)測試風險分析
4.設計測試用例
5.搭建性能測試環境
(1)搭建硬件環境
(2)搭建軟件環境
(3)搭建測試工具環境
(4)准備數據環境
6.執行性能測試
(1)腳本錄制與開發
(2)場景設置
(3)測試執行
(4)測試監控
四 性能分析與性能優化
1.性能分析方法分類:
(1)指標達成法:用於驗證性能指標
(2)最優化分析法:用於能力驗證型測試
2.常用性能分析方法:
(1)快速瓶頸識別:
①硬件上的性能瓶頸 ②應用軟件上的性能瓶頸 ③應用程序上的性能瓶頸
④操作系統上的性能瓶頸 ⑤網絡設備上的性能瓶頸
(2)性能下降曲線:單用戶區域、性能平坦區、壓力區域、性能拐點
(3)內存分析方法 (4)處理器分析方法 (5)磁盤IO分析方法 (6)進程分析方法 (7)網絡分析方法
五 HP LoadRunner基礎
1.LoadRunner通過模擬實際用戶的操作行為和實施實時性能檢測,來幫助用戶更快地確認和查找問題的所在。
2.確認系統選擇協議方法
(1)可以直接確認。
(2)通過研發人員了解被測系統使用了什么樣的協議。
(3)使用常用的數據監聽工具進行數據包分析。
(4)萬能協議Winsocket協議。
3.LoadRunner工具組成
(1)三個前台功能模塊
- VuGen(虛擬用戶腳本生成器)
- Controller(測試控制器)
- Analysis(結果分析器)
(2)兩個后台功能模塊
- LG(負載生成器)
- Proxy(用戶代理)
4.LoadRunner 中的關鍵概念
(1)虛擬用戶:Virtual User簡稱Vuser,性能測試過程中執行VU腳本以模擬真實用戶對系統訪問的執行實體。
(2)VU腳本:Script,記錄了用戶執行系統業務的操作過程,是Vuser執行的對象。
LoadRunner支持的腳本語言有:Java、C、Visual Basic、VB Script等,默認的腳本生成語言為C語言。
(3)場景:Scenario,一次性能測試執行內容的定義,用來模擬真實用戶是如何產生壓力的。(手工場景和面向目標場景)
場景由所要執行的腳本、虛擬用戶、負載生成器、運行過程配置、實時監控五方面構成。
(4)事務:Transaction,提供一種端對端的測量方法,用於測量一個業務流程中執行一個或多個步驟所花費的時間。(可理解為一個計時單位)
(5)檢查點:Check Point,提供了一種執行結果正確性驗證機制,保證了測試工具對執行通過判斷的准確性。
(6)思考時間:Think Time,提供了一種讓VU腳本暫停執行(等待一段時間)的機制,用來模擬實際用戶在不同操作之間等待時間,以便更加真實地反映用戶訪問系統的行為規律。
(7)集合點:Rendezvous,集合點提供了一種用戶並發訪問機制,用來模擬多用戶對系統的並發訪問。
六 HP LoadRunner腳本的錄制於開發
1.創建測試腳本流程
2.兩種錄制模式:
(1) HTML-based script (基於HTML的腳本)錄制模式是loadrunner的默認模式,單獨步驟
(2)URL-based script (基於URL的腳本),每個請求
3. LoadRunner提供兩種注釋方法:
(1)單行注釋。在代碼行的后面,添加“//”,“//”的后面直到本行結束的內容為注釋內容。
(2)塊注釋。一個注釋塊是以“/*”開頭,並以“*/”結尾的串。在“/*”和“*/”之間的即為注釋。
4.設置步長(多久迭代一次腳本):Pacing
5.Run Vuser as a process:以一個進程運行虛擬用戶
Run Vuser as a thread:以一個線程運行虛擬用戶
6.動態驗證是需要做關聯
7.四種日志類型
- 執行日志
- 編譯日志
- 產生日志
- 錄制日志
七 HP LoadRunner測試場景管理
1.場景主要是用來模擬真實用戶向被測試系統產生壓力,是一種用來模擬大量用戶操作的技術手段。
2.Controller(中央控制器):負責設計與執行性能測試用例場景的組件。
3.測試場景類型:
(1)Manual Scenario:手工場景
(2)Goal-Oriented Scenario:面向目標的場景
4.負載發生器是一個可以獨立部署並運行腳本的負載引擎。
5.手工場景:
(1)Scenario模式:
①Real-world schedule(真實場景模式)
②Basic Schedule(基礎模式)
(2)Group模式
6.SLA(服務水平協議)是您為負載測試場景定義的具體目標。
7.面向目標的場景5種類型目標
(1)Vuser數
(2)每秒點擊次數(僅Web Vuser)
(3)每秒事務數
(4)每分鍾頁面數(僅Web Vuser)
(5)場景的事務響應時間
8.系統參數監控
(1)場景用戶狀態
(2)場景運行狀態
(3)計數器管理
①監控Windows、SQL Server、IIS
②Windows監控Linux/UNIX
③監控AIX ④監控Oracle ⑤監控Weblogic ⑥監控Apache
八 HP LoadRunner測試結果分析
1.功能:系統性能測試的目的是查找系統的性能問題,然后找出這些問題的根源。
2.Analysis測試結果分析方法
(1)從分析Summary的事務執行情況入手
(2)查看負載發生器和服務器的系統資源情況
(3)查看虛擬用戶與事務的詳細執行情況
(4)查看錯誤發生情況
(5)查看Web資源與細分網頁