軟件測試之資源分配測試——失敗及恢復 軟件測試技術
我們知道所有程序都會和各種資源打交道,硬件資源類型如硬盤,系統資源如句柄,因此如何做好資源相關的測試很重要。大家熟知的是測試資源的泄漏,但這里我想更多的從資源分配失敗及恢復角度去談資源分配測試。
對于資源通常有如下操作:
1.分配資源
我們熟知的一個典型例子就是 C語言中’malloc()’ 系列函數。
2.釋放資源
同樣的一個例子就是C語言中’free()’系列函數。
3.資源計數
比較常見的例子就是性能計數器,比如文件句柄計數器,它能夠提供“有多少文件句柄被打開”的信息
我們編寫軟件的時候,我們一般都會經常使用這些資源管理類函數來幫助我們,從而得以申請和釋放多種類型的資源。當然我們也會編寫一些自己的代碼來申請和釋放資源。一般情況下,這些代碼會處于我們的軟件架構的相對底層上。我們可能有一個系統,在這個系統里,我們分配資源,使用資源,還可能管理并監控資源,最后當處理完后釋放掉這些資源。同時還存在著當代碼運行時替我們分配資源的情況。
由于各種原因,資源的申請和分配并不總是能夠成功的。其中一個原因可能是某種特殊的資源被消耗殆盡了。比如在磁盤空間不夠時,我們申請使用更多磁盤資源的話就會失;還比如內存總是是有限的;句柄空間總是那么多?傊浖锌赡芤驗楦鞣N原因而出錯,但一個主要的原因就是資源的消耗。
對于服務型軟件而言,提供長期穩定的服務是重要的設計目標之一。從而,相對于客戶端程序,它需要運行得更加可靠、健壯。為了確保軟件的可靠性和健壯性,我們必須確保它在資源可用率發生異常變動的情況下,它還是可以正常運行。如果某一個程序消耗了所有的內存,那么我們可以假定它肯定會出錯了;但如果由于系統內存的不足導致內存分配的偶爾失敗,那么我們的軟件應不應該完全崩潰?還是應該僅僅讓當前操作出錯并讓軟件其他部分能夠繼續正常運行?同樣的問題也適用于其他類型的動態分配并被共享的資源,比如磁盤空間,內存,文件,網絡連接等。
致錯測試是一個重要的測試場景,可以幫助我們了解當資源使用達到極限的時候會發生什么。簡單地說, 這種測試可以用以下偽代碼描述:
Pallocatedthing[<use more than enough space here>]
counter n
While(Pallocatedthing[n++]=allocate(<whatever size you like>))
While(n)
free(Pallocatedthing[n–])
文章來源于領測軟件測試網 http://www.kjueaiud.com/