1.什么是性能測試
性能測試是用來測試軟件在系統中的運行時能力,特別是針對實時系統和嵌入式系統。性能測試可以在各個測試階段進行,但進行的目的各有不同,有診斷性質的,有調優性質的,還有檢測性質的。但對于一個系統真正的性能測試只有在系統集成測試階段執行。性能測試的目的一方面是為了檢驗系統的性能是否符合要求,另一方面也是為產品的宣傳提供有力的數據。
2.性能測試的分類
a。一般意義的性能測試
這類的性能測試一般單指響應時間的性能測試,如正常用戶操作時客戶端的響應時間
b。強度測試
強度測試需要在反常數量、頻率或資源的方式下運行系統,以檢驗系統能力的最高實際限度,它要求軟件必須被強制在它的設計能力的極限狀態下運行。
c。軟件可靠性測試
測試要需持續一夜,一周,或者幾周的時間,目標是發現短序列測試遺漏的錯誤。這種測試經常發現的錯誤包括越界指針,內存泄漏,棧溢出,超過兩個特性之間的錯誤交互等,也稱長序列測試,持久測試,耐力測試。一般的軟件平均無故障時間是一個最為重要的可靠性指標。
3.性能測試的方法
a。測試人員與應用交互的過程中,應該知道應用的響應是否緩慢,這些BUG是基于常識性知識的。不指出問題的所在,而只是警告問題的存在
b。觀察測試
這種測試使用某些工具給出確切的數據,如使用秒表等工具以便給出更為清晰的概念
c。第三方測試
使用專業的性能測試工具
4.性能測試策略
a。識別系統組件
畫一個網絡結構圖闡明應用程序的結構,包括所有的系統組件,如:客戶端機器,網絡,中間件,服務器等等。
b。描述系統配置
客戶端機器的配置(硬件、內存、操作系統、開發工具等)
數據庫類型,網絡服務器種類
中間件配置
通信設備的吞吐量
c。分析使用模式
定義系統怎樣有代表性的使用,決定哪幾個功能對于測試是最重要的、考慮誰用系統、各種類用戶的數目、各用戶的常用任務、另外也要考慮影響系統反應時間的背景負載(所謂的背景負載就是在執行測試任務之前,運行于系統之內的進程所帶來的負載)
d。確定任務分布狀態
分析任務分布決定什么時候有峰值的數據活動,確定系統最大壓力產生的時間段,依據該時間段設計測試策略
如顯示的10點到12點,登錄事務就由220增加到250,下午2點下降到210,那么10點到12點這個時間段就是一個高峰,對方案進行
設計的時候就要考慮到這個因素。設計測試數據應盡量遵從從小到大的原則。如:
要測試一個系統能夠承受登錄時的最大并發數,就要采取先假設10個,然后到20,然后到30,隨著數字的增加就要減小增加的幅度,
也許是500、501、503這樣一直下去。才能準確的確定真正的能夠承受的最大并發數。
反面教材:
沒有針對性的性能測試場景
例一:
針對各個條件的查詢各自錄制了一個腳本,然后又單獨執行了個腳本5~10次。
結果:沒有針對性,其本身目的是為了測試服務器所能承受的負載,這種測試場景完全不能達到我們當初的目的。
例二:
oracle兩層數據庫結構應用程序,但取數據的時候是從文件服務器而非數據庫服務器讀取,雖然也涉及到了數據庫的一些操作。
結果:測試結果良好,但實際測試場景并不能完全反映讀取數據時文件服務器的壓力情況。
文章來源于領測軟件測試網 http://www.kjueaiud.com/