BDD是什麼
BDD 是 Behavior-Driven Development(行為驅動開發) 的縮寫,是一種軟體開發方法論,結合了 TDD(測試驅動開發) 和 DDD(領域驅動設計) 的概念,主要目的是讓開發團隊、測試人員與非技術的業務人員(如產品經理)能用共同的語言協作,確保開發的系統功能符合實際需求。
1. BDD 的核心概念
- 用行為描述需求:從使用者的角度出發,描述系統應該「如何表現」。
- 統一語言(Ubiquitous Language):用接近自然語言的方式撰寫規格,使開發、測試與業務可以共同理解。
- 自動化驗證:將規格文件直接轉換成自動化測試。
2. BDD 的工作流程
- 討論(Discovery)
產品經理、開發、QA 一起討論需求,釐清行為與邊界案例。 - 規格撰寫(Formulation)
使用 Gherkin 語法 或其他自然語言描述方式,撰寫「Given-When-Then」的規格。 - 自動化驗證(Automation)
將這些規格轉換成可執行的自動化測試。
動手搓一個線上課程管理系統
討論(Discovery)


規格撰寫(Formulation)


繼續編輯featrues file


CourseEnrollment.feature

CourseManagement.feature

InstructorAssignment.feature



概述文件跟feature file都寫好了開始開發
提示詞
# Task
請你嚴格遵照「行為驅動開發 (BDD)」的方式,來完成 @後端\features
中所有驗收情境的開發。
不可同時進行 BDD 開發流程中多個步驟也不能略過任何一步驟,
必須一步一步扎實執行並確認每一步的結果。
## Tech Stack
1. Language Env:python
2. BDD Test framework: behave
## Application Environment
1. App 類型:純模組程式碼
2. 此 feature file 中的所有邏輯存放至 後端\app\main.py 中
3. 測試程式碼存放至 後端\features\steps\中
# BDD 開發流程
2. 嚴格遵守 BDD 以及最小增量原則來開發所有程式碼,
針對所有 scenario,一次開發一個 scenario,依序進行:
A. 一次選擇一個 scenario 實作,除此 scenario 之外的測試全部都 ignore。
撰寫此 scenario 對應的 Steps (given, when, then)、開啟相關類別,
但是每個類別的行為都不實作,並且執行測試,確認測試失敗 (test fail),
並且測試失敗的原因並非框架層級的錯誤,而是期望的「值」上的錯誤。
嚴格確認這步驟完成後才能進行下一步的實作。
B. 為了通過上一步所撰寫的測試程式碼,請實作相關類別所需的程式碼,
並確認能讓所有的測試程式碼都通過。請嚴格確認有執行到測試程式碼,
從 test report 中覆述一次目前 test passed 的數量。
C. 遵守 clean code 原則,思考是否要重構每個類別的內部程式碼,
如果必要重構的話,在重構完成之後,再執行一次測試,確保所有測試仍然通過,
否則需修正邏輯直到測試全數通過。

這裡預期的行為是AI能準確根據feature file去撰寫出對應的程式模組跟測試


AI在路徑import 一直出錯


開始進行 紅燈 綠燈 重構循環


第一個測試成功了下一個scenario

漫長的紅燈 綠燈 重構循環

可以看到test和main程式碼一直在增加



執行bdd測試


下一階段產生前端UI
參考README.md做一個線上課程報名與管理系統
後端\app\main.py已經實作了所有線上課程報名與管理系統的邏輯
你只需要採用fastapi再寫一個api_server.py去import\app\main.py裡面的功能即可
api_server.py 跑起來會開一個URL出來
然後創一個前端資料夾裡面放HTML/Tailwind CSS/jQuery
用API的方式跟我的api_server.py做串接
前端要有UI真的能用滑鼠鍵盤來操作的介面
有
課程報名管理
課程管理
講師指派管理
三個頁面
並且是真的能用UI操作實現所有的後端\features中定義的Scenario喔



做完了 開server

打開index.html
















一些問題
1.feature file是基底 最好的做法應該是跟AI協作自己再看過
2.AI有時候會在很智障的地方卡住 例如import 路徑問題
3.後端模組可以用bdd快速做完 前端用目前這種樣板
大概可以快速接上 但不一定一次成功像是 一開始出現登入問題
不過請他修正一次就成功了
4.AI有隨機性 前端如果沒有詳細描述UI樣式 大概每次做出來的UI會不太一樣