測試驅(qū)動開發(fā)的藝術(shù)

出版時間:20101023  出版社:人民郵電出版社  作者:Lasse Koskela  頁數(shù):334  譯者:李貝  
Tag標簽:無  

前言

七年前,正值全球IT產(chǎn)業(yè)繁榮時期,大大小小的軟件公司都發(fā)了瘋似地想趕上下一波IP0,招聘市場火爆異常。我也在此時投身到繁榮的新媒體產(chǎn)業(yè),開始了我的編程生涯。從此我沒日沒夜地鼓搗各種代碼段,配置服務(wù)器,往生產(chǎn)系統(tǒng)里上傳PHP腳本,似乎一切盡在掌握。一個九月的雨夜,又是加班到很晚,突然間我的心臟似乎停止了跳動:哎呀!我剛才做了什么?我是否刪掉了生產(chǎn)數(shù)據(jù)庫里的所有數(shù)據(jù)?好像是的!看來我只有卷鋪蓋走人了。我怎么才能把數(shù)據(jù)找回來呢?剛才還以為只是測試用的數(shù)據(jù)庫呢!這種悲劇怎么能發(fā)生在我頭上?然而,確實發(fā)生了。第二天我沒有被炒魷魚,主要原因是,看來客戶對我刪掉的數(shù)據(jù)并不太在意。而且,看來別的人也都干過類似的蠢事——他們安慰我說:大家都可能犯錯。我得到一個教訓(xùn),那個該死的夜晚也標志著我開始追求一種負責(zé)任的、可靠的軟件開發(fā)態(tài)度。幾年以后,我換了家國際性咨詢公司工作,為其他大公司開發(fā)應(yīng)用和后臺系統(tǒng)。在短短幾年的職業(yè)生涯里我學(xué)到了不少東西,這得歸功于我以前趴在電腦前熬夜的努力,而新工作無疑是我磨煉實戰(zhàn)技藝的好機會。我又一次認為我已經(jīng)對于軟件開發(fā)行當(dāng)熟門熟路了??墒俏矣皱e了,顯然我比自己想象的要知道得少。我?guī)缀趺刻於寄軐W(xué)到重要的新知識。我最重大的發(fā)現(xiàn)改變了我對軟件開發(fā)的認識,極限編程(XP)給了我全新的視角,讓我知道什么才是正確的軟件開發(fā)方法。在我看來,XP把我過去行之有效的披荊斬棘式的編程方式與一種系統(tǒng)的、訓(xùn)練有素的工作方法結(jié)合在一起。XP項目除了能讓開發(fā)團隊更接近客戶之外,最打動我的就是測試驅(qū)動開發(fā)(TDD)了。我以前認為編程和單元測試是兩個分離的活動,現(xiàn)在“編碼之前先寫測試”這樣一個簡單的理念完全顛覆了我的舊思想。TDD絕非閑庭信步那樣輕松。我時刻提醒自己要先寫測試,一開始能做到,可是只過了半個小時,我就忘了遵守,還沒有測試就在修改代碼。隨著時光流逝,我越來越能夠堅持測試先行的編程方法,甚至一整天都不會落入往日的陋習(xí)中。接著我會被一段代碼難住,憑我的能力我無法征服它。再往后,我能理解應(yīng)該怎么做,但我的手法還不夠用。再后來,我不知道如何能四兩拔千斤地巧妙解題,卻又往往不愿意愚公移山般地用笨辦法嘗試。年復(fù)一年,我學(xué)會了越來越多的技巧,掌握了越來越多的工具,終于獲得了現(xiàn)在的功力。我寫此書的目的是讓諸君不必像我以前那樣笨拙地克服種種困難,你們有此書在手可以輕松地前行。對我而言,學(xué)會了測試先行,深刻地影響了我工作的方法和對編程的認識,正如敏捷方法改變了我對軟件開發(fā)的認識。我希望你們也能學(xué)會測試先行。

內(nèi)容概要

