測試驅(qū)動開發(fā)的寶典-TTD_圖文_第1頁
測試驅(qū)動開發(fā)的寶典-TTD_圖文_第2頁
測試驅(qū)動開發(fā)的寶典-TTD_圖文_第3頁
測試驅(qū)動開發(fā)的寶典-TTD_圖文_第4頁
測試驅(qū)動開發(fā)的寶典-TTD_圖文_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Test-DrivenDevelopment Seminar測試驅(qū)動開發(fā)研討會Version 0.95ShangHaiAuthor: Guan ZhiShi /licenses/by-nc/2.5/cn/2Summary我們將了解的內(nèi)容了解TDD 的基本內(nèi)容??梢耘袛郥DD 是否適用于特定項目。3內(nèi)容前言開發(fā)現(xiàn)狀TDD 能帶來什么TDD 的實施實際案例TDD 適用范圍常見Q&A參考資料Module 1:前言5目標(biāo)參加人員如果具備一些經(jīng)驗,可以使討論達(dá)到更好的效果有實際項目開發(fā)經(jīng)驗對XUNIT自動測試框架有所了解更佳 6工具箱一個優(yōu)秀的工

2、匠知道選擇合適的工具。適當(dāng)?shù)臅r候使用適當(dāng)?shù)墓ぞ逿DD可能是你工具箱中的新工具M(jìn)odule 2:開發(fā)現(xiàn)狀 9人狼 人狼完全可以從熟悉的面孔變成可怕的怪物軟件項目有著人狼的特性,常??此坪唵蚊髁说臇|西,卻可能變成一個落后進(jìn)度,超出預(yù)算,存在大量缺陷的怪物。P.Brooks 人月神話1974似曾相識之一甲:你那個“業(yè)務(wù)邏輯控制”模塊完成了怎么樣?乙:代碼已經(jīng)完成了,但還沒測試,我現(xiàn)在很忙,等我把剩下的模塊全部完成了再來測試。那當(dāng)是完成了90%。甲心想:“但愿如此”人狼之一工期緊張,忽略做測試。沒有測試的進(jìn)度估算,失真的可能性很大。似曾相識之二甲:我需要使用你的那個“業(yè)務(wù)邏輯控制”的模塊。你的模塊測試

3、了嗎?乙:測試過了。甲:都測試了哪些情況?乙:除了沒測試的,都測試過了。你先用著,出了問題我再改。甲心想:別又像上次那樣,沒測就扔給我。人狼之二對于程序的功能,往往缺乏合適的描述方法。不良的溝通,可能導(dǎo)致彼此不信任。似曾相識之三乙:那個“業(yè)務(wù)邏輯控制”的模塊,效率太低,寫得又亂以后很難維護(hù),我想整理一下。甲:現(xiàn)在起碼還能用,快交貨了,沒時間做完整測試了,別又搞出點(diǎn)BUG 來。乙心想:但愿以后不是我來維護(hù)。人狼之三沒有完整測試保護(hù)的代碼修改,有著很高風(fēng)險。 混亂的代碼,將增加維護(hù)的難度。似曾相識之四甲:這個項目現(xiàn)在移交給你了。你很幸運(yùn),這個項目文檔很全。乙:那太好了,上次我接到個項目沒有文檔。甲

