国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

測試計劃驅(qū)動開發(fā)模式 TPDD:一種比 TDD 更友好的開發(fā)模式

0
分享至


作者 | 臧嘉瑋

你所在的開發(fā)團(tuán)隊使用 TDD 嗎?

——想必很多人的回答是肯定的,與此同時,還有很多開發(fā)團(tuán)隊都對外聲明在使用 TDD 開發(fā)模式。

之所以說是“對外聲明”,是因為很多開發(fā)團(tuán)隊雖然號稱使用的是 TDD 開發(fā)模式,實際開發(fā)過程中卻無法滿足 TDD 的要求。

實際上,測試驅(qū)動的開發(fā)模式確實有效,它將可能發(fā)生的問題用測試代碼預(yù)先解決,只有通過測試代碼后的代碼才是可以接受。當(dāng)前有很多公司都在應(yīng)用 TDD,但 TDD 并不是一個開發(fā)者友好的開發(fā)模式,只是一個理想化的開發(fā)模式。

為什么 TDD 不是一個開發(fā)者友好的開發(fā)方式?

大家都知道 TDD 是什么,可是試問所有的開發(fā)者能保證每次開發(fā)過程中會滿足 TDD 的要求嗎?

聽聽大家的聲音:


  • 測試也只是保證腦內(nèi)想法轉(zhuǎn)成代碼的時候,邏輯自洽

  • Lots of people on the internet talk about how good TDD is, but people were afraid to say it wasn’t working for them.

  • 沒有 deadline 的威脅,我很喜歡 TDD,但是過度測試是存在

  • 大多數(shù)程序員還不會寫測試用例

  • 看起來容易,但是做起來難

  • Yes. TDD 該死。TDD 死了,T 才能正常 T,程序員做正常人,團(tuán)隊做正常團(tuán)隊。TDD 死,不是因為程序員達(dá)不到它的要求,是它沒打算尊重程序員,尊重開發(fā)實際。TDD 本末倒置的價值觀,非生產(chǎn)代碼統(tǒng)治生產(chǎn)代碼,沒理解問題就想對問題高屋建瓴,TDD 是碼農(nóng)界的納粹,流程方法論原教旨主義。

  • TDD 是否已死先不說,很多程序員連寫出基本的整潔代碼都做不到,還能指望他先寫測試嗎

  • 新手看到 TDD 會歡欣鼓舞,但是他們沒有能力來實踐。老手們在項目的壓力下,早就麻木了,先寫 case 還不如寫好代碼再補 case 呢,很多東西我還沒時間想清楚,怎么寫 case?不如先寫個小功能先,邊寫邊改

  • 其實我們所有一切的目的是為了快速的交付有價值,有質(zhì)量的產(chǎn)品或者服務(wù),贏得公司的生存和發(fā)展空間。為了達(dá)到這個目的,我們有很多種的手段。但手段不是目的。

  • 以國內(nèi)的敏捷實踐來講,完全達(dá)不到 TDD 的要求

  • TDD 力量和問題都源自 test first。要能 test first,寫代碼之前要想得更清楚;代碼得要有良好的可測試性

  • 導(dǎo)致其寫的代碼是為了滿足測試的,而忽略了代碼質(zhì)量和實際需求

  • 不過,我還真是見過使用 TDD 開發(fā)的不錯的項目,只不過那個項目比較簡單了。更多的情況下,我看到的是教條式的生硬的 TDD,所以,不奇怪地聽到了程序員們的抱怨——“自從用了 TDD,工作量更大了”。當(dāng)然,這也不能怪他們,TDD 本來就是很難把控的方法。

  • 等等等等


來自于網(wǎng)絡(luò)

我相信很多人都做不到,現(xiàn)在更多的開發(fā)者做的更多的是 Unit Test,就是寫業(yè)務(wù)代碼完了之后再寫(單元)測試,而這個 Unit Testing 單元測試與 TDD 測試驅(qū)動開發(fā) 的結(jié)果一致,即兩者都保證了功能通過了測試,兩者結(jié)果一樣為什么還給自己添麻煩,提前寫測試代碼呢?

還有些開發(fā)者由于水平不足;或是不會測試;有些項目非常緊急根本沒時間做測試。

