如何把BDD,ATDD和TDD結合起來?

2021-07-25 17:13:42 字數 1085 閱讀 8541

筆者最近在研究bdd,儘管在做bdd(行為驅動開發,或者atdd,可接受性測試)的時候,不一定需要tdd(測試驅動開發),或者在做tdd(測試驅動開發)的時候也不需要bdd(為驅動開發)。但是如果專案對**覆蓋率有質量要求的時候,我想bdd一般很難達到很高的**覆蓋率(比如90%),因為其是一種比普通單元測試更高粒度的使用者需求,那麼在這種情況下,如何在bdd(行為驅動開發)把tdd(測試驅動開發)結合起來,從而提高**的測試覆蓋率呢?為了解釋這個問題,首先咱們來看bdd和tdd分別是什麼,其特點是什麼。

從上面的bdd和tdd的定義已經流程,我們可以知道,其實bdd已經包含了tdd,但是因為其是面向可接受性測試的,是直接面向客戶的,其測試案例(test case)的粒度又不可能細化到**中每乙個方法或者**中的分支路徑(if else; 異常等等),否則就變成了單元測試;但是如果其描述的可接受性測試,不覆蓋**中每乙個方法或者**中的分支路徑的話,如果保證交付的軟體產品的方法級別的**質量呢?這個時候,肯定需要有某乙個契合點能把bdd和tdd結合起來,具體結合方式請看下圖示意。

從上面的圖,我們可以看出。bdd(atdd)是一種一種更高效的開發策略,其能幫助開發者精確的把握客戶的需求。是一種高層次的行為方式。而低層次,需要更進一步細化的細節的實現,則需要使用tdd來進行分解bdd(atdd)的需求規格說明。換句話說,tdd是為了保證開發者正確的做開發;而bdd(attd)則是保證了開發出來的產品或者軟體是正確的。因此,其結合的契合點就是,在上層,還是通過和客戶商量定義好的測試場景,進行一一列出,然後把需要實現的粗粒度測試場景(更面向使用者的),分解成開發人員能夠實現的方法級別的粒度,從而能夠使用上tdd,從而不但能讓客戶和開發人員需要文件,只需要看我們的bdd中的功能規則說明只能知道該軟體是否滿足他們的需求,同時也能達到目標的**覆蓋率,從而進一步提高產品質量。

Python的子執行緒和子程序是如何手動結束的

結束子執行緒的方法 這個是搬運其他大神的 鄙人也不知道原理,反正拿來主義,暫時沒發現什麼缺點,先用著再說。import inspect import ctypes import threading from time import sleep def serial read while true p...

請教如何把下面的數量 和 單位 區分開 ?

4根 1件 1件 1把 20桶 1 1件 2件 1箱 70只1件 2 1臺 2臺500個 1件 300只 5只 2根 1000只 2件1 2只create function dbo.f get no no varchar 100 returns intas begin while patindex ...

Oracle中如何把錶和索引放在不同的表空間裡

因為 1 提高效能 盡量把錶和索引的表空間儲存在不同在磁碟上,把兩類不同io性質的資料分開放,這樣可以提高磁碟的io總體效能 2 便於管理 試想一下,如果索引的資料檔案損壞,只要建立索引即可,不會引起資料丟失的問題。下面語句用於移動索引的表空間 複製 yguifpe 如下 alter index i...