您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > junit
單元測(cè)試(Junit3.8)原則和測(cè)試用例
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/9/26 11:27:50 ] 推薦標(biāo)簽:單元測(cè)試 Junit 測(cè)試用例

  1、我們應(yīng)該怎么做
  編寫代碼之前,先編寫單元測(cè)試,即測(cè)試先行。也是所謂的測(cè)試驅(qū)動(dòng)開發(fā)(TDD)
  單元測(cè)試是代碼的一部分,所有的代碼必須有單元測(cè)試,并且測(cè)試通過。
  在修改代碼之前,先修改單元測(cè)試,并且測(cè)試通過。
  當(dāng)我們?cè)趯?duì)代碼進(jìn)行重構(gòu)和進(jìn)行設(shè)計(jì)優(yōu)化時(shí),如果我們對(duì)所有的類都編寫了測(cè)試,那么我們重構(gòu)代碼的時(shí)候很輕松的進(jìn)行測(cè)試我們的修改是否正確。
  當(dāng)我們接到一個(gè)bug報(bào)告后,我們總是先修改測(cè)試代碼,然后修改實(shí)現(xiàn)代碼,使之測(cè)試成功。

  2、為什么要編寫單元測(cè)試
  編寫單元測(cè)試并不會(huì)增加了工作負(fù)擔(dān)延緩項(xiàng)目進(jìn)度
  (1)、以一個(gè)web應(yīng)用開發(fā)為例:業(yè)務(wù)代碼編寫完成->打包->發(fā)布到服務(wù)器->進(jìn)行功能測(cè)試->發(fā)現(xiàn)問題->修改代碼->再打包……如此循環(huán)。
  任何一個(gè)web程序員對(duì)于這種開發(fā)情景都不會(huì)感到陌生。往往不斷的打包,發(fā)布,功能測(cè)試的時(shí)間是代碼編寫的10倍以上。
  通過集成系統(tǒng)來發(fā)現(xiàn)程序的bug,我們往往很難一下子準(zhǔn)確的定位bug產(chǎn)生的地方。如果第一次沒徹底修改這個(gè)bug或者修改這個(gè)bug已經(jīng)影響到其它的地方,這樣部署上去肯定又有bug。又的業(yè)務(wù)代碼編寫完成->打包->發(fā)布到服務(wù)器->進(jìn)行功能測(cè)試。
  如果為每一個(gè)類都編寫單元測(cè)試并讓每一個(gè)方法測(cè)試通過,又會(huì)是怎么樣的開發(fā)情景呢?
  編寫測(cè)試代碼->編寫業(yè)務(wù)代碼->運(yùn)行測(cè)試方法->修改代碼讓測(cè)試通過->所有的類都通過測(cè)試->打包->發(fā)布到服務(wù)器->進(jìn)行功能測(cè)試->發(fā)現(xiàn)bug->修改測(cè)試代碼->修改業(yè)務(wù)代碼->測(cè)試通過->再打包…如此循環(huán)。
  這樣降低了打包->發(fā)布到服務(wù)器->進(jìn)行功能測(cè)試的次數(shù)。

  (2)  另外,如果沒有單元測(cè)試,會(huì)經(jīng)常出現(xiàn)一些低級(jí)的錯(cuò)誤,如拼寫錯(cuò)誤,空指針異常等。因?yàn)橐粋(gè)小小的拼寫錯(cuò)誤而需要重新打包,發(fā)布一次。如果有單元測(cè)試,可以避免這些低級(jí)的錯(cuò)誤。
  (3)在離bug產(chǎn)生越近,修正bug越容易;在bug產(chǎn)生越遠(yuǎn),修正bug的代價(jià)越昂貴。假設(shè)我們?nèi)ゼ梢粋(gè)星期(甚至更長(zhǎng)時(shí)間)前編寫的代碼,當(dāng)發(fā)現(xiàn)問題時(shí),我們已經(jīng)忘掉了很多重要的實(shí)現(xiàn)細(xì)節(jié),所以修改變得困難重重。

  3、編寫單元測(cè)試的基本原則
  (1)學(xué)會(huì)使用斷言:斷言是讓我們?yōu)榉椒ㄔO(shè)置一個(gè)期望值。當(dāng)方法執(zhí)行結(jié)果與期望值不一致時(shí),測(cè)試組件會(huì)報(bào)告測(cè)試不通過。
  (2)大化測(cè)試覆蓋率:我們除了測(cè)試一個(gè)正確的路徑外,我們還需要測(cè)試方法的每一個(gè)分支邏輯。需要編寫盡可能多的測(cè)試程序邏輯的測(cè)試。寫一個(gè)充分的測(cè)試。
  (3)不要依賴于測(cè)試方法的執(zhí)行順序:使用Junit來進(jìn)行單元測(cè)試,它不能保證測(cè)試方法按照我們的意圖的順序來執(zhí)行。當(dāng)一個(gè)測(cè)試類有多個(gè)測(cè)試方法時(shí),我們不能讓一個(gè)測(cè)試方法必須在某一個(gè)測(cè)試之后執(zhí)行才能成功。Junit不能為我們做這樣的保證,我們不能依賴于測(cè)試方法的執(zhí)行順序。
  (4)針對(duì)接口測(cè)試:我們有“針對(duì)接口編程”的oo設(shè)計(jì)原則。同樣對(duì)于測(cè)試,我們也需要針對(duì)接口測(cè)試。也是說在編寫單元測(cè)試時(shí),測(cè)試對(duì)象總是使用接口,而不是使用具體類。

  4、編寫單元測(cè)試的作用
  單元測(cè)試能夠提高程序員對(duì)程序的信心,保證程序的質(zhì)量,加快軟件開發(fā)速度,使程序易于維護(hù)。

  5、編寫測(cè)試用例
public int divide(int a, int b) throws Exception{
 if(0 == b){
  throw new Exception("除數(shù)不能為0");
 }
 
 return a / b;
}

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