2010年7月12日 星期一

Performance, Load, Stress Testing

之前我一直把這三者弄混了。這裡做個筆記。

Performance Testing

測試的目的在收集「系統在穩定狀況時的行為」,如Response Time (回應時間),資源的消秏,輸出量等。另一個目的也在於了解「何為系統正常」。

Performance Testing 時,可以只有一個 Process 進行。

Ex:

  1. 同樣的搜尋,在兩台伺服器何者搜尋較快。
  2. 正常情形下,該伺服器平均速度為 200 request per second(RPS)。

Load Testing

主要目的在了解「在正常及尖峰的狀況下系統的行為」,包括可靠度及效能。常常會以遞增的load size (number of concurrent users)來了解這樣的行為。

Load Testing 時,通常有多個 Process 進行。

Ex:

  1. 反應時間在 1 秒內時,可同時搜尋的查詢數。
  2. 該應用程式在該伺服器能承載的最大concurrent users 數為200人。

Stress Testing

對要目的在了解「極端的狀況下系統是如何 Crash 掉的」,進而知道在極端狀況發生時應如何處理。

故系統一定要測到掛了,並了解系統的瓶頸,如 CPU滿載,RAM 不足,硬碟效能不足,大量資料等。

Stress Testing 時,一定會有多個 Process 同時進行測試。

Ex:

  1. 目前這個系統,未來會先面臨 CPU 不足,還是 RAM 不足。發生時應如何補足資源?
  2. 系統在3000 萬筆的訂單,5億筆訂單歷史時,系統還能承受100個線上使用者,且平均網頁還能在4秒內呈現。

沒有留言:

Share with Facebook