本書介紹了一種更快更好的軟件開發(fā)方法——測試驅(qū)動開發(fā)。全書共分三部分:第一部分講述了TDD和ATDD的相關(guān)知識、基本概念、方法,為測試驅(qū)動開發(fā)打下基礎(chǔ);第二部分將測試驅(qū)動開發(fā)用于具體的實踐,重點講解了TDD的各種技術(shù);第三部分著重介紹了驗收測試驅(qū)動開發(fā),包括Fit框架、實現(xiàn)驗收測試的方法等,最后講解了引入TDD的各種技巧。    本書濃縮了作者多年的開發(fā)經(jīng)驗,適合各類Java開發(fā)人員學(xué)習(xí)參考。

作者簡介

科斯科拉(Lasse Koskela),程序員,軟件開發(fā)培訓(xùn)師、咨詢師,任職于芬蘭知名軟件公司Reaktor,致力于為客戶提供軟件性能提升解決方案;同時也是開源軟件的忠實擁護者。

書籍目錄

第一部分 TDD入門 第1章 綜述   1.1 挑戰(zhàn):用正確的方法解決正確的問題     1.1.1 糟糕的代碼質(zhì)量     1.1.2 不能滿足客戶需求   1.2 解決方案:測試驅(qū)動     1.2.1 高質(zhì)量的TDD     1.2.2 用ATDD滿足客戶需求     1.2.3 這對我有什么好處   1.3 正確地做事:TDD     1.3.1 測試-編碼-重構(gòu)     1.3.2 增量式開發(fā)     1.3.3 重構(gòu)以保持代碼的健康     1.3.4 保證軟件正常運行   1.4 做正確的事:ATDD     1.4.1 名字的含義     1.4.2 緊密協(xié)作     1.4.3 把測試作為溝通的共同語言   1.5 TDD工具     1.5.1 使用xUnit做單元測試     1.5.2 支持ATDD的測試框架     1.5.3 持續(xù)集成及構(gòu)建     1.5.4 代碼覆蓋率   1.6 小結(jié) 第2章 TDD入門 第3章 小步重構(gòu) 第4章 TDD的概念與模式第二部分 針對特定技術(shù)應(yīng)用TDD 第5章 測試驅(qū)動Web組件 第6章 測試驅(qū)動數(shù)據(jù)訪問 第7章 測試驅(qū)動不可預(yù)測功能 第8章 測試驅(qū)動Swing代碼第三部分 基于ATDD構(gòu)建產(chǎn)品 第9章 解析驗收測試驅(qū)動開發(fā) 第10章 用Fit創(chuàng)建驗收測試 第11章 執(zhí)行驗收測試的策略 第12章 TDD應(yīng)用附錄A JUnit 4簡明教程附錄B JUnit 3.8簡明教程附錄C EasyMock簡明教程附錄D 通過Ant運行測試相關(guān)資源

章節(jié)摘錄