4、:但不幸的是文檔和當(dāng)前程序不太一致。乙:我怎么知道哪些地方不一致呢?甲:這是個好問題人狼之四文檔往往和現(xiàn)實情況不同步。文檔差異很難察覺。似曾相識之五甲:都連續(xù)加班一個月了,昨晚做夢都在改BUG ,一進(jìn)辦公室就胃疼。乙:我胃到是不疼,就是最近脾氣不好,老發(fā)火。人狼之五長期被BUG所困擾。士氣低落,身心俱疲。Module 3:TDD 能帶來什么?21什么是TDD只需要用自動運(yùn)行的測試來推動開發(fā),這種開發(fā)方式被稱為測試驅(qū)動開發(fā)(Test-Driven Development,TDD22TDD的目標(biāo)代碼整潔可用(clean code that works是TDD 所追求的目標(biāo)。 24解開死鎖壓力越大-

5、>測試越多->錯誤越少->成果越多->壓力越少 25TDD能帶來的好處它是個可預(yù)測的開發(fā)方法。它給你一個全面正確地認(rèn)識和利用代碼的機(jī)會。它讓軟件開發(fā)小組成員之間相互信賴。這樣的代碼寫起來感覺很好。 Module 4:TDD 的實施28TDD該怎么做只有自動測試失敗時,我們才重寫代碼。消除重復(fù)設(shè)計,優(yōu)化設(shè)計結(jié)構(gòu)。29技術(shù)含義我們必須通過運(yùn)行代碼所提供的反饋來做決定,并以此達(dá)到有機(jī)設(shè)計目的。我們必須自己寫測試程序,因為測試很多很頻繁,我們不能每天等待別人寫測試程序。我們的開發(fā)環(huán)境必須能夠響應(yīng)哪怕是很小的變化。為使測試簡單,我們的整個設(shè)計必須是由很多高聚能、低耦合的部分組成。

6、30寫程序的時間里都干了些什么用來決定下一步做什么?;ㄔ谠O(shè)計上。編寫代碼。DEBUG 40%-50%的時間31TDD 的口號可運(yùn)行不可運(yùn)行重構(gòu)TDD32TDD都干了些什么不可運(yùn)行:寫一個不能工作的測試程序, 一開始甚至不能編譯??蛇\(yùn)行:盡快讓這個程序工作,為此可以在程序中,使用一些不合情理的方法。重構(gòu):消除在讓測試程序工作的過程中,產(chǎn)生的重復(fù)設(shè)計,優(yōu)化設(shè)計結(jié)構(gòu)。33什么時候?qū)憸y試如果某個方法的接口還不清楚,那么在編寫該方法前要編寫測試。如果接口很清楚,但是你認(rèn)為實現(xiàn)會稍微有一點(diǎn)復(fù)雜,那么在編寫該方法前要編寫測試。如果你想到了代碼運(yùn)行的一種異常情況,那么應(yīng)該編寫一個測試以針對這種情況進(jìn)行溝通。如

7、果你打算重構(gòu)某些代碼,但是不確定它應(yīng)該有什么行為,那么應(yīng)該先編寫一個測試。34運(yùn)行自動測試單元測試必須100%運(yùn)行。如果單元測試中有一個出錯了,那么對于團(tuán)隊中的所有人來說,最重要的工作就是修復(fù)該測試。35 火警測試文檔源程序發(fā)布的產(chǎn)品包只能帶一件東西,該拿哪個跑呢? 37節(jié)奏是否過慢?分而治之,先可用后整潔。小步快進(jìn)的工作節(jié)奏。打破開發(fā)壓力與測試的死結(jié)。節(jié)奏可以調(diào)節(jié)。順利時加大步伐,困難時減小步伐。38專業(yè)登山者vs. TDD程序員艱巨挑戰(zhàn)安全措施小步前進(jìn)39需要100%測試覆蓋率嗎?測試應(yīng)該是一種風(fēng)險驅(qū)動(risk driven行為, 測試的目的是希望找出現(xiàn)在或未來可能出現(xiàn)的錯誤。測試的要訣

8、是:測試你最擔(dān)心出錯的地方。這樣你就能從測試工作中取得最大的利益。編寫未完善的測試并實際運(yùn)行,好過對完美測試的無盡等待。40短期收益與長期收益短期:將開發(fā)過程中的設(shè)計、實現(xiàn)、測試所做過的工作都固化下來。長期:整個軟件項目生命周期,都能通過運(yùn)行自動測試,取得反饋來獲得收益。Module 5: 實際案例42XXXSale1.2既有項目改造,基于EJB 、WEB 、DB 的項目??蛻魳I(yè)務(wù)邏輯發(fā)生較大改變和擴(kuò)充。采用TDD 方式。Defect 發(fā)生率2.4/KLOC,開發(fā)效率68 行/人日。開發(fā)團(tuán)隊對TDD 方式,反映良好。43XXX University System8人的團(tuán)隊負(fù)責(zé)交付一個大型系統(tǒng)的

9、子系統(tǒng)業(yè)務(wù)邏輯和數(shù)據(jù)庫操作部分。系統(tǒng)架構(gòu)與業(yè)務(wù)邏輯經(jīng)常發(fā)生較大變動。新人與有經(jīng)驗開發(fā)人員各占一半。開發(fā)效率50 行/人日,Defect 發(fā)生率低于1/KLOC。開發(fā)團(tuán)隊對TDD 方式,反映良好。Module 6:TDD 的適用范圍45適用的技術(shù)類型程序能夠快速運(yùn)行。(有些程序編譯一次可能需要幾個小時,使自動測試無法頻繁運(yùn)行 程序?qū)ζ渌h(huán)境的依賴性小。(例如EJB 程序?qū)τ谌萜鲝?qiáng)烈依賴,會增加自動測試難度46開發(fā)環(huán)境的支持自動測試框架的支持。自動重構(gòu)工具的支持。47價值觀的支持不擔(dān)心閱讀與編寫代碼。不擔(dān)心編寫測試。不擔(dān)心更改運(yùn)行中的系統(tǒng)的分析和設(shè)計。能夠接受紀(jì)律。Module 7: 常見Q&A49常見問題11. Q:private 方法怎么測試? A: public 方法測到就行了。2. Q: TDD 算是UT, 還是算IT? (我發(fā)現(xiàn)QA 對于這個區(qū)分比較在意 A: 能驅(qū)動開發(fā)就行,只要這個test 能讓你對代碼放心,不用管它UT 還是IT 。3. Q:測試代碼和工作代碼比例是多少,覆蓋率要達(dá)到多少?A:讓你對代碼覺得放心就行,這些不用管它。50常見問題24. Q:是否高水平的開發(fā)人員才能實行TDD 方法?A: 從實踐效果來看,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論