青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eXile 的專欄

測試驅動開發(TDD)的頓悟

  對于測試驅動開發(TDD),始終有一些迷惑,比如說,它的測試需要考慮完備性嗎,需要考慮覆蓋率嗎?等等此類。今天從Javaeye中看到一句話,終于明白了。
  “什么是TDD?TDD就是把你的需求用測試給描述出來。”
  也就是說,TDD中的測試和一般意義上的單元測試并不一樣,盡管TDD中的測試有時也作為單元測試來使用,但它們是兩回事。(這里的需求,指的不是客戶需求,而是程序員的開發需求)。
  使用TDD時,首先寫的是測試,這時相應代碼還沒有實現,那么測試什么東西呢?所以說,寫測試的過程,同時也是計接口的過程。這和寫單元測試的目的完全是不一樣的。
  TDD還有一個額外的好處。大多數人都是懶的,不要指望所有的程序員在寫完功能代碼后,再去編寫相應的單元測試。我覺得這個接口的實現沒有問題,所以就不用測試。這種想法也很常見。所以一開始就寫下測試,可以杜絕后患。

posted on 2008-01-23 17:23 eXile 閱讀(2495) 評論(11)  編輯 收藏 引用 所屬分類: 編程與設計

評論

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 21:38 neoragex2002

用TDD做設計的人是爽了,寫測試一句話,多簡單。可想想你的團隊呢?他們的創造熱情和成就感在哪里?他們的士氣在哪里?就幾個空而無物的測試用例?任何方法學正面地作用在主動積極的人才會起作用。  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 21:49 eXile

@neoragex2002
這個老兄還是對TDD有一個起碼的了解以后,再來討論這個問題吧。
  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 21:50 eXile

FROM JAVAEYE:
對于大多數的中國的軟件開發團隊來說,難以實現敏捷的最重要問題是人的素質問題。一個敏捷團隊要求每個成員都有較好的OOP和OOD的能力。.......實現敏捷是一個漸進的過程。構造一個在技術上有敏捷能力的團隊有兩種方法,一是用足夠的錢去招聘有足夠能力的程序員(大部分企業沒有那么多錢)。二是將現有不符合敏捷技術要求的程序員培養為合格的敏捷工作者。而在培養的路上,單元測試正是一個很好的驅動方式和實踐平臺。  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 21:52 eXile

FROM JAVAEYE
就是因為“文檔/注釋”在代碼的頻繁修改中太容易過時,而且也太容易為人所忘記,所以在我的實踐中不寫文檔,我的文檔就是我的“代碼+單元測試”,想知道我的想法,看“代碼+單元測試”就行了,沒有任何形式的文檔比“代碼+單元測試”更能體現我的設計
- 我們的文檔是十分簡短和松散的,一般放在wiki上,起到story guide的作用,但如上所說,隨著開發很快就過時了,從中你能找到設計的逐步迭代,但它和最終的產品是有差別的
- 對于我們開發工程師來講,“代碼+單元測試”就是我們的文檔,對于客戶來講,有專門的產品文檔供他們使用,但是那是由文檔工程師寫的   回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 21:53 eXile

FROM JAVAEYE:
閱讀有些test case只能讓你云里霧里,而閱讀有些則讓你馬上就知道這段代碼的用途。其實找并不是這些test case寫的有水平差別,而往往是有針對問題角度的差別。而進一步,你會發現閱讀這些test case如果按照一定順序,就會從最初的動機到最終的實現細節都有一個清晰的理解,而如果我們能夠在寫這些test case的時候就標注出這個理解順序,將是十分核算的。而實際上很多時候我們書寫的順序就是最終我們適于閱讀理解的順序。
  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 21:58 eXile

JAVAEYE上真是有不少明言警句啊, 看來都是高手。。。  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 22:01 eXile

FROM JAVAEYE:
就說注釋好了,比較一下:
1。可運行的代碼
2。測試代碼的單元測試和其他測試
3。注釋

這個重要性應該是向下遞減的。沒有1,其他都沒有意義了。沒有2,就沒有一種可執行、可重復的方法來驗證1的正確性。

