JTest
Jtest實現了自動化的解決方案,排除了Java開發人員技術應用上的障礙,使得開發人員能夠順利地采用這些技術。
Jtest的測試生成系統專利技術,開發人員提供了一種省時有效的白盒測試方法。Jtest通過自動生成和執行能夠全面測試類代碼的測試用例,使白盒測試完全自動化。Jtest使用一個符號化的虛擬機執行類,并搜尋未捕獲的運行時異常。對于檢測到的每個未捕獲的運行時異常,Jtest報告一個錯誤,并提供導致錯誤的棧軌跡和調用序列。Jtest的先進技術保證它能夠自動測試類的所有代碼分支,從而徹底檢查被測類的結構。
換句話說,Jtest自動生成高質量的測試用例集合,發現盡可能多的結構性錯誤,而且:
不需要用戶寫一點測試腳本語言或測試用例。
不需要用戶寫測試驅動程序。
不修改源代碼。
不要求完整的應用。
Jtest報告下列未捕獲的運行時異常:
行為錯誤的方法:這些方法對于某些特定輸入不會產生異常。必須修改這些代碼。
非預期參數:這一問題出現在當某方法遇到非預期的輸入(不知任何處理)而產生一個異常。這些問題的修正可以通過檢查輸入并產生一個IllegalArgumentException (IAE)(假如該輸入是非法的)。改正這類問題可以使代碼更清晰更易維護。
行為正確的方法:這時,方法的正確輸出是產生一個異常。在這種情形下,建議開發人員修改代碼,將這類異常的產生置于方法的throw子句中。這會得到更清晰的代碼并易于維護。
為開發人員使用的方法:在這種情況下,這些方法"不被假設"成處理Jtest生成的輸入,開發人員是這些方法的唯一使用者,并且不傳遞這些輸入參數。最好的辦法是修改這些代碼,讓它產生一個IAE。這將帶來額外的好處,使代碼更易閱讀。
總之,通過執行自動白盒測試,并提示上述類型的問題,Jtest能夠為開發人員節省大量的時間并防止了錯誤。由于能夠自動執行白盒測試的各個步驟,Jtest對開發人員來說是非常實用的,為了保證質量可以經常執行這一綜合性測試。更進一步,使用測試生成系統技術產生的測試輸入,Jtest使得白盒測試比手工測試更精確更有效。
白盒(構造)測試驗證對一個類的非預期輸入不會導致程序的崩潰。為執行白盒測試,您需要設計和執行根據類的內部結構編寫的測試輸入,檢查是否存在會導致類運行失敗的任何可能的對類的使用,以及是否存在某些編程缺陷可能會導致代碼更容易出錯。白盒測試能否成功的關鍵取決于測試輸入的能力,是否能夠盡可能全面地覆蓋類的方法,并找出引起未捕捉到的運行時異常的輸入。
盡可能早的防止和檢測構造問題對Java軟件開發來說更為關鍵。在大多數語言(如C和C++)中,一個非法程序操作常常導致程序的突然中斷。Java相對來說提供了一種非常簡單的機制來捕獲運行時出現的異常并讓程序繼續運行,這種機制的設計可以簡化對系統和其它服務調用的處理。另一方面,一個非法操作引起運行時異常確實指出了程序中的一個錯誤。捕捉它們并讓程序繼續運行通常比C++中的突然中斷更有問題。帶有問題的程序將繼續運行是乎好象沒有問題出現過,但極有可能進入一種矛盾狀態,并產生不準確的結果或破壞它所存取的資源。
雖然白盒測試是保證類和應用質量的一個關鍵步驟,但手工執行的難度通常會使開發人員望而卻步或草草了事。有效地執行白盒測試需要我們能夠確定要完全檢查被測類那些測試用例是必需的,這對于手工測試來說是太難了。目前的研究表明,典型的公司只測試了其開發的30%的代碼,而其余的70%從來沒有被測過。一個原因是編寫能夠測試很少執行的路徑或極端的條件的測試用例很困難。例如,一個典型的1萬行代碼大約有1億條可能的路徑;手工編寫能夠執行所有路徑的測試輸入是不可行的或者說幾乎是不可能的。
文章來源于領測軟件測試網 http://www.kjueaiud.com/