是否使用TDD(測(cè)試驅(qū)動(dòng)開發(fā))進(jìn)行UI開發(fā)

問題

StackOverflow上有一則是否使用TDD(測(cè)試驅(qū)動(dòng)開發(fā))進(jìn)行UI開發(fā) 的提問。

JacobE問:

對(duì)于是否使用TDD進(jìn)行開發(fā)UI這件事,我想了很久,但難以決定。我想聽聽你們的意見。

回答

kdgregory的回答(23票贊同)

試圖測(cè)試UI組件的放置是沒有意義的,首先因?yàn)閁I布局是主觀的,所以應(yīng)該由人來測(cè)試。其次,隨著UI改動(dòng),你要不斷地重寫測(cè)試。
同樣,沒必要測(cè)試你所使用GUI庫的組件,它們已經(jīng)被非常多的人測(cè)試過了。如果你寫了新的UI組件,倒是可以測(cè)一測(cè)。
你應(yīng)該測(cè)試的是GUI下面的程序行為:控制器和模型部分。朝這個(gè)方向努力,你就會(huì)開始關(guān)心組件分離。為了方便測(cè)試,你會(huì)讓你的模型部分和控制器和你的UI盡量解耦。

bangroot的回答(8票贊同)

當(dāng)我使用自動(dòng)化測(cè)試去測(cè)試UI的外觀風(fēng)格時(shí),我發(fā)現(xiàn)這是最大的“過度工程”。我的建議是:不要!把你的測(cè)試重心轉(zhuǎn)移到程序的行為上吧,至于程序的UI,留給測(cè)試團(tuán)隊(duì)去做吧。關(guān)鍵是把你的精力用在高收益的行為上,自動(dòng)化的UI測(cè)試不僅不會(huì)增加價(jià)值,還會(huì)讓你負(fù)債!

Brian Rasmussen的回答(5票贊同)

TDD的作用就是讓你的邏輯代碼和你的GUI代碼分離。如果你這樣做了,你會(huì)發(fā)現(xiàn)很容易用TDD建立邏輯代碼。如果你的邏輯代碼分離得好,在它之上你完全可以建立另一套UI。

Harald Scheirich(4票贊同)

我從來不用TDD做任何UI布局的事情,因?yàn)榛ǖ臅r(shí)間太不值。

后面的解答不一一列舉。

結(jié)論

關(guān)于這個(gè)問題的回答基本是一邊倒的結(jié)論:沒必要把精力放在UI的自動(dòng)化測(cè)試上。原因可歸結(jié)為以下兩點(diǎn):

  1. 不合理?!耙?yàn)閁I布局是主觀的,所以應(yīng)該由人來測(cè)試。”
  2. 不劃算。對(duì)于UI的自動(dòng)化測(cè)試,要花費(fèi)很大的努力和很多的時(shí)間,隨著UI改動(dòng),測(cè)試也要改動(dòng)。工作量太大。明顯不如由人來測(cè)試UI劃算。

根據(jù)以上的討論,我的結(jié)論是:

  1. TDD是輔助設(shè)計(jì)的一種方法,但不是唯一的方法。當(dāng)我做UI布局時(shí),寫CSS時(shí),沒必要TDD。
  2. TDD應(yīng)該針對(duì)程序的行為,而不是程序的外觀。TDD的目標(biāo)寫出依賴盡量少的,方便測(cè)試的功能模塊。

2015-02-12 周四


如果你喜歡我的文章,可以點(diǎn) 這里 給我打賞,五分一毛也是對(duì)我的認(rèn)同。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容