在推行 BDD(行為驅動開發)時,團隊常遇到一個痛點:寫出來的測試範例(Examples)太淺、漏掉邊界條件,或是 Gherkin 語法寫得不倫不類。
其實,只要在與 AI(如 ChatGPT 或 Gemini)溝通時,導入「少樣本提示 (Few-Shot Prompting)」與「思維鏈 (Chain of Thought, CoT)」這兩大技術指標,AI 產出的品質會瞬間從「實習生」躍升為「資深 BA」。
今天我們就以台灣人最熟悉的「高鐵早鳥票訂票系統」為例,示範如何精準調教 AI。
一、 核心概念:為什麼你的 Prompt 需要進化?
在進入實戰前,我們先釐清這兩個關鍵詞:
- 少樣本提示 (Few-Shot Prompting): 與其叫 AI「寫一個 BDD」,不如先給它 1-2 個符合你團隊規範的「正確範本」。這能定義語氣、格式,以及對 Given-When-Then 的嚴謹要求。
- 思維鏈 (Chain of Thought, CoT): 強迫 AI 在寫出最終測試案例前,先進行「邏輯推理」。這就像請工程師先畫流程圖再寫程式,能大幅減少 AI 胡說八道(幻覺)的機率。
二、 實戰 Prompt:如何開口要高品質結果?
將以下這段 Prompt 複製到你的 AI 工具中,你會發現產出的內容深度完全不同:
Prompt 範例:
你是一位專精於交通票務系統的資深商業分析師。請為「高鐵早鳥票」功能撰寫 BDD 測試案例。
請務必遵守以下思考流程(CoT):
- 業務規則拆解:分析早鳥票的天數(28天前至5天前)、折扣階梯(65/80/90折)與配額遞補邏輯。
- 極端案例分析:思考剛好跨過午夜、配額剛好剩 1 張、以及一次訂多人時的邊界情況。
- 結構化產出:使用 Gherkin 語法,並優先使用
Scenario Outline以提高覆蓋率。參考風格(Few-Shot Example):
Gherkin
Scenario: 系統逾時自動釋出座位Given 使用者已選位但未付款And 鎖位保留時間已過 10 分鐘When 系統執行排程檢查Then 該座位應恢復為「可預訂」狀態現在,請開始針對「早鳥票自動判定」撰寫 BDD 範例。
三、 AI 的深度回饋:高鐵早鳥票 BDD 範例
當 AI 接收到上述指令後,它不再只是隨便寫寫,而是會先進行「思考」再產出:
1. 邏輯鏈分析(AI 的內心戲)
- 關鍵衝突點:如果 65 折只剩 1 張,但使用者訂 2 張,系統該「分開計價」還是「統一升級」?(實務上通常是整筆訂單統一折扣)。
- 時間邊界:乘車日前 5 天是最後期限,那「第 5 天的 23:59」跟「第 4 天的 00:01」就是測試重點。
2. 最終 BDD 規範產出
Gherkin
Feature: 高鐵早鳥票優惠判定邏輯 為了確保預售系統能正確分配折扣,系統應根據「預訂時間」與「即時配額」給予最優票價。 Scenario Outline: 依照預訂天數與剩餘配額判定折扣階梯 Given 乘車日期為 2026-04-30 And 目前各階折扣配額為:65折(<q65>)、80折(<q80>)、90折(<q90>) When 使用者於 <booking_date> 預訂 1 張車票 Then 系統應顯示票價為 <expected_price> And 提示訊息應包含 "<msg>" Examples: | booking_date | q65 | q80 | q90 | expected_price | msg | 測試重點 | | 2026-04-02 | 10 | 50 | 100 | 65折 | 獲得早鳥65折優惠 | 28天前開賣首日 | | 2026-04-02 | 0 | 50 | 100 | 80折 | 獲得早鳥80折優惠 | 65折完售自動遞補 | | 2026-04-25 | 100 | 100 | 100 | 65折 | 獲得早鳥65折優惠 | 領取期限最後一天 | | 2026-04-26 | 100 | 100 | 100 | 原價 | 僅提供一般票價 | 逾期(4天前)無折扣 | Scenario: 多人訂位時的配額不足處理 Given 65 折早鳥票僅剩餘 1 張配額 When 使用者在符合早鳥時間內,一次預訂 2 張車票 Then 系統不應拆分折扣 And 整筆訂單應判定為「80 折」 And 提示「65折配額不足,已為您搜尋次佳優惠」
結語
BDD 的精髓不在於語法,而在於對業務邏輯的深刻理解。利用 Few-Shot Prompting 定義規範,再用 Chain of Thought 啟動 AI 的邏輯思維,你就能在幾秒鐘內產出高品質的測試規格。
如果你覺得這篇教學對你有幫助,歡迎分享給正在為撰寫測試案例苦惱的隊友們!
發表迴響