登錄

單元測試

百科 > 軟件 > 單元測試

1.什么是單元測試

  單元測試是指對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證。對于單元測試中單元的含義,一般來說,要根據(jù)實(shí)際情況去判定其具體含義,如C語言中單元指一個函數(shù),Java里單元指一個類,圖形化的軟件中可以指一個窗口或一個菜單等。總的來說,單元就是人為規(guī)定的最小的被測功能模塊。單元測試是在軟件開發(fā)過程中要進(jìn)行的最低級別的測試活動,軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測試。

  在一種傳統(tǒng)的結(jié)構(gòu)化編程語言中,比如C,要進(jìn)行測試的單元一般是函數(shù)或子過程。在像C++這樣的面向?qū)ο蟮恼Z言中, 要進(jìn)行測試的基本單元是類。對Ada語言來說,開發(fā)人員可以選擇是在獨(dú)立的過程和函數(shù),還是在Ada包的級別上進(jìn)行單元測試。單元測試的原則同樣被擴(kuò)展到第四代語言(4GL)的開發(fā)中,在這里基本單元被典型地劃分為一個菜單或顯示界面。

  經(jīng)常與單元測試聯(lián)系起來的另外一些開發(fā)活動包括代碼走讀(Code review),靜態(tài)分析Static analysis)和動態(tài)分析Dynamic analysis)。靜態(tài)分析就是對軟件的源代碼進(jìn)行研讀,查找錯誤或收集一些度量數(shù)據(jù),并不需要代碼進(jìn)行編譯和執(zhí)行。動態(tài)分析就是通過觀察軟件運(yùn)行時的動作,來提供執(zhí)行跟蹤,時間分析,以及測試覆蓋度方面的信息。

2.單元測試的使用

  編寫代碼時,一定會反復(fù)調(diào)試保證它能夠編譯通過。代碼通過編譯,只是說明了它的語法正確,無法保證它的語義也一定正確,編寫單元測試就是用來驗(yàn)證這段代碼的行為

  單元測試越早越好。先編寫產(chǎn)品函數(shù)的框架,然后編寫測試函數(shù),針對產(chǎn)品函數(shù)的功能編寫測試用例,然后編寫產(chǎn)品函數(shù)的代碼,每寫一個功能點(diǎn)都運(yùn)行測試,隨時補(bǔ)充測試用例。所謂先編寫產(chǎn)品函數(shù)的框架,是指先編寫函數(shù)空的實(shí)現(xiàn),有返回值的直接返回一個合適值,編譯通過后再編寫測試代碼,這時,函數(shù)名、參數(shù)表、返回類型都應(yīng)該確定下來了,所編寫的測試代碼以后需修改的可能性比較小。

  單元測試與其他測試不同,單元測試可看作是編碼工作的一部分,應(yīng)該由程序員完成,經(jīng)過了單元測試的代碼才是已完成的代碼,提交產(chǎn)品代碼時也要同時提交測試代碼。測試部門可以作一定程度的審核。

  在實(shí)踐工作中,進(jìn)行了完整計(jì)劃的單元測試和編寫實(shí)際的代碼所花費(fèi)的精力大致上是相同的。一旦完成了這些單元測試工作,很多Bug將被糾正,開發(fā)人員能夠進(jìn)行更高效的系統(tǒng)集成工作。使用AdaTEST和Cantata這樣的支持工具可以使單元測試更加簡單和有效。

  相比后階段的測試,單元測試的創(chuàng)建更簡單,維護(hù)更容易,并且可以更方便的進(jìn)行重復(fù)。從全程的費(fèi)用來考慮, 相比起那些復(fù)雜且曠日持久的集成測試,或是不穩(wěn)定的軟件系統(tǒng)來說,單元測試所需的費(fèi)用是很低的。

3.單元測試的優(yōu)點(diǎn)

  1、它是一種驗(yàn)證行為。

  程序中的每一項(xiàng)功能都是測試來驗(yàn)證它的正確性。它為以后的開發(fā)提供支援。就算是開發(fā)后期,我們也可以輕松的增加功能或更改程序結(jié)構(gòu),而不用擔(dān)心這個過程中會破壞重要的東西。而且它為代碼的重構(gòu)提供了保障。這樣,我們就可以更自由的對程序進(jìn)行改進(jìn)。

  2、它是一種設(shè)計(jì)行為。

  編寫單元測試將使我們從調(diào)用者觀察、思考。特別是先寫測試(test-first),迫使我們把程序設(shè)計(jì)成易于調(diào)用和可測試的,即迫使我們解除軟件中的耦合。

  3、它是一種編寫文檔的行為

  單元測試是一種無價的文檔,它是展示函數(shù)或類如何使用的最佳文檔。這份文檔是可編譯、可運(yùn)行的,并且它保持最新,永遠(yuǎn)與代碼同步。

  4、它具有回歸性。

  自動化的單元測試避免了代碼出現(xiàn)回歸,編寫完成之后,可以隨時隨地的快速運(yùn)行測試。

評論  |   0條評論