幾種常見的性能測試方法

1.負載測試

在這裡,負載測試指的是最常見的驗證一般性能需求而進行的性能測試,在上面我們提到了用戶最常見的性能需求就是「既要馬兒跑,又要馬兒少吃草」。因此負載測試主要是考察軟體系統在既定負載下的性能表現。我們對負載測試可以有如下理解:

(1)負載測試是站在用戶的角度去觀察在一定條件下軟體系統的性能表現。

(2)負載測試的預期結果是用戶的性能需求得到滿足。此指標一般體現為響應時間、交易容量、並發容量、資源使用率等。

2.壓力測試

壓力測試是為了考察系統在極端條件下的表現,極端條件可以是超負荷的交易量和並發用戶數。注意,這個極端條件並不一定是用戶的性能需求,可能要遠遠高於用戶的性能需求。可以這樣理解,壓力測試和負載測試不同的是,壓力測試的預期結果就是系統出現問題,而我們要考察的是系統處理問題的方式。比如說,我們期待一個系統在面臨壓力的情況下能夠保持穩定,處理速度可以變慢,但不能系統崩潰。因此,壓力測試是能讓我們識別系統的弱點和在極限負載下程序將如何運行。

例子:負載測試關心的是用戶規則和需求,壓力測試關心的是軟體系統本身。對於它們的區別,我們可以用華山論劍的例子來更加形象地描述一下。如果把郭靖看做被測試對象,那麼壓力測試就像是郭靖和已經走火入魔的歐陽峰過招,歐陽鋒蠻打亂來,毫無套路,儘可能地去打倒對方。郭靖要能應對住,並且不能丟進小命。而常規性能測試就好比郭靖和黃藥師、洪七公三人約定,只要郭靖能分別接兩位高手一百招,郭靖就算勝。至於三百招後哪怕郭靖會輸掉那也不用管了。他只要能做到接下一百招,就算通過。

思考

我們在做軟體壓力測試時,往往要增加比負載測試更多的並發用戶和交易,這是為什麼?

3.並發測試

驗證系統的並發處理能力。一般是和伺服器端建立大量的並發連接,通過客戶端的響應時間和伺服器端的性能監測情況來判斷系統是否達到了既定的並發能力指標。負載測試往往就會使用並發來創造負載,之所以把並發測試單獨提出來,是因為並發測試往往涉及伺服器的並發容量,以及多進程/多線程協調同步可能帶來的問題。這是要特別注意,必須測試的。

4.基準測試

當軟體系統中增加一個新的模塊的時候,需要做基準測試,以判斷新模塊對整個軟體系統的性能影響。按照基準測試的方法,需要打開/關閉新模塊至少各做一次測試。關閉模塊之前的系統各個性能指標記下來作為基準(Benchmark),然後與打開模塊狀態下的系統性能指標作比較,以判斷模塊對系統性能的影響。

5.穩定性測試

「路遙知馬力」,在這裡我們要說的是和性能測試有關的穩定性測試,即測試系統在一定負載下運行長時間後是否會發生問題。軟體系統的有些問題是不能一下子就暴露出來的,或者說是需要時間積累才能達到能夠度量的程度。為什麼會需要這樣的測試呢?因為有些軟體的問題只有在運行一天或一個星期甚至更長的時間才會暴露。這種問題一般是程序佔用資源卻不能及時釋放而引起的。比如,內存泄漏問題就是經過一段時間積累才會慢慢變得顯著,在運行初期卻很難檢測出來;還有客戶端和伺服器在負載運行一段時間後,建立了大量的連接通路,卻不能有效地復用或及時釋放。

6.可恢複測試

測試系統能否快速地從錯誤狀態中恢復到正常狀態。比如,在一個配有負載均衡的系統中,主機承受了壓力無法正常工作後,備份機是否能夠快速地接管負載。可恢複測試通常結合壓力測試一起來做。

提示:每種測試有其存在的空間和目的。當我們接手一個軟體項目後,在有限的資源條件下,選擇去做哪一種測試,這應該根據當前軟體過程階段和項目的本身特點來做選擇。比如,在集成測試的時候要做基準測試,在軟體產品每個發布點要做性能測試。

Testin送開年福利!

2月7日 (周三)晚8:30,Testin 將與Google工程師一起為大家奉上一場以「探索 Android Oreo 特性及兼容性」為主題的在線直播趴!

直播結束後將推出重磅抽獎環節!

報名方式:填寫調查問卷報名參加本次直播,填寫調查問卷前50名的同學可獲得神秘大獎一份!

調查問捲入口->jinshuju.net/f/dueC8w

更多活動詳情請戳:help.testin.cn/events/w


推薦閱讀:

請問有針對桌面程序,開發語言C++的自動化測試工具嗎?有誰用過Test Complete 嗎
互聯網測試主管新官上任要怎樣寫一份團隊建設策劃書?
如何看待Monkey陳嘩在業內人人喊打?
測試工程師的光榮與夢想(七)

TAG:性能 | 软件测试 |