登錄

單元測(cè)試

百科 > 軟件 > 單元測(cè)試

1.什么是單元測(cè)試

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

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

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

2.單元測(cè)試的使用

  編寫(xiě)代碼時(shí),一定會(huì)反復(fù)調(diào)試保證它能夠編譯通過(guò)。代碼通過(guò)編譯,只是說(shuō)明了它的語(yǔ)法正確,無(wú)法保證它的語(yǔ)義也一定正確,編寫(xiě)單元測(cè)試就是用來(lái)驗(yàn)證這段代碼的行為

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

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

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

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

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

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

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

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

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

  3、它是一種編寫(xiě)文檔的行為。

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

  4、它具有回歸性。

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

評(píng)論  |   0條評(píng)論