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

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

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

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

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

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

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

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

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

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