本指南旨在描述不同的測試方法或實踐,例如行為驅動開發(BDD)、測試驅動開發(TDD)、
驗收測試驅動開發(ATDD)。它還将描述這些技術之間的主要差別。在文章最後,将描述它們是怎樣工作的,它們的關鍵差異以及在開發過程中所扮演的獨特的角色。
原文:https://www.browserstack.com/guide/tdd-vs-bdd-vs-atdd
什麼是測試驅動開發-Test-Driven Development (TDD)?
測試驅動開發是從開發人員角度使用的一種測試方法或者說程式設計實踐。
在采用此方法的場景中,QA工程師會針對應用的一個個功能設計并編寫測試用例。
此方法是為了回答一個簡單的問題,那就是‘代碼是否有效?’
此方法的主要目的是僅在測試失敗時才修改或編寫新代碼。是以,它減少了測試腳本的重複。
此方法在靈活開發團隊中很受歡迎。
在程式開發過程中,使用此方法時,一般會在功能代碼編寫之前先寫自動測試代碼。
TDD一般步驟:
- 根據詳細需求編寫自動化測試用例
- 執行測試,在對應功能開發完成前,該功能的測試用例會執行失敗。
- 開發團隊根據測試結果編寫或修改代碼
流程圖如下:
Refactoring:指在不更改其主要功能或行為的情況下修改代碼的過程。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxidGJjW4tGVPh3aXp1ck1mYoR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwQzM4UDNwcTMxEjNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
測試驅動開發(TDD)的優勢:
- 幫助減少返工所需的時間
- 幫助快速發現bug或錯誤
- 幫助獲得更快的回報
- 促進産生更簡潔、更好的設計
- 提高開發人員工作效率
- 允許任何團隊成員在沒有某一團隊成員的情況下修改其代碼。 這鼓勵了知識共享和協作
- 使開發人員有信心輕松更改大型架構的應用程式
- 使代碼更易擴充和維護
什麼是行為驅動開發- Behavioral-Driven Development (BDD)?
行為驅動開發(BDD)是一種源自測試驅動開發(TDD)方法的測試方法。
行為驅動開發是基于系統行為的一種測試方法,該方法基于系統行為定義出很多用于開發功能點的途徑。
在大多數情況下,Given(給予操作條件)-When(執行相關操作)-Then(得到預期結果)是用來編寫測試用例的方法。為了便于了解,下面給出一個例子:
- Given(給予操作條件):使用者輸入有效的登入憑證
- When(執行相關操作):使用者點選登入按鈕
- Then(得到預期結果):顯示成功的驗證消息
如上所述,用比較簡單的語言文字描述了一個系統行為,這能夠幫助團隊開發人員去了解一個功能應該怎樣去表現。
行為驅動開發(BDD)的主要優勢:
- 通過使用非技術語言擴大了閱聽人
- 從使用者和開發人員的角度聚焦系統行為
- 經濟且高效
- 減少了每次部署後回歸的工作量
下圖描繪了BDD典型的運作方式:
BDD如何在SDLC(軟體開發生命周期)中提供幫助?
在開發生命周期的後期階段調試錯誤通常需要比較大的代價。在大多數情況,對需求的不同了解是其背後的根本原因。這就需要確定所有的開發工作始終保持以滿足預定的需求為準。
通過以下操作BDD可以幫助開發人員完成這個目的:
- 使用簡單的語言文字按标準的方式定義需求
- 提供幾種方法來說明現實場景以了解需求
- 提供一個平台,使技術團隊和非技術團隊能夠協作并了解需求
什麼是驗收測試驅動開發- Acceptance Test-Driven Development (ATDD)?
在驗收測試驅動開發(ATDD)技術中,從使用者的角度編寫了一個驗收測試。 它主要側重于滿足系統的功能行為。 該技術用于檢測代碼是否按預期工作。
注意:ATDD與BDD非常相似,它們之間的主要差別是:BDD更多的是聚焦功能點的行為,而ATDD是捕獲更精準的需求。
這項技術加強了開發人員、使用者和QA工程師之間的協作,使其關注點聚焦于定義驗收标準。以下是ATDD中的一些關鍵做法:
- 分析和讨論真實場景
- 确定這些真實場景下的驗收标準
- 自動化驗收測試用例
- 專注于那些需求案例的開發
ATDD優勢:
- 對需求進行了非常清晰的分析,沒有任何歧義
- 促進跨團隊成員之間的合作
- 驗收測試可作為整個開發過程的指南
TDD vs BDD vs ATDD的關鍵差別
對比特性 | TDD | BDD | ATDD |
---|---|---|---|
定義 | TDD是一項開發技術,關注點在功能的實作 | BDD是一項開發技術,關注點在系統的行為 | ATDD是一項類似BDD的技術,關注點更多是圍繞需求 |
參與者 | 開發者 | 開發者、使用者、QAs | 開發者、使用者、QAs |
使用語言 | 開發語言(Java、Python等等) | 小黃瓜(Gherkin) | 小黃瓜(Gherkin) |
主要關注點 | 單元測試 | 了解需求 | 編寫驗收測試用例 |
使用工具 | JDave, Cucumber, JBehave, Spec Flow, BeanSpec, Gherkin Concordian, FitNesse | Gherkin, Dave, Cucumber, JBehave, Spec Flow, BeanSpec, Concordian | TestNG, FitNesse, EasyB, Spectacular, Concordian, Thucydides |
了解這些方法的工作方式可以幫助開發人員和其他參與軟體開發的人員找出哪種政策最适合他們的目的,根據項目需要達到的目标,正确的運用一種或多種方法以最有效的方式滿足需要。