插圖:·提供一個完整的業(yè)務(wù)對象,此對象所有的必填屬性也是完整的業(yè)務(wù)對象;·在整個生命周期內(nèi)都可以返回被請求的對象;·可以定制所返回的對象;·測試過程中可以更新對象;·如果有必要,可以在測試結(jié)束時回收對象及所有關(guān)聯(lián)對象??偟膩碚f,對象母親模式是一個復(fù)雜的對象工廠,用于創(chuàng)建領(lǐng)域?qū)ο螅╠omain object)的整個對象網(wǎng)絡(luò)(object graph),還可以創(chuàng)建出不同狀態(tài)下的實例。此外,對象母親也可以提供方法修改某個領(lǐng)域?qū)ο螅缭趯ο箝g建立關(guān)聯(lián)關(guān)系、移除關(guān)聯(lián)關(guān)系、或者把對象設(shè)置為特征狀態(tài)。除了可以消除測試代碼中的重復(fù),對象母親模式還可以使TDD的初學(xué)者方便的獲得需要的對象,這可以鼓勵他們多寫測試。若創(chuàng)建對象過于麻煩,他們也許會打消寫測試的念頭。不少團隊在開發(fā)過程中都會定義一套人物角色(personas),若把對象母親與這套角色結(jié)合使用,效果會更好。例如,若團隊定義了愛麗絲、貝利和克拉克等人物角色,每個人都代表交易系統(tǒng)中的不同角色,這時對象母親應(yīng)該把這些人物作為其API接口。這種概念上的關(guān)聯(lián)可以幫我們更容易的編寫測試,不用翻查API,更不用深入創(chuàng)建方法內(nèi)部弄清楚該使用哪個對象做測試。我們只需要說:“好,我需要一個購買訂單,這訂單由克拉克提交,吉姆審批?!彪m然對象母親是個強有力的工具,能夠有效的促進測試的編寫,不過構(gòu)建出整套對象母親需要不少時間。所以,我建議小步重構(gòu)當(dāng)前的測試代碼,起先可以引入緊湊的創(chuàng)建方法,最后把這止匕創(chuàng)建方法及其提供的測試數(shù)據(jù)整個移到對象母親中。

媒體關(guān)注與評論

“在TDD領(lǐng)域,這本書是當(dāng)之無愧的No.1,內(nèi)容簡單易懂。文筆簡煉精要?!薄  狪onel Condor,Cluj-Napoca公司“這本書設(shè)置的門檻并不低,但通讀后,你絕對可以輕松達到要求的高度并跨越它。作者旨在傳播TDD哲理。闡述TDD的實際應(yīng)用。促進TDD在其他領(lǐng)域的應(yīng)用。讓更多的人分享其來之不易的經(jīng)驗教訓(xùn)。”  ——JavaLobby.org“作者見解獨到,行文幽默犀利,佩服至極!”  ——Michael Feathers,Object Mentor公司咨詢專家“書中的這些寶貴經(jīng)驗如果要我自己去摸索,估計得花上幾年時間?!薄  狶aurent Bossavit,2006年Gordon Pask獎得主

編輯推薦

《測試驅(qū)動開發(fā)的藝術(shù)》:圖靈程序設(shè)計叢書。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    測試驅(qū)動開發(fā)的藝術(shù) PDF格式下載


用戶評論 (總計17條)

 
 

  •   紙張粗糙,字也不清楚,這本書不確認是否正版圖書
  •   除了講了一般的tdd規(guī)則和方法外,作者也對一些難題(數(shù)據(jù)庫、多線程、UI)做了實例演示,從該書中受益良多,特別是UI一章,在項目中,我成功的應(yīng)用了MVP模式進行了農(nóng)場開發(fā)的tdd,使得自己對tdd更加有信心了。
  •   看了《TDD by example》、《測試驅(qū)動的面向?qū)ο箝_發(fā)》以及本書,這本書是三者中最實用的!解決了我使用TDD過程中的諸多疑惑和技術(shù)難點!
  •   前面幾章很好,后面感覺稍差了點,整體來說是本好書
  •   作為一本剛接觸DTT的來說,教材內(nèi)容不錯,如果喜歡嘗試DTT,推薦
  •   雖然是JAVA的但必看,不虧藝術(shù)兩字
  •   只是看了前面的部分,感覺有比較好的操作性。根據(jù)書的描述,后續(xù)需要多實踐。
  •   極限編程 - 測試驅(qū)動開發(fā)的藝術(shù)
  •   不錯的書,包裝完好,無破損。
  •   發(fā)貨快,書的印刷很好,包裝不錯。
  •   書包裝不錯..封皮也不錯..內(nèi)容更不錯..挺好的..送貨速度也很快.上午買的下午就到了..謝謝了
  •   書質(zhì)量不錯,送貨也及時,昨天下雪路不好走,還是及時送到了。
  •   實實在在的實踐
  •   測試驅(qū)動--開發(fā)
  •   包裝完整~送貨快
  •   TDD必備!
  •   好書,挺滿意
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7