成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓我們?cè)倭牧腡DD 續(xù)——人人都在做TDD

開發(fā) 開發(fā)工具
在上一篇文章里面,通過(guò)對(duì)DHH的文章以及DHH和Kent Beck等討論的分析,我闡述了對(duì)TDD的理解和分類,現(xiàn)在來(lái)繼續(xù)聊聊TDD的實(shí)施和分層。

在上一篇文章《讓我們?cè)倭牧腡DD》里面,通過(guò)對(duì)DHH的文章以及DHH和Kent Beck等討論的分析,我闡述了對(duì)TDD的理解和分類,現(xiàn)在來(lái)繼續(xù)聊聊TDD的實(shí)施和分層。

現(xiàn)在還有非常多的軟件工程師在質(zhì)疑TDD的可行性,比如太難不會(huì)、成本太高無(wú)法推動(dòng)、意義不是很大等,但是他們卻一直都在做著TDD,只不過(guò)沒(méi)有意識(shí)到而已,這便是“不識(shí)廬山真面目,只緣身在此山中”。

[[185630]]

TDD的實(shí)施一般分為思維層面和技術(shù)層面。一般來(lái)說(shuō),思維層面上的實(shí)施成本較低、容易接受,但是缺點(diǎn)很多,比如難以傳遞、難以持續(xù)獲得快速反饋等;而技術(shù)層面上的實(shí)施一般成本較高、不容易被人接受,但是優(yōu)點(diǎn)更多,比如可以獲得快速反饋、更容易傳遞和協(xié)作等。而現(xiàn)實(shí)世界中TDD的實(shí)施一般分為三個(gè)階段,即無(wú)意識(shí)的TDD、被動(dòng)通過(guò)技術(shù)實(shí)現(xiàn)的TDD、以及有意識(shí)和主動(dòng)通過(guò)技術(shù)實(shí)現(xiàn)的TDD。

1. ***階段:無(wú)意識(shí)的TDD

對(duì)于軟件開發(fā)人員,當(dāng)他們拿到一個(gè)新的軟件需求時(shí),首先會(huì)思考如何實(shí)現(xiàn),其中包括當(dāng)前軟件架構(gòu)、業(yè)務(wù)分解、實(shí)現(xiàn)設(shè)計(jì)、代碼分層、代碼實(shí)現(xiàn)等。然后通過(guò)思考和設(shè)計(jì)所得到的產(chǎn)出物來(lái)驅(qū)動(dòng)代碼實(shí)現(xiàn),進(jìn)而在代碼實(shí)現(xiàn)中會(huì)思考如何通過(guò)一個(gè)或多個(gè)函數(shù)或者算法來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。所以軟件系統(tǒng)的實(shí)現(xiàn)要先通過(guò)意識(shí)層面的思考,再進(jìn)行技術(shù)層面的工作。

無(wú)意識(shí)的TDD

當(dāng)開發(fā)人員思考和設(shè)計(jì)這些函數(shù)或者方法的時(shí)候,一般都會(huì)思考它們有哪些參數(shù),然后想象將這些參數(shù)換成真實(shí)的數(shù)據(jù)后傳遞進(jìn)去,會(huì)得到怎樣的返回值。好一點(diǎn)的開發(fā)人員會(huì)思考如何處理異常輸入和異常返回值。

這類思考其實(shí)已經(jīng)是意識(shí)思維上的TDD,它幫助開發(fā)人員先在大腦里面設(shè)計(jì)并驗(yàn)證代碼實(shí)現(xiàn),甚至幫助其重構(gòu)代碼。所以很多開發(fā)人員都在無(wú)意識(shí)的情況下做著TDD。

比如在一個(gè)銀行系統(tǒng)里面,開發(fā)人員拿到一個(gè)需求,需要開發(fā)一個(gè)通過(guò)手機(jī)APP轉(zhuǎn)賬的功能。

首先開發(fā)人員會(huì)基于當(dāng)前的軟件架構(gòu)思考:是開發(fā)一個(gè)全新的模塊來(lái)處理這個(gè)業(yè)務(wù)?還是基于當(dāng)前架構(gòu)中的某個(gè)模塊來(lái)添加代碼進(jìn)行處理?

當(dāng)確定架構(gòu)和設(shè)計(jì)之后,就開始思考具體的代碼實(shí)現(xiàn),比如類的設(shè)計(jì)、方法的設(shè)計(jì)或者函數(shù)的設(shè)計(jì)等。當(dāng)開發(fā)“將錢從原帳號(hào)轉(zhuǎn)出”這個(gè)功能前,開發(fā)人員會(huì)思考:這個(gè)功能需要支持當(dāng)錢從原帳號(hào)中轉(zhuǎn)出成功后,原帳號(hào)中的余額等于原始余額減去轉(zhuǎn)出金額。進(jìn)一步有些程序員還會(huì)設(shè)計(jì)一些用來(lái)驗(yàn)證功能的實(shí)例,比如帳號(hào)中的原始余額是999.99,轉(zhuǎn)出111.11,那么剩余的金額就應(yīng)該是888.88。

