性能測試用例主要分為預期目標用戶測試,用戶並發測試,疲勞強度與大數據量測試,網絡性能測試,服務器性能測試五大部分,具體編寫測試用例時要根據實際情況進行裁減,在項目應用中遵守低成本,策略為中心,裁減,完善模型,具體化等原則;
一、WEB 全面性能測試模型
Web 性能測試模型提出的主要依據是:一種類型的性能測試可以在某些條件下轉化成為另外一種類型的性能測試,這些類型的性能測試的實施是有着相似之處的;
1. 預期指標的性能測試
系統在需求分析和設計階段都會提出一些性能指標,完成這些指標的相關的測試是性能測試的首要工作之一,這些指標主要諸於“系統可以支持並發用戶200個;”系統響應時間不得超過20秒等,對這種預先承諾的性能要求,需要首先進行測試驗證;
2. 獨立業務性能測試
獨立業務實際是指一些核心業務模塊對應的業務,這些模塊通常具有功能比較復雜,使用比較頻繁,屬於核心業務等特點。
用戶並發測試是核心業務模塊的重點測試內容,並發的主要內容是指模擬一定數量的用戶同時使用某一核心的相同或者不同的功能,並且持續一段時間。對相同的功能進行並發測試分為兩種類型,一類是在同一時刻進行完全一樣的操作。另外一類是在同一時刻使用完全一樣的功能。
3. 組合業務性能測試
通常不會所有的用戶只使用一個或者幾個核心業務模塊,一個應用系統的每個功能模塊都可能被使用到;所以WEB性能測試既要模擬多用戶的相同操作,又要模擬多用戶的不同操作;組合業務性能測試是最接近用戶實際使用情況的測試,也是性能測試的核心內容。通常按照用戶的實際使用人數比例來模擬各個模版的組合並發情況;組合性能測試是最能反映用戶使用情況的測試往往和服務器性能測試結合起來,在通過工具模擬用戶操作的同時,還通過測試工具的監控功能采集服務器的計數器信息進而全面分析系統瓶頸。
用戶並發測試是組合業務性能測試的核心內容。組合並發的突出特點是根據用戶使用系統的情況分成不同的用戶組進行並發,每組的用戶比例要根據實際情況來匹配;
4. 疲勞強度性能測試
疲勞強度測試是指在系統穩定運行的情況下,以一定的負載壓力來長時間運行系統的測試,其主要目的是確定系統長時間處理較大業務量時的性能,通過疲勞強度測試基本可以判定系統運行一段時間后是否穩定;
5. 大數據量性能測試
一種是針對某些系統存儲,傳輸,統計查詢等業務進行大數據量時的性能測試,主要針對某些特殊的核心業務或者日常比較常用的組合業務的測試;
第二種是極限狀態下的數據測試,主要是指系統數據量達到一定程度時,通過性能測試來評估系統的響應情況,測試的對象也是某些核心業務或者常用的組合業務。
第三種大數據量測試結合了前面兩種的測試,兩種測試同時運行產生較大數據量的系統性能測試;
大數據量測試通常在投產環境下進行,並獨立出來和疲勞強度測試放在一起,在整個性能測試的后期進行;大數據量的測試可以理解為特定條件下的核心業務或者組合業務測試;
6. 網絡性能測試
主要是為了准確展示帶寬,延遲,負載和端口的變化是如何影響用戶的響應時間的,在實際的軟件項目中
主要是測試應用系統的用戶數目與網絡帶寬的關系。網絡測試的任務通常由系統集成人員完成;
7. 服務器(操作系統,WEB服務器,數據庫服務器)性能測試
初級服務器性能測試主要是指在業務系統工作或者進行前面其他種類性能測試的時候,監控服務器的一些計數器信息,通過這些計數器對服務器進行綜合性能分析,為調優或提高系統性能提供依據;
高級服務器性能測試一般由專門的系統管理員來進行如數據庫服務器由專門的DBA來進行測試和調優;
8. 一些特殊的測試
主要是指配置測試,內存泄露測試的一些特殊的WEB性能測試;
二、WEB 性能測試策略
性能測試策略一般從需求設計階段開始討論如何定制,它決定着性能測試工作要投入多少資源,什么時間開始實施等后續工作的安排;其制定的主要依據是軟件自身的特點和用戶對性能的關注程度,其中軟件自身的特點起決定性的作用;
軟件按照用途的不同可以分為兩大類,系統類軟件和應用類軟件。系統類軟件通常對性能要求較高,因此性能測試應該盡早介入;應用類軟件分為特殊類應用和一般類應用,特殊類應用主要有銀行,電信,電力,保險,醫療,安全等領域軟件,這類軟件使用頻繁,用戶較多,也需要較早進行性能測試;一般類主要是指一些普通類應用如OA,MIS 等一般類軟件根據實際情況制定性能測試策略,受用戶因素影響較大;
1. 系統類軟件
從設計階段就開始針對系統架構,數據庫設計等方面進行討論,從根源來提高性能,系統類軟件一般從單元測試階段開始性能測試實施工作,主要是測試一些和性能相關的算法和模塊;
2. 應用類軟件
特殊應用:從設計階段就開始針對系統架構,數據庫設計等方面進行討論,從根源來提高性能,系統類軟件一般從單元測試階段開始性能測試實施工作,主要是測試一些和性能相關的算法和模塊;
一般應用:與使用用戶的重視程度有關,用戶高度重視時 ,設計階段開始進行一些討論工作,主要在系統測試階段開始進行性能測試實施;用戶一般重視時,可以在系統測試階段的功能測試結束后進行性能測試;用戶不怎么重視時,可以在軟件發布前進行性能測試,提交測試報告即可;
三、WEB性能測試用例設計模型
性能測試用例設計通常不會一次設計到位,是一個不斷迭代完善的過程,即使在使用過程中,也不是完全按照設計好的測試用例來執行,需要根據需求的變化進行調整和修改; WEB性能測試用例設計模型是一個內容全面比較容易組織和調整的模型架構。
1. 預期性能指標測試用例
指一些十分明確的,在系統需求設計階段預先提出的,期望系統達到的,或者向用戶保證的性能指標,針對每個指標都要編寫一個或者多個測試用例來驗證系統是否達到要求,預期性能指標測試用例主要參考需求和設計文檔,把里面十分明確的性能要求提取出來,指標中通常以單用戶為主;
如:對於普通的客戶端,系統上傳5MB以內的文件,速度不低於2MB/S;
輸入動作:選擇1-5 MB的文件並上傳,用秒表計時;
期望的性能:上傳的時間小於等於2.5S
實際性能:上傳的時間2.29秒;
這類用例通常以手工的方式執行;
2. 用戶並發性能測試用例
用戶並發測試主要通過逐漸增加用戶數量來加重系統負擔,並通過測試工具對應用系統,各種服務器資源進監控,用戶並發測試可以是正常數量用戶和特殊數量用戶進行並發, 用戶並發測試是系統性能測試的核心部分,涉及壓力測試,負載測試,強度測試等多方面的內容.獨立業務性能測試實際就是核心業務模塊的某一業務的並發性能測試,可以理解為單元性能測試;組合業務的性能測試是一個或者多個模塊的多個業務同時進行並發性能測試,可以理解為集成性能測試,單元性能測試和集成性能測試兩者緊密相連合並稱為用戶並發性能測試;用戶並發測試要求選擇有代表性的關鍵的業務來設計測試用例,以便更有效的評測系統性能;其測試用例設計文檔的基本的編寫思想是按照系統的體系結構進行編寫.
3. 獨立核心模塊用戶並發性能的測試用例設計
完全一樣功能的並發測試:主要檢查系統的健壯性,從技術角度講就是檢查程序對同一時刻並發操作的處理.
完全一樣操作的並發測試:基本要求是在同一時刻進行完全一樣的操作,這類測試的目的是驗證核心模塊在
大量用戶使用同一功能時是否正常工作;
相同/不同功能的子功能並發:每個不同的子功能都模擬一定的用戶數量,通過工具來控制並發情況;
如發送與接收郵件模塊的一個測試用例【1】,
功能:當在線用戶達到高峰時,發送和接收普通郵件正常,保證2000個以內用戶可以同時訪問郵件系統,能夠正常發送和接收郵件;
目的:測試系統2000個以內的用戶同時在線時能否正常發送郵件;
方法:采用LOADRUNNER的錄制工具錄制一個郵件發送過程測試,要監視數據庫服務器和WEB服務器的性能,其中發送的郵件為普通郵件,附件大小不超過1MB.
並發用戶數與事務執行情況:並發用戶數,事務平均響應時間,事務最大響應時間,平均每秒處理事務數,事務成功率,每秒點擊率,平均流量;
並發用戶數與數據庫主機:並發用戶數,CPU利用率,MEM利用率,磁盤I/O參數,DB參數;
並發用戶數與應用服務器的關系表:並發用戶數,CPU利用率,MEM利用率,磁盤I/O參數;
4. 組合模塊用戶並發性能測試的用例設計
組合模塊的性能測試是最能反映用戶實際使用情況的測試,它把前面系統中具有耦合關系的模塊組合起來進行測試,可以理解為集成性能測試,組合模塊並發測試可以真實反映用戶使用系統的情況,可以從需求,設計文檔;現場調查,系統采集數據獲取用戶場景;
具有耦合關系的核心模塊進行組合並發測試:主要測試在多用戶並發條件下,一些存在耦合關系或者數據接口的模塊是否正常運行;
彼此獨立的,內部具有耦合關系的核心模塊組的並發測試:這類測試的對象是多個模塊組,每個組相關的模塊具有一定的耦合關系,組與組之間關系相互獨立,主要站在用戶的角度考慮問題;
基於用戶場景的並發測試:選擇用戶的一些典型場景進行測試,測試對象不限制於核心模塊或非核心模塊;
組合模塊用戶並發性能測試的前兩種類型仍然是針對核心模塊的同時也關注用戶場景,這樣做的原因是大多數的性能問題都是由用戶經常使用的核心模塊一起的;可以看出,組合模塊的用戶並發性能測試既關注功能測試,也關注性能測試,通過發現一些接口和綜合性能方面的問題,使系統更加穩定的運行。
如下某OA系統組合模塊的一個測試用例【2】:
功能:在線用戶數達到高峰時,用戶可以正常使用系統,目標是滿足500個以內用戶同時在線使用系統;
目的:測試500個以內用戶同時在線時能否使用比較常見的模塊:公文系統,電子公告,網上論壇;
方法:采用LOADRUNNER 的錄制工具錄制三項業務;業務1,在公文系統內進行打開,修改等操作;業務2,在電子公告系統內,察看發布公告; 業務3 ,在網上論壇系統內發布帖子,查看文章;每項業務分配一定數量的用戶,利用LOADRUNNER來完成;
並發用戶數與事務執行情況:業務1,業務2,業務3事務平均響應時間;業務1,業務2,業務3事務最大響應時間;業務1,業務2,業務3平均每秒事務數;業務1,業務2,業務3平均成功率;每秒點擊率;平均流量;
並發用戶數與數據庫主機:CPU利用率;MEM利用率;磁盤I/O情況;DB參數;
並發用戶數與應用服務器的關系:CPU利用率,MEM利用率;磁盤I/O情況;
5. 疲勞強度與大數據量測試
疲勞強度測試:主要特點是長時間對目標測試系統加壓,目的是測試系統的穩定性,持續時間一般在1小時以上;疲勞強度測試屬於用戶並發測試的延續,因此核心內容仍然是核心模塊用戶並發和組合模塊用戶並發,在編寫測試用例時需要編寫不同參數或者負載條件下的多個測試用例,可以參考用戶並發性能測試用例的設計內容,通常修改相應的參數就可實現所需要的測試場景;如下疲勞強度測試用例【3】:
極限名稱:200個用戶同時使用系統的3個模塊;
前提條件:測試客戶端要有足夠的資源;
運行時間:連續運行16小時;
測試方法:采用LOADRUNNER錄制3個任務,然后開始對系統加壓;
輸入動作:任務1,任務2,任務3 ;持續時間, 任務20小時, 任務2,21小時,任務3,16小時;用戶數量;現象;
大數據量測試【4】:主要針對對數據庫有特殊要求的系統進行的測試,如電信業務系統的手機短信業務;可以分為實時大數據量,主要目的是測試用戶較多或者某些業務產生較大數據量時,系統能否穩定運行;極限狀態下的測試,測試系統使用一段時間即系統累計一點量的數據時能否正常的運行業務;前面兩種的結合,測試系統已經累計了較大數據量時,一些實時產生較大數據量的模塊能否穩定工作;如下大數量測試用例:
功能:數據庫中的短信息表可以保存所有不能及時發送的短信息,用戶上線后又能及時發送已經保存的信息;
目的:
方法:
並發用戶數與事務執行情況:輸入說明; 事務平均響應時間;事務最大響應時間;平均每秒處理事務數,事務成功率;每秒點擊率;平均流量;
6. 網絡性能測試
基於硬件的測試:主要是通過各種軟件工具,儀器等測試整個系統的網絡運行環境,一般由系統集成人員負責 ;
基於應用系統的測試:主要測試用戶數目與網絡帶寬的關系,通過測試工具准確展示帶寬,延遲,負載和端口的變化是如何影響用戶響應時間的;
網絡性能測試的用例設計主要針對后一種類型,可以獨立進行測試,也可以和用戶並發性能測試,疲勞強度與大數據量測試結合起來,在原有的基礎上采用工具來調整網絡設置,從而達到監視網絡性能的目的;如下網絡性能測試用例【5】;
目的: 測試系統運行在不同網絡帶寬條件下的性能情況,以及與並發用戶數量的關系;
方法:在不同的廣域網帶寬下使用LOADRUNNNER錄制郵件系統得相關事務操作腳本,然后以不同的帶寬和並發用戶數進行壓力測試,並記錄在各種用戶條件下各種事務的響應情況,同時記錄路由器端口的流量和其他數據;
運行時間:
並發用戶數與事務響應時間:
7. 服務器性能測試
服務器性能測試主要是對數據庫,WEB服務器,操作系統的測試,目的是通過性能測試找出服務器的瓶頸,為系統擴展,優化提供相關的依據;分為:
高級服務器性能測試:在特定的硬件條件下,由數據庫,WEB服務器,操作系統相應領域的專家進行的性能測試;
初級服務器性能測試:在系統運行前面的性能測試時,通過測試工具對數據庫,WEB服務器,操作系統的使用情況進行監控,然后進行綜合分析,找出系統瓶頸;性能測試的主要目的是在軟件功能良好的前提下,發現系統瓶頸並解決,而軟件和服務器是產生瓶頸的兩大來源,因此服務器測試一定要和前面的測試結合起來進行;在進行用戶並發性能測試,疲勞強度與大數據量性能測試時,可以完成對服務器的監控並對服務器性能進行評估;這類部分的測試用例一般不必單獨編寫。
【轉】http://blog.163.com/feiyu_zhengli@126/blog/static/67364207200982963151787/