很多開發(fā)者都很反感 TDD,至少是在潛意識中很反感(除了自身每天用不著 TDD 那些人); 試想你在小時候,每天上學(xué)前媽媽都會在耳邊絮叨都要你小心,然后告訴你每一步的步驟,每一步都要正確,有時候真的很煩,于是我們左耳朵進(jìn)右耳朵出,就會不耐煩的說“好了,好了,我知道了”;程序員也是一樣的,對于很繁瑣的一些開發(fā)模式他們會糊弄過去,方法之一就是先寫完業(yè)務(wù)代碼,完成業(yè)務(wù)再說測試,寫完后再寫單元測試,把 TDD 給搪塞過去。

可是你知道你媽媽對你是好的,而且她在養(yǎng)你,所以就沒說什么;程序員和公司的關(guān)系與之很相似,公司也在養(yǎng)你,它希望你寫的代碼是好的,是可靠的,所以它要求你用 TDD 的方式編寫代碼。

TDD 看似有效,但是開發(fā)者的普遍不愿意做,并且很容易造假(很多人都是先寫完代碼,再寫測試代碼),而且無法監(jiān)督開發(fā)者是否采用 TDD 這種開發(fā)模式,也就是說 TDD 是理想化的開發(fā)模式,如果要執(zhí)行起來是最好不過的,但是真正嚴(yán)格執(zhí)行的團(tuán)隊又有多少呢?確定所有的開發(fā)人員都嚴(yán)格執(zhí)行嗎?

由此得知,TDD 是非常理想化的開發(fā)模式,只有特定的程序員、團(tuán)隊、產(chǎn)品和公司才適合這種理想化的開發(fā)模式

除了 TDD,我們還有哪些替代方案?

有,目前有種開發(fā)模式正在被一些公司的部門使用,就是Test Plan Driven Development,即測試計劃驅(qū)動開發(fā)模式,或是 Test Pre-Requisition Driven Development,即測試前提驅(qū)動開發(fā)。

TPDD 到底是什么?

相比每次開發(fā)之前先寫測試代碼,我們可以讓開發(fā)人員參與編寫測試計劃,也就是說,在收到項目需求時,開發(fā)者需要幫助測試人員根據(jù)項目需求思考測試計劃,并起草測試計劃 A (或者叫做開發(fā)承諾 -Development Promise),然后再進(jìn)行開發(fā)。


由于開發(fā)者需要跟測試人員合作,開發(fā)者相對于測試人員更加了解項目需求,測試計劃更多的依賴于開發(fā)者,而測試計劃、開發(fā)承諾是受到審查的;所以也造不了假,對于團(tuán)隊 lead 負(fù)責(zé)人而言是可監(jiān)控、可調(diào)查的。

適用對象

  • 不喜歡怎么 TDD 開發(fā)模式的開發(fā)者,和相關(guān)的團(tuán)隊和企業(yè)

  • 沒有嚴(yán)格要求按照 TDD,然而對外聲稱使用 TDD 開發(fā)模式的開發(fā)者,和相關(guān)團(tuán)隊和企業(yè)

  • 執(zhí)行了 TDD 這種開發(fā)模式,然而質(zhì)量沒有明顯的提高的團(tuán)隊和企業(yè)

  • 使用 TDD 導(dǎo)致開發(fā)效率降低的團(tuán)隊和企業(yè)

  • 開發(fā)者不喜歡 TDD 這種開發(fā)模式,嫌麻煩,但是還想要保證代碼質(zhì)量的團(tuán)隊或企業(yè)

  • 開發(fā)者沒有足夠的能力進(jìn)行 TDD 的團(tuán)隊和企業(yè)

  • 產(chǎn)品的截止日期很緊張的企業(yè)

  • 初創(chuàng)團(tuán)隊和企業(yè)

  • 正在上升期的團(tuán)隊和企業(yè)

  • 還沒有應(yīng)用 TDD 這種開發(fā)模式,但是準(zhǔn)備使用 TDD 的團(tuán)隊或企業(yè)

什么是開發(fā)承諾和測試計劃 A

開發(fā)承諾類似于 design doc,不過其中講述了開發(fā)者必須完成的功能,需要做的功能以及可選做的功能,并且還提供了測試人員需要做的事情。

