隨著瀏覽器功能的不斷完善,用戶量不斷的攀升,涉及到
web服務(wù)的功能在不斷的增加,對(duì)于我們
測(cè)試來說,我們不僅要保證服務(wù)端功能的正確性,也要驗(yàn)證服務(wù)端程序的性能是否符合要求。那么
性能測(cè)試都要做些什么呢?我們?cè)撛鯓舆M(jìn)行性能測(cè)試呢?
性能測(cè)試一般會(huì)圍繞以下這些問題而進(jìn)行:
1. 什么情況下需要做性能測(cè)試?
2. 什么時(shí)候做性能測(cè)試?
3. 做性能測(cè)試需要準(zhǔn)備哪些內(nèi)容?
4. 什么樣的性能指標(biāo)是符合要求的?
5. 性能測(cè)試需要收集的數(shù)據(jù)有哪些?
6. 怎樣收集這些數(shù)據(jù)?
7. 如何分析收集到的數(shù)據(jù)?
8. 如何給出性能測(cè)試報(bào)告?
性能測(cè)試的執(zhí)行過程及要做的事兒主要包含以下內(nèi)容:
1. 測(cè)試評(píng)估階段
在這個(gè)階段,我們要評(píng)估被測(cè)的產(chǎn)品是否要進(jìn)行性能測(cè)試,并且對(duì)目前的服務(wù)器環(huán)境進(jìn)行粗估,服務(wù)的性能是否滿足條件。
首先要明確只要涉及到準(zhǔn)備上線的服務(wù)端產(chǎn)品,就需要進(jìn)行性能測(cè)試。其次如果產(chǎn)品需求中明確提到了性能指標(biāo),那也必須要做性能測(cè)試。
測(cè)試人員在進(jìn)行性能測(cè)試前,需要根據(jù)當(dāng)前的收集到的各種信息,預(yù)先做性能的評(píng)估,收集的內(nèi)容主要包括帶寬、請(qǐng)求包大小、并發(fā)用戶數(shù)和當(dāng)前web服務(wù)的帶寬等
2. 測(cè)試準(zhǔn)備階段
在這個(gè)階段,我們要了解以下內(nèi)容:
a. 服務(wù)器的架構(gòu)是什么樣的,例如:web服務(wù)器是什么?是如何配置的?
數(shù)據(jù)庫(kù)用的是什么?服務(wù)用的是什么語言編寫的?;
b. 服務(wù)端功能的內(nèi)部邏輯實(shí)現(xiàn);
c. 服務(wù)端與數(shù)據(jù)庫(kù)是如何交互的,例如:數(shù)據(jù)庫(kù)的表結(jié)構(gòu)是什么樣的?服務(wù)端功能是怎樣操作數(shù)據(jù)庫(kù)的?
d. 服務(wù)端與客戶端之間是如何進(jìn)行交互的,即接口定義;
通過收集以上信息,測(cè)試人員整理出服務(wù)器端各模塊之間的交互圖,客戶端與服務(wù)端之間的交互圖以及服務(wù)端內(nèi)部功能邏輯實(shí)現(xiàn)的流程圖。
e. 該服務(wù)上線后的用戶量預(yù)估是多少,如果無法評(píng)估出用戶量,那么可以通過設(shè)計(jì)測(cè)試執(zhí)行的場(chǎng)景得出這個(gè)值;
f. 上線要部署到多少臺(tái)機(jī)器上,每臺(tái)機(jī)器的負(fù)載均衡是如何設(shè)計(jì)的,每臺(tái)機(jī)器的配置什么樣的,網(wǎng)絡(luò)環(huán)境是什么樣的。
g. 了解測(cè)試環(huán)境與線上環(huán)境的不同,例如網(wǎng)絡(luò)環(huán)境、硬件配置等
h. 制定測(cè)試執(zhí)行的策略,是需要驗(yàn)證需求中的指標(biāo)能否達(dá)到,還是評(píng)估系統(tǒng)的最大處理能力。
i. 溝通上線的指標(biāo)
通過收集以上信息,確定性能
測(cè)試用例該如何設(shè)計(jì),如何設(shè)計(jì)性能測(cè)試用例執(zhí)行的場(chǎng)景,以及上線指標(biāo)的評(píng)估。
3. 測(cè)試設(shè)計(jì)階段
根據(jù)測(cè)試人員通過之前整理的交互圖和流程圖,設(shè)計(jì)相應(yīng)的性能測(cè)試用例。性能測(cè)試用例主要分為預(yù)期目標(biāo)用戶測(cè)試,用戶并發(fā)測(cè)試,疲勞強(qiáng)度與大數(shù)量測(cè)試,網(wǎng)絡(luò)性能測(cè)試,服務(wù)器性能測(cè)試,具體編寫的測(cè)試用例要更具實(shí)際情況進(jìn)行裁減。
用例編寫的步驟大致分為:
a. 通過腳本模擬單一用戶是如何使用這個(gè)web服務(wù)的。這里模擬的可以是用戶使用web服務(wù)的某一個(gè)動(dòng)作或某幾個(gè)動(dòng)作,某一個(gè)功能或幾個(gè)功能,也可以是使用web服務(wù)的整個(gè)過程。
b. 根據(jù)客戶端的實(shí)際情況和服務(wù)器端的策略,通過將腳本中可變的數(shù)據(jù)進(jìn)行參數(shù)化,來模擬多個(gè)用戶的操作。
c. 驗(yàn)證參數(shù)化后腳本功能的正確性。
d. 添加檢查點(diǎn)
e. 設(shè)計(jì)腳本執(zhí)行的策略,如每個(gè)功能的執(zhí)行次數(shù),各個(gè)功能的執(zhí)行順序等
4. 測(cè)試執(zhí)行階段
根據(jù)客戶端的產(chǎn)品行為設(shè)計(jì)web服務(wù)的測(cè)試執(zhí)行場(chǎng)景及測(cè)試執(zhí)行的過程,即測(cè)試執(zhí)行期間發(fā)生的事兒。通過監(jiān)控程序收集web服務(wù)的性能數(shù)據(jù)和web服務(wù)所在系統(tǒng)的性能數(shù)據(jù)。
在測(cè)試執(zhí)行過程中,還要不斷的關(guān)注以下內(nèi)容:
a. web服務(wù)的連接速度如何?
b. 每秒的點(diǎn)擊數(shù)如何?
c. Web服務(wù)能允許多少個(gè)用戶同時(shí)在線?
d. 如果超過了這個(gè)數(shù)量,會(huì)出現(xiàn)什么現(xiàn)象?
e. Web服務(wù)能否處理大量用戶對(duì)同一個(gè)頁面的請(qǐng)求?
f. 如果web服務(wù)崩潰,是否會(huì)自動(dòng)恢復(fù)?
g. 系統(tǒng)能否同一時(shí)間響應(yīng)大量用戶的請(qǐng)求?
h. 打壓機(jī)的系統(tǒng)負(fù)載狀態(tài)。
5. 測(cè)試分析階段
將收集到的數(shù)據(jù)制成圖表,查看各指標(biāo)的性能變化曲線,結(jié)合之前確定的上線指標(biāo),對(duì)各項(xiàng)數(shù)據(jù)進(jìn)行分析,已確定是否繼續(xù)對(duì)web服務(wù)進(jìn)行測(cè)試,結(jié)果是否達(dá)到了期望值。
6. 測(cè)試驗(yàn)證階段
在開發(fā)針對(duì)發(fā)現(xiàn)的性能問題進(jìn)行修復(fù)后,要再執(zhí)行性能測(cè)試的用例對(duì)問題進(jìn)行驗(yàn)證。這里需要關(guān)注的是開發(fā)在解決問題的同時(shí)可能無意中修改了某些功能,所以在驗(yàn)證性能的同時(shí),也要關(guān)注原有功能是否受到了影響