持續(xù)集成:軟件質(zhì)量改進(jìn)和風(fēng)險(xiǎn)降低之道
問題
在軟件行業(yè)發(fā)展的初期,軟件項(xiàng)目中最棘手、最緊張的時(shí)刻就是集成。單獨(dú)能工作的一些模塊被組裝在一起,系統(tǒng)整體卻常常失敗,而且很難找到失敗的原因。
解決辦法
解決辦法的關(guān)鍵在于更為頻繁地進(jìn)行集成。
它給項(xiàng)目帶來了完全不同的感覺。項(xiàng)目的可見性變得好了很多,因?yàn)閱栴}能夠更快地檢測(cè)出來。引入缺陷和發(fā)現(xiàn)缺陷之間的時(shí)間間隔變短,就更容易發(fā)現(xiàn)缺陷,您可以很容易地看見改變了什么,以方便找到問題的根源。當(dāng)它與良好的測(cè)試程序配合時(shí),可以大大減少缺陷的數(shù)量。結(jié)果是,開發(fā)者在調(diào)試上花的時(shí)間減少了,在增加功能上花的時(shí)間更多了,他們相信自己是在一個(gè)堅(jiān)實(shí)的基礎(chǔ)上開發(fā)軟件。
持續(xù)集成意味著:
● 所有開發(fā)者都先在他們自己的工作站上執(zhí)行私有構(gòu)建,然后再將他們的代碼提交到版本控制庫中,從而確保他們的變更不會(huì)導(dǎo)致集成構(gòu)建失敗。
● 開發(fā)者每天至少向版本控制庫提交一次代碼。
● 集成構(gòu)建每天在一臺(tái)獨(dú)立的計(jì)算機(jī)上進(jìn)行多次。
● 每次構(gòu)建都必須 100%通過測(cè)試。
● 生成可以進(jìn)行功能測(cè)試的產(chǎn)品(如 WA R、配件、可執(zhí)行程序等)。
● 修復(fù)失敗的構(gòu)建是優(yōu)先級(jí)最高的事情。
● 某些開發(fā)者復(fù)查構(gòu)建生成的報(bào)告,如編碼標(biāo)準(zhǔn)報(bào)告和依賴分析報(bào)告,尋找可以改進(jìn)的地方。
最佳實(shí)踐
為缺陷編寫測(cè)試
當(dāng)缺陷被發(fā)現(xiàn)時(shí),找出并隔離有問題的代碼,為了修復(fù)缺陷,我們基本上需要破壞測(cè)試,先編寫一個(gè)會(huì)失敗的測(cè)試用例,然后不斷執(zhí)行這個(gè)測(cè)試(在修復(fù)缺陷的過程中),直到測(cè)試不再失敗為止。
讓組件測(cè)試可重復(fù)
數(shù)據(jù)庫對(duì)于測(cè)試來說是相當(dāng)沉重的依賴關(guān)系,所以您有兩種選擇:要么盡量地進(jìn)行模擬,在盡可能長(zhǎng)的時(shí)間內(nèi)完全避免使用數(shù)據(jù)庫,要么使用數(shù)據(jù)庫并承受其開銷。實(shí)現(xiàn)這種測(cè)試最容易的方法是使用某種xDbUnit 這樣的數(shù)據(jù)庫填充框架(如
針對(duì).NET 的NDbUnit、針對(duì) Java 的DbUnit 、針對(duì) Python 的PDbSeed )。這些框架將數(shù)據(jù)庫的數(shù)據(jù)集抽象到 XML 文件中,然后為開發(fā)者提供細(xì)粒度的控制,即在測(cè)試過程中如何將這些數(shù)據(jù)填充到數(shù)據(jù)庫中。
posted on 2012-08-31 10:05 順其自然EVO 閱讀(149) 評(píng)論(0) 編輯 收藏