注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡信息安全測試驅動開發(fā):中文版

測試驅動開發(fā):中文版

測試驅動開發(fā):中文版

定 價:¥28.00

作 者: (美)Kent Beck著;張平平[等]譯;崔凱譯
出版社: 中國電力出版社
叢編項: 大師簽名系列
標 簽: 軟件測試及維護

ISBN: 9787508321738 出版時間: 2004-03-01 包裝: 膠版紙
開本: 24cm 頁數(shù): 165 字數(shù):  

內容簡介

  代碼整潔可用(clean code that works),Ron Jeffries這句言簡意賅的話,正是測試驅動開發(fā)(TDD)所追求的目標。代碼整潔可用之所以是一個值得追求的目標,是基于以下的一系列原因:§ 它是一個可預測的開發(fā)方法。你知道什么時候可以完工,而不用去擔心是否會長期被bug困擾?!?它給你一個全面正確地認識和利用代碼的機會。如果你總是草率地利用你最先想到的方法,那么你可能再也沒有時間去思考另一種更好的方法?!?它改善了你的軟件用戶的生活§ 它讓軟件開發(fā)小組成員之間相互信賴§ 這樣的代碼寫起來感覺很好但是我們要怎樣做才能使代碼整潔可用呢?很多因素妨礙我們得到整潔的代碼,甚至是可用的代碼。無需為此征求很多的意見,我們只需用自動運行的測試來推動開發(fā),這是一種被稱之為測試驅動開發(fā)的開發(fā)方式(TDD)。在測試驅動開發(fā)中,我們要這樣做:§ 只有自動測試失敗時,我們才重寫代碼§ 消除重復設計,優(yōu)化設計結構這是兩條很簡單的規(guī)則,但是由此產生了復雜的個人和小組行為規(guī)范,技術上的含意是:§ 我們必須通過運行代碼所提供的反饋來做決定,并以此達到有機設計的目的。§ 我們必須自己寫測試程序,這是因為測試很多,很頻繁,我們不能每天把大量的時間浪費在等待他人寫測試程序上§ 我們的開發(fā)環(huán)境必須能迅速響應哪怕是很小的變化§ 為使測試簡單,我們的整個規(guī)劃必須是由許多高內聚、低耦合的部分組成這兩條規(guī)則實際上蘊含了開發(fā)過程中所經(jīng)歷的階段:§ 不可運行──寫一個不能工作的測試程序,一開始這個測試程序甚至不能編譯§ 可運行──盡快讓這個測試程序工作,為此可以在程序中使用一些不合情理的方法§ 重構──消除在讓測試程序工作的過程中產生的重復設計,優(yōu)化設計結構不可運行/可運行/重構──這就是測試驅動開發(fā)的口號現(xiàn)在假設這樣的開發(fā)方式是可能的,那么,進一步,顯著地減少代碼的錯誤密度(defect density),讓所有參與某一工作的開發(fā)人員對工作主題足夠明了的假定也將成為可能。如果是這樣的話,那么只有測試失敗時才需要重寫代碼,其社會意義是:§ 如果代碼的錯誤密度能夠充分地減少,那么軟件的質量保證(QA)工作可以由被動保證軟件質量轉變?yōu)橹鲃颖WC軟件質量§ 如果開發(fā)過程中令人不快的意外能夠充分地減少,那么項目經(jīng)理能對軟件開發(fā)進度有一個精確的把握,以讓實際用戶參與日常開發(fā)§ 如果每次技術討論的主題都足夠明確,那么軟件工程師之間的合作是以分鐘計算的,而不是每天合作或每周合作§ 再者,如果代碼錯誤密度能夠充分地減少,我們每天都可以得到有新功能的軟件成品(shippable),并以此產生新的商業(yè)關系如此說來,觀念是很簡單的,但我的動機是什么呢?為什么一個軟件工程師要做額外的寫自動測試程序的工作?為什么一個設計觀念可以瞬息萬變的軟件工程師卻只能一小步一小步地進行工作?我們需要的是勇氣。勇氣測試驅動開發(fā)是一種可以在開發(fā)過程中控制憂慮感的開發(fā)方法。我并非指那些毫無意義的沒有必要的擔憂──(pow widdle prwogwammew needs a pacifiew)──而是指合理的擔憂,擔憂是否合理是個很困難的問題,不能從一開始就看出來。如果說疼痛自然就會叫 "停!",那么擔憂自然就會說"細心!",小心謹慎是好的,但它也會產生以下一系列負面影響:§ 讓你一直處于試驗性的階段?!?讓你不愿意與他人交流?!?讓你羞于反饋?!?讓你變得脾氣暴躁。這些負面影響對編程都是有害無益的,尤其是當需要編程解決的問題比較困難的時候。所以問題變?yōu)楫斘覀兠媾R一個比較困難的局面的時候,如何才能做到:§ 盡快開始具體的學習,而不是一直處于試驗性的階段?!?更多地參與交流和溝通,而不是一直拒不開口§ 尋找那些有益的、建設性的反饋,而不是盡量避免反饋§ (依靠自己改掉壞脾氣)設想把編程看成是轉動曲柄從井里提一桶水上來的過程。如果水桶比較小,那么僅需一個能自由轉動的曲柄就可以了。如果水桶比較大而且裝滿水,那么還沒等水桶全部被提上來你就會很累了。你需要一個防倒轉的裝置,以保證每轉一次可以休息一會兒。水桶越重,防倒轉的棘齒相距越近。測試驅動開發(fā)中的測試程序就是防倒轉裝置上的棘齒。一旦我們的某個測試程序能工作了,你就知道,它從現(xiàn)在開始并且以后永遠都可以工作了。相比于測試程序沒有通過,你距離讓所有的測試程序都工作又近了一步。現(xiàn)在我們的工作是讓下一個測試程序工作,然后再下一個,就這樣一直進行。分析表明,要編程解決的問題越難,每次測試所覆蓋的范圍就應該越小。我的《Extreme Programming Explained》一書的讀者可能會注意到我講極限編程(XP)與講測試驅動開發(fā)的語氣是有區(qū)別的:講測試驅動開發(fā)不像講極限編程那么絕對。講極限編程時我會說"這些是想進一步學習所必須具備的基礎",而講測試驅動開發(fā)時要模糊一些。測試驅動開發(fā)知道編程過程中的反饋與欲實現(xiàn)的構思之間的差距,并且提供了控制這個差距大小的技術。"如果我在紙上規(guī)劃一周,然后通過測試驅動編碼,這是否就是測試驅動開發(fā)?"當然,這就是測試驅動開發(fā)。你知道欲實現(xiàn)的構思與反饋之間的差距,并且有意識地控制了這個差距。絕大多數(shù)學習測試驅動開發(fā)的人發(fā)現(xiàn)他們的編程習慣被永久地改變了。"測試感染"(Test Infected)是Erich Gamma所杜撰的用以描述這種轉變的詞語。你可能發(fā)現(xiàn)寫測試程序變得容易了,并且相對較小的工作節(jié)奏比前所夢想的節(jié)奏更明智。另一方面,一些學習測試驅動開發(fā)的軟件工程師重回到了以前的程序開發(fā)方法,而保留測試驅動開發(fā)方法作為當其它開發(fā)方法不能奏效的特殊情況下的秘密武器。當然也存在一些編程任務不能僅僅(或者根本就不能)由測試程序來驅動開發(fā)。舉個例子來說,軟件的安全性和并行性,測試驅動開發(fā)方法就不能充分地從機械證明的角度說明軟件是否達到這兩個目標。軟件安全性從本質上來說依賴于無缺陷的代碼。確實如此,但它同時也依賴于人們對軟件安全機制的判斷。精妙的并行問題不是僅靠再次運行代碼就能可靠地重復出現(xiàn)的。一旦你讀完本書,你要準備:§ 從簡單的例子開始?!?寫自動測試程序?!?重構,每次增加一個新的設計構思。這本書是由三個部分組成的:§ 第一部分,資金實例(The Money Example)── 一個典型的完全由測試驅動的代碼模型的例子。這個例子是幾年前我從Ward Cunningham那兒得到的,并且自從引入多幣種算法以來已經(jīng)多次用到過。你將從中學會如何在寫代碼之前寫好測試程序,并最終發(fā)展成為一個有機的規(guī)劃方案§ 第二部分,xUnit實例(The xUnit Example)── 一個通過建立自動測試框架來測試包含映像(reflection)和異常(exception)的邏輯上更復雜的程序的例子。這個例子同時也將向你介紹作為許多面向程序員的測試工具靈魂的xUnit結構體系。在第二個例子中你將學會以甚至比第一個例子更小的開發(fā)步驟工作,同時也包括深受許多計算機專家喜愛的呼喊式的自我提醒(self-referential hooha)?!?第三部分,測試驅動開發(fā)模式(Patterns for Test-Driven Development)──包括決定寫哪些測試的模式,如何用xUnit寫測試的模式和大量的設計模式精選以及例子中所用到的重構。我寫了關于結對編程(pair programming)的例子。如果你習慣于在四處轉一轉之前先看一看地圖的話,你可以直接到第三部分去看那些模式,并將那些例子作為說明。如果你習慣于先到四處轉一轉,然后再看地圖以確定自己處于什么位置的話,試著通讀例子,當你需要了解更多關于某一技術問題的細節(jié)時,可以查閱后面所講的模式,并將這些模式作為參考。一些批評家指出,當他們啟動編程環(huán)境,輸入代碼,運行所讀到的測試程序時,最大的收獲卻在這些例子之外。關于這些例子要注意一點。這兩個例子,多幣種計算和測試框架,顯得很簡單。而解決同一個問題卻也存在(我曾經(jīng)見到過)一些復雜、風格很差、近乎弱智的解決方案。我本可以從這些復雜、風格很差、近乎弱智的解決方案中采用一個以使本書有一種"真實"感。然而,我的目標是寫出整潔可用的代碼,希望你的目標也是這樣。在以那些被認為很簡單的例子開始之前,花15秒的時間設想一下,如果所有的代碼都能如此清晰和直接,沒有復雜的解決方案,只有顯然需要認真思考的很復雜的問題,那么這個世界會是什么樣子。測試驅動開發(fā)可以引導你這樣去認真思考。

作者簡介

  Kent Beck是軟件開發(fā)方法學的奉斗、XP的創(chuàng)始人,長期致力于軟件工程的理論研究和實踐,并具有講授XP的豐富經(jīng)驗,作為軟件業(yè)內最富創(chuàng)造性和最有口碑的領導人之一,Kent Beck極力推崇模式、極限編程和測試驅動開發(fā)。他現(xiàn)在加盟于Three Rivers研究所,是多部暢銷書如《Smalltalk Best Practice Patterns》、《解析極限編程——擁抱變化》和《規(guī)劃極限編程》(和Martin Fowler合著)的作者,并且是超級暢銷書《重構——改善既有代碼的設計》(中國電力出版社出版中英文版)的特約撰稿人。

圖書目錄

 第一部分 資金實例
 第一章 多幣種資金
 第二章 變質的對象
 第三章 一切均等
 第四章 私有性
 第五章 法郎在訴說
 第六章 再談一切均等
 第七章 蘋果和桔子
 第八章 制造對象
 第九章 我們所處的時代
 第十章 有趣的Times方法
 第十一章 萬惡之源
 第十二章 加法, 最后的部分
 第十三章 完成預期目標
 第十四章 變化
 第十五章 混合貨幣
 第十六章 抽象, 最后的工作
 第十七章 資金實例回顧
 第二部分 xUnit實例
 第十八章   步入xUnit
 第十九章   設置表格
 第二十章   后期整理
 第二十一章   計數(shù)
 第二十二章   失敗處理
 第二十三章   怎么組成一組測試
 第二十四章   xUnit回顧
 第三部分 測試驅動開發(fā)的模式
 第二十五章   測試驅動開發(fā)模式
 第二十六章   不可運行狀態(tài)模式
 第二十七章  測試模式
 第二十八章   可運行模式
 第二十九章    xUnit模式
 第三十章   設計模式
 第三十一章   重構
 第三十二章   掌握TDD

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號