單元測試入門必修,結合實戰演練【樂搏TestPRO】

一. 軟件測試過程

在學習單元測試前,我們必須要了解的是軟件測試的過程,如下圖:
在這裏插入圖片描述

二. 單元測試簡述

單元測試是V模型的測試級別中最低級別的測試,單元測試是其他級別測試的基礎。單元測試(Unit Testing)又稱模塊測試,是對構成軟件最小單元進行的測試,在一個軟件系統中,一個單元是指具備以下特徵的代碼塊:

具有明確的功能
具有明確的規格定義
具有明確的與其他部分接口定義
能夠與軟件的其他部分清晰地進行劃分

通常,單元測試是針對源程序精心的測試,例如,在傳統的結構化編程語言中,針對函數或子過程進行的測試,在Java、.Net、C++這樣的面嚮對象語言中,對類的測試。換句話說,在不同的編程語言中,單元的劃分是不同的。

單元測試就是依據軟件詳細設計說明書,檢查軟件單元是都符合軟件詳細設計說明書的要求,單元測試既可以使用白盒測試方法,也可以使用黑盒測試方法。白盒測試是基於代碼的測試,依據軟件的編碼實現,設計測試用例,將被測程序看成一個透明的盒子,可以看到程序的內部結構。黑盒測試是不同考慮軟件是如何編碼實現的測試,測試人員將被測程序看成一個黑盒子,在完全不考慮程序內部結構的情況下,檢查程序的功能是否符合軟件需求規格說明書的要求,單元測試通常採用是白盒測試方法。單元測試依據:

單元或組件需求說明
詳細設計文檔
代碼

典型單元測試對象:

單元或組件
程序
數據轉換/移植程序
數據庫模型

單元測試是相對獨立的,所以可以單獨對一個單元進行單元測試,在對一個單元進行單元測試時,這個單元與其他單元的聯繫通過使用樁、驅動器和模擬器來實現。單元測試可能包括功能測試和特定的非功能夠特徵測試,比如資源行爲測試(如內存泄漏)或健壯性測試和結構測試(比如分支覆蓋),根據工作產品,例如單元規格說明、軟件設計或數據模型等設計單元測試用例。

單元測試的一個方法是在編寫代碼之前就完成測試用例的編寫和測試用例自動化,這種方法被稱爲測試有限的方法或測試驅動開,這是高迭代的方法,並且取決於如下的循環週期:測試用例的開發,構建軟件單元和建增集成,執行單元測試,修正問題並反覆循環。直到全部通過。在單元測試時,通常使用白盒測試技術設計測試用例,採用自動化測試方法(單元測試框架,如Unittest,Junit,Nunit等)執行單元測試。

三、白盒測試技術

如何選擇測試數據,使得測試更有效,就引出了非常重要的問題—設計測試用例。所謂測試用例,是指爲了某個特定的測試目標二設計的遺囑測試輸入、執行條件以及預期結果,測試用例的內容一般包括測試目標、測試環境、輸入數據、測試步驟、預期結果、測試結果、測試腳本等。白盒測試技術是一種經典的設計測試用例的技術,利用白盒測試技術,可以用儘可能少的測試用例,到達某種測試覆蓋,進行相對有效的測試。

四、語句覆蓋方法實戰案例

語句覆蓋:測試用例的目標是儘可能少的測試用例取得儘可能好的測試效果,如何設計測試用例,人們自然會想到,設計測試用例時,至少要把每一行語句都執行一遍,如果沒有設計足夠多的的測試用例,使得每一行語句都執行一遍,就可以認爲測試是不充分的。在設計測試用例時,選擇足夠多的測試用例,使得被測程序的每一行語句都至少執行一遍,這種設計測試用例的方法稱爲語句覆蓋。簡言之:所有的“語句”都要覆蓋一遍。

有如下Java代碼(存在錯誤):輸入2個整型參數x,y,當x小於5或y=5時,將x和y的和作爲返回結果,否則,將x和y的商作爲返回結果。
在這裏插入圖片描述

設計測試用例,使得所有語句都執行過至少1遍,即實現了語句覆蓋,如下:在這裏插入圖片描述

顯然語句覆蓋是不能發現程序的所有錯誤的,上例中需求的是"當x小於5或y=5時將x和y的和作爲結果返回",但程序實現的是"當x小於5且y=5時將x和y的和作爲結果返回"。這個例子說明語句覆蓋不能發現判定中的問題,還說明了設計單元測試用例不僅依賴於單元代碼,還依賴於單元設計,最終依賴用戶需求,因此人們想到了判定覆蓋。

本節先講述這些,下一節講針對判定覆蓋、條件/判定覆蓋、組合覆蓋、基本路徑覆蓋的案例實戰,歡迎添加關注哦~~下載路徑: qun :六3六85九九六4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章