資源描述:
《測試驅(qū)動開發(fā)研究》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、測試驅(qū)動開發(fā)研究【內(nèi)容提要】結(jié)合目前軟件開發(fā)過程存在缺陷,充分借鑒極限編程思想,積極倡導(dǎo)應(yīng)用測試驅(qū)動開發(fā)方法。本文分別從測試驅(qū)動開發(fā)概念、測試驅(qū)動開發(fā)優(yōu)點、測試驅(qū)動開發(fā)實現(xiàn)籌方而分別進行了闡述。最后結(jié)合實例描述了在軟件開發(fā)過程中如何應(yīng)用測試驅(qū)動方法和理念?!娟P(guān)鍵詞】測試驅(qū)動開發(fā)測試用例重構(gòu)測試引言軟件工程是計算機學(xué)科中一個十分重要的研究領(lǐng)域???0世紀60年代以來,人們在這一領(lǐng)域做了人量的工作,逐漸形成了系統(tǒng)的軟件開發(fā)理論、技術(shù)和方法,它們在軟件開發(fā)實踐中發(fā)揮了重要作用。傳統(tǒng)軟件開發(fā)流程圖:然而,隨
2、著軟件規(guī)模的不斷擴人和軟件復(fù)雜性的不斷提髙,傳統(tǒng)的軟件開發(fā)方法已逐漸不能適應(yīng)當(dāng)代軟件開發(fā)的需要,正是在這種背景下提出的一種全新的軟件開發(fā)方法——測試驅(qū)動開發(fā)。一、測試驅(qū)動開發(fā)定義測試驅(qū)動開發(fā)(TestDrivenDevelopment,英文縮寫TDD)是極限編程的一個重要組成部分,它的基本思想就是在開發(fā)功能代碼Z前,先編寫測試代碼。它以不斷地測試推動代碼的開發(fā),既簡化了代碼,又保證了軟件質(zhì)量。也就是說在明確要開發(fā)某個功能后,首先思考如何對這個功能進行測試,并完成測試代碼的編寫,然后編寫相關(guān)的代碼滿足
3、這些測試用例。然后循環(huán)進行添加其他功能,直到完成全部功能的開發(fā)。代碼整潔可用是測試驅(qū)動開發(fā)所追求的目標。這種方法在實際中能夠起到非常好的效果,使得測試工作成為設(shè)計的一部分,很好地把開發(fā)和測試融合為一個整體。二、測試如何驅(qū)動開發(fā)過程在編寫程序之前,每個人都會先進行設(shè)計的T作??赡苡行┤说脑O(shè)計比較正式,繪制模型,編寫文檔。有些人的設(shè)計只是存在于腦海之屮。且不論是設(shè)計是精細還是粗糙,你都為隨后的編碼活動制定了一個標準。這個標準的明確程度和你的設(shè)計的細致程度有關(guān)。但應(yīng)該承認,這個標準是不夠細化的。因為你的設(shè)
4、計不可能精細到代碼級的程度。而標準不夠明確的則會產(chǎn)生一些問題,例如,在編寫代碼的過程屮,傷〈還可能會發(fā)現(xiàn)原先的設(shè)計出現(xiàn)問題,從而中途改變代碼的編寫思路。這將會導(dǎo)致成果難以檢驗,進度難以度量。既然以設(shè)計為導(dǎo)向的標準不夠明確,不夠具體。那什么樣的標準才是合適的呢?只能是代碼。因為代碼是最明確、最具體的。所以測試優(yōu)先的本質(zhì)其實是忖標竹理。編寫測試代碼其實是在制定一個小目標。這個小tJ標非常的明確,它規(guī)定了你需要設(shè)計的類、方法。以及方法需要滿足的結(jié)果。這些日標制定完成Z后,你才開始編寫代碼來達成該1=1標。
5、測試的1=1標要比設(shè)計的目標粒度更小,但是成本上卻更為經(jīng)濟。測試優(yōu)先是軟件開發(fā)中一種細粒度的目標管理方法,通過明確的目標,推動軟件開發(fā)的進行。測試驅(qū)動開發(fā)改變了編碼的過程,并且這種改變不僅是可能的,同時也是值得去做的。開發(fā)包括三方而的活動:編寫測試用例,編碼并進行測試,重構(gòu)代碼以消除重復(fù)代碼使其更簡單、更靈活、更容易理解。這個過程會頻繁地重復(fù),每次進行測試均是為了保證產(chǎn)品的止確性。設(shè)計、編碼和測試三者Z間的鴻溝將不再存在,這樣可以促進你對整個環(huán)境更好地理解。因此,設(shè)計和編碼將隨著項kl的成熟逐步得到
6、改善而非降低。測試驅(qū)動開發(fā)實現(xiàn)流程圖:大多數(shù)設(shè)計都是從上
7、佃卜創(chuàng)建,并基于對觀察的特性進行分類,促進對問題的理解和解決。換句話說,我們試圖創(chuàng)建層次結(jié)構(gòu)的對象,它模型化了問題域。相反,TDD則是從下而上,通過對一些小問題,依次實施一系列簡單的解決方案,最后演進為設(shè)計。重構(gòu)確保了設(shè)計集中于一個好的解決方案而不是逐漸脫離設(shè)計。如果你認為這是設(shè)計Z根本,你就對了。TDD將在這十年潛在地改變軟件開發(fā)的方法,就像過去十年面向?qū)﹀杓夹g(shù)所做到的那樣。三、測試驅(qū)動開發(fā)優(yōu)點1.項H進度可預(yù)測。而傳統(tǒng)的方式很難知道什么時
8、候編碼工作結(jié)束。2.大部分時間代碼處在高質(zhì)量狀態(tài),100%的時間里成果是可見的。3.全面止確的認識代碼和利用代碼,而傳統(tǒng)的方式?jīng)]有這個機會。4.為利用你成果的人提供Sample,無論它是要利用你的源代碼,述是氏接重用你提供的組件。5.開發(fā)小組間降低了交流成本,提高了相互信賴程度。6.系統(tǒng)可以與詳盡的測試集一起發(fā)布,從而對程序的將來版本的修改和擴展提供方便。7.rh于可以保證編寫測試和編寫代碼的是和同的程序員,降低了理解代碼所花費的成本。8.為減少文檔和代碼之間存在的細微的差別和山這種差別所引入的Bu
9、g作岀杰岀貢獻。9.在預(yù)先設(shè)計和緊急設(shè)計之間建立一種平衡點,為你區(qū)分哪些設(shè)計該事先做、哪些設(shè)計該迭代時做提供了一個可靠的判斷依據(jù)。10.發(fā)現(xiàn)比傳統(tǒng)測試方式更多的Bugo11.使IDE的調(diào)試功能失去意義,避免了令人頭痛的調(diào)試和節(jié)約了調(diào)試的時間。四、測試驅(qū)動開發(fā)步驟編寫測試用例實現(xiàn)測試用例步驟:1.新增測試用例(TestCase)。2.編譯代碼,新增的測試用例很可能編譯不通過。3.做盡可能少的改動,讓測試用例編譯通過。4.添加新的測試用例,發(fā)現(xiàn)最新的測試用例不能編譯通過。