本文提供若干實用的建議,幫助項目組開發出可測性更強的軟件產品。
本文對可測性(Testability)的定義為可見性和可控制性?梢娦允俏覀兡苡^察被測軟件的狀態、輸出、資源利用和其它影響的程度;可控制性是我們能向被測軟件輸入或把它設置到某個特定狀態的程度。
可見性基礎
可見性的基本方面是能訪問代碼、設計文檔和更改記錄。這些是對大部分可測性進行改進的前提條件。
測試人員需要知道如何閱讀代碼,以及如何理解設計模型所采用的語言。在測試人員能提出測試接口、錯誤注入鉤子或其它可測性特性之前,他們需要對系統設計有基本的理解。
可測性的改進需要測試人員和開發人員都使用共同的語言。
詳細的輸出
很多程序都有詳細輸出模式,這是可測性的很好的例子,它讓人可以看到軟件運轉的細節。Unix的Mail程序就是其中一個例子:
mail -vbret@pettichord.com
Subject: testability example
Sample text.
.
Cc:
bret@pettichord.com... Connecting to mx.io.com. via relay... 220-deliverator.io.com
ESMTP Sendmail 8.9.3/8.9.3; Fri, 12 Jan 2001 15:34:36 -00 220 Welcome to
Illuminati Online, Fnord!
>>> EHLO eris.io.com
250-deliverator.io.com Hello IDENT:wazmo@eris.io.com [199.170.88.11], pleased tu
250-8BITMIME
250-SIZE 5000000
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP
>>> MAIL From: <wazmo@eris.io.com> SIZE=67
250 <wazmo@eris.io.com>... Sender ok
>>> RCPT To: <bret@pettichord.com>
250 <bret@pettichord.com>... Recipient ok
>>> DATA
354 Enter mail, end with “.” on a line by itself
>>> .
250 PAA07752 Message accepted for deliverybret@pettichord.com... Sent (PAA07752
Message accepted for delivery) Closing connection to mx.io.com.
>>> QUIT
221 deliverator.io.com closing connection
這些詳細的輸出信息可以幫助測試人員了解客戶端和服務器端之間的通訊過程,從而幫助設計出測試用例來測試服務器的錯誤處理能力。同時這些信息可以幫助暴露問題出現的地方。
日志
詳細的輸出信息是記錄軟件事件的其中一種技術。日志可以幫助測試人員更容易理解軟件的運轉情況。也可以幫助發現一些容易忽略的bug。當bug出現,日志可以幫助定位到錯誤的代碼和幫助調試。
診斷、監視和錯誤注入
斷言是一種普遍的診斷。斷言是使程序對處理的輸入的假設更加清晰明確的額外代碼行。當斷言被違反了(假設不成立),錯誤或異常就自動出現。所以斷言被違反就意味著bug。
如果沒有斷言,你可能不會注意到bug已經發生,因為內部數據可能已經被破壞,但是只有當進一步的測試訪問到這些數據時才出錯。斷言也可以幫助定位錯誤出現的代碼位置。
查找內存泄漏問題的有效的方法是監視內存使用。有很多工具可以做到這點。如果能監視內部內存設置會使測試更容易。例如在Netscape輸入“about:config”能把所有設置輸出。對于于配置問題的追蹤會有很大幫助,尤其是某些問題只是在特定的機器才會出現。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/