是否使用TDD(測試驅動開發)進行UI開發
問題
StackOverflow上有一則是否使用TDD(測試驅動開發)進行UI開發 的提問。
JacobE問:
對於是否使用TDD進行開發UI這件事,我想了很久,但難以決定。我想聽聽你們的意見。
回答
kdgregory的回答(23票贊同)
試圖測試UI元件的放置是沒有意義的,首先因為UI佈局是主觀的,所以應該由人來測試。其次,隨著UI改動,你要不斷地重寫測試。 同樣,沒必要測試你所使用GUI庫的元件,它們已經被非常多的人測試過了。如果你寫了新的UI元件,倒是可以測一測。 你應該測試的是GUI下面的程式行為:控制器和模型部分。朝這個方向努力,你就會開始關心元件分離。為了方便測試,你會讓你的模型部分和控制器和你的UI儘量解耦。
bangroot的回答(8票贊同)
當我使用自動化測試去測試UI的外觀風格時,我發現這是最大的“過度工程”。我的建議是:不要!把你的測試重心轉移到程式的行為上吧,至於程式的UI,留給測試團隊去做吧。關鍵是把你的精力用在高收益的行為上,自動化的UI測試不僅不會增加價值,還會讓你負債!
Brian Rasmussen的回答(5票贊同)
TDD的作用就是讓你的邏輯程式碼和你的GUI程式碼分離。如果你這樣做了,你會發現很容易用TDD建立邏輯程式碼。如果你的邏輯程式碼分離得好,在它之上你完全可以建立另一套UI。
Harald Scheirich(4票贊同)
我從來不用TDD做任何UI佈局的事情,因為花的時間太不值。
後面的解答不一一列舉。
結論
關於這個問題的回答基本是一邊倒的結論:沒必要把精力放在UI的自動化測試上。原因可歸結為以下兩點:
- 不合理。“因為UI佈局是主觀的,所以應該由人來測試。”
- 不划算。對於UI的自動化測試,要花費很大的努力和很多的時間,隨著UI改動,測試也要改動。工作量太大。明顯不如由人來測試UI划算。
根據以上的討論,我的結論是:
- TDD是輔助設計的一種方法,但不是唯一的方法。當我做UI佈局時,寫CSS時,沒必要TDD。
- TDD應該針對程式的行為,而不是程式的外觀。TDD的目標寫出依賴儘量少的,方便測試的功能模組。
相關文章
- Swift 進階開發指南:如何使用 Quick、Nimble 執行測試驅動開發(TDD)SwiftUI
- TDD(測試驅動開發)死了嗎?
- 測試驅動開發(TDD)例項演示
- 測試驅動開發(TDD)實戰心得 - DeniMoka
- 使用 TDD 測試驅動開發來構建 Laravel REST APILaravelRESTAPI
- 測試驅動開發(TDD)總結——原理篇
- 變異測試是測試驅動開發(TDD)的演變
- 使用Spring Boot REST API進行測試驅動開發Spring BootRESTAPI
- 測試驅動開發(TDD)—— 資料庫查詢篇資料庫
- 測試驅動開發TDD | IDCF FDCC認證學員作品
- 採用測試驅動開發理念(Test Driven Development)進行 SAP UI5 應用的功能開發(一)devUI
- 採用測試驅動開發理念(Test Driven Development)進行 SAP UI5 應用的功能開發(二)devUI
- 談“測試驅動的開發”
- Go 語言:透過TDD測試驅動開發學習 Mocking (模擬)的思想GoMock
- 什麼是測試驅動開發
- Laravel 測試驅動開發 -- 正向單元測試Laravel
- 探索AI驅動Web開發動態UIAIWebUI
- Python 實現行為驅動開發 (BDD) 自動化測試詳解Python
- 測試開發之單元測試-禪道結合ZTF驅動單元測試執行
- 驅動開發目標測試機器設定
- Fitness function-driven development(測試驅動開發) 翻譯Functiondev
- 測試驅動開發在專案中的實踐
- 驅動開發:配置Visual Studio驅動開發環境開發環境
- 使用Devstack進行開發dev
- 使用 Devstack 進行開發dev
- 使用者行為驅動開發(UserAction Driven Development)dev
- 開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 專案開發中,如何使用eolinker進行環境管理:開發、測試和生產環境
- 探索 Android TDD 開發方法Android
- 使用容器Docker進行開發Docker
- 使用eclipse 進行 Cesium 開發Eclipse
- 【星雲測試】開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- Linux驅動開發: Ubuntu(PC機)系統上編譯驅動並載入測試LinuxUbuntu編譯
- 解放雙手 - Android 開發應該嘗試的 UI 自動化測試AndroidUI
- 進軍測試開發工程師之路~工程師
- 驅動開發入門
- 推薦一款基於業務行為驅動開發(BDD)測試框架:Cucumber!框架
- Minikube:使用 Kubernetes 進行本地開發
- VSCode使用LSP進行Swift開發VSCodeSwift