這種測試很簡單,就是申請分配資源直到失敗,然后釋放掉所有分配的資源。這只是一種最簡單的測試,如果你確保它可以工作了,那么還有幾件事情等著你去做。
首先,將它放到一個循環里面,然后執行很多次。它是否依然可以正常工作?
其次,在它運行的時候觀察整個系統,看被測試進程是否有內存,句柄或者其他資源的泄漏。這種場景下的一個典型的BUG就是資源分配函數發生錯誤時沒有被正確處理。即使它不會立即導致崩潰,但仍可能會導致內存泄漏或者錯誤。這種事情我以前也遇到過。
如果要更深入此類測試場景,則需要理解資源的依賴關系,以及在軟件依次消耗掉所有的這些資源情況下其是否正確處理了所有的資源錯誤。這方面的一個例子就是處理消息的軟件。它將在等待處理的消息在磁盤上保存為一個隊列。那么磁盤如果滿了的話會發生什么?這種場景可能會比較難設置,它看起來類似于:
1. 限制硬盤空間
2. 將消息注入到隊列中
3. 停止從隊列中取消息
4. 磁盤滿了,會發生什么?相應的工作行為是正確的嗎?
5. 重新開始從隊列中取消息。是否一切工作正常?
接下來的幾個步驟類似于我們上面已經做的,那就是在更多的情況下去重復測試它,并觀察結果:
嘗試取出所有的消息,直到隊列為空。
建立一個穩定的消息輸入流,但時而暫停并再恢復取出消息,反復執行磁盤空間測試用例,看是否在這樣的情況下仍然工作正常? 如果出錯的話,是否該出錯被正確處理?是否有副作用,比如內存泄漏,句柄泄漏或者數據出錯?是否隊列的生產者和消費者都正確處理了錯誤用例?
在你的軟件中還會有很多關于這個主題的情況等待你去挖掘,我不準備將所有可能的情況都列在這里。我想你能夠自己考慮這些事情。
文章來源于領測軟件測試網 http://www.kjueaiud.com/