[概念] 物件導向測試

作者: H45 (!H45)   2009-01-13 06:24:20
物件導向測試 (Object-oriented testing)
前言:
軟體測試在非物件導向與物件導向都是非常建議實行的一環,雖然許多測試的策略是相
同的,但是仍然有些性質是物件導向才有的,以下文章簡述有關物件導向測試的特性。
參考書籍為:
Object-Oriented Software Engineering 2/e -
Practical Software Development using UML and Java
本文:
在物件導向的設計中,類別是一個非常重要的結構單位,為了找出軟體的瑕疵、缺陷
、錯誤,適當的測試可以幫上大忙。
1. 在類別裡面設計一個專門拿來測試的方法,此方法的目標為測試此類別的其他方法
2. 在一個繼承樹中測試父類別的方法與其子類別的方法所做的事情是一致的,要完成
此項測試,執行每個子類別的測試方法來確認即可。
設計測試的概念之一是:在不操作圖形使用者介面的情況下測試程式碼的正確性,要
完成這樣的測試必須把使用者介面與系統的功能兩者切割的非常乾淨,測試者才能直
接透過系統提供的 API 來撰寫對應的程式碼,使得自動化的測試變得更容易。
另一種不錯的測試策略是替系統撰寫一個 Command-Line 的版本,使測試者可以直接
透過指令來操作系統,進行各式各樣的系統測試。
在 Java 中,若要使軟體具有可測試性,可以考慮在每個類別中加上 main 方法來測
試該類別的方法,並且在遇到任何瑕疵、缺陷、錯誤的時候將其報告出來。
雜談:
設計測試的概念以及 Command-Line 版本的建議對非物件導向的設計方式也適用,上
面的「本文」真正和物件導向有關係的只有 1, 2 兩點,而 1 描述的內容和「本文」
的最後一段一模一樣……
至於 2 所提到的事情嘛,不就是 hashcode() 理當實作雜湊函數,compareTo() 乖乖
實作比較大小,toString() 好好實作轉字串,不要額外做一些有的沒有的嘛……這有
什麼好強調的呢? (小聲問:「會有人想在 compareTo() 的函式中偷偷地將自己變大
嗎;會有人想讓上一行呼叫 toString() 的結果和下一行呼叫 toString() 的結果不
一樣嗎?」 (拜託,別讓這世界變得更亂了,囧>))

Links booklink

Contact Us: admin [ a t ] ucptt.com