自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

測試驅(qū)動開發(fā)應(yīng)該是一種思維而不僅是實踐

開發(fā)
測試驅(qū)動開發(fā)可以在很多環(huán)節(jié)里體現(xiàn),同樣,我們也可以主觀地把TDD的思維運用到各個環(huán)節(jié)當(dāng)中去。

相信對敏捷熟悉的朋友對測試驅(qū)動開發(fā)(TDD)的概念都不會陌生。測試驅(qū)動開發(fā)強調(diào)通過預(yù)定義的測試標(biāo)準(zhǔn)驅(qū)動開發(fā)寫出符合標(biāo)準(zhǔn)的代碼。不過現(xiàn)在越來越多人會把TDD等同于單元測試驅(qū)動開發(fā),即UTDD。我并不否認(rèn)UTDD的價值,不過我更想強調(diào)應(yīng)該把TDD當(dāng)作一種思維。TDD的思維其實非常合理,做任何事情都應(yīng)該有一個預(yù)期的目標(biāo)和標(biāo)準(zhǔn),如果目標(biāo)和標(biāo)準(zhǔn)不清晰,就很難確保產(chǎn)出的價值。

“The original description of TDD was in an ancient book about programming. It said you take the input tape, manually type in the output tape you expect, then program until the actual output tape matches the expected output. After I’d written the first xUnit framework in Smalltalk I remembered reading this and tried it out. That was the origin of TDD for me. When describing TDD to older programmers, I often hear, “Of course. How else could you program?” Therefore I refer to my role as ‘rediscovering’ TDD.”

—Kent Beck, re-discoverer and namer of Test-Driven Development

從Kent Beck的表述來看,TDD最初也更像是一種思維,并且應(yīng)該是理所當(dāng)然的做事方式。

回到研發(fā)工作當(dāng)中,測試驅(qū)動開發(fā)可以在很多環(huán)節(jié)里體現(xiàn),同樣,我們也可以主觀地把TDD的思維運用到各個環(huán)節(jié)當(dāng)中去。例如:

契約測試

契約測試是期望消費者和提供者之間基于預(yù)先定義的契約進(jìn)行協(xié)作的實踐。所以我們可以認(rèn)為契約測試符合測試驅(qū)動開發(fā)的思維,這樣的協(xié)作過程規(guī)范了寫作標(biāo)準(zhǔn),避免了傳統(tǒng)的口頭或文檔承諾帶來的交付結(jié)果與預(yù)期不匹配的問題。

需求驗收標(biāo)準(zhǔn)

在敏捷團隊中教練會經(jīng)常強調(diào)驗收標(biāo)準(zhǔn)的重要性,而實際上驗收標(biāo)準(zhǔn)對任何一個團隊都不可忽略。驗收標(biāo)準(zhǔn)在需求梳理過程中,迭代計劃階段都成為團隊參考的重要依據(jù)。而在Thoughtworks推行的實踐中,“開卡”也是把驗收標(biāo)準(zhǔn)的價值進(jìn)一步延伸的實踐。

“開卡”的做法是在具體的開發(fā)人員準(zhǔn)備開發(fā)某一個用戶故事之前,需要基于自己對需求的理解并結(jié)合驗收標(biāo)準(zhǔn)向產(chǎn)品、測試以及相關(guān)人員講述對需求的理解。通過這種方式對齊需求驗收標(biāo)準(zhǔn),降低功能開發(fā)產(chǎn)生偏差的風(fēng)險,同時也是質(zhì)量內(nèi)建的有力措施。當(dāng)然,除了開卡之外,還有行為驅(qū)動開發(fā)(BDD)等實踐都是把驗收標(biāo)準(zhǔn)與研發(fā)過程有效結(jié)合的實踐。而類似的實踐都符合測試驅(qū)動開發(fā)的思維。

標(biāo)準(zhǔn)驅(qū)動

通過以上的實踐我們能理解測試驅(qū)動開發(fā)的思維,會強調(diào)先有參考標(biāo)準(zhǔn),再基于標(biāo)準(zhǔn)去實現(xiàn)交付。自然我們也可以把這種思維進(jìn)一步擴展到更多的層面,比如通過預(yù)定義的標(biāo)準(zhǔn)驅(qū)動團隊的行為。而在現(xiàn)實情況下卻也并不容易。

不管哪種場景下,遇到的第一個問題就是如何制定標(biāo)準(zhǔn)、如何確保達(dá)成共識的標(biāo)準(zhǔn)、標(biāo)準(zhǔn)如何保持更新。

很多團隊對標(biāo)準(zhǔn)的第一印象往往是固化了大家的行為,對團隊要求又提高了,推廣時阻礙太多等等。而基于這些擔(dān)心和固有印象一直守著原有的工作模式不想改變。

第二個關(guān)鍵點則是如何驅(qū)動。標(biāo)準(zhǔn)驅(qū)動在有了標(biāo)準(zhǔn)之后面對的就是如何產(chǎn)生驅(qū)動力的問題。我也見過太多的團隊標(biāo)準(zhǔn)都是有的,卻發(fā)現(xiàn)總是不能按照標(biāo)準(zhǔn)執(zhí)行。有人說標(biāo)準(zhǔn)不適合自己,有人說標(biāo)準(zhǔn)太多影響現(xiàn)有工作,也有人說標(biāo)準(zhǔn)增加了工作復(fù)雜性。所以,往往在標(biāo)準(zhǔn)沒有執(zhí)行之前就被否定了。而讓團隊愿意依據(jù)標(biāo)準(zhǔn)執(zhí)行無非從兩個角度入手:

第一是標(biāo)準(zhǔn)要與團隊甚至個人痛點相結(jié)合;

第二是標(biāo)注的產(chǎn)出要獲得團隊的共識和認(rèn)可。

回到本文主題上,測試驅(qū)動開發(fā)的運用是在理解測試驅(qū)動開發(fā)思維的前提下,找到適合的場景運用適合的實踐的過程。從我們比較熟知的UTDD到ATDD,再到BDD以及本文延伸出的很多觀點,都不是對所有團隊通用的。與敏捷本身類似,思維永遠(yuǎn)是實踐的基礎(chǔ)!

責(zé)任編輯:龐桂玉 來源: 敏捷DevOps那些事兒
相關(guān)推薦

2022-06-16 15:36:37

攻擊面管理ASM

2017-08-24 09:12:55

騰訊云存儲

2022-09-22 07:50:12

數(shù)據(jù)庫運營商日檢

2022-09-27 08:04:37

Adapter?設(shè)計模式

2022-12-21 17:17:24

2019-03-20 20:26:41

微隔離防火墻

2011-08-04 11:02:51

交換機Nexus思科

2020-08-29 18:32:21

物聯(lián)網(wǎng)投資物聯(lián)網(wǎng)IOT

2009-11-05 15:53:32

無線局域網(wǎng)

2024-09-19 13:04:41

2023-07-10 18:30:48

2019-11-06 11:31:26

刷臉支付支付寶互聯(lián)網(wǎng)

2022-06-21 10:04:25

比特幣去中心化金融體系

2019-07-10 15:10:14

高性能服務(wù)器架構(gòu)

2014-07-17 10:35:31

游戲引擎代碼工具

2017-03-21 15:20:11

數(shù)據(jù)團隊模式思路

2017-02-28 11:13:36

華為

2023-09-26 11:28:08

代碼注釋軟件開發(fā)

2011-08-04 14:06:25

安全SOC安全運營
點贊
收藏

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