測試模式是一種針對軟件測試領域的某種高頻率出現問題而采取并經過實踐證明行之有效的專門化、高效的解決途徑(方法),它在軟件理論和實踐兩者之間起著 “ 橋梁 ” 的作用。在面向對象語言JAVA程序測試的過程中,一個較為棘手的問題就是 JAVA 類的可視性問題。 “ 信息隱蔽 ” 固然是面向對象語言設計的一個突出的優點,但是同時也給測試帶來諸多不便,有關 “ 隱蔽信息 ” 的可測試性成為這類測試的一大突出結癥。為此我們針對 JAVA 類不同的 “ 可視性 ” 要求的場合,采取相應的測試模式來支撐相關 JAVA 類(包)的測試。本文主要總結五個常用的 JAVA 測試模式,以饗讀者。這五個模式同樣適合于其它面向對象類(包)的測試,只不過在具體細節上要考慮與 JAVA 語言信息隱蔽性的差異。比如: JAVA 的可視性以包為界,同一個包內的類對其他類具有相同的存取權限。而 C++ 則以類為界,只有子類和友員函數方可對基類的隱蔽信息進行存取。
我們在下面以圖表的方式給出 五個常用 JAVA 測試模式詳細描述,有關模式的描述類目分別是模式名稱、測試對象、針對問題、約束條件、解決方法、實例、約束解決方式和該測試的設計原理。
模式(一) Main 模式
模式名稱 |
Main |
測試對象 |
JAVA 類 |
針對問題 |
測試人員不知道在何處javascript:tagshow(event, '%B1%E0%D0%B4');" href="javascript:;" target=_self>編寫驅動和初始化被測試類的測試代碼 |
約束 |
測試必須容易運行、測試代碼能夠訪問該類所有的特征(所有的屬性和方法) |
解決方法 |
將測試代碼放入類的 public static void main(String[] args) 方法中去 |
實例 |
public static void main(String[] args){ SomeClass result; // perform thetest… System.out.print(“result is..”); } |
約束解決 |
該測試代碼能夠率先被激活和執行、并能夠訪問被測試類所有的特征 |
設計原理 |
JAVA 類可以擁有 public static void main(String[] args) 方法,它是類在 JVM 中被率先執行的方法,控制著整個類的執行邏輯, main 方法能夠訪問所在類的所有屬性和方法 |
模式(二) toString 模式
模式名稱 |
toString |
測試對象 |
作為運算結果的類 |
針對問題 |
測試人員不知道如何檢驗一個運算對象的中間結果和最終結果 |
約束 |
測試結果代表對象內部的一個狀態,而該狀態必須能夠被測試 |
解決方法 |
通過使用 toString 方法來對類狀態進行描述,描述結果可以通過打印與預期結果進行比較 |
實例 |
class SomeClass { //… public String toString(){ // custom representation } }
原文轉自:http://www.anti-gravitydesign.com |