您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
單元測(cè)試應(yīng)該測(cè)什么?
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/2/16 10:06:15 ] 推薦標(biāo)簽:

  JUnit的測(cè)試案例誰(shuí)都會(huì)寫(xiě),但是用JUnit寫(xiě)的測(cè)試案例不一定是單元測(cè)試。單元測(cè)試是什么?應(yīng)該測(cè)什么?本文拋磚引玉,談點(diǎn)自己的想法。

  單元測(cè)試,顧名思義是對(duì)組成軟件的一個(gè)單元進(jìn)行測(cè)試。在面向?qū)ο箝_(kāi)發(fā)的語(yǔ)言中,我們通常將類(lèi)作為單元進(jìn)行測(cè)試。如果從一個(gè)更高的層次來(lái)看一個(gè)類(lèi),它無(wú)非是從類(lèi)的外部取得一些輸入(Input),經(jīng)過(guò)這個(gè)類(lèi)加工處理后,輸出一部分新的信息(Output)。類(lèi)的核心是加工處理輸入信息的業(yè)務(wù)邏輯(Business Logic)。每個(gè)類(lèi)都為整個(gè)軟件貢獻(xiàn)了一部分邏輯,所有類(lèi)按照一定的方式組合起來(lái)形成了整個(gè)軟件。從這個(gè)角度來(lái)看,單元測(cè)試是在給定輸入的情況下,通過(guò)檢測(cè)輸出以測(cè)試這個(gè)類(lèi)的業(yè)務(wù)邏輯是否正確。

  古語(yǔ)說(shuō),“各人自?huà)唛T(mén)前雪,莫管他家瓦上霜”。做單元測(cè)試也是一樣,單元測(cè)試應(yīng)該關(guān)注這個(gè)類(lèi)本身的邏輯,不應(yīng)過(guò)度關(guān)注和它有關(guān)聯(lián)的其他類(lèi)或者依賴(lài)。如果你之前做“單元測(cè)試”的時(shí)候是把整個(gè)軟件啟動(dòng)起來(lái),以驗(yàn)證你寫(xiě)的那部分代碼的邏輯是否正確,那么你不僅測(cè)試了自己的那部分代碼,還做了部分的集成測(cè)試。

  這樣測(cè)試當(dāng)然可以,只是它有如下的缺點(diǎn):

  1、將整個(gè)軟件啟動(dòng)起來(lái),通常要花很長(zhǎng)的時(shí)間,這會(huì)影響你寫(xiě)代碼的思路。每改動(dòng)一點(diǎn)東西,要花很長(zhǎng)時(shí)間才能看到效果,反饋時(shí)間過(guò)長(zhǎng)。

  2、類(lèi)的某些邊界情況無(wú)法測(cè)試。

  3、如果軟件是UI相關(guān)的,這樣的測(cè)試是很難自動(dòng)化的,即使能做到自動(dòng)化,也很難維護(hù)。

  因此,單元測(cè)試應(yīng)僅僅關(guān)注在這個(gè)類(lèi)本身,通過(guò)模擬這個(gè)類(lèi)的輸入和類(lèi)的依賴(lài),以測(cè)試這個(gè)類(lèi)所提供的業(yè)務(wù)邏輯是否正確。只要單元測(cè)試能保證這個(gè)類(lèi)在它所支持的不同輸入情況下都是正確的,那足夠了。至于類(lèi)和其他類(lèi)的集成是后續(xù)測(cè)試要來(lái)保證的。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd