1. 程式人生 > >如何進行Web服務的效能測試

如何進行Web服務的效能測試

     涉及到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. 測試驗證階段   在開發針對發現的效能問題進行修復後,要再執行效能測試的用例對問題進行驗證。這裡需要關注的是開發在解決問題的同時可能無意中修改了某些功能,所以在驗證效能的同時,也要關注原有功能是否受到了影響      效能測試
是一項浩大的工程,若你只想隨便找臺機器裝上ld後,造幾條資料,弄幾個併發使用者簡單跑一下出來結果就可以萬事大吉了,那你就大錯特錯了!(這樣得出的測試結果沒有任何價值和意義,當然更無法依此評估出你貴公司系統的效能了。

真正開始執行之前除了編寫詳細的效能測試計劃【所需的資源(軟體+硬體+人力)】、設計測試指令碼、準備測試資料、搭建測試環境外,還需要注意一下細節:

如何保證效能測試的順利開展和執行?

  1. 首先考慮你效能測試的目標是什麼,需要哪些人員協助你才能完成,然後協調相關人員(DBA、網管、開發人員等),保證在真正開展過程中能有效得到他們的協助和支援(效能測試不是一個人就能完成的,除非你“全才”啦);

  2. 你計劃中需要申請的資源,比如執行contoller的機器,是否符合你的預期要求,Cpu是否有足夠的處理能力,安裝的作業系統是否符合你的要求(loadrunner9.5除load Generator外都不能安裝在64位機作業系統下,若沒看清楚安裝檔案(安裝程式下help\install.pdf)中system requirements for installing說明的話,你安裝完成會發現自己白忙活了,還得重灌OS,然後重來一次);

  3. 你要測試的程式是否功能都沒問題了,若程式還有變更,請千萬不要在錄製部分後又變更了,你需要的版本是一個功能穩定的版本,能順利錄製指令碼的的版本);

  4. 在測試執行前你是否召集開發和相關人員對程式中明顯需要優化的地方(你功能測試執行時系統有些功能就無法忍受的慢)進行了優化,這樣可以大大縮短你的效能測試周期;

  5. 在選擇工具前,一定要慎重,你的程式設計語言和架構及其所運用的技術,此工具是否都支援,不然後續你需要自行開發的指令碼就太多了,可能面臨重新選擇測試工具的嚴重問題);

  6. 分險分析:技術風險、風險分析、分險應對措施和風險監控方法。

設計測試指令碼?

  1. 識別可能的系統性能問題,多與相關人員分析討論。
  2. 你所測系統的重點業務是什麼?都有哪些角色參與?業務邏輯是什麼樣的?使用者頻繁使用的功能是否都考慮周全了?
  3. 引數化資料的來源?都需要哪些檢查點?指令碼的精簡程度?

準備測試資料?

  1. 基礎資料:要更符合實際需求,人員、角色、初始化資料等;
  2. 業務資料;要更符合實際業務,資料最好不要相同的資料,無效的資料,要類別豐富、覆蓋所有業務邏輯的基礎資料;可以通過自動化工具直接生成;資料庫指令碼生成(單一資料,關聯幾個表的資料最好不用指令碼生成);用ld生成。

搭建測試環境?

  1. 網路(頻寬、可使用的有效ip地址個數);
  2. 伺服器的配置;
  3. 當前測試環境的侷限性(無法模擬的測試環境都有哪些)。

需求分析和需求轉化

客戶的效能需求不可測試、沒有需求、需求模糊,要通過與客戶、開發人員的溝通獲得可測試、可衡量和可量化的效能需求

1.8/2原則

2.經驗值

3.平均併發使用者數C=nL/T(n:使用者數量[login session的數量],L:使用者平均使用時長[login session的時長],T:考察的時間段)

4.併發使用者峰值:C1=C+3√C