溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

「勿忘初心」TDD,Dont DDT

發(fā)布時(shí)間:2020-07-31 08:07:44 來(lái)源:網(wǎng)絡(luò) 閱讀:1437 作者:blackanger 欄目:編程語(yǔ)言

偶爾翻到自己五年前寫(xiě)的關(guān)于TDD的文章,又看一遍, 感覺(jué)當(dāng)時(shí)的自己是走在正確的路上。但是這么多年過(guò)去了,BDD也在流行,自己卻沒(méi)有一直沿著這條路走下去,為什么? 老文重拾,感慨良多。

這個(gè)過(guò)程是我當(dāng)時(shí)在用Ruby改造一個(gè)php的遺留系統(tǒng),具體細(xì)節(jié)已遺忘。


正文

一直有個(gè)疑問(wèn),對(duì)于遺留系統(tǒng),我們?cè)撊绾蜹DD ?

我個(gè)人比較認(rèn)同TDD是一種設(shè)計(jì)方法,不能代替真正意義上的測(cè)試。是幫助我們?cè)O(shè)計(jì)自己代碼的一種方法。對(duì)于遺留系統(tǒng),面對(duì)一堆需求文檔,面對(duì)一陀陀已經(jīng)難 以繼續(xù)維護(hù)的陳舊代碼,你的心是否哇涼哇涼的 ?做為一個(gè)使用Rails的開(kāi)發(fā)人員,難道你要把這些代碼翻譯為Ruby代碼嗎 ?
答案當(dāng)然是不!
很多時(shí)候,我們雖然很清楚要TDD,但是很多時(shí)候我們是在DDT?;旧鲜歉鶕?jù)遺留系統(tǒng)的代碼把功能代碼寫(xiě)的差不多了,才想起來(lái)寫(xiě)測(cè)試。寫(xiě)完之后, 用流行的rcov測(cè)試一下測(cè)試代碼覆蓋率,不足的地方再加上測(cè)試 ? 回頭想想,我們引入TDD的初衷是這樣的嗎 ? 大家都心知肚明,并不是這樣的!
重新思考TDD之后,我決定在現(xiàn)做的這個(gè)ticket里完全采用了TDD的方式去開(kāi)發(fā),今天一天下來(lái),感觸頗深:
1。 昨天拿到php源碼,一看代碼,了不得啊,和我功能相關(guān)的源碼文件之有三個(gè),但代碼卻有三千多行。我該怎么辦 ?我肯定不可能把那三千多行都看完吧。我該如何TDD ?
T代表Test,測(cè)試驅(qū)動(dòng)開(kāi)發(fā),很顯然,是先有測(cè)試,要不談何驅(qū)動(dòng)開(kāi)發(fā)。 但是沒(méi)有功能代碼,你測(cè)試什么呀? 既然TDD是一種設(shè)計(jì)方法,那么這個(gè)測(cè)試,代表的應(yīng)該是你大腦中對(duì)這個(gè)功能的自我認(rèn)知。 如果對(duì)需求了解不清楚,你是沒(méi)有辦法對(duì)這個(gè)功能產(chǎn)生自我的認(rèn)知的。硬著頭皮整理了一下需求文檔,在腦中形成一個(gè)大概的輪廓之后,就可以動(dòng)手寫(xiě)測(cè)試了。此功 能是要生成一個(gè)報(bào)表,就是一個(gè)create -> show 的過(guò)程。一般人想到的先是頁(yè)面,我是一般人,所以我也是從頁(yè)面開(kāi)始的,根據(jù)已經(jīng)明確的需求寫(xiě)下自己對(duì)這個(gè)頁(yè)面的幻想:

因?yàn)?1cto的代碼格式問(wèn)題,

更詳細(xì)的點(diǎn)擊:原文地址: http://tao.logdown.com/posts/158033-do-not-forget-the-chuxin-tdddont-ddt



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI