(3)測試工作量與測試用例的數量成比例。根據全面且細化的測試用例,可以更準確地估計測試周期各連續階段的時間安排。
(4)測試設計和開發的類型以及所需的資源主要都受控于測試用例。測試用例通常根據它們所關聯關系的測試類型或測試需求來分類,而且將隨類型和需求進行相應地改變。
最佳方案是為每個測試需求至少編制兩個測試用例:
(1)一個測試用例用于證明該需求已經滿足,通常稱作正面測試用例。
(2)另一個測試用例反映某個無法接受、反?;蛞馔獾臈l件或數據,用于論證只有在所需條件下才能夠滿足該需求,這個測試用例稱作負面測試用例。
單元測試既可以是白盒測試也可以是黑盒測試。白盒測試主要是檢查程序的內部結構、邏輯、循環和路徑。其常用測試用例設計方法有:邏輯覆蓋和基本路徑測試。根據覆蓋測試的目標不同,邏輯覆蓋又可分為:語句覆蓋,判定覆蓋,判定-條件覆蓋,條件組合覆蓋及路徑覆蓋等。白盒測試用例設計還可用到:狀態轉移測試、數據定義-使用測試、等價類劃分、邊界值分析等。黑盒測試注重對程序功能方面的要求,它只用到程序的規格說明,沒有用到程序的內部結構。其常用測試用例方法有:規范(規格)導出、等價類劃分、邊界值分析法、錯誤推測法和因果圖分析方法。下面將簡要介紹各個方法,更詳細的說明請讀者自行參考相關的測試理論書籍。
2.2.1. 語句覆蓋
語句覆蓋就是設計若干個測試用例,運行所測程序,使得每一可執行語句至少執行一次。
2.2.2. 判定覆蓋
判定覆蓋就是設計若干個測試用例,運行所測程序,使得程序中每個判斷的取TURE分支和取FALSE分支至少經歷一次。
2.2.3. 條件覆蓋
條件覆蓋就是設計若干個測試用例,運行所測程序,使得程序中每個判斷的每個條件的可能取值至少執行一次。
2.2.4. 判定-條件覆蓋
判定-條件覆蓋就是設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少執行一次,同時每個判斷的所有可能判斷結果至少執行一次。也就是說要求各個判斷的所有可能的條件取值組合至少執行一次。
2.2.5. 條件組合覆蓋
條件組合覆蓋就是設計足夠的測試用例,運行所測程序,使得每個判斷得所有可能得條件取值組合至少執行一次。
2.2.6. 路徑覆蓋
路徑測試就是設計足夠的測試用例,覆蓋程序中所有可能的路徑。
2.2.7. 規范(規格)導出法
規范導出法是根據相關的規范描述來設計測試用例。每一個測試用例用來測試一個或多個規范陳述語句。一個比較實際的方法是根據陳述規范所用語句的順序來相應地為被測單元設計測試用例。
2.2.8. 狀態轉移測試法
對于那些以狀態機作為模型或設計為狀態機的軟件,狀態轉移測試是合適的測試方法。測試用例通過能導致狀態遷移的事件來測試狀態之間的轉換。
2.2.9. 數據定義-使用測試法
數據定義是指數據項被賦值的地方,數據使用是指數據項被讀或使用的地方。目的是設計測試用例以驅動執行通過數據定義于使用之間的路徑。
3. 使用JUnit進行單元測試的一般步驟
3.1. 獲得Junit
下載得到JUnit的安裝軟件包。
3.2. 安裝JUnit安裝JUnit只需要很簡單的兩個步驟,下面是安裝Junit的步驟:
(1)解開DownLoad下來的junit.zip文件。
(2)增加junit.jar到classpath中。例如,set classpath = %classpath%; INSTALL_DIR\Junit3.7\junit.jar經過這兩步,就可以開始使用JUnit了。
3.3. 使用JUnit編寫測試代碼的一般步驟
使用JUnit編寫測試代碼的一般步驟是:
(1)定義測試類名稱,一般是將要測試的類名后附加Test。
(2)引入JUnit框架包。import junit.framework.*。
(3)測試類繼承JUnit的TestCase類。
(4)實現類的構造方法,可以在構造方法中簡單的調用super(name)即可。
(5)實現類的main()方法,在main()方法中簡單調用junit.textui.TestRunner.run(DateUtilTest.class)來指定執行測試類。
(6)重載setUp()和tearDown()方法,setUp()方法用于執行每個測試用例時進行環境的初始化工作(比如打開數據庫連接),tearDown()方法用于執行每個測試用例后清除環境(比如關閉數據庫連接)。
原文轉自:http://www.uml.org.cn/Test/201405272.asp