至于注釋,對于程序的功能、正確性和可靠性,對于客戶來說是沒有任何意義的,所以除非有特殊的理由,我們才去寫注釋。

一般來說,堅持寫注釋的人最重要的觀點是便于自己或后來者理解代碼,減小程序維護和變更的成本。這個我們當然喜歡,但是要注意幾點:
1。注釋到底是不是最好的工具來加快和精確理解
2。達到這樣的目的需要多少成本

第一點,首先絕大多數注釋是細節程度上的,基本上和代碼本身處于同一層次,因此我們需要看一看代碼本身是否比注釋更有權利。
注釋的目的基本上是為了說明
1:代碼實現中的權衡
2。代碼本身的目的
3:別的代碼使用該代碼的方法

以Java舉例,注釋包括包注釋、類注釋和方法注釋。在99%的情況下,我認為只有包注釋和類注釋才有意義,因為一個包和
類只有自己的名字來解釋自己的含義,如果是一個簡單的類,譬如說是Rectangle,當然這個名字已經說明了一切。但很多時候,
一個類里面包含很多方法,很難簡單地用一個類名字來描述整個類的意圖和作用這個時候,這個時候代碼本身是不足的,需要類注釋的。

對于方法層次上的注釋,除非你這個方法用了非常復雜的算法,那么我們最先關注的是它的目的,這個目的用方法的名字就足夠了,
如果你認為它有三個目的,或者有幾個階段,那你必須重構,直到達到這個目標。這里代碼比注釋的好處是能夠優化代碼本身的結構,
易于重用和新變化,沒有同步的成本,更重要的是它是可執行的。

有的時候,例如內部實現是錯誤的,我們需要修改代碼,這個時候我們也需要理解這個代碼地實現方式,但我認為一旦達到了上面的要求,對一個程序員來講,代碼更精確、更簡單地能夠被理解,而不是注釋,除非注釋逐行解釋代碼地實現。

至于別的代碼如何來使用你自己的代碼,我不由得回憶起當初學習delphi地經歷,在我使用一段delphi以后,我很多時候都是憑自己對delphi函數命名的習慣的猜測去調用一個個函數,而不是依靠delphi地API文檔和delphi源代碼里面的注釋(實際上非常少),真的無法理解就去看源代碼。而對于一些我完全是初學的類或者函數,我的做法首先是去尋找范例代碼理解函數調用的順序,至于這種理解是否正確
最終取決于我自己的不斷測試。對于一些復雜的方法,我會在基本已經理解,并且能夠使用的情況下再去看是否還有別的什么"訣竅",后門等等。因此,在這方面單元測試無疑比注釋更有用,但是如果一個方法確實比較復雜,并且不同地類和函數之間有一定的依賴關系,我們需要專門的API文檔,注釋根本做不到這一點。

第二點,注釋的成本。注釋無法驗證,注釋不能執行。因此,注釋必須完全通過手工來進行維護,當一個類被重構為一個類層次,
當一個方法被抽取成兩個方法,當一個類的某些方法被移到另一個類,一個類地實現被改變(接口不變)的時候我們都必須手工去維護
這些東西,并且無法知道我們的注釋到底是不是正確揭示了這個類、方法的意圖和實現思路。這個成本是非常高的,特別是當我們
知道注釋既不能為客戶提高更多的價值,也不會對其他程序員理解代碼有多大的幫助。當然,如果我們有足夠的人力、物力愿意干這樣的活,有些時候也會稍微有點幫助。
  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 22:02 eXile

FROM JAVAEYE:
實際上過多的注釋妨礙了重構的進行,如果你想讓代碼僵化那么就寫大量的注釋好了,越多越好,甚至注釋:代碼=10:1。重構的結果往往是刪除掉大量的注釋,因為它們或者已經不適合代碼當前的結構,或者已經不再需要,因為代碼的結構已經非常清晰了。而且我并不知道是否還有可能進行下一次重構,那么我寫太多的注釋是不是很有可能是在做無用功?我其實只要寫很少量的注釋就足夠了。
  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 22:02 eXile

