關於 BDD 是否已死,又一篇討論此議題的文章來了。讓我們來看看作者是如何分析的。
Is BDD Dying?
在作者看來,BDD 的核心應該是:專注於軟體行為的實踐方法,強調關注行為而非程式碼或工具。回顧2010年代初期,BDD曾是開發界的黃金時代,當時出現了像 Cucumber 和 SpecFlow 這些流行的框架,並且 Gherkin 語法一度成為業界標準。
然而,隨著時間的推移,BDD 面臨了許多挑戰:
- BDD 工具的困境:許多測試工具廠商未能成功商業化 BDD 工具。Cucumber 最終被 SmartBear 捐贈給開源組織,而 SpecFlow 的專案則被 Tricentis 關閉。儘管 Cucumber 框架被廣泛使用,但人們卻對 BDD 的協作技術保持距離,未能全面採用。
- 重心轉移到測試領域:隨著測試的重心逐漸向自動化測試和單元測試轉移,很多人將 BDD 視為一種測試工具,而忽略了它原本的協作層面。
- 新興技術的崛起:像 Cypress、Playwright 和人工智慧等新技術的迅速發展,使得 BDD 在市場上的關注度逐漸下降。
- Gherkin 語法的挑戰:對於人工智慧來說,Gherkin 語法過於冗長且不夠靈活,與現代自動化測試的需求不太契合。
儘管如此,作者認為人工智慧為 BDD 帶來了新機會。AI 技術可以簡化 BDD 的流程,提高其效率,甚至為其帶來新的可能性。以下是作者對 BDD 三個階段(探索、形式化、自動化)提出的改進建議,我補充一些如何在這些階段中應用 GenAI 工具來提升工作效果:
1. 探索階段 (Discovery):
在這一階段,團隊通常會使用跨職能協作和結構化活動(如 Example Mapping)來確定業務行為。AI 可以作為虛擬教練,指導團隊進行這些活動。
真實範例: 假設在一個電商平台的開發中,開發者、測試人員和業務分析師共同參與協作。AI 工具,如 Miro(協作白板工具)搭配 GPT-4,可以幫助團隊在例子映射過程中生成問題或建議的行為範例。AI 可以提供像“用戶應該能夠完成購物車結帳”這樣的範例,並引導團隊深入挖掘更多細節。
工具使用場景:
- 使用 Miro 進行 Example Mapping,AI 在每個討論點下自動生成行為描述,並提示可能的邊界案例或測試場景。
- AI 作為虛擬教練,在協作討論時提供結構化建議,協助團隊識別關鍵業務行為。
2. 形式化階段 (Formulation):
在這一階段,團隊使用簡潔的語言和具體的範例來撰寫行為規範。AI 可以協助將探索階段的成果轉換為具體的行為規範,並提供指導和建議。
真實範例: 在電商平台的開發中,AI 工具如 ChatGPT 可以幫助團隊將討論過的業務行為轉換成具體的行為規範。例如,團隊可能會討論“用戶應該能夠查看並修改自己的訂單”。AI 可以將此語句轉化為一個具體的 Gherkin 語句:“Given 用戶已經登錄, When 用戶查看訂單, Then 用戶應能修改訂單”。
工具使用場景:
- 使用 ChatGPT 將探索階段的描述轉換為具體的 Gherkin 語句。AI 可以自動為每個行為規範生成對應的步驟,甚至提供語法和邏輯上的改進建議。
- AI 還可以根據團隊提供的業務需求,快速生成範例和條件,幫助團隊確保行為規範的完整性。
3. 自動化階段 (Automation):
在這一階段,測試框架被用來自動化測試。AI 可以協助自動化測試流程,並分析測試結果,幫助團隊理解測試失敗的原因。
真實範例: 假設在電商平台的測試過程中,使用 Cypress 或 Playwright 進行測試自動化。AI 可以根據事先定義的規範自動生成測試腳本,並在測試過程中進行實時監控。如果測試失敗,AI 會分析測試結果,提供可能的錯誤原因,並提出解決方案。
工具使用場景:
- Cypress 結合 AI 監控,AI 可以自動判斷測試失敗的原因,並為開發者提供可能的修復建議。
- 使用 Playwright 配合 AI 系統,AI 會自動調整測試腳本,根據新的變更或需求生成自動化測試用例。
重命名 BDD 為“行為開發(Behavior Development)”:
作者建議將 BDD 更名為“行為開發”,因為 BDD 的焦點不僅在測試,還包括系統如何響應用戶需求,並幫助開發團隊更好地理解和設計行為。
結論:
雖然 BDD 在近年來面臨了一些挑戰,但其核心價值觀依然適用。通過引入人工智慧技術、改善工具並重新設計流程,BDD 可以重新焕發光彩,成為軟體開發中更加高效且價值更高的實踐方法。
發表迴響