關於TDD和BDD

這裏是關於TDD和BDD的我的區別理解,不喜勿噴框架

要理解這兩個技術的區別,首先要對這兩個技術自身有一個瞭解,在這裏簡單介紹一下:工具


TDD(測試驅動開發 Test Driven Development)

TDD是敏捷開發中的一項核心實踐和技術,也是一種設計方法論。原理呢,是在開發功能代碼以前,先編寫單元測試用例代碼,測試代碼是要根據需求的產品來編寫的代碼。單元測試

TDD的基本思路就是經過測試來推進整個開發的進行。 // ! (測試驅動開發不是簡單的測試,是須要把需求分析、設計和質量控制量化的過程)測試

我的理解爲:測試驅動開發就是,在瞭解需求功能以後,制定了一套測試用例代碼,這套測試用例代碼對你的需求(對象、功能、過程、接口等)進行設計,測試框架能夠持續進行驗證。就像是在畫畫以前先畫好了基本的輪廓,來保證可以畫成你想要的東西。設計

TDD的優勢是:對象

  1. 過程當中能夠檢測,因此在不一樣的開發階段均可以穩健開發(就是沒啥大問題)。
  2. 大體方向明確,開發有一個正確的導向;而測試在測試階段沒必要要和開發隔絕,只須要擬定一個驗收條件便可,節省時間。

TDD的缺點是:接口

  1. 代碼複雜。
  2. 明確導向,是須要一個確切的目標才能作到,目標要是瞬息萬變,就會增長不少的問題。

BDD(行爲驅動開發 Behavior Driven Development)

BDD是在應用程序存在以前,寫出用例與指望,從而描述應用程序的行爲,而且促使在項目中的人們彼此互相溝通。開發

BDD關注的是業務領域,而不是技術。BDD強調用領域特定語言描述用戶行爲,定義業務需求,讓開發者集中精力於代碼的寫法而不是技術細節上。着重在整個開發層面全部參與者對行爲和業務的理解。產品

我的理解爲:行爲驅動開發將全部人集中在一塊兒用一種特定的語言將所須要的系統行爲造成一個一致理解承認的術語。就像是統一了的普通話,各個地區的人能夠經過普通話來了解一句話意義是什麼。io

BDD的優勢是:

  1. 將各個參與協做團隊的人員(跨領域)集中在一塊兒達成一致的理解,節約了不少協做上的溝通時間。
  2. 具備明確的目的性,準確的讓參與協做人員認識到開發什麼。

TDD和BDD的區別

我的認爲,這二者沒有可比性,根本不是一個頻道的東西;若非要說出兩者的區別,總結有如下幾點:

  1. 從各自的定義分析:TDD是一種從測試驗收層面來推進整個項目開發的技術;BDD是一種對系統行爲進行設計的協做技術。
  2. 從參與者來分析:TDD的參與者是開發和測試之間;BDD是專一於參與項目協做的每個人員與用戶之間。
  3. 從使用寫法分析:TDD一般使用代碼層級測試工具,單元寫法沒有特定侷限;BDD是有很是辨識力的行爲測試用例格式。
  4. 從解決問題分析:TDD是用於解決開發和測試之間脫節問題;BDD是用於解決需求和開發之間脫節問題。
  5. 從使用人羣分析:TDD是開發人員和測試人員;BDD是客戶和開發者。
  6. 從側重點分析:TDD是側重測試;BDD是側重引導關注行爲和規範。
相關文章
相關標籤/搜索