FROM JAVAEYE:
很多大公司的代碼都沒有任何注釋,很多大師寫代碼也沒有注釋(看看junit就知道了,大家可能不知道這個東西是兩個大師在飛機上試驗結對編程的副產品)。原因在于他們根本就不能容忍任何注釋造成的味道。
  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-23 22:35 eXile

FROM JAVAEYE:
注釋與文檔的本質,是為了便于軟件的開發和維護,而不是在一道一道的工序之間作為“交接班”的說明
  回復  更多評論   

# re: 測試驅動開發(TDD)的頓悟 2008-01-24 08:08 Enoch

測試驅動開發(TEST DRIVER DEVELOP, TDD)是以測試為驅動力,進行開發,是一種開發方法。實際上也是極限編程(Extreme Programming, EP)的一個重要特點,TDD不斷的測試推動代碼的開發,既簡化了代碼,又保證了軟件質量。
使用測試驅動開發(TDD)就是通過編寫代碼的測試用例,對其功能的分解、使用過程、接口都進行了設計,以滿足軟件需求,這樣使得代碼的設計更符合后期開發的需求。
測試驅動開發(TDD)開發通常需要明確要完成的功能,快速實現功能的測試用例,完成對代碼進行重構,測試完成所有功能的開發。這里要求測試的完全隔離,不同代碼的測試不應該存在耦合。 測試驅動開發(TDD)從某種意義上說是單元測試(Unit Test, UT)置于軟件過程的中心地位。
  回復  更多評論   

導航

<2009年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

統計

常用鏈接

留言簿(18)

隨筆分類

隨筆檔案

