使用JUnit高效完成功能測試[2] 功能測試工具
運行:調用被測試的代碼,記錄所有值得注意的輸出和數據。
檢查:使用斷言語句確保代碼正常運行。
舉例來說,假設要測試Saxon庫的轉換類入口點。其中一個用例是將XML文件轉換為HTML文件,當然前提是已有描述這個轉換的XSL文件。輸入這三個文件的路徑,就應該輸出HTML文件的內容。這可以直接轉為下面的測試:
public void testXSLTransformation() {
/* initialize the variables
(or do this in setUp if used in many tests) */
String processMePath = "/path/to/file.xml";
String stylesheetPath = "/path/to/stylesheet.xsl";
String outputFilePath = "/path/to/output.xml";
//do the work
Transform.main(new String[] {
processMePath,
stylesheetPath,
"-o", outputFilePath } );
//check the work
assertTrue(checkOutputFile(outputFilePath));
}
每一步都可以根據需要進行增減。這里聲明的變量也可以簡單地通過調用方法來賦值。預期輸出的實現是由幾個步驟組成。如果成功得到預期輸出,有時可以省略檢查步驟。
雖然這個模式簡單且靈活可變,但是第二步必不可少。這個模板沒有告訴我們尋找要測試代碼的方法,也不能保證代碼以方便測試的方式運行。這是個需要認真考慮的問題。
功能測試
通過確定執行程序功能的主要代碼段,可以將測試建立在一個更有效的環境下。由于這些類提供了從系統外部進行測試的途徑,所以也是代碼的入口點。
因此,功能測試的整體目標就是確定一組可以訪問系統功能的高層接口類。這些類的獨立性越高越好。畢竟,如果能將類從環境中分離出來,測試起來會更加容易。
確定作為入口點的代碼是一個簡單的過程。在代碼庫中,通常有幾個控制該庫所有功能的入口點。這些外部類作為客戶端代碼,與庫的中介對象將開發人員從復雜的代碼分析中解脫出來。這些便是應當首先對其方法進行測試的類。
比如,Saxon有一小組類作為邏輯入口點提供對庫的訪問。通過對外部類進行編碼操作,比如轉換、設置和查詢,客戶端代碼可以訪問庫的許多功能類,而無需考慮類的接口問題,甚至無需擔心這些類是否存在。這些外部類用高層易用的接口提供一個簡單的方式對系統功能進行測試,這正是一個優良的庫的特征。軟件測試
程序代碼中的各個功能模塊通常是各自獨立的。在某些代碼中,甚至可以認為這些模塊各自對應不同的、可通過大量外部類訪問的庫。這些類查找高層接口的邏輯位置。插件結構通常都采用這種設計模式:每個插件程序都有一個可以有效執行內部代碼全部功能的簡單接口。
文章來源于領測軟件測試網 http://www.kjueaiud.com/