多態有幾種不同的形式,如參數多態,包含多態,過載多態。包含多態和過載多態在面向對象語言中通常體現在子類與父類的繼承關系,對這兩種多態的測試參見上述對父類成員函數繼承和過載的論述。包含多態雖然使成員函數的參數可有多種類型,但通常只是增加了測試的繁雜。對具有包含多態的成員函數測試時,只需要在原有的測試分析和基礎上擴大測試用例中輸入數據的類型的考慮。對類為粒度進行面向對象的單元測試,可參考[10]中關于如何從MtSS生成測試用例的說明。
六、面向對象的集成測試(OO Integrate Test)
傳統的集成測試,是由底向上通過集成完成的功能模塊進行測試,一般可以在部分程序編譯完成的情況下進行。而對于面向對象程序,相互調用的功能是散布在程序的不同類中,類通過消息相互作用申請和提供服務。類的行為與它的狀態密切相關,狀態不僅僅是體現在類數據成員的值,也許還包括其他類中的狀態信息。由此可見,類相互依賴極其緊密,根本無法在編譯不完全的程序上對類進行測試。所以,面向對象的集成測試通常需要在整個程序編譯完成后進行。此外,面向對象程序具有動態特性,程序的控制流往往無法確定,因此也只能對整個編譯后的程序做基于黑盒子的集成測試。
面向對象的集成測試能夠檢測出相對獨立的單元測試無法檢測出的那些類相互作用時才會產生的錯誤;趩卧獪y試對成員函數行為正確性的保證,集成測試只關注于系統的結構和內部的相互作用。面向對象的集成測試可以分成兩步進行:先進行靜態測試,再進行動態測試。
靜態測試主要針對程序的結構進行,檢測程序結構是否符合設計要求,F在流行的一些測試軟件都能提供一種稱為"可逆性工程"的功能,即通過原程序得到類關系圖和函數功能調用關系圖,例如International Software Automation 公司的Panorama-2 for Windows95、Rational公司的Rose C++ Analyzer等,將"可逆性工程"得到的結果與OOD的結果相比較,檢測程序結構和實現上是否有缺陷。換句話說,通過這種方法檢測OOP是否達到了設計要求。
動態測試設計測試用例時,通常需要上述的功能調用結構圖、類關系圖或者實體關系圖為參考,確定不需要被重復測試的部分,從而優化測試用例,減少測試工作量,使得進行的測試能夠達到一定覆蓋標準。測試所要達到的覆蓋標準可以是:達到類所有的服務要求或服務提供的一定覆蓋率;依據類間傳遞的消息,達到對所有執行線程的一定覆蓋率;達到類的所有狀態的一定覆蓋率等。同時也可以考慮使用現有的一些測試工具來得到程序代碼執行的覆蓋率。
具體設計測試用例,可參考下列步驟:
文章來源于領測軟件測試網 http://www.kjueaiud.com/