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