TDD、BDD、ATDD都是什麼、有什麼區別?(下)
在 《TDD、BDD、ATDD都是什麼、有什麼區別?(上)》 一文中,探討了 探討TDD、BDD和ATDD的概念。 雖然TDD、BDD和ATDD都是軟體開發中使用的測試方法,但它們在方法和重點上有所不同。
TDD、BDD和ATDD之間的主要區別在於關注點、抽象層級和協作。
1、關注點
TDD側重於測試程式碼並確保它滿足需求。BDD關注軟體的行為,並確保它滿足業務需求。ATDD關注於驗收標準,並確保軟體滿足業務需求。
2、抽象層級
TDD專注於程式碼級別,並使用單元測試來驗證程式碼的功能。BDD專注於功能級別,並使用場景來描述所需的行為。ATDD專注於驗收標準,並使用驗收測試來驗證軟體是否滿足要求。
3、協作
TDD主要是一個以開發人員為中心的過程,包括編寫測試和程式碼。BDD和ATDD涉及開發人員、測試人員和涉眾之間的協作,以確保軟體滿足業務需求。
雖然這三種方法有一些相似之處,但它們在方法、範圍和目的上有所不同。
1、範圍
TDD專注於程式碼的開發和驗證其行為的測試。這個過程從編寫一個失敗的測試用例開始,然後編寫透過測試所需的最低數量的程式碼,然後重構程式碼。TDD確保程式碼在釋出之前經過徹底測試並滿足要求。
BDD將TDD的範圍擴充套件到包括整個系統的行為。BDD關注的是系統的行為,而不是它的實現細節。BDD場景以一種稱為Gherkin的特定格式編寫,該格式使用Given When Then語法來描述系統行為的前提條件、操作和預期結果。這些場景作為系統的驗收標準,確保團隊正在構建正確的東西,並確保系統滿足使用者的需求。
ATDD側重於系統的驗收標準。該團隊合作以自動測試的形式定義系統的驗收標準。測試以所有利益相關者都可以訪問的特定格式編寫,並使用Given When Then語法來描述系統的預期行為。ATDD測試是系統的驗收標準,確保團隊正在構建正確的東西,並確保系統滿足使用者的需求。
2、術語
TDD使用術語詞彙表,並專注於程式碼的行為。TDD測試是由開發人員編寫的,旨在確保程式碼的行為符合預期。TDD測試通常使用與測試程式碼相同的程式語言編寫。
BDD使用對業務友好的詞彙表,並專注於系統的行為。BDD場景以一種稱為Gherkin的特定格式編寫,該格式使用Given When Then語法來描述系統行為的前提條件、操作和預期結果。BDD場景通常由業務分析師或產品所有者編寫,他們對使用者的需求和要求有深入的瞭解。
ATDD使用對業務友好的詞彙表,並專注於系統的驗收標準。ATDD測試以所有利益相關者都可以訪問的特定格式編寫,並使用Given When Then語法來描述系統的預期行為。ATDD測試通常由對使用者的需求和要求有深入瞭解的業務分析師或產品所有者編寫。
3、目的
TDD的目的是確保程式碼在釋出之前經過徹底測試並滿足要求。TDD測試作為程式碼的規範,幫助開發人員在開發週期的早期發現bug和缺陷。
BDD的目的是確保團隊正在構建正確的東西,並且系統滿足使用者的需求。BDD場景作為系統的驗收標準,確保團隊正在構建正確的東西,並確保系統滿足使用者的需求。
ATDD的目的是確保團隊正在構建正確的東西,並且系統滿足使用者的需求。ATDD測試是系統的驗收標準,確保團隊正在構建正確的東西,並確保系統滿足使用者的需求。ATDD測試還推動開發過程,確保程式碼在釋出前經過測試並符合驗收標準。
4、方法
TDD遵循自上而下的軟體開發方法。它首先編寫一個測試用例,然後編寫透過該測試的程式碼。重複該迴圈,直到滿足所有要求。TDD鼓勵開發人員編寫可測試和可維護的程式碼,從而獲得更高質量的產品。
BDD遵循行為驅動的軟體開發方法。它首先以場景的形式定義系統的期望行為,描述系統在不同情況下的行為。這些場景是用一種名為Gherkin的特定格式編寫的,該格式使用Given When Then語法來描述系統行為的前提條件、操作和預期結果。BDD場景通常由業務分析師或產品所有者編寫,他們對使用者的需求和要求有深入的瞭解。
ATDD遵循與BDD類似的方法,但側重於系統的驗收標準。該團隊合作以自動測試的形式定義系統的驗收標準。測試以所有利益相關者都可以訪問的特定格式編寫,並使用Given When Then語法來描述系統的預期行為。ATDD測試通常由對使用者的需求和要求有深入瞭解的業務分析師或產品所有者編寫。
總結
測試驅動開發(TDD)、行為驅動開發(BDD)和驗收測試驅動開發都是近年來流行的軟體開發方法。雖然這三種方法都旨在提高軟體質量和減少缺陷,但它們的方法、範圍和目的各不相同。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69978795/viewspace-3002457/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TDD、BDD、ATDD都是什麼、有什麼區別?(上)
- make makefile cmake qmake都是什麼,有什麼區別?
- UI設計和美工都是做什麼的?兩者有什麼區別?UI
- Cache和Buffer都是快取,有什麼區別?Linux快取Linux
- MySQL、NoSQL分別是什麼?有什麼區別?MySql
- cookie是什麼?和session有什麼區別?CookieSession
- GET和POST有什麼區別?及為什麼網上多數答案都是錯的
- 什麼是python?與PHP有什麼區別?PythonPHP
- Session是什麼?它與Cookie有什麼區別?SessionCookie
- Java和Python是什麼?有什麼區別?JavaPython
- GET和POST有什麼區別?及為什麼網上的多數答案都是錯的。
- *和body有什麼區別
- 什麼是報表工具?和 EXCEL 有什麼區別?Excel
- Java 介面和抽象類是什麼,有什麼區別Java抽象
- 什麼是 MicroPython?和CPython有什麼區別?Python
- 什麼是SCRM系統?和CRM有什麼區別?
- png是什麼格式 png和jpg有什麼區別
- 原生IP是什麼?與其他IP有什麼區別?
- xpgu是什麼 xgpu和xgp有什麼區別GPU
- (十三) 說一下runnable 和 callable 有什麼區別?Future是什麼?
- Cache 和 Buffer 有什麼區別?
- mongodb和mysql有什麼區別MongoDBMySql
- shim和polyfill有什麼區別
- float和double有什麼區別?
- int 和 Integer 有什麼區別
- Memcached與Redis有什麼區別Redis
- cookie和session 有什麼區別?CookieSession
- session 和 cookie 有什麼區別?SessionCookie
- Promise、Generator、Async有什麼區別?Promise
- modbus和tcp有什麼區別?TCP
- Nginx和Apache有什麼區別?NginxApache
- COOKIE和SESSION有什麼區別?CookieSession
- RegisterClass和RegisterClassEx有什麼區別?
- for update 和 for update of 有什麼區別
- PEAR 和 PECL 有什麼區別?
- Activity和Fragment有什麼區別Fragment
- vue和react有什麼區別?VueReact
- Iterator和ListIterator有什麼區別