国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

TDD已死?讓我們再聊聊TDD

開發 開發工具
技術人員拒絕TDD的主要原因在于難度大、工作量大、Mock的大量使用導致很難測試業務價值等。而在我的認知中,TDD的核心是:先寫測試,并使用它幫助開發人員來驅動軟件開發。

最近幾年“TDD已死”的聲音不斷出現,特別是David Heinemeier Hansson那篇文章——《TDD is dead. Long live testing. (DHH)》引發了大量的討論。其中最引人注目的是Kent Beck、Martin Fowler、David三人就這個舉行的系列對話(辯論)——Is TDD Dead?

[[185627]]

(圖片來自:image.slidesharecdn.com/)

當前國內很多軟件開發人員對于TDD的理解比較模糊,大部分人也沒有明確和有意識的去實施TDD,應此很多人都有著不同的理解。

其中最經典的理解就是基于代碼的某個單元,使用Mock等技術編寫單元測試,然后用這個單元測試來驅動開發,抑或是幫助在重構、修改以后進行回歸測試。而現在大部分反對TDD的聲音就是基于這個理解,比如:

  • 工期緊,時間短,寫TDD太浪費時間;
  • 業務需求變化太快,修改功能都來不及,根本沒有時間來寫TDD;
  • 寫TDD對開發人員的素質要求非常高,普通的開發人員不會寫;
  • TDD 推行的***問題在于大多數程序員還不會「寫測試用例」和「重構」;
  • 由于大量使用Mock和Stub技術,導致UT沒有辦法測試集成后的功能,對于測試業務價值作用不大
  • ......

總結一下,技術人員拒絕TDD的主要原因在于難度大、工作量大、Mock的大量使用導致很難測試業務價值等。

這些理解主要是建立在片面的理解和實踐之上,而在我的認知中,TDD的核心是:先寫測試,并使用它幫助開發人員來驅動軟件開發。

首先是先寫測試,這里的測試并不只是單元測試,也不是說一定要使用mock和stub來做測試。這里的測試就是指軟件測試本身,可以是基于代碼單元的單元測試,可以是基于業務需求的功能測試,也可以是基于特定驗收條件的驗收測試。

其次是幫助開發人員,主要是幫助開發人員理解軟件的功能需求和驗收條件,幫助其思考和設計代碼,從而達到驅動開發的目的,所以TDD是包含兩部分:ATDD與UTDD。

TDD是包含兩部分:ATDD與UTDD

ATDD(Acceptance Test Driven Development):驗收驅動測試開發,首先BA或者QA編寫驗收測試用例,然后Dev通過驗收測試來理解需求和驗收條件,并編寫實現代碼直到驗收測試用例通過。

由于驗收方法和類型也是多種多樣的,所以根據驗收方法和類型的不同,ATDD其實是包含BDD(Behavior Driven Development)、EDD(Example Driven Development),FDD(Feature Driven Development)、CDCD(Consumer Driven Contract Development)等各種的實踐方法。

比如以軟件的行為為驗收標準,這個是BDD;如果以特定的實例數據為驗收標準,這個是EDD;如果以Web Service API消費者提出API契約來驅動API提供者開發API,這個是CDCD等。所以ATDD的具體實現需要結合項目的實際情況來選用適合的驗收測試方法與類型。

UTDD(Unit Test Driven Development):單元驅動測試開發,首先Dev編寫單元測試用例,然后編寫實現代碼直到單元測試通過。這個就是現在很多人所謂的TDD、實踐的TDD、喜歡的TDD、抱怨的TDD,但是它卻只是真正意義上TDD的一部分而已。

TDD金字塔

TDD金字塔

再來看看David 的《TDD is dead. Long live testing》,他主要是認為TDD大量使用mock,導致無法測試軟件連接了數據庫之后的功能,進而無法測試其業務價值。

其次他提出應該使用”Long live testing”, 而他并沒有說明這種測試應該是在編寫代碼之前還是之后寫,以及會不會用來作為客戶對于軟件的驗收標準。如果他沒有這樣做,那他只是使用”Long live testing”來做回歸測試;如果他做了,那么他也是使用了ATDD,從而使用了TDD。

所以他對TDD的理解還是狹隘的,認為TDD只是UTDD,導致他寫了這篇文章來批評TDD。有可能他在現實工作中已經使用了ATDD,也就是TDD。

***來看看Kent Beck、Martin Fowler、David關于Is TDD Dead?的辯論,我覺得他們所說的都有道理,并且也是合理的。原因是他們的背景和行業不同,本來對于不同的行業和不同的背景就應該選擇適合的測試驅動方法(有可能不一樣)。

[[185629]]

