找錯―面向對象軟件的測試技術與方法[1] 軟件測試
面向對象技術所獨有的多態、繼承、封裝等新特點,使OO程序設計比傳統語言程序設計產生錯誤的可能性增大,使得傳統軟件測試中的重點不再顯得那么突出,也使原來測試經驗和實踐證明的次要方面成為了主要問題。
用戶使用低質量的軟件,在運行過程中會產生各種各樣的問題,可能帶來不同程度的嚴重后果,輕者影響系統的正常工作,重者造成事故和財產損失。軟件測試是保證軟件質量的最重要的手段,它使用人工或自動手段來運行或測定某個系統的過程,其目的在于檢驗它是否滿足規定的需求,弄清預期結果與實際結果之間的差別。
面向對象技術是一種全新的軟件開發技術,正逐漸代替被廣泛使用的面向過程的開發方法,被看成是解決軟件危機的新興技術。盡管面向對象技術的基本思想保證了軟件應該有更高的質量,但實際情況卻并非如此,因為無論采用什么樣的編程技術,編程人員的錯誤都是不可避免的,而且由于面向對象技術開發的軟件代碼重用率高,更需要嚴格測試,以避免錯誤的繁衍。
一、評審
因為OOA、OOD階段所建立的OOA和OOD模型不能執行,所以在每次迭代之后,一定要進行評審。
1.正確性
OO開發模式為演化(重復迭代)性質,即系統的初期為非形式化表示,以后發展為類的細節模型、類的連接和關聯,系統設計和配置,以及對類的設計(通過消息組成對象連接模型)。每一階段都要進行評審。
正確性主要在分析和設計模型表示所使用的符號語法是否正確,語義是否正確(即模型與真實世界領域是否一致),以及類的關聯(實例間的聯系)是否正確地反映了真實世界對象間的關聯。
2.一致性
由于演化性質,OOA和OOD模型(包括分析、設計和編碼層次,即類、屬性、操作、消息)不僅要正確,而且要一致。一致性可以用模型內各實體間的關聯性來判斷。
二、測試
1.單元測試
OOP完成以后,就可以進行單元測試了。與傳統的單元(模塊)不同,OO中的單元是類。每個類都封裝了屬性(數據)和管理這些數據的操作(也被稱做方法或服務)。一個類可以包含許多不同的操作,一個特殊的操作可以出現在許多不同的類中。
傳統的單元測試只能測試一個操作(功能)。而在OO單元測試中,一個操作功能只能作為一個類的一部分,類中有多個操作(功能),就要進行多個操作的測試。
另外,父類中定義的某個操作被許多子類繼承。但在實際應用中,不同子類中某個操作在使用時又有細微的不同,所以還必須對每個子類中某個操作進行測試。
類的測試可以使用多種方法,如基于故障的測試、隨機測試和分割測試等。每一種方法都要檢查封裝在類中的操作,即設計的測試序列(用例),要保證相關的操作被檢查。因為類的屬性值表示類的狀態,由此來確定被檢查的錯誤是否存在。
文章來源于領測軟件測試網 http://www.kjueaiud.com/