
- 行為驅動開發 (BDD)
- BDD - 首頁
- BDD - 簡介
- BDD - 測試驅動開發 (TDD)
- BDD - 基於BDD的TDD
- BDD - 基於示例的規範
- BDD - 工具
- BDD - Cucumber
- BDD - Gherkin
- BDD - SpecFlow
- BDD 有用資源
- BDD - 快速指南
- BDD - 有用資源
- BDD - 討論
行為驅動開發 - Cucumber
Cucumber 是一款支援可執行規範、測試自動化和活文件的工具。
行為驅動開發擴充套件了基於示例的規範。它還規範了測試驅動開發的最佳實踐,特別是從外向內的工作視角。開發工作基於可執行規範。
可執行規範的關鍵特性如下:
可執行規範是:
源於代表系統行為的示例。
由所有參與開發的人員(包括業務人員和利益相關者)共同編寫。
基於驗收標準。
基於可執行規範的驗收測試是自動化的。
使用共享的、通用的語言來編寫可執行規範和自動化測試,以便:
在整個開發過程中使用領域特定術語。
每個人,包括客戶和利益相關者,都以相同的方式討論系統、其需求和其實現。
在需求、設計文件、程式碼、測試等中使用相同的術語來討論系統。
任何人都可以閱讀和理解需求以及如何生成更多需求。
可以輕鬆適應變化。
維護活文件。
Cucumber 有助於此過程,因為它將可執行規範與系統的實際程式碼和自動化的驗收測試聯絡起來。
它的設計實際上是為了讓客戶和開發人員一起工作。當驗收測試透過時,這意味著它所代表的系統行為規範已正確實現。
典型的 Cucumber 驗收測試
考慮以下示例。
特性 - 註冊
註冊應該快捷且友好。
場景 - 成功註冊
新的使用者應該收到確認郵件並收到個性化問候。
假設我已選擇註冊。
當我使用有效資訊註冊時。
那麼我應該收到一封確認郵件。
並且我應該看到個性化的問候資訊。
從這個例子中,我們可以看到:
驗收測試指的是特性。
特性由場景解釋。
場景由步驟組成。
規範以自然語言寫在純文字檔案中,但它是可執行的。
Cucumber 的工作原理
Cucumber 是一款命令列工具,它處理包含特性的文字檔案,查詢可以針對您的系統執行的場景。讓我們瞭解 Cucumber 的工作原理。
它利用了一些關於檔案命名方式和檔案位置(各個資料夾)的約定,以便於上手。
Cucumber 允許您將規範、自動化測試和文件儲存在同一位置。
每個場景都是一系列步驟的列表,這些步驟描述了場景的前提條件、操作和後置條件;如果每個步驟執行都沒有錯誤,則該場景被標記為透過。
執行結束時,Cucumber 將報告有多少場景透過。
如果某些內容失敗,它會提供有關失敗內容的資訊,以便開發人員能夠繼續進行。
在 Cucumber 中,特性、場景和步驟是用名為Gherkin的語言編寫的。
Gherkin 是具有結構的純文字英語(或其他 60 多種語言)。Gherkin 易於學習,其結構允許您以簡潔的方式編寫示例。
Cucumber 執行包含用 Gherkin 編寫的可執行規範的檔案。
Cucumber 需要步驟定義來將純文字 Gherkin 步驟轉換為將與系統互動的操作。
當 Cucumber 執行場景中的步驟時,它將查詢匹配的步驟定義來執行。
步驟定義是一小段程式碼,其中附加了一個模式。
該模式用於將步驟定義連結到所有匹配的步驟,而程式碼是 Cucumber 在看到 Gherkin 步驟時將執行的內容。
每個步驟都伴有一個步驟定義。
大多數步驟將收集輸入,然後委託給特定於您的應用程式領域的框架,以便對您的框架進行呼叫。
Cucumber 支援十多種不同的軟體平臺。您可以選擇適合您的 Cucumber 實現。每個 Cucumber 實現都提供相同的整體功能,並且它們也有自己的安裝程式和特定於平臺的功能。
對映步驟和步驟定義
Cucumber 的關鍵在於步驟和步驟定義之間的對映。

Cucumber 實現
以下是 Cucumber 的實現:
![]() |
Ruby/JRuby |
![]() |
JRuby(使用 Cucumber-JVM) |
![]() |
Java |
![]() |
Groovy |
![]() |
.NET(使用 SpecFlow) |
![]() |
JavaScript |
![]() |
JavaScript(使用 Cucumber-JVM 和 Rhino) |
![]() |
Clojure |
![]() |
Gosu |
![]() |
Lua |
![]() |
PHP(使用 Behat) |
![]() |
Jython |
![]() |
C++ |
![]() |
Tcl |
框架整合
以下是框架實現: