資源描述:
《敏捷開發(fā)之測(cè)試驅(qū)動(dòng)開發(fā)和結(jié)對(duì).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在PPT專區(qū)-天天文庫。
1、敏捷開發(fā)之測(cè)試驅(qū)動(dòng)開發(fā)和結(jié)對(duì)ITBU-技術(shù)部徐宗敏2010年3月18日Agent為什么要敏捷?需求經(jīng)常在變化為什么要敏捷?需求失真為什么要敏捷?kickoff沒有足夠的時(shí)間發(fā)布為什么要敏捷?提高產(chǎn)品的質(zhì)量敏捷開發(fā)和傳統(tǒng)開發(fā)流程的對(duì)比敏捷開發(fā)“前”的產(chǎn)品開發(fā)過程(瀑布模型)敏捷開發(fā)和傳統(tǒng)開發(fā)流程的對(duì)比敏捷開發(fā)“后”的產(chǎn)品開發(fā)過程(迭代模型)敏捷開發(fā)的價(jià)值觀敏捷開發(fā)方法敏捷開發(fā)方法敏捷開發(fā)方法需要全用嗎?不需要Agent測(cè)試的抱怨敏捷對(duì)測(cè)試挑戰(zhàn)敏捷對(duì)開發(fā)過程帶來了曙光敏捷確給測(cè)試帶來了挑戰(zhàn)開發(fā)會(huì)創(chuàng)建更少的文檔,更多的時(shí)間關(guān)注開發(fā),放在溝通,讓用戶滿意的產(chǎn)品上。敏捷的過程中可能需
2、要每個(gè)星期就發(fā)一個(gè)版本需求和設(shè)計(jì)有更加頻繁的改變測(cè)試和開發(fā)資源的對(duì)比Google的測(cè)試文化所有工程師對(duì)質(zhì)量有著同等重要的責(zé)任測(cè)試的任務(wù)不僅是發(fā)現(xiàn)bug,更重要的是幫助開發(fā)人員一起提高產(chǎn)品質(zhì)量有效地進(jìn)行驗(yàn)收測(cè)試、持續(xù)集成、測(cè)試驅(qū)動(dòng)開發(fā)、自動(dòng)化測(cè)試、結(jié)對(duì)。開發(fā)在設(shè)計(jì)的同時(shí)就考慮可測(cè)試性。重溝通,每周會(huì)溝通做了什么功能,存在什么風(fēng)險(xiǎn)以任務(wù)而非角色安排工作,共享同樣的目標(biāo),共享同樣的任務(wù)。Alibaba的測(cè)試情況80%開發(fā)人員認(rèn)為測(cè)試就是測(cè)試人員的事情測(cè)試就是不斷的發(fā)現(xiàn)bug無建立好的持續(xù)集成框架80%的項(xiàng)目無考慮可測(cè)試性,部分是提交了測(cè)試之后再考慮單元測(cè)試覆蓋率低有coderev
3、iew,但無結(jié)對(duì)今天,我們開發(fā)所必須要做的意識(shí)到提高產(chǎn)品的質(zhì)量也是開發(fā)的重要責(zé)任引用敏捷開發(fā)的測(cè)試驅(qū)動(dòng)開發(fā)和結(jié)對(duì),提高產(chǎn)品質(zhì)量幫助測(cè)試人員建立持續(xù)集成框架、驗(yàn)收測(cè)試的標(biāo)準(zhǔn)可測(cè)試性的設(shè)計(jì)Agent從一句大師的話開始編寫單元測(cè)試是在進(jìn)行驗(yàn)證,更是在進(jìn)行設(shè)計(jì)。同樣,它更是在編寫文檔。心靈震憾一段時(shí)間的學(xué)習(xí),讓我的內(nèi)心受到了深深的震撼。我們?cè)瓉淼姆椒ň尤蝗绱说谋?。以前我面?duì)測(cè)試先行這一名字時(shí),最大的疑問就是"程序都還沒有寫出來,測(cè)試什么呀!"。后來一想,其實(shí)這是一個(gè)泥瓦匠都明白的道理,卻是自己在畫地為牢。我們來看看兩個(gè)不同泥瓦匠是如何工作的。工匠師傅的“測(cè)試驅(qū)動(dòng)開發(fā)”工匠一:先拉上
4、一根水平線,砌每一塊磚時(shí),都與這根水平線進(jìn)行比較,使得每一塊磚都保持水平。工匠二:先將一排磚都砌完,然后拉上一根水平線,看看哪些磚有問題,再進(jìn)行調(diào)整。這個(gè)就是線你會(huì)選擇哪種工作方法呢?有可能你會(huì)罵工匠二笨吧!這樣多浪費(fèi)時(shí)間呀!然而我們自己想想,我們平時(shí)在編寫程序的時(shí)候又是怎么做的呢?我們就是按工匠二的方法在干活的呀!甚至有時(shí)候比工匠二還笨,是整面墻都砌完了,直接進(jìn)行"集成測(cè)試",經(jīng)常讓整面的墻倒塌。看到這里,你還覺得自己的方法高明嗎?我們的問題我們的問題每一個(gè)程序員都知道應(yīng)該為自己的代碼編寫測(cè)試程序,但卻很少這樣做。當(dāng)有人問為什么的時(shí)候,最常聽到的回答就是:"我們的開發(fā)工作
5、太緊張了"但這樣卻導(dǎo)致了一個(gè)惡性循環(huán),越是沒空編寫測(cè)試程序,代碼的效率與質(zhì)量越差,花在找Bug、解決Bug的時(shí)間也越來越多,實(shí)際效率大大降低。由于效率降低了,因此時(shí)間更緊張,壓力更大。你想想,為什么不拉上一根水平線呢?難道,我們不能夠?qū)⒑竺胬速M(fèi)的時(shí)間花在單元測(cè)試上,使得我們的程序一開始就更加健壯,更加易于修改嗎?測(cè)試驅(qū)動(dòng)開發(fā)的精髓將測(cè)試方案設(shè)計(jì)工作提前,在編寫代碼之前先做這一項(xiàng)工作;從測(cè)試的角度來驗(yàn)證設(shè)計(jì),推導(dǎo)設(shè)計(jì);將測(cè)試方案當(dāng)作行為的準(zhǔn)繩,有效地利用其檢驗(yàn)代碼編寫的每一步,實(shí)時(shí)驗(yàn)證其正確性,實(shí)現(xiàn)軟件開發(fā)過程的"小步快走"。WhatisTDD?TestDrivenDevel
6、opment(測(cè)試驅(qū)動(dòng)開發(fā))測(cè)試先行。持續(xù)重構(gòu)。測(cè)試驅(qū)動(dòng)開發(fā)是一種在極限編程(XP)中處于核心地位的技術(shù)。WhyTDD?確保每個(gè)方法都是可用的且已被測(cè)試過確保及時(shí)發(fā)現(xiàn)出現(xiàn)問題的模塊添加或修改代碼更容易頻繁地運(yùn)行測(cè)試迭代式遞增開發(fā)不斷重構(gòu)以改善設(shè)計(jì)WhyTDD?TDD還能改善和驗(yàn)證設(shè)計(jì):以客戶端的視角編寫測(cè)試為客戶端提供了示例代碼更注重接口的設(shè)計(jì)為了使測(cè)試容易,需要實(shí)現(xiàn)松散耦合更少的Debug時(shí)間HowtodoTDD?1、寫一個(gè)空方法。2、寫一個(gè)測(cè)試程序(單元測(cè)試用例)。3、讓程序編譯通過。4、運(yùn)行測(cè)試程序,發(fā)現(xiàn)不能運(yùn)行。(紅條)5、讓測(cè)試程序可以運(yùn)行。(綠條)6、消除重復(fù)設(shè)
7、計(jì),優(yōu)化設(shè)計(jì)結(jié)構(gòu)。(綠條)7、重構(gòu)確定業(yè)務(wù)1、用戶可以選擇付費(fèi)月份為1、2、3個(gè)月2、用戶選擇1個(gè)月最多可用1個(gè)紅包3、用戶選擇2個(gè)月最多可用2個(gè)紅包4、用戶選擇3個(gè)月最多可用3個(gè)紅包1、寫一個(gè)空方法publicclassCouponManagerImpl{/***根據(jù)選擇充值月數(shù)和擁有的最大紅包數(shù),取得可用紅包數(shù)*@parammonths充值月數(shù)*@paramtotalCoups擁有的最大紅包數(shù)*@return可用紅包數(shù)*/publicintgetNumOfCoupsCanUse(intmonths,inttot