在這樣思考之后,開發(fā)人員便開始根據(jù)自己大腦中的測(cè)試邏輯和用例來(lái)驅(qū)動(dòng)和輔助開發(fā)過(guò)程。在代碼開發(fā)完畢之后還會(huì)想一些辦法來(lái)驗(yàn)證一下所實(shí)現(xiàn)的功能是否符合預(yù)期,比如人工使用之前的或者新的測(cè)試用例再測(cè)試一下。如果驗(yàn)證正確,就會(huì)認(rèn)為自己開發(fā)的功能正確了,并交給測(cè)試人員進(jìn)行測(cè)試。

其實(shí)開發(fā)人員在開發(fā)前思考測(cè)試邏輯和用例的過(guò)程就是在做TDD了。

很多做業(yè)務(wù)分析的BA和測(cè)試分析前移的QA也同樣在無(wú)意識(shí)的做著TDD(注:在前一篇文章中已說(shuō)明TDD包含ATDD),比如分析驗(yàn)收條件、寫出驗(yàn)收文檔等。只不過(guò)這些AC和驗(yàn)收文檔可能寫得不是很明確或者不是很好,比如不是實(shí)例化需求等,但是本質(zhì)上已經(jīng)是TDD了。

只不過(guò)是初級(jí)的無(wú)意識(shí)的TDD,可能有的人做得好,有的人做得不好,而且沒(méi)有明確的產(chǎn)出來(lái)協(xié)助和規(guī)范這個(gè)測(cè)試驅(qū)動(dòng)開發(fā)方式,也缺乏快速反饋、度量、傳遞和協(xié)作等。因此從無(wú)意識(shí)到有意識(shí)將是做好TDD的一個(gè)重要過(guò)渡。

2. 第二階段:被動(dòng)通過(guò)技術(shù)實(shí)現(xiàn)TDD

當(dāng)有一部分軟件工程師意識(shí)到了TDD的意義和普遍存在性之后,就開始準(zhǔn)備解決思維上的TDD的缺點(diǎn)。而解決這些問(wèn)題的方法就是在技術(shù)層面上用代碼來(lái)實(shí)現(xiàn)TDD,用明確的代碼來(lái)協(xié)助和規(guī)范開發(fā)人員的測(cè)試驅(qū)動(dòng)開發(fā)行為,來(lái)度量他對(duì)業(yè)務(wù)邏輯以及代碼實(shí)現(xiàn)的理解度。通過(guò)將他的理解傳遞給以后的維護(hù)人員,讓他的理解能重復(fù)被使用,以及和其他人協(xié)作開發(fā)。

但是現(xiàn)實(shí)中很多開發(fā)人員的認(rèn)識(shí)不足以及技術(shù)能力不夠,就算管理層支持并且主動(dòng)推動(dòng)TDD,最終

由于開發(fā)人員設(shè)計(jì)和選取的測(cè)試用例合理性很差,導(dǎo)致驅(qū)動(dòng)出來(lái)的代碼有效性差,測(cè)試用例無(wú)法體現(xiàn)出SBE(Specification by example)導(dǎo)致易讀性差,對(duì)于自動(dòng)化測(cè)試框架和測(cè)試編寫不熟悉導(dǎo)致開發(fā)速度很慢等,往往是被動(dòng)的在技術(shù)層面上去實(shí)現(xiàn)TDD,所以出現(xiàn)了各種怨言,各種抵觸,進(jìn)而導(dǎo)致技術(shù)層面上的TDD很難以大規(guī)模實(shí)施。

由于意識(shí)層面上的難易程度和工作量都比技術(shù)層面上相對(duì)較小,所以前者實(shí)施起來(lái)相對(duì)容易一些,而后者則相對(duì)較難,所以如果通過(guò)了各種手段強(qiáng)行實(shí)施TDD,而沒(méi)有主動(dòng)去擺正做TDD的意識(shí),甚至沒(méi)有足夠的技術(shù)能力,那么這樣的TDD就是一個(gè)倒三角,非常容易倒塌。

TDD倒三角

TDD倒三角

所以,如果不希望技術(shù)層面上的TDD隨時(shí)倒塌,就需要把這個(gè)倒三角補(bǔ)全,才能更好的、長(zhǎng)久的實(shí)施TDD。

3. 第三階段:有意識(shí)和主動(dòng)通過(guò)技術(shù)實(shí)現(xiàn)TDD

為了大規(guī)模以及有效的實(shí)施TDD,首先要突破思維意識(shí)的局限,認(rèn)識(shí)到TDD的普遍存在性和適用性,不要害怕和排斥TDD這種思維和開發(fā)模式。