開發(fā)承諾 — 測試計劃 A 如下所示:

  • Must Have – Critical Check Points

    • 測試人員重點測試的功能點,并且 adhoc test,有能力的團(tuán)隊需要加入自動化測試

    • 必須要全部完成的功能點,不完成工作沒有完成

  • Need Have – Important Check Points

    • 測試人員重點測試的功能點

    • 重要的功能點,必須要完成絕大部分的功能,沒有完成絕大部分,工作沒有完成

  • Should Have – Optional Check Points

    • 測試人員手動測試

    • 可選的功能,開發(fā)者可選

開發(fā)承諾和測試計劃 A 有什么作用?

  • 開發(fā)承諾 測試計劃 A 的第一個作用是,開發(fā)者 (測試者) 對于任務(wù)的優(yōu)先級有很清晰的認(rèn)識

    • 為了給開發(fā)者自己看的(或是其他開發(fā)者,假如開發(fā)者離職或是請假,其他開發(fā)者就可以看測試計劃迅速開發(fā)),作為開發(fā)時的指導(dǎo)手冊,這樣開發(fā)者的頭緒就更加清晰,也知道任務(wù)的優(yōu)先級 ---- 先做什么,后做什么。

    • 為了給測試人員看的,作為測試的指導(dǎo)手冊,這樣測試人員就知道什么功能需要重點測試、什么東西需要進(jìn)行實驗性的測試,以及什么功能需要實現(xiàn)測試自動化以便于加入到 CI 和 CD 之中。

  • 開發(fā)承諾 測試計劃 A 的第二個作用是,承諾使開發(fā)者的開發(fā)過程更加小心

    • 將測試計劃 A 交給測試人員和開發(fā)組長,利用心理學(xué)中“承諾”作用,使自己的言行和承諾一致。這樣的話,開發(fā)人員就知道自己的 code 至少要滿足什么條件,至少要過什么樣的測試,所以開發(fā)時會更加小心,代碼的質(zhì)量和可靠性也會得到很高的提升。

  • 開發(fā)承諾 測試計劃 A 的第三個作用是,促進(jìn)測試人員的工作進(jìn)度,使測試人員有更多的時間進(jìn)行自動化、adhoc 測試或是運維方面的工作

    • 測試人員會根據(jù)測試計劃 A 起草測試計劃 B,只需要在測試計劃 B 中添加如何進(jìn)行測試即可。

參考:一旦我們做出了某種承諾,或是選擇了某種立場,就會在個人和外部環(huán)境的壓力下,迫使自己的言行與承諾保持一致,盡管這種行為有悖于自己的意愿。

TDD 和 TPDD 有什么區(qū)別?

TDD 的優(yōu)缺點

TDD 是先寫測試代碼,判斷業(yè)務(wù)代碼是否可以通過測試代碼??此朴行?,但是開發(fā)者的普遍不愿意做,或是完成度很差,或是做了之后導(dǎo)致沒有按時完成任務(wù);并且很容易造假,很多人都是先寫完代碼,再寫測試代碼;或者測試代碼質(zhì)量不高;或是測試用例不好。

對于管理者而言,他們無法監(jiān)督開發(fā)者是否有效的沿用 TDD 這種開發(fā)模式,完全體現(xiàn)不了 TDD 的優(yōu)勢。

TPDD 的優(yōu)缺點


  • 提高代碼質(zhì)量

  • TPDD 是先寫開發(fā)承諾,使開發(fā)者對測試用例和測試環(huán)境有清晰的認(rèn)識,思維會更加清晰有條理;并且由于承諾的心理作用,開發(fā)者會潛移默化的提高代碼質(zhì)量。

  • 可監(jiān)控和不可造假

  • 因為測試人員需要根據(jù)開發(fā)者的開發(fā)承諾編寫測試計劃,可以使管理者很直接的監(jiān)督開發(fā)者是否采用 TPDD 這種開發(fā)模式(通過審查開發(fā)承諾),所以不可能造假。

  • 有時間進(jìn)行其他方面的提升,例如自動化、運維等

  • 由于開發(fā)者和測試者已經(jīng)將基本的開發(fā)承諾—測試計劃 B 寫出來了,對于測試者來說將會用更少的時間做功能的理解和測試的準(zhǔn)備,這將給測試人員更多的時間進(jìn)行 adhoc 測試、自動化測試或是運維功能的開發(fā)和維護(hù)。

  • 更好的接受 TDD

  • 由于開發(fā)者已經(jīng)接觸了測試,使用 TPDD 后的團(tuán)隊會更好的接受 TDD,這時 TPDD 又可以被稱為 Test pre-requisition Driven Development。

  • 對開發(fā)者友好

  • 相對于每次開發(fā)之前寫測試代碼,只需要與測試人員想出測試用例,對于開發(fā)者來說這是更加容易的

  • 對測試人員友好

  • 因為與開發(fā)者的直接合作,測試的準(zhǔn)備的難度大大的降低,測試計劃和測試用例的思考時間縮短,并且有時間空余去做一些自動化或是運維方面的工作。

  • 對管理人員友好

  • 由于開發(fā)承諾和測試計劃的實體化,管理人員就可以提前進(jìn)行審查,而不是等待開發(fā)結(jié)束后進(jìn)行代碼審查(code review)