(圖片來自:http://t.cn/RiHfT2q)

首先來看看Kent Beck,他在Facebook工作,出版過很多書,可以定位為一名在大型IT公司工作的軟件思想家。其次是David,一個標準歐洲帥哥,ROR創造者之一,Basecamp公司的創始人和CTO,Basecamp是一個只有幾十個人的小型軟件公司,所以他可以定位是一名創業者、技術牛人。

Kent Beck所在的公司開發的是大型復雜業務軟件(Facebook平臺),代碼量巨大,需要長時間(幾年)大量人員(幾十甚至幾百)來開發和維護。DHH開發的中小型企業軟件(比如CRM),代碼量一般,需要快速(幾個月)、少量人員(幾個到十幾個)開發和維護。

  • Kent Beck在金錢和人力資源相對充足、時間相對充裕的情況下追求的是代碼質量,大量人員的良好協作與平臺穩定。
  • DHH卻在金錢和人力資源相對較少情況下追求***化客戶業務價值,使得少量人員能快速開發出軟件并賣給客戶賺錢。

所以在Kent Beck所在的環境下,單元測試(UTDD)是非常有價值的;而在DHH所在的環境下,功能測試或者ATDD卻更為適合。

國內很多人對于TDD的狹隘理解還源于很多網上的中文資料,百度百科對于TDD的解釋就是其中一個:

TDD的原理是在開發功能代碼之前,先編寫單元測試用例代碼,測試代碼確定需要編寫什么產品代碼。TDD雖是敏捷方法的核心實踐,但不只適用于XP(Extreme Programming),同樣可以適用于其他開發方法和過程。

而國外有不少站點上的資料是對于TDD是有正確理解的,比如下圖是一個敏捷調查表。從其中的“We take a test-driven development(TDD) approach”和”We take a TDD approach at the requirements level”就能發現其對TDD的理解就是包含UTDD和ATDD。

對TDD的理解就是包含UTDD和ATDD

TDD不是銀彈,不要期望它能解決任何問題,無論是UTDD、EDD還是BDD,根據自己項目的實際情況,比如資金、人力資源、時間、組織架構等,合理的選擇。

今天我們又聊了聊TDD,也希望大家重新理解一下,重新思考和嘗試一下,然后你會發現另外一片云彩。

TDD并沒有死,死的是你的持續學習、思考、實踐與總結。TDD其實早已融入日常的軟件開發工作中,只是很多人還沒有意識到。對于TDD的客觀必然存在性將在下一篇文章《讓我們再聊聊TDD 續——人人都在做TDD》中進行介紹。

【本文是51CTO專欄作者“ThoughtWorks”的原創稿件,微信公眾號:思特沃克,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-03-16 13:28:34

TDD代碼軟件架構

2021-08-05 05:02:04

DPU數據中心Pensando

2021-08-27 07:06:10

IOJava抽象

2022-06-26 09:40:55

Django框架服務

2022-02-14 07:03:31

網站安全MFA

2020-04-17 10:23:43

TDD測試驅動

2021-07-31 11:40:55

Openresty開源

2022-08-01 07:57:03

數組操作內存

2023-08-02 08:35:54

文件操作數據源

2023-01-30 23:04:10

B-Treegolang優化

2021-11-04 06:58:31

CSS性能設備

2022-08-30 13:48:16

LinuxMySQL內存

2021-11-09 23:54:19

開發SMI Linkerd

2022-12-05 09:10:21

2017-03-27 21:59:57

TDD開發編程

2013-11-05 09:51:33

TDD4GTD-LTE

2014-04-09 11:13:37

測試驅動開發

2010-08-25 12:06:18

LTEWiMAX

2009-07-08 09:44:54

TDDViual Studi

2021-10-26 09:55:52

CAP理論分布式
點贊
收藏

51CTO技術棧公眾號

91老师国产黑色丝袜在线| 精品国精品国产| 精品国产乱码久久久久久108| 精品国产亚洲一区二区三区在线 | 麻豆精品蜜桃视频网站| 91精品免费看| 国产一区福利| 九九热这里只有在线精品视| 日本高清不卡一区二区三区视频| 日韩欧美在线观看一区二区三区| 飘雪影院手机免费高清版在线观看 | 羞羞色午夜精品一区二区三区| 欧美大学生性色视频| av成人在线播放| 亚洲免费福利视频| 亚洲一二三四| 亚洲天堂av图片| 成人国产精品入口免费视频| 亚洲黄在线观看| 超碰在线公开| 日韩av资源在线播放| 91丝袜在线| 亚洲大胆美女视频| 日本理论片午伦夜理片在线观看| 欧美色图片你懂的| 二区三区在线观看| 精品美女一区二区三区| sm捆绑调教国产免费网站在线观看| 欧美精品一区二区高清在线观看| 爱啪啪综合导航| 中文字幕免费精品一区| 超碰国产精品一区二页| 777精品视频| 久久在线视频| 麻豆久久久9性大片| 美女脱光内衣内裤视频久久网站| 黄色一级片国产| 国产女同性恋一区二区| 一级毛片电影| 欧美日韩亚洲综合一区二区三区| 久草在线视频福利| xxav国产精品美女主播| 国产精品毛片视频| 成人国内精品久久久久一区| 99成人在线| 欧美高清中文字幕| 中文字幕第一区第二区| 一二三区在线观看| 精品免费视频一区二区| 97色婷婷成人综合在线观看| 日本高清不卡的在线| 国产精品红桃| 超碰在线免费观看97| 久久久久久亚洲综合影院红桃 | 国产一区福利在线| 成人黄色一区二区| 欧美日韩中文字幕在线| 日本天码aⅴ片在线电影网站| 中文字幕精品视频| 欧美一区二区性| 一区二区三区免费看| 久久九九影视网| 国产中文在线观看| 精品视频—区二区三区免费| 婷婷亚洲成人| 欧洲精品亚洲精品| 国产精品日产欧美久久久久| 成人综合影院| 精品国偷自产在线| 欧美三级网页| 免费av观看网址| 一道本成人在线| 美脚恋feet久草欧美| 国产精品毛片a∨一区二区三区|国| 日日夜夜精品视频天天综合网| 国产原创中文在线观看| 欧美日韩国产综合新一区 | 蜜桃精品久久久久久久免费影院| 国产成人在线看| 中文字幕一区二区三区域| 日韩亚洲欧美一区| 久久午夜影院| 色999日韩自偷自拍美女| 国产精品亲子伦对白| 日本精品600av| 日本欧美在线视频| 国产高清精品网站| 在线a免费看| 97国产在线视频| 日本中文字幕一区二区视频| 无夜福利视频观看| 亚洲日本中文字幕免费在线不卡| 最新精品国产| 亚洲国产高清av| 国产视频久久网| 国产专区一区| av手机天堂| 国产亚洲欧美日韩美女| 国产综合色产| 久久mv成人精品亚洲动漫| 亚洲精品第一国产综合精品| 午夜激情久久| 国产无遮挡又黄又爽免费网站| 国产偷国产偷亚洲清高网站| 黄色av日韩| 毛片.com| 久久精品一本久久99精品| 久久国产精品区| 1769在线观看| 国产在线拍揄自揄视频不卡99 | 欧美日产一区二区三区在线观看| 成人免费一区二区三区视频| 亚洲日本网址| 亚洲电影免费| 欧美日韩一二三| 婷婷久久国产对白刺激五月99| 欧美韩国日本在线| 在线国产精品视频| 久久99精品国产91久久来源 | 国产精品天干天干在线综合| 天堂网在线最新版www中文网| 国产精品亚洲一区| 精品久久久香蕉免费精品视频| 91蜜桃臀久久一区二区| 日本一区二区三区中文字幕| 日韩中文字幕av在线| 亚洲免费在线看| 成人涩涩视频| 国产亚洲精品久久久| 91麻豆精品激情在线观看最新| 久久精品精品电影网| 四虎国产精品免费观看| 国产精品入口免费软件| 日韩视频免费中文字幕| 精品亚洲porn| 91香蕉在线观看| 久久综合中文色婷婷| 欧美亚洲综合另类| 亚洲精品久久久| 日韩福利一区二区| 成人在线免费观看视视频| 亚洲成在人线免费| 欧美成人激情| 欧美xxx.com| 3d动漫精品啪啪一区二区三区免费| 亚洲一区二区三区四区在线免费观看| 国产精品调教| xx免费视频| 欧美一区二区.| 一区二区在线免费观看| 精品国产中文字幕第一页| 在线中文av| 成人国产在线视频| 日本精品一级二级| 一区福利视频| 欧美xxxx黑人又粗又长| 一区二区三区|亚洲午夜| 精品亚洲一区二区三区| 国内一区二区视频| 激情久久99| 五月综合网站| 国产精品6699| 欧美日韩午夜在线| 麻豆成人久久精品二区三区小说| 中文在线8资源库| 99精品人妻少妇一区二区| 97在线精品国自产拍中文| 亚洲成人在线免费| 欧美日韩网站| 中文不卡1区2区3区| 亚洲精品视频免费看| 精品一区二区在线播放| 在线观看h视频| 高清国语自产拍免费一区二区三区 | 久久精品欧美日韩精品| 97久久超碰| 亚洲网站情趣视频| 91嫩草在线视频| 日韩人在线观看| 亚洲欧美视频| 99热精品久久| 午夜免费欧美电影| 三区在线观看| 一本一道久久久a久久久精品91 | 国产精品久久a| 亚洲天堂免费视频| 亚洲男人天堂av网| 亚洲一线二线三线视频| 国产亚洲精品超碰| 高清国产一区二区三区四区五区| 久久婷婷国产91天堂综合精品| 欧美中文字幕视频在线观看| 欧美手机在线视频| 成人精品高清在线| 久久av免费看| 午夜小视频福利在线观看| 成年人在线看片| 精品无码久久久久久久动漫| 久久精品精品电影网| 日本道免费精品一区二区三区|