1.?1.1 性能測試的概念
性能測試是通過自動化的測試工具模擬多種正常峰值及異常負載條件來對系統(tǒng)的各項性能指
標進行測試。負載測試和壓力測試都屬于性能測試,兩者可以結(jié)合進行。通過負載測試,確定在各
種工作負載下系統(tǒng)的性能,目標是當負載逐漸增加時,測試系統(tǒng)各項性能指標的變化情況。壓力測
試是通過確定一一個系統(tǒng)的瓶頸或者不能接受的性能點,來獲得系統(tǒng)能提供的最大服務級別的測試。
1.?1.2 性能測試的目的
性能測試的目的是驗證軟件系統(tǒng)是否能夠達到用戶提出的性能指標,同時發(fā)現(xiàn)軟件系統(tǒng)
中存在的性能瓶頸,
以優(yōu)化軟件,最后起到優(yōu)化系統(tǒng)的目的。性能測試包括以下幾個方面:
評估系統(tǒng)的能力:?測試中得到的負荷和響應時長數(shù)據(jù)可以被用于驗證所計劃的模型的
能力,并幫助做出決策。
識別體系中的弱點:?受控的負荷可以被增加到一一個極端的水平并突破它,從而修復體
系的瓶頸或薄弱的地方。
系統(tǒng)調(diào)優(yōu):?重復運行測試,驗證調(diào)整系統(tǒng)的活動是否得到了預期的結(jié)果,從而改進性能。
檢測軟件中的問題:?長時間的測試執(zhí)行可導致程序發(fā)生由于內(nèi)存泄露引起的失敗,揭
示程序中隱含的問題或沖突。
驗證穩(wěn)定性(Resilience)、可靠性(Rialt):?在一個生產(chǎn)負荷下執(zhí)行測試一定的時
間是評估系統(tǒng)穩(wěn)定性和可靠性是否滿足要求的唯一方法。
1.?1.3 性能測試的常見分類?
性能測試包括負載測試、強度測試和容量測試等。
負載測試(LoadTesting): 負載測試是指通過測試系統(tǒng)在資源超負荷情況下的表現(xiàn),
來發(fā)現(xiàn)設計上的錯誤或驗證系統(tǒng)的負載能力。在這種測試中,將使測試對象承擔不
同的工作量,以評測和評估測試對象在不同工作量條件下的性能行為,以及持續(xù)正
常運行的能力。負載測試的目標是確定并確保系統(tǒng)在超出最大預期工作量的情況下
仍能正常運行。此外,負載測試還要評估性能特征,如響應時長、事務處理速率和
其他與時間相關的性能指標。
是通過確定-?一個系統(tǒng)的瓶頸或者不能接收的性能點,來獲得系統(tǒng)能提供的最大服務級
別的測試。例如測試-?一個Web?站點在大量的負荷下,何時系統(tǒng)的響應會退化或失敗。
容量測試(VolumeTesting):?容量測試確定系統(tǒng)可處理同時在線的最大用戶數(shù)。
1.?1.4?性能測試的常見指標
在實際工作中我們經(jīng)常會對兩種架構(gòu)的軟件進行測試:?B/S和C/S,它們關往的指標有哪些
區(qū)別?
對于B/S?架構(gòu)的軟件,一般會關注如下Web服務器性能指標。
Avg?Rps:?平均每秒鐘的響應次數(shù)=總請求次數(shù)/秒數(shù)。
Avg?time?to?last?byte?per?terstion?(mstes?):?平?均每秒業(yè)務腳本的迭?代次?數(shù)。
Sccssful?Rounds:?成功的請求。
FailedRounds:?失敗的請求。
Successful?Hits:?成功的點擊次數(shù)。
FailedHits:?夾敗的點擊次數(shù)。
HitsPerSecond:?每秒點擊次數(shù)。
Successful?Hits?Per?Second:?每利成功的點擊次數(shù)。
FailedHits?PerSecond:?每秒失敗的點擊次數(shù)。
AttemptedConnections:?嘗試連接數(shù)。
Throughput:?吞吐率。
對于C/S架構(gòu)的程序,由于軟件后臺通常為數(shù)據(jù)庫,所以我們更注重數(shù)據(jù)庫的測試指標。
UscrConections:?用戶連接數(shù),也就是數(shù)據(jù)庫的連接數(shù)量。
Number?ofDeadlocks:?數(shù)據(jù)庫死鎖。
Butter?Cache?Hit:?數(shù)據(jù)庫Cache?的命中情況。
1.?1.4?性能測試的基本流程
1.明確性能測試需求
2.制定性能測試方案
性能測試方案應該詳盡地描述如何進行性能測試,其中應該至少包括: 測試背景、測試目的、測試范圍、測試進入條件、測試退出條件、測試指標要求、測試策略、測試時機、測試風險和測試資源。
其中測試范圍、測試進入條件、測試退出條件、測試策略、測試風險、測試資源尤為重要。
下面是一個性能測試方案的簡單例子:
1) 測試進入條件
(1) 不遺留L1的缺陷。
(2) 性能測試數(shù)據(jù)準備完畢。
(3) 系統(tǒng)功能測試已結(jié)束。
2) 測試退出條件
(1)各場景執(zhí)行時間達到測試場景要求。
(2) 系統(tǒng)出現(xiàn)大量錯誤,暫停執(zhí)行性能測試。
3) 測試指標要求
關鍵功能的響應時長和用戶數(shù)滿足需求指標
4)測試環(huán)境指標折算:
測試環(huán)境平均并發(fā)數(shù)=(最大在線人數(shù)x10%)/n 式中,n是生產(chǎn)環(huán)境和測試環(huán)境服務器配置折算比,例如n= 公倍數(shù)((生產(chǎn)Web服務器數(shù)/Web服務器數(shù)),(生產(chǎn)APP服務器數(shù)/測試APP服務器數(shù)))x(生產(chǎn)服務器內(nèi)存/測試服務器內(nèi)存),一般算下來n=4。
測試通過標準:
(I )平均響應時長滿足測試指標要求。
(2) 90%響應時長滿足測試指標要求。
(3) 2小時壓力測試中腳本沒有報錯。
測試場景總的指導原則:
場景設置:
每1秒增加5 個用戶,以x個并發(fā)為基礎,逐漸遞增至目標并發(fā)數(shù),直到服務器吞吐率不再增加,響應時長隨用戶增加比例穩(wěn)定同比增加。達到并發(fā)量之后再持續(xù)運行腳本x小時左右。場景中的并發(fā)用戶勻速啟動和停止。
3.編寫性能測試案例

4.執(zhí)行性能測試案例
5.分析性能測試結(jié)果
6.生成性能測試報告
一份性能測試報告,至少應該包含如下內(nèi)容。
測試基本信息:
包含測試目的、報告目標讀者、術語定義、參考資料。
測試環(huán)境描述: 包含服務器軟/硬件環(huán)境、網(wǎng)絡環(huán)境、測試工具、測試人員。
性能測試案例執(zhí)行分析: 需要詳細描述每個測試案例的執(zhí)行情況,以及對應的測試結(jié)
果分析。
測試結(jié)果綜合分析及建議: 對本次性能測試做綜合分析,并給出測試結(jié)論和改進建議。
測試經(jīng)驗總結(jié)。