天天看點

《Cucumber:行為驅動開發指南》——1.4 Cucumber如何工作

本節書摘來自異步社群《cucumber:行為驅動開發指南》一書中的第1章,第1.4節,作者:【英】matt wynne , 【挪】aslak hellesy著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

在深入本書的核心内容之前,我們先簡要介紹一個典型的cucumber測試集,以幫助你了解cucumber是如何工作的。

cucumber是一個指令行工具。運作時它會從普通語言編寫的稱為特性(feature)的文本檔案中讀取你的規格說明,解析需要測試的場景(scenario),然後針對你的系統運作這些場景以達到測試的目的。每個場景由一系列步驟(step)組成,cucumber會一步步執行這些步驟。為了讓cucumber能了解特性檔案,這些檔案必須遵循一些基本的文法規則,這套文法規則就叫gherkin。

除了特性檔案,你還要為cucumber提供一組步驟定義(step definition),它們是比對特性檔案中每個步驟的ruby代碼,業務語言描述的步驟行為都由這些步驟定義執行。在一個成熟的測試集中,這些步驟定義自身可能隻包含一兩行ruby代碼,具體的工作都代理給支援代碼(support code)庫來完成,應用程式領域特定的支援代碼庫知道如何執行系統的常見任務。通常這會涉及使用一個自動化庫(automation library),例如浏覽器自動化庫capybara,來與待測系統進行互動。

整個層次結構從特性往下至自動化庫,具體如圖1-1所示。

《Cucumber:行為驅動開發指南》——1.4 Cucumber如何工作

圖1-1 cucumber測試棧

如果步驟定義中的ruby代碼執行無誤,cucumber就依次執行場景中的下一個步驟。如果場景的所有步驟執行都沒有錯誤,那麼cucumber就将該場景标記為通過。但是,如果場景中任何一個步驟失敗了,cucumber就會将該場景标記為失敗并轉而執行下一個場景。運作場景的時候,cucumber列印出相應的結果,告訴你它在幹什麼,以及它沒幹什麼。

簡單來說 cucumber 就是這麼一回事。但作為一個傑出的自動化驗收測試架構,cucumber 還有很多其他優點:你可以使用四十多種語言編寫規格說明,可以使用标簽(tag)把場景組織和歸類,可以輕松內建大批高品質的 ruby 自動化庫,來驅動幾乎任何種類的應用程式。随着閱讀本書的其他部分,所有上述及更多的内容都将清晰地展現在你面前。