其次要主動(dòng)學(xué)習(xí),并刻意練習(xí)TDD的技術(shù)實(shí)現(xiàn),提升自己的技術(shù)能力,從而在技術(shù)層面能更容易的實(shí)現(xiàn)TDD,擺脫被動(dòng)TDD的困境。其中學(xué)習(xí)的方法包括閱讀TDD相關(guān)的書籍和文章,書籍包括《測(cè)試驅(qū)動(dòng)開發(fā)》、《重構(gòu)》、《BDD In Action》以及《系統(tǒng)思考》等,從而充分理解TDD優(yōu)點(diǎn)和局限。

對(duì)于刻意練習(xí),一定要長(zhǎng)時(shí)間堅(jiān)持去做,讓其成為一種習(xí)慣。如果在項(xiàng)目中沒(méi)有合適的環(huán)境去練習(xí),還可以通過(guò)一些第三方的TDD練習(xí)系統(tǒng)去做刻意練習(xí),比如Cyber-dojo。只有大量的刻意練習(xí)才能讓你在真實(shí)的代碼編寫過(guò)程中去思考和理解TDD,去運(yùn)用你通過(guò)學(xué)習(xí)得到的知識(shí),最終才能做到有意識(shí)和主動(dòng)的通過(guò)技術(shù)去實(shí)現(xiàn)TDD,TDD的倒三角才能變成一個(gè)穩(wěn)定的磚塊,然后哪里需要往哪里搬。

TDD磚塊

TDD磚塊

4. 總結(jié)

綜上,大部分開發(fā)人員都應(yīng)該在做TDD,只不過(guò)他們是無(wú)意識(shí)的或者被動(dòng)的去實(shí)現(xiàn)的,只有少部分是有意識(shí)和主動(dòng)的去實(shí)現(xiàn)的。

既然人人都在做TDD,那么我們?yōu)槭裁床荒芎秃诳偷蹏?guó)里面的Neo一樣選擇紅色藥丸來(lái)認(rèn)清楚現(xiàn)實(shí),主動(dòng)擁抱TDD,并通過(guò)大量的刻意練習(xí)去改變自己的工作習(xí)慣,讓TDD成為自己工作習(xí)慣的一部分,這樣才能更好的提升軟件質(zhì)量,大大降低軟件維護(hù)成本。不管你信不信,反正我信了。

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2017-03-16 13:17:54

TDD代碼開發(fā)

2021-08-05 05:02:04

DPU數(shù)據(jù)中心Pensando

2021-08-27 07:06:10

IOJava抽象

2020-04-17 10:23:43

TDD測(cè)試驅(qū)動(dòng)

2022-06-26 09:40:55

Django框架服務(wù)

2022-02-14 07:03:31

網(wǎng)站安全MFA

2011-05-24 14:15:53

測(cè)試

2021-07-31 11:40:55

Openresty開源

2023-08-02 08:35:54

文件操作數(shù)據(jù)源

2022-08-01 07:57:03

數(shù)組操作內(nèi)存

2023-01-30 23:04:10

B-Treegolang優(yōu)化

2022-08-30 13:48:16

LinuxMySQL內(nèi)存

2021-11-04 06:58:31

CSS性能設(shè)備

2021-11-09 23:54:19

開發(fā)SMI Linkerd

2022-12-05 09:10:21

2017-03-27 21:59:57

TDD開發(fā)編程

2013-11-05 09:51:33

TDD4GTD-LTE

2010-08-25 12:06:18

LTEWiMAX

2014-04-09 11:13:37

測(cè)試驅(qū)動(dòng)開發(fā)

2009-07-08 09:44:54

TDDViual Studi
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲国产成人精品久久 | 国产日韩久久 | 99久久精品免费看国产小宝寻花 | 久久97精品| 国产在线精品一区二区三区 | 国产在线精品一区二区 | 中文字幕1区2区 | 欧美日韩一区二区在线观看 | 在线观看亚 | 在线成人精品视频 | 欧美日韩高清一区 | 成人在线日韩 | 亚洲女人天堂成人av在线 | 国产乱码久久久久久一区二区 | 四虎影 | 欧美中文在线 | 资源首页二三区 | 精品在线一区二区 | 欧美日韩成人影院 | 久久久久久久久久久久久久av | 久久久久成人精品亚洲国产 | 久久久久久久久久一区二区 | 久久专区 | 欧美日韩看片 | 日本欧美在线观看视频 | 亚洲在线久久 | 在线观看黄色电影 | 亚洲一二三区精品 | 91久久精品一区二区二区 | 国产精品成人一区 | 久久之精品| 免费视频一区二区 | 国产一级片一区二区三区 | 久久这里只有精品首页 | 国产日产精品一区二区三区四区 | 97人人澡人人爽91综合色 | 天天草视频 | 亚洲iv一区二区三区 | 色综合激情 | 51ⅴ精品国产91久久久久久 | 欧美一区二区小视频 |