AIXBDD 程式開發一個線上課程網站

更新於 發佈於 閱讀時間約 6 分鐘

BDD是什麼

BDDBehavior-Driven Development(行為驅動開發) 的縮寫,是一種軟體開發方法論,結合了 TDD(測試驅動開發)DDD(領域驅動設計) 的概念,主要目的是讓開發團隊、測試人員與非技術的業務人員(如產品經理)能用共同的語言協作,確保開發的系統功能符合實際需求。

1. BDD 的核心概念

  • 用行為描述需求:從使用者的角度出發,描述系統應該「如何表現」。
  • 統一語言(Ubiquitous Language):用接近自然語言的方式撰寫規格,使開發、測試與業務可以共同理解。
  • 自動化驗證:將規格文件直接轉換成自動化測試。

2. BDD 的工作流程

  1. 討論(Discovery)
    產品經理、開發、QA 一起討論需求,釐清行為與邊界案例。
  2. 規格撰寫(Formulation)
    使用 Gherkin 語法 或其他自然語言描述方式,撰寫「Given-When-Then」的規格。
  3. 自動化驗證(Automation)
    將這些規格轉換成可執行的自動化測試。

動手搓一個線上課程管理系統

討論(Discovery)

raw-image


raw-image

規格撰寫(Formulation)

raw-image
raw-image

繼續編輯featrues file

raw-image
raw-image

CourseEnrollment.feature

raw-image

CourseManagement.feature

raw-image

InstructorAssignment.feature

raw-image
raw-image
raw-image

概述文件跟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 原則,思考是否要重構每個類別的內部程式碼,

如果必要重構的話,在重構完成之後,再執行一次測試,確保所有測試仍然通過,

否則需修正邏輯直到測試全數通過。
raw-image

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

raw-image
raw-image

AI在路徑import 一直出錯

raw-image
raw-image

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

raw-image
raw-image

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

raw-image

漫長的紅燈 綠燈 重構循環

raw-image

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

raw-image
raw-image
raw-image

執行bdd測試

raw-image
raw-image

下一階段產生前端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喔


raw-image
raw-image


raw-image


做完了 開server

raw-image

打開index.html

raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image
raw-image

一些問題

1.feature file是基底 最好的做法應該是跟AI協作自己再看過

2.AI有時候會在很智障的地方卡住 例如import 路徑問題

3.後端模組可以用bdd快速做完 前端用目前這種樣板

大概可以快速接上 但不一定一次成功像是 一開始出現登入問題

不過請他修正一次就成功了

4.AI有隨機性 前端如果沒有詳細描述UI樣式 大概每次做出來的UI會不太一樣

留言
avatar-img
留言分享你的想法!
avatar-img
于正龍(Ricky)的沙龍
43會員
71內容數
人工智能工作經驗跟研究
2025/06/11
這部很老的卡通了 一直對膽小狗英雄頂樓那台電腦很有印象 毒舌 嘴砲 自大 嘲諷 但總是能給膽小狗有用的建議 幫助他解決各種問題 最近剛好比較多時間在寫程式 又看到現在LLM技術發展成熟 基本上可以實現跟卡通裡面一模一樣的效果了 整理一下功能 1.毒舌 嘴砲 自大 嘲諷 但總是能給膽小狗有用
Thumbnail
2025/06/11
這部很老的卡通了 一直對膽小狗英雄頂樓那台電腦很有印象 毒舌 嘴砲 自大 嘲諷 但總是能給膽小狗有用的建議 幫助他解決各種問題 最近剛好比較多時間在寫程式 又看到現在LLM技術發展成熟 基本上可以實現跟卡通裡面一模一樣的效果了 整理一下功能 1.毒舌 嘴砲 自大 嘲諷 但總是能給膽小狗有用
Thumbnail
2025/05/28
如題最近在爬一個網站 發現裡面我要的一個地方 就是一個棒球網站裡面的攝影機按鈕(影片網址) 我想取得所有影片網址然後把影片抓下來 如果直接把網址跟XPATH丟給CHATGPT寫爬蟲 結果就是他定位不到 後來檢查原因原來是 那個攝影機是包在一個ajaxTable裡面 所以做法變成要先確
Thumbnail
2025/05/28
如題最近在爬一個網站 發現裡面我要的一個地方 就是一個棒球網站裡面的攝影機按鈕(影片網址) 我想取得所有影片網址然後把影片抓下來 如果直接把網址跟XPATH丟給CHATGPT寫爬蟲 結果就是他定位不到 後來檢查原因原來是 那個攝影機是包在一個ajaxTable裡面 所以做法變成要先確
Thumbnail
2025/05/11
當你使用 MongoDB 時,通常需要先啟動 MongoDB 的伺服器(mongod),然後再透過 MongoDB Shell(mongosh.exe)連線操作資料庫。以下是完整的啟動步驟與指令: ✅ 1. 啟動 MongoDB 伺服器(mongod) mongod --dbpath "C:\你
2025/05/11
當你使用 MongoDB 時,通常需要先啟動 MongoDB 的伺服器(mongod),然後再透過 MongoDB Shell(mongosh.exe)連線操作資料庫。以下是完整的啟動步驟與指令: ✅ 1. 啟動 MongoDB 伺服器(mongod) mongod --dbpath "C:\你
看更多
你可能也想看
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
Thumbnail
進入科技教育產業已滿一年。因為團隊精簡,每堂課替換時間又快又急。在編寫課程介紹頁面時,對受眾和痛點的描述不夠精準。本文提供了市場中自己喜歡且訴求精準的課程分析作為研究素材,希望未來能更精準地規劃課程介紹頁面內容。
Thumbnail
進入科技教育產業已滿一年。因為團隊精簡,每堂課替換時間又快又急。在編寫課程介紹頁面時,對受眾和痛點的描述不夠精準。本文提供了市場中自己喜歡且訴求精準的課程分析作為研究素材,希望未來能更精準地規劃課程介紹頁面內容。
Thumbnail
這篇文章著重於解釋軟體專案管理中的戰略意義和專案特性評估,並提出了四個不同像限的專案特性。
Thumbnail
這篇文章著重於解釋軟體專案管理中的戰略意義和專案特性評估,並提出了四個不同像限的專案特性。
Thumbnail
這篇文章描述了作者從兼職開發轉為全職開發的過程,並分享了從混進學界指日可待的積極態度。作者也提及自己在專案製作與個人生活上的矛盾與感想,最後分享了專案管理和敏捷開發相關的文章與影片。
Thumbnail
這篇文章描述了作者從兼職開發轉為全職開發的過程,並分享了從混進學界指日可待的積極態度。作者也提及自己在專案製作與個人生活上的矛盾與感想,最後分享了專案管理和敏捷開發相關的文章與影片。
Thumbnail
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
本書介紹了戰略設計、管理領域複雜度、實際應用領域驅動設計等主題。透過對核心子領域、支持子領域、限界上下文等概念的探討,提供了領域驅動設計的相關知識。這篇文章中還涉及了微服務、事件驅動架構和資料網格等相關主題,提供了設計系統和應用領域驅動設計的指導。
Thumbnail
本書介紹了戰略設計、管理領域複雜度、實際應用領域驅動設計等主題。透過對核心子領域、支持子領域、限界上下文等概念的探討,提供了領域驅動設計的相關知識。這篇文章中還涉及了微服務、事件驅動架構和資料網格等相關主題,提供了設計系統和應用領域驅動設計的指導。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News