服務器編程

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品视频免费观看| 欧美成人免费网| 国产精品久久网| 午夜精品亚洲一区二区三区嫩草| 久久成人综合网| 在线精品亚洲一区二区| 欧美顶级少妇做爰| 日韩午夜在线视频| 午夜在线成人av| 一区二区三区在线免费观看| 女主播福利一区| 亚洲图色在线| 免费h精品视频在线播放| 亚洲免费观看高清在线观看 | 亚洲国产成人精品视频| 亚洲最黄网站| 国产亚洲欧美一区| 欧美成人情趣视频| 亚洲一区影院| 欧美大胆成人| 亚洲主播在线播放| 在线观看av不卡| 欧美视频在线视频| 久久久久久久久久久一区| 亚洲激情影视| 久久久久久久综合狠狠综合| 亚洲精品乱码久久久久久黑人 | 日韩一区二区免费高清| 国产精品午夜在线| 欧美成人性网| 欧美在线视屏| 99精品久久| 欧美va亚洲va香蕉在线| 午夜在线视频一区二区区别| 亚洲黄色大片| 国产亚洲一区二区三区在线观看| 欧美精品18videos性欧美| 欧美中文字幕| 亚洲综合第一| 亚洲美女免费精品视频在线观看| 麻豆国产va免费精品高清在线| 一区二区三区免费观看| 亚洲国产美女久久久久| 国产手机视频一区二区| 欧美三区在线视频| 欧美激情第六页| 久久精彩免费视频| 亚洲一区二区动漫| 亚洲美女视频在线观看| 亚洲第一精品夜夜躁人人躁| 久久久国产精品一区二区中文 | 有坂深雪在线一区| 国产日韩欧美91| 国产精品老女人精品视频| 欧美国产精品中文字幕| 麻豆成人91精品二区三区| 欧美一区二区三区在线| 亚洲综合另类| 亚洲视频在线观看三级| 亚洲精品久久嫩草网站秘色| 欧美大胆成人| 欧美国产日韩视频| 欧美成人激情在线| 美女精品在线观看| 老鸭窝亚洲一区二区三区| 久久先锋资源| 久久综合久色欧美综合狠狠| 久久九九热re6这里有精品| 亚洲欧美综合另类中字| 亚洲女ⅴideoshd黑人| 亚洲伊人第一页| 亚洲免费在线播放| 午夜国产不卡在线观看视频| 午夜精品视频在线观看一区二区 | 欧美激情区在线播放| 欧美高清视频一区二区| 欧美国内亚洲| 亚洲级视频在线观看免费1级| 亚洲国产精品热久久| 亚洲欧洲一区二区在线播放| 日韩视频在线免费| 亚洲一区二区三区中文字幕在线| 亚洲天堂免费观看| 欧美一级理论片| 久久久噜久噜久久综合| 久久亚洲综合色| 欧美激情视频给我| 欧美日本免费| 国产精品稀缺呦系列在线| 国产一区二区三区最好精华液| 韩国女主播一区| 亚洲国产一区二区三区高清| 亚洲日本va午夜在线影院| 99riav1国产精品视频| 亚洲一区二区伦理| 欧美综合国产精品久久丁香| 看欧美日韩国产| 亚洲福利一区| 亚洲午夜性刺激影院| 欧美中文在线视频| 欧美激情视频一区二区三区免费 | 国产日本亚洲高清| 欧美一区二区视频观看视频| 久久亚洲春色中文字幕| 欧美人与性禽动交情品| 国产精品久久久久久久9999| 国产综合欧美在线看| 欧美日韩久久精品| 国产欧美一区二区三区久久| 在线观看视频欧美| 亚洲一区二区在线免费观看| 久久久久国产一区二区| 亚洲国产精品成人综合色在线婷婷| aa成人免费视频| 欧美一区二区三区久久精品茉莉花| 久久综合中文色婷婷| 欧美视频不卡中文| 一区二区三区在线视频播放| 欧美国产综合视频| 久久久久久久久综合| 欧美视频一区二区三区四区| 精品白丝av| 亚洲欧美偷拍卡通变态| 欧美激情在线播放| 性18欧美另类| 国产精品chinese| 亚洲激情社区| 久久久久久一区| 国产视频精品免费播放| 欧美日韩mp4| 亚洲高清视频的网址| 午夜精品久久久久久久99黑人| 欧美激情精品久久久久久大尺度 | 欧美一区1区三区3区公司| 欧美精品成人| 亚洲国产精品一区二区第四页av | 男女激情久久| 欧美一级大片在线免费观看| 欧美性猛交xxxx乱大交退制版 | 久久在线免费观看| 亚洲免费一区二区| 欧美高清视频在线| 欧美激情一区二区三区在线视频观看 | 国内久久精品视频| 午夜精品久久久久久久久久久久久 | 国产人成精品一区二区三| 亚洲午夜电影在线观看| 亚洲国产精品激情在线观看| 久久精品国产亚洲一区二区| 国产精品系列在线播放| 亚洲男女自偷自拍| 亚洲精品午夜| 这里只有精品丝袜| 欧美午夜片欧美片在线观看| 久久激情五月激情| 欧美一区二区三区啪啪| 国产伦精品一区二区三区免费 | 国产日韩精品一区二区三区 | 国产精品久久波多野结衣| 国产精品日日做人人爱| 亚洲无人区一区| 一本不卡影院| 国产精品久久久久免费a∨大胸| 亚洲一区不卡| 亚洲天堂男人| 国产日韩视频| 久久亚洲春色中文字幕久久久| 欧美一区午夜精品| 国产在线播精品第三| 老司机免费视频一区二区| 久久亚洲欧洲| 日韩视频在线观看国产| 亚洲精品资源| 国产精品卡一卡二卡三| 久久久精品免费视频| 久久另类ts人妖一区二区| 91久久精品一区二区三区| 亚洲高清视频一区| 欧美日韩一区在线观看视频| 亚洲一区二区三区精品动漫| 亚洲在线视频网站| 激情小说另类小说亚洲欧美| 亚洲精品一区二区在线| 国产真实乱偷精品视频免| 娇妻被交换粗又大又硬视频欧美| 美女精品在线观看| 欧美精品免费在线| 欧美一区二区播放| 久久手机免费观看| 中文精品视频| 久久av在线| 夜夜精品视频| 午夜精品久久久久久久蜜桃app | 欧美大片在线观看一区| 亚洲午夜视频在线| 久久国产乱子精品免费女 | 欧美国产精品一区| 香蕉久久一区二区不卡无毒影院| 久久久免费观看视频| 一本色道久久综合亚洲91|