TDD is dead. Long live testing.(http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html)

Is TDD Dead?(https://martinfowler.com/articles/is-tdd-dead/)

TDD(測試驅(qū)動開發(fā))是否已死?(https://www.zhihu.com/question/37623307)

TDD 并不是看上去的那么美 (https://coolshell.cn/articles/3649.html)

心理學(xué)參考 之 承諾和一致原理 (https://wiki.mbalib.com/wiki/%E6%89%BF%E8%AF%BA%E5%92%8C%E4%B8%80%E8%87%B4%E5%8E%9F%E7%90%86)

作者介紹

臧嘉瑋 Vigor Zang,TPDD 的發(fā)明者和布道者,主要研究方向為自動化系統(tǒng)和 Web Development。曾就職于 IBM Watson Commerce 組,主要負(fù)責(zé)自動化測試和前端開發(fā),任職期間受 Watson Commerce Insight 組的邀請,負(fù)責(zé)測試流程和測試基礎(chǔ)設(shè)施的建設(shè),包括測試框架、測試工具和性能檢測和預(yù)警系統(tǒng)的架構(gòu)、開發(fā)和維護(hù)。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點推薦
歐洲天然氣價格漲幅擴(kuò)大至42%,創(chuàng)2022年3月以來最大漲幅

歐洲天然氣價格漲幅擴(kuò)大至42%,創(chuàng)2022年3月以來最大漲幅

每日經(jīng)濟(jì)新聞
2026-03-02 20:22:09
伊朗人拿的清末劇本,答案在我們中學(xué)課本

伊朗人拿的清末劇本,答案在我們中學(xué)課本

鑒茶院
2026-03-03 08:03:31
伊朗最高國家安全委員會秘書:已為長期戰(zhàn)爭做好準(zhǔn)備

伊朗最高國家安全委員會秘書:已為長期戰(zhàn)爭做好準(zhǔn)備

財聯(lián)社
2026-03-02 20:44:25
中東激戰(zhàn),日本相當(dāng)難受!

中東激戰(zhàn),日本相當(dāng)難受!

環(huán)球時報國際
2026-03-02 21:31:30
“以為是六個博士,結(jié)果是六個送外賣的!”六個兒子征婚視頻火了

“以為是六個博士,結(jié)果是六個送外賣的!”六個兒子征婚視頻火了

阿凱銷售場
2026-03-01 01:46:42
痛心!深圳一醫(yī)院工地出事,張某才(男,29歲,汕頭人)身亡,事故原因公布

痛心!深圳一醫(yī)院工地出事,張某才(男,29歲,汕頭人)身亡,事故原因公布

南方都市報
2026-03-02 23:28:00
43歲阿Sa承認(rèn)與男友同居,已帶男友見過家長,疑好事將近

43歲阿Sa承認(rèn)與男友同居,已帶男友見過家長,疑好事將近

扒蝦侃娛
2026-03-02 22:27:05
這條無恥新聞,引起公憤了!

這條無恥新聞,引起公憤了!

胖胖說他不胖
2026-03-02 12:58:07
椰樹集團(tuán)被約談,不能任由其將低俗進(jìn)行到底

椰樹集團(tuán)被約談,不能任由其將低俗進(jìn)行到底

極目新聞
2026-03-03 09:00:42
慘遭15分大逆轉(zhuǎn)!女籃霸主加時3分惜敗:楊力維空砍14分3板4助!

慘遭15分大逆轉(zhuǎn)!女籃霸主加時3分惜?。簵盍S空砍14分3板4助!

籃球快餐車
2026-03-03 01:57:58
英媒:歐美要死死守住這5項技術(shù),一旦被中國突破那將勢不可擋

英媒:歐美要死死守住這5項技術(shù),一旦被中國突破那將勢不可擋

林子說事
2026-03-03 01:07:19
央視首次曝光!每臺4億美元重180噸,全世界最先進(jìn)光刻機(jī)揭開面紗

央視首次曝光!每臺4億美元重180噸,全世界最先進(jìn)光刻機(jī)揭開面紗

凡知
2026-03-03 01:52:38
衛(wèi)星證實!林肯號航母被伊朗導(dǎo)彈襲擊時,進(jìn)行90度機(jī)動規(guī)避!

衛(wèi)星證實!林肯號航母被伊朗導(dǎo)彈襲擊時,進(jìn)行90度機(jī)動規(guī)避!

52赫茲實驗室
2026-03-02 21:00:37
美軍再度動用B-2轟炸伊朗,加固導(dǎo)彈基地是首批目標(biāo)

美軍再度動用B-2轟炸伊朗,加固導(dǎo)彈基地是首批目標(biāo)

中國青年報
2026-03-02 11:33:08
內(nèi)塔尼亞胡辦公室遭猛烈襲擊!伊朗:摧毀美國一總領(lǐng)館及一軍事基地,擊落3架美軍機(jī)

內(nèi)塔尼亞胡辦公室遭猛烈襲擊!伊朗:摧毀美國一總領(lǐng)館及一軍事基地,擊落3架美軍機(jī)

新民晚報
2026-03-02 19:04:01
男子送相親對象回家遇其忘帶鑰匙,開房遭拒后女子怒斥男子真沒用

男子送相親對象回家遇其忘帶鑰匙,開房遭拒后女子怒斥男子真沒用

朗威談星座
2026-03-02 16:54:30
所有發(fā)達(dá)國家都有一個共性:人工很貴,勞動很值錢。

所有發(fā)達(dá)國家都有一個共性:人工很貴,勞動很值錢。

流蘇晚晴
2026-01-27 18:18:22
油價或飆升至每桶130美元?伊朗警告:若油氣設(shè)施遭襲,將摧毀地區(qū)所有國家油氣設(shè)施

油價或飆升至每桶130美元?伊朗警告:若油氣設(shè)施遭襲,將摧毀地區(qū)所有國家油氣設(shè)施

紅星新聞
2026-03-02 11:33:13
記者:沙特足協(xié)與參加亞冠球隊的代表開會,商討后續(xù)賽程解決方案

記者:沙特足協(xié)與參加亞冠球隊的代表開會,商討后續(xù)賽程解決方案

懂球帝
2026-03-03 00:25:10
為什么科學(xué)家說:如果宇宙中只有人類,比找到外星人更可怕?

為什么科學(xué)家說:如果宇宙中只有人類,比找到外星人更可怕?

觀察宇宙
2026-03-01 20:46:19
2026-03-03 10:11:00
InfoQ incentive-icons
InfoQ
有內(nèi)容的技術(shù)社區(qū)媒體
12095文章數(shù) 51783關(guān)注度
往期回顧 全部

科技要聞

蘋果iPhone17e發(fā)布:4499元起 升級A19芯片

頭條要聞

牛彈琴:多國對轟炸保持沉默 西班牙首相確實是條漢子

頭條要聞

牛彈琴:多國對轟炸保持沉默 西班牙首相確實是條漢子

體育要聞

伯納烏8萬人暴怒!高呼78歲老佛爺下課

娛樂要聞

李亞鵬與哥哥和解 只有一條真心話短信

財經(jīng)要聞

霍爾木茲海峽近乎停擺 布油直逼80美元

汽車要聞

國民SUV再添一員 瑞虎7L靜態(tài)體驗

態(tài)度原創(chuàng)

家居
旅游
本地
數(shù)碼
房產(chǎn)

家居要聞

萬物互聯(lián) 享科技福祉

旅游要聞

打造沉浸式元宵體驗 萬寧推出六大特色活動

本地新聞

津南好·四時總相宜

數(shù)碼要聞

小米靠規(guī)模和高端應(yīng)對!盧偉冰:內(nèi)存漲價將影響消費電子所有玩家 持續(xù)到2027年

房產(chǎn)要聞

方案突然曝光!??诒睅煷蟾叫?,又有書包大盤殺出!

無障礙瀏覽 進(jìn)入關(guān)懷版