對我們的系統和組件進行壓力測試是非常重要的。壓力測試可以發現很多在正常情況下不會被暴露的問題,也就是說可以發現更多其他測試無法發現的系統缺陷。雖然壓力測試和負載測試在某些方面有共同點,但是兩者并不相同。負載測試是通過在系統上運行已經定義好的工作負載從而確保系統能夠在一定的負載系正常工作。而壓力測試是測試系統過載的情況,并幫助回答這樣一個問題“什么原因導致了系統錯誤?”
以下是我曾經參與過的一些壓力測試:
Windows 客戶端的壓力測試
在這個系統測試中,我們同時運行許多應用程序,偽應用程序以及測試程序。如果你沒有看到過這種情形,你應該去嘗試一下。此時,很多子系統會被同時頻繁地調用。由于現實中,一個人很難同時做很多事,所以一般Windows用戶是很難出現這樣的負載。
Xbox 壓力測試
在這個系統測試中,許多測試程序和一個游戲引擎同時在Xbox的進程空間中以多線程的方式運行。在Xbox中的所有測試都被設計成與系統內核同時運行在同一個進程空間中。而這也正是Xbox系統的模型。每個測試都是一個線程,每個線程都知道自己不能獨享整臺機器。我們同時運行所有的測試,于是就出現了圖形測試,I/O測試,聲音測試,網絡測試和控制器測試同時運行的情形。
HPC 壓力測試
在這個系統測試中,我們在管理控制臺運行的時候提交許多簡單的MPI作業,從而模擬了一個很大的工作負載。事實上,它模擬了一個實際中不可能出現的工作負載,因為真正的用戶不會喜歡一個集群同時有成百上千的作業在隊列中等待處理 。成千上萬的MPI作業同時運行,就會有幾百萬個狀態更新信息被發送到管理控制臺。此時管理控制臺就需要同時處理幾百萬條消息。
這些測試都如下共同點:
沒有用戶會這樣使用系統!
負載是完全不合理的
系統最終可能會崩潰
我們可能不會修復這樣的BUG,因為用戶不會碰到它。
這是一種設計出來的不合理的負載。實際中用戶不會給系統帶來如此強度的工作負載。而這種負載強度應該會導致系統崩潰。但是我們并不會修復每一個這樣的BUG。其實這些都并不是重點。重點是我們可以通過這樣的測試很快發現系統的弱點,并決定這些弱點是否應該被修復或者處理并由此調整測試。一個在正常使用情況下可能需要一個月才暴露的BUG,在壓力測試中可能幾分鐘就會暴露出來。這是一種很有效并高效的尋找BUG的方法。
壓力測試的關鍵是:
一個通過了壓力測試的系統在正常的工作負載下將很難出錯。這樣的系統才是好系統!
文章來源于領測軟件測試網 http://www.kjueaiud.com/