《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》是一本由Lasse Koskela著作,人民郵電出版社出版的平裝圖書(shū),本書(shū)定價(jià):59.00元,頁(yè)數(shù):348,特精心從網(wǎng)絡(luò)上整理的一些讀者的讀后感,希望對(duì)大家能有幫助。
《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》精選點(diǎn)評(píng):
●書(shū)名起的很嚇人,但也就是一本入門(mén)書(shū)啦。重溫了教科書(shū)版的用例設(shè)計(jì),開(kāi)發(fā)和重構(gòu)原則,以及ATDD的介紹。
●單元測(cè)試的牛書(shū)。
●對(duì)TDD是什么無(wú)感?看這本書(shū)可以幫你入門(mén),里面寫(xiě)了個(gè)使用TDD的方法開(kāi)發(fā)一個(gè)模板引擎的過(guò)程。還行吧
●書(shū)名無(wú)力吐槽……可以先把第 10 章開(kāi)個(gè)頭再回頭看第 9 章,不然太痛苦……
●目前在項(xiàng)目中確實(shí)在大量實(shí)施TDD等單元測(cè)試開(kāi)發(fā), 但目前發(fā)現(xiàn)效果不好, 用例開(kāi)發(fā)與測(cè)試方法不當(dāng). 需要更專業(yè)的意見(jiàn). 在使用TDD過(guò)程中, 需要了解與學(xué)習(xí)所有涉及的技術(shù)點(diǎn), 這樣才能更好地將TDD運(yùn)用與簡(jiǎn)單使用在具體項(xiàng)目中. 文中的具體技術(shù)的TDD測(cè)試框架有借鑒意義.
●這個(gè)書(shū)名真是……
●2017.29
●挺不錯(cuò)的tdd入門(mén)書(shū),雖然里面說(shuō)得技術(shù)有點(diǎn)老了
●還是實(shí)踐出真知,再看看書(shū),理論上提高一下,挺好。
●很不錯(cuò)的書(shū),有理論有例子,深入淺出。不搞 Java 所以只看了第一部分。博客水平的翻譯很影響理解,后面專有名詞多了根本就是災(zāi)難。幾乎所有測(cè)試框架 API 都是英文的,“夾具”、“替身”……看著頭暈。
《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》讀后感(一):tdd的思想是不分語(yǔ)言的
整本書(shū)從tdd的概念到例子說(shuō)明,都是一步一步的來(lái)教,從寫(xiě)單元測(cè)試,到重構(gòu)都很細(xì)心的講解。tdd的書(shū)籍實(shí)在是太少,而這本書(shū)對(duì)我來(lái)說(shuō),可以說(shuō)是對(duì)我今后的開(kāi)發(fā)方式都有巨大的影響,就算我不是從事java開(kāi)發(fā)。
《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》讀后感(二):只能說(shuō)是一本入門(mén)的書(shū)籍
這本書(shū)僅僅介紹了大量概念性的內(nèi)容,卻沒(méi)有比較有用的sample,顯得太空洞,指導(dǎo)意義不是很大。測(cè)試驅(qū)動(dòng)開(kāi)發(fā),是一項(xiàng)實(shí)踐性很強(qiáng)的開(kāi)發(fā)技巧,本書(shū)作為一本的測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的入門(mén)書(shū)籍還可以,藝術(shù)二字,純當(dāng)是嘩眾取寵吧。
《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》讀后感(三):看還是不看,什么時(shí)間點(diǎn)看。用還是不用,什么時(shí)間點(diǎn)用。這都是問(wèn)題
久仰TDD和ATDD大名,從此書(shū)中得知一二。
此書(shū)的英文名是Test Driven - Practical TDD and Acceptance TDD for Java Developers,一定要注意是for Java Developers,翻譯成TDD開(kāi)發(fā)的藝術(shù)確實(shí)有些唬人,不過(guò)一旦上升到藝術(shù),肯定是有共通的含義。
具體到書(shū)中總結(jié)的TDD和ATDD的基本概念,流程,實(shí)踐(Practice),甚至教你如何推廣和處理來(lái)自不同方面的阻力,無(wú)疑都是作者多年TDD的經(jīng)驗(yàn)。其中總結(jié)的很多準(zhǔn)側(cè)都令人拍案叫絕,深有同感。例如提高設(shè)計(jì)可測(cè)試性的準(zhǔn)側(cè):
1. 盡量使用組合(Composition)而非繼承(Inheritance)
2. 避免使用static關(guān)鍵字,以及Singleton模式
3. 隔離依賴(Isolate Dependencies)
4. 注入依賴(Inject Dependencies)
字字珠璣,十年辛苦不尋常。結(jié)合自己的經(jīng)驗(yàn)來(lái)看,真的是一語(yǔ)點(diǎn)醒夢(mèng)中人。
不過(guò)回到本書(shū)評(píng)的標(biāo)題:看還是不看,什么時(shí)間點(diǎn)看。用還是不用,什么時(shí)間點(diǎn)用。這都是問(wèn)題。這才是我最大的困惑,TDD到底適合什么樣的開(kāi)發(fā)人員,如果作為菜鳥(niǎo)碰到一個(gè)嚴(yán)格執(zhí)行TDD的Mentor,那肯定是三生有幸,但我們大部分人都是在已有的Legacy代碼上跳舞,如何才能做到并去推廣TDD呢?如果一個(gè)線上運(yùn)行良久的系統(tǒng)沒(méi)有很好的覆蓋率,我們應(yīng)該如何補(bǔ)全測(cè)試并推廣TDD?當(dāng)然一味的談?wù)摳采w率是沒(méi)有意義的,但是從我個(gè)人角度來(lái)看,雖然修行在個(gè)人,但TDD師傅領(lǐng)進(jìn)門(mén)卻十分的重要。
任重而道遠(yuǎn)。
《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》讀后感(四):實(shí)實(shí)在在的TDD
讀了《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》,總結(jié)一下有以下幾個(gè)特點(diǎn):
1,名字“誤人”
這本書(shū)的名字有點(diǎn)過(guò)于炫了。應(yīng)該講這是一本寫(xiě)給Java開(kāi)發(fā)人員的TDD的書(shū)籍,談的更多的也不是藝術(shù),而是實(shí)踐。所以Java開(kāi)發(fā)者會(huì)感覺(jué)更加親切,也會(huì)覺(jué)得厚實(shí)。
2,細(xì)致
在講解對(duì)于特定技術(shù)進(jìn)行TDD實(shí)踐方面,作者特別細(xì)致。從大的方面包括了對(duì)于Web組件、DAO、Swing、多線程等等繼續(xù)TDD的內(nèi)容。英文原版甚至還包括了對(duì)EJB部分。深入到某個(gè)專題,作者通過(guò)大量代碼示例,分析不同情況,逐一闡述。比如講解TDD數(shù)據(jù)訪問(wèn)層的時(shí)候,作者分別介紹了用純JDBC,Spring的JdbcTemplate和Hibernate來(lái)實(shí)現(xiàn)DAO的時(shí)候,該怎么樣進(jìn)行TDD。同時(shí)也介紹了怎么樣直接連接到內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行集成測(cè)試等??芍^無(wú)微不至。
3,全面
說(shuō)這本書(shū)全面,是指它既介紹了TDD的概念,模式,對(duì)于特定技術(shù)的運(yùn)用,同時(shí)還講到了ATDD以及相關(guān)產(chǎn)品、策略和應(yīng)用,可以說(shuō)包羅萬(wàn)象。特別是ATDD部分,相關(guān)的中文出版書(shū)籍并不多,可以作為一個(gè)很好的入門(mén)材料,只是沒(méi)有了介紹TDD那部分深入,卻也留給了大家繼續(xù)探索的空間。
覺(jué)得有點(diǎn)美中不足的是,本書(shū)缺少一個(gè)貫穿始終的項(xiàng)目例子。如果有的話,可能讀者會(huì)更身臨其境。
單元測(cè)試和TDD還是有本質(zhì)的區(qū)別的。對(duì)于那些對(duì)TDD不是很熟悉的讀者來(lái)說(shuō),本書(shū)的第一部分是很好的入門(mén),第二部分則是很好的實(shí)踐老師。
當(dāng)然,讀這本書(shū),并不輕松。跟之前讀的幾本圖靈的書(shū),比如《結(jié)網(wǎng)》、《與孩子一起學(xué)編程》相比,本書(shū)寫(xiě)得略顯生澀,缺乏幽默——也許這就叫做嚴(yán)謹(jǐn)?
《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》讀后感(五):評(píng)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)
讀罷《測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的藝術(shù)》,忽然想起中國(guó)傳統(tǒng)文化中的“道器之辯”?!兑捉?jīng)》曰:形而上者謂之道,形而下者謂之器。中國(guó)的傳統(tǒng)文化常常是重道輕器,認(rèn)為道本器末,即道是根本,其他一切是道的外在表現(xiàn),器是道的從生與從屬。這就導(dǎo)致我們常常喜歡把“道”與“器”割裂開(kāi)來(lái),一味地重視過(guò)度抽象的“道”,進(jìn)而形成一種形而上學(xué)的玄幻,使得“道”高高在上,未能落于實(shí)處。重道輕器給傳統(tǒng)文化帶來(lái)的缺失告訴我們,“道”與“器”應(yīng)該是統(tǒng)一的,道是本質(zhì),卻又必須依賴于器,受制于器。
從軟件開(kāi)發(fā)的角度來(lái)看,TDD的本質(zhì)思想即為“道”,這其中包括按照意圖編程的思想,提高可測(cè)試性的設(shè)計(jì)原則,以及測(cè)試的模式與面向?qū)ο蟮幕舅枷搿6捌鳌眲t包含對(duì)TDD的合理運(yùn)用,針對(duì)不同的用例場(chǎng)景做出的測(cè)試手法,以及對(duì)測(cè)試工具的使用。
本書(shū)第一部分《TDD入門(mén)》闡述的正是TDD之道。雖然是入門(mén)知識(shí),卻高屋建瓴地闡明了TDD的真諦。例如本書(shū)寫(xiě)道:
在TDD周期中的第一步中,我們會(huì)寫(xiě)測(cè)試,實(shí)際上這并不只是寫(xiě)測(cè)試而已,而是在做設(shè)計(jì)。我們是在設(shè)計(jì)API,即用來(lái)訪問(wèn)新功能的接口。編碼之前寫(xiě)測(cè)試,我們會(huì)自然地考慮新代碼的調(diào)用方式?!瓬y(cè)試先行的編碼方式會(huì)促使我們站在代碼用戶(開(kāi)發(fā)人員)的角度考慮,設(shè)計(jì)出更易用的API。
很多開(kāi)發(fā)人員并不愿意接受TDD的開(kāi)發(fā)方式,認(rèn)為這種先寫(xiě)測(cè)試后編碼的方式既別扭而又浪費(fèi)時(shí)間,原因就在于他們沒(méi)有真正體會(huì)這種測(cè)試驅(qū)動(dòng)設(shè)計(jì)的好處。TDD最重要的一個(gè)字眼兒就是drive(驅(qū)動(dòng)),事實(shí)上,這種驅(qū)動(dòng)力正是所謂“按照意圖編程”的重要思想。
意圖編程,顧名思義,就是說(shuō)寫(xiě)代碼時(shí)先假設(shè)其他部分代碼都已經(jīng)存在了(即使事實(shí)并非如此)。使用這種編程方法時(shí),我們可以把注意力集中在能有的,而不是已經(jīng)有的東西上。使用意圖編程,我們能讓代碼讀起來(lái)更流暢,容易理解和使用,也能使代碼清晰地表達(dá)出自己的本意,而不會(huì)過(guò)于強(qiáng)調(diào)實(shí)現(xiàn)細(xì)節(jié)。
個(gè)人認(rèn)為,本書(shū)第一部分給出的郵件模板子系統(tǒng)的范例更貼近開(kāi)發(fā)真實(shí),卻又不至于晦澀難懂。作者在選擇范例上的匠心獨(dú)運(yùn),使得本書(shū)既具有很強(qiáng)的實(shí)踐指導(dǎo)意義,又不至于陷入復(fù)雜的業(yè)務(wù)需求和技術(shù)細(xì)節(jié)中。范例給出的第一個(gè)測(cè)試、偽實(shí)現(xiàn)以及重構(gòu)的手法,都是自然而然的TDD過(guò)程,而不是為了寫(xiě)作本書(shū)生拉硬拽,東拼西湊,有著強(qiáng)烈地雕琢痕跡。若能在閱讀過(guò)程中,比照著這樣的過(guò)程動(dòng)手實(shí)驗(yàn),相信能夠獲得更大的提高。
從本書(shū)的第二部分開(kāi)始,就邁入了TDD“器”的部分。之所以說(shuō)是TDD之“器”,在于它介紹了針對(duì)特定技術(shù)應(yīng)用TDD的內(nèi)容,這其中包括對(duì)Web組件、數(shù)據(jù)訪問(wèn)、多線程、Swing代碼的測(cè)試驅(qū)動(dòng)開(kāi)發(fā)。在講解的過(guò)程中,作者還介紹了大量用于這些特定技術(shù)應(yīng)用TDD的工具或框架,例如JspTest、EasyMock、MockObjects、HSQLDB、Jemmy、Abbot等。這些都是Java平臺(tái)下常用的支持TDD的有力工具。本書(shū)的第三部分則著重介紹了ATDD(驗(yàn)收測(cè)試驅(qū)動(dòng)開(kāi)發(fā)),包括對(duì)用戶故事的介紹,驗(yàn)收測(cè)試的特征與實(shí)現(xiàn),ATDD的過(guò)程以及相關(guān)工具Fit。這在許多介紹TDD的書(shū)籍中都是不多見(jiàn)的內(nèi)容。
這兩部分內(nèi)容給出了許多貼近開(kāi)發(fā)真實(shí)的例子,提出了許多卓有成效的測(cè)試方法。這些內(nèi)容如此地實(shí)用,涵蓋的知識(shí)如此地全面,基本上可以解決我們?cè)谄髽I(yè)開(kāi)發(fā)中進(jìn)行TDD可能遇到的問(wèn)題。事實(shí)上,這些內(nèi)容大多數(shù)都可以說(shuō)是TDD實(shí)踐過(guò)程中的攔路虎,尤其是針對(duì)表現(xiàn)層和多線程技術(shù)的TDD方法,大多數(shù)開(kāi)發(fā)人員都缺乏這方面的知識(shí),甚至因?yàn)檫@樣而放棄TDD。本書(shū)極具實(shí)踐指導(dǎo)意義的闡述彌補(bǔ)了這一空白。遺憾的是,本書(shū)介紹的內(nèi)容主要針對(duì)Java開(kāi)發(fā)人員,因而提及的工具也都基于Java平臺(tái),對(duì)于其他平臺(tái)下的開(kāi)發(fā)人員而言,無(wú)疑削弱了幾分價(jià)值。
本書(shū)還有一點(diǎn)不足就是“道”與“器”的不統(tǒng)一。前面提到,本書(shū)的第一部分開(kāi)篇名義,用極簡(jiǎn)潔的語(yǔ)言道明了TDD的本質(zhì)。然而本書(shū)的第二部分與第三部分,幾乎只停留在TDD方法和工具的使用上,而忽略了測(cè)試對(duì)于設(shè)計(jì)的驅(qū)動(dòng)力。書(shū)中的例子僅僅給出了如何完成測(cè)試用例,如果建立Mock對(duì)象,卻不再介紹為何要這樣編寫(xiě)測(cè)試用例,驅(qū)動(dòng)我們進(jìn)行設(shè)計(jì)的意圖何在。換言之,后面的例子省略了驅(qū)動(dòng)對(duì)設(shè)計(jì)進(jìn)行推導(dǎo)的過(guò)程。這種驅(qū)動(dòng)設(shè)計(jì)的能力恰好是很多程序員所不具備的?!捌鳌惫倘恢匾仨氉裱暗馈钡囊x,在其指引下實(shí)施。本書(shū)內(nèi)容“道”與“器”兼顧,卻將二者割裂開(kāi)來(lái),未能形成統(tǒng)一的整體,不能不說(shuō)白璧微暇,略有遺憾。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥(niǎo). 頁(yè)面生成時(shí)間:3.626秒