一、 程序命名規范
1.測試類的命名
測試類的命名規則是:被測試類的類名+Test
比如有一個類叫IrgSrhDelegate,那么它的測試類的命名就是IrgSrhDelegateTest
2.測試用例的命名
測試用例的命名規則是:test+用例方法名稱
比如要測試的方法叫updateData,那么測試用例的命名就是testUpdateData
(說明:“用例方法”就是指被測試的類中所包含的方法,而“測試用例”就是指測試類中所包含的方法)
比如IrgSrhDelegate中有一個方法叫做findByIrgFindParam,那么在IrgSrhDelegateTest中對應的測試用例名稱就是testFindByIrgFindParam。
3.其它命名規范
本規范未說明的其它命名規范請參照《JAVA語言編碼規范》(ENO-W063-JAVA Coding Rule.doc)。
二、 測試程序的包名定義規范
為了保持測試程序的獨立和穩定性,請按照下面的方式組織測試程序:
假如被測試類的包名是com.wistrons.util,那么測試類的包名就是test.com.wistrons.util。也就是說在被測試類的包名前加上“test.”,這就是測試類的包名。
三、 測試數據的準備方案
準備測試數據時有三種方案可以選擇。
1.在程序中直接寫入測試數據
在要輸入的數據項不多的情況下可以采用這種方式
2.使用junitpack包中的InputDataUtil工具類
(要使用這個工具,請在測試程序中加上import junitpack.InputDataUtil)
這種方法要求把測試數據寫在一個XML文件中,XML的格式如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<inputs>
<input>
<IrgCd>h0001</IrgCd>
<IrgName></IrgName>
<IrgKname></IrgKname>
</input>
<input>
…
</input>
…
</inputs>
在這個XML文件中的根節點為inputs,根節點下可以有多個input節點。每個input節點代表一個case中需要的所有數據。
使用這個工具類的操作步驟如下:
1) 獲取XML的存放路徑。
請把寫好的XML存放在測試類所在的目錄中,然后可以按如下方式取得XML的存放路徑:
String xml = IrgSrhDelegateTest.class.getResource(".").toString() +"test.xml";
2) 創建InputDataUtil的實例。
InputDataUtil inputUtil = new InputDataUtil();
3) 在InputDataUtil實例中設置接受數據的類名,InputDataUtil將此類與XML進行數據綁定。
inputUtil.setClassName("jp.co.liondor.common.fz25IrgSrh. SeekIrgSrhOpt");
4) 調用InputDataUtil.parse()方法,從XML中采集數據
java.util.Vector vector = (java.util.Vector) inputUtil.parse(xml);
5) 從Vector中取出被綁定類的實例
for (int i = 0; i < vector.size(); i++) {
SeekIrgSrhOpt opt = (SeekIrgSrhOpt) vector.get(i);
…
}
現在對InputDataUtil的工作原理進行說明。InputDataUtil會根據input節點下的子節點名來設置被綁定的類中對應的set方法,然后把XML中的數據設置到被綁定類中。比如上例XML中,input節點下有三個子節點:IrgCd、IrgName、IrgKname。那么在調用InputDataUtil.parse()方法時,InputDataUtil就會分別調用SeekIrgSrhOpt類的setIrgCd()、setIrgName()、setIrgKname()方法,把數據設置到SeekIrgSrhOpt的實例類中,并返回包含這些實例類的Vector對象。
3.使用Digester
(要使用這個工具,請在測試程序中加上import org.apache.commons.digester.Digester)
Digester是Apache提供的一個工具類,上面的InputDataUtil也是從Digester類繼承的。當使用InputDataUtil暫時無法解決的時候,可以直接使用Digester。
使用Digester的步驟如下:
1) 獲取XML的存放路徑。
獲取方式與使用InputDataUtil相同。
2) 創建Digester的實例。
Digester dig = new Digester();
3) 設定與inputs節點綁定的類為Vector
dig.addObjectCreate("inputs", "java.util.Vector");
4) 設定與input節點綁定的類
dig.addObjectCreate("inputs/input",
" jp.co.liondor.common.fz25IrgSrh. SeekIrgSrhOpt ");
5) 根據input節點下的子節點,依次設定相應的set方法
dig.addCallMethod("inputs/input/ IrgCd ", "setIrgCd ", 1);
dig.addCallParam("inputs/input/ IrgCd ", 0);
6) 設定向Vector中加入數據的方法
dig.addSetNext("inputs/input", "add");
7) 調用Digester.parse()方法,從XML中采集數據
java.util.Vector vector = (java.util.Vector) dig.parse(xml);
8) 從Vector中取出被綁定類的實例
for (int i = 0; i < vector.size(); i++) {
SeekIrgSrhOpt opt = (SeekIrgSrhOpt) vector.get(i);
…
}
Digester的用法非常靈活,可以組織非常復雜的數據。
關于Digester的詳細用法請參考http://jakarta.apache.org/commons/digester/。
四、 對UI測試的原則
對UI做單元測試必須做到不能牽涉到業務邏輯操作(比如數據庫操作、與Server的交互)。否則就是UI的設計不合理。對UI的單元測試應該非常單純,就只是測試界面的動作是否符合設計要求。
五、 測試數據的覆蓋率
測試時所準備的測試數據要覆蓋程序中所有可能出現的CASE。
六、 測試記錄
記錄測試的過程和結果,請使用Log4j工具。
七、 測試粒度
選擇測試粒度的原則:
1) 被測試類中所有public、protected方法都要測到。
2) 對于簡單的set和get方法沒有必要做測試。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/