測(cè)試驅(qū)動(dòng)開發(fā) Test-driven development
測(cè)試驅(qū)動(dòng)開發(fā)(Test-driven development)是極限編程中倡導(dǎo)的程序開發(fā)方法,以其倡導(dǎo)先寫測(cè)試程序,然后編碼實(shí)現(xiàn)其功能得名。
正面評(píng)價(jià)
可以有效的避免過度設(shè)計(jì)帶來的浪費(fèi)。但是也有人強(qiáng)調(diào)在開發(fā)前需要有完整的設(shè)計(jì)再實(shí)施可以有效的避免重構(gòu)帶來的浪費(fèi)。
可以讓開發(fā)者在開發(fā)中擁有更全面的視角。
負(fù)面評(píng)價(jià)
開發(fā)者可能只完成滿足了測(cè)試的代碼,而忽略了對(duì)實(shí)際需求的實(shí)現(xiàn)。有實(shí)踐者認(rèn)為用結(jié)對(duì)編程的方式可以有效的避免這個(gè)問題。
會(huì)放慢開發(fā)實(shí)際代碼的速度,特別對(duì)于要求開發(fā)速度的原型開發(fā)造成不利。這里需要考慮開發(fā)速度需要包含功能和品質(zhì)兩個(gè)方面,單純的代碼速度可能不能完全代表開發(fā)速度。
對(duì)于GUI,資料庫(kù)和Web應(yīng)用而言。構(gòu)造單元測(cè)試比較困難,如果強(qiáng)行構(gòu)造單元測(cè)試,反而給維護(hù)帶來額外的工作量。有開發(fā)者認(rèn)為這個(gè)是由于設(shè)計(jì)方法,而不是開發(fā)方法造成的困難。
使得開發(fā)更為關(guān)注用例和測(cè)試案例,而不是設(shè)計(jì)本身。目前,對(duì)于這個(gè)觀點(diǎn)有較多的爭(zhēng)議。
測(cè)試驅(qū)動(dòng)開發(fā)會(huì)導(dǎo)致單元測(cè)試的覆蓋度不夠,比如可能缺乏邊界測(cè)試。在實(shí)際的操作中,和非測(cè)試驅(qū)動(dòng)開發(fā)一樣,當(dāng)代碼完成以后還是需要補(bǔ)充單元測(cè)試,提高測(cè)試的覆蓋度。
測(cè)試驅(qū)動(dòng)開發(fā) - 開發(fā)過程
概括起來,測(cè)試驅(qū)動(dòng)開發(fā)的基本過程如下:
(1) 明確當(dāng)前要完成的功能。可以記錄成一個(gè) TODO 列表。
(2) 快速完成針對(duì)此功能的測(cè)試用例編寫。
(3) 測(cè)試代碼編譯不通過。
(4) 編寫對(duì)應(yīng)的功能代碼。
(5) 測(cè)試通過。
(6) 對(duì)代碼進(jìn)行重構(gòu),并保證測(cè)試通過。
(7) 循環(huán)完成所有功能的開發(fā)。
posted on 2014-03-24 10:51 順其自然EVO 閱讀(291) 評(píng)論(0) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