單元測試是整個軟件開發(fā)過程中的一個重要環(huán)節(jié) ,執(zhí)行一個完備的單元測試方案能夠提高整個開發(fā)過程的時間效率,確保軟件的實際功能與詳細設計說明的一致性,使軟件開發(fā)的效率和軟件產(chǎn)品的質量得到最好的保障 。
什么是單元測試?單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。通常而言,一個單元可能是單個程序、類、對象、方法等。
為什么要做單元測試?軟件中存在的錯誤發(fā)現(xiàn)得越早,修改和維護的費用就越低,難度也越小。單元測試是在軟件開發(fā)驗證過程的底層和早期進行的測試活動,目的是把缺陷消滅在萌芽狀態(tài)。
單元測試有什么作用?
1.實現(xiàn)敏捷開發(fā),單元測試的主要好處之一是它使編碼過程更加敏捷。當軟件中添加越來越多的功能時,有時需要更改舊的設計和代碼,但是更改已測試的代碼既有風險又耗費時間。如果有單元測試,則有助于安全重構。
2.提高代碼質量,由于單元測試是在集成測試之前對最小可測單元的測試,所以能夠盡早的發(fā)現(xiàn)軟件代碼中的缺陷,并在不影響其他代碼部分的情況下解決問題。這些問題包括程序實現(xiàn)中的錯誤和單元規(guī)范中的缺陷及缺失。通過代碼檢查和已有缺陷的完善,代碼質量可以得到大幅度提高。
3.消除深度未知隱患,軟件開發(fā)天生就具有極大的復雜性,沒人能100%保證自己寫出來的程序沒有問題。開發(fā)中的初步功能驗證我們會用仿真,或模型及代碼調試技巧進行結果值確認,這種測試一般只能覆蓋部分執(zhí)行路徑,未覆蓋執(zhí)行路徑就留下了很多未知隱患。為了保證我們的程序在各種情況下都能按照預設響應,就需要對我們的模型或者代碼進行嚴格的基于需求的測試和覆蓋率測試(俗稱:白盒測試),而這種測試只能在單元測試中進行。
4.優(yōu)化設計和架構,單元測試可以輔助優(yōu)化設計和架構,比如通過處理器在環(huán)(Processor In the Loop)來評估最長執(zhí)行時間(WCET),內存和堆棧使用量,優(yōu)化設計和架構,盡早地回避集成后的執(zhí)行時間及內存的溢出問題
5.滿足行業(yè)規(guī)范要求,滿足Automotive SPICE過程及ISO26262安全規(guī)范對單元測試的要求,以從第三方認證公司獲取相關認證證書。
什么時候開始做單元測試?
單元測試越早越好,早到什么程度?極限編程講究TDD,即測試驅動開發(fā),先編寫測試代碼,再進行開發(fā)。在實際的工作中,可以不必過分強調先什么后什么,重要的是高效性和實用性。從經(jīng)驗來看,對于單元測試可以先編寫產(chǎn)品函數(shù)的框架、編寫測試函數(shù),再針對產(chǎn)品函數(shù)的功能編寫測試用例,然后編寫產(chǎn)品函數(shù)的代碼。在實際編碼過程中,每寫一個功能點就進行相應的測試,并且隨時補充測試用例。
單元測試任務太重?效率太低?
工業(yè)嵌入式系統(tǒng)單元測試工具
SmartRocket Unit作為一款單元測試工具,可以自動生成滿足語句、分支、MC/DC準則的測試用例,自動執(zhí)行測試驅動。 通過使用SmartRocket Unit,用戶可快速對安全攸關的代碼進行單元級別的白盒測試和回歸測試,從而進一步提升單元測試的效率。SmartRocket Unit通過智能模擬測試人員進行覆蓋率測試時的思路,實現(xiàn)其核心功能:
l 測試用例自動生成。 動態(tài)符號執(zhí)行求解引擎,采用自動推理與符號執(zhí)行技術,可自動分析程序路徑,產(chǎn)生可滿足特定覆蓋率準則的測試用例
l 程序打樁技術,對被測模塊中的函數(shù)調用自動進行打樁,自動生成測試驅動
l 測試驅動將測試用例作為輸入,自動執(zhí)行測試用例,記錄并分析執(zhí)行結果,最終產(chǎn)生測試報告,包含覆蓋率分析結果及測試用例數(shù)據(jù)等
fqj
-
軟件開發(fā)
+關注
關注
0文章
612瀏覽量
27353 -
單元測試
+關注
關注
0文章
42瀏覽量
3150
發(fā)布評論請先 登錄
相關推薦
評論