@@ -10,7 +10,7 @@ description: 階段 1 - 從使用者需求生成 Gherkin 行為規格(PM 角
1010
1111## 使用者需求
1212
13- __ PROMPT __
13+ ** PROMPT **
1414
1515## 您的職責約束
1616
@@ -19,49 +19,14 @@ __PROMPT__
1919- 思考:系統應該做什麼?有哪些邊界情況?如何處理錯誤?
2020- 只使用 Gherkin 語法(Given-When-Then)。
2121
22- ## 重要:行為描述 vs 實作細節
23-
24- ** 您的目標是撰寫「功能規格」,而非「測試步驟」。**
25-
26- ### ❌ 避免:實作細節和測試步驟
27- - 具體的計算數值(例如:"價格應該是 800 美元")
28- - 資料庫欄位或技術術語
29- - UI 元件細節(按鈕、表單)
30- - 系統內部狀態
31-
32- ### ✅ 推薦:業務行為和用戶價值
33- - 業務規則和政策(例如:"VIP 會員應該獲得折扣優惠")
34- - 用戶期望和體驗(例如:"購物車應該反映優惠後的金額")
35- - 業務價值(例如:"提高客戶忠誠度")
36- - 從用戶角度描述行為
37-
38- ### 對比範例
39-
40- ** ❌ 實作細節(測試步驟):**
41- ``` gherkin
42- Given 使用者的會員等級是 "VIP"
43- When 使用者購買金額是 1000 美元
44- Then 折扣金額應該是 200 美元
45- And 最終價格應該是 800 美元
46- ```
47-
48- ** ✅ 行為描述(功能規格):**
49- ``` gherkin
50- Given 一位 VIP 會員進行結帳
51- And 購物車金額達到優惠門檻
52- When 會員完成訂單
53- Then 系統應該自動套用 VIP 專屬折扣
54- And 訂單摘要應該顯示折扣優惠
55- ```
56-
5722## 您的任務
5823
59241 . ** 檢查需求衝突** :
6025 - 檢視 ` features/ ` 目錄中所有現有的 feature 檔案
6126 - 分析新需求是否與現有功能規格存在衝突或矛盾
6227 - 如果發現衝突,** 立即停止並向使用者確認** :
63- * 列出衝突的功能和具體衝突點
64- * 詢問使用者如何處理(修改現有功能、調整新需求、或確認覆蓋)
28+ - 列出衝突的功能和具體衝突點
29+ - 詢問使用者如何處理(修改現有功能、調整新需求、或確認覆蓋)
6530 - 只有在無衝突或使用者確認後才繼續下一步
6631
67322 . ** 分析需求** ,考慮:
@@ -85,88 +50,76 @@ Feature: <清楚簡潔的功能名稱>
8550 <功能業務價值的簡短描述>
8651
8752 Scenario: <正常流程情境名稱>
88- Given <業務前置條件,從用戶角度描述 >
89- And <補充前置條件 >
90- When <用戶執行的業務動作 >
91- And <額外的業務動作 (如需要)>
92- Then <預期的業務結果,描述行為而非驗證 >
93- And <補充的業務結果 >
53+ Given <前置條件 1 >
54+ And <前置條件 2 >
55+ When <使用者動作或事件 >
56+ And <額外動作 (如需要)>
57+ Then <預期結果 1 >
58+ And <預期結果 2 >
9459
9560 Scenario: <邊界情況情境名稱>
96- Given <邊界情況的業務場景 >
97- When <邊界情況下的用戶動作 >
98- Then <系統應展現的業務行為 >
61+ Given <邊界情況設定 >
62+ When <邊界情況下的動作 >
63+ Then <預期行為 >
9964
10065 Scenario: <錯誤處理情境名稱>
101- Given <導致錯誤的業務情境 >
102- When <觸發錯誤的用戶動作 >
103- Then <系統應如何回應(從業務角度) >
66+ Given <無效條件 >
67+ When <嘗試的動作 >
68+ Then <預期的錯誤回應 >
10469```
10570
106- ** 撰寫技巧:**
107- - Given:描述業務情境,而非系統狀態(例如:「VIP 會員進行結帳」而非「會員等級 = VIP」)
108- - When:描述用戶行為,而非系統操作(例如:「完成訂單」而非「呼叫 checkout API」)
109- - Then:描述業務期望,而非技術驗證(例如:「應該套用折扣」而非「折扣 = 200」)
110-
11171## 範例輸出
11272
11373針對需求:"VIP 使用者購買超過 $100 可享 20% 折扣"
11474
11575``` gherkin
116- Feature: VIP 會員優惠計劃
117- 作為企業,我想要給予 VIP 客戶購物折扣優惠
76+ Feature: VIP 折扣系統
77+ 作為企業,我想要給予 VIP 客戶折扣優惠
11878 以提高客戶忠誠度和重複購買率。
11979
120- Scenario: VIP 會員大額購物獲得優惠
121- Given 一位 VIP 會員進行結帳
122- And 購物車金額達到優惠門檻
123- When 會員完成訂單
124- Then 系統應該自動套用 VIP 專屬折扣
125- And 訂單摘要應該顯示折扣優惠
126-
127- Scenario: 一般會員無優惠資格
128- Given 一位一般會員進行結帳
129- And 購物車金額達到優惠門檻
130- When 會員完成訂單
131- Then 系統應該以原價結帳
132- And 訂單摘要不顯示折扣資訊
133-
134- Scenario: VIP 會員小額購物未達門檻
135- Given 一位 VIP 會員進行結帳
136- And 購物車金額未達優惠門檻
137- When 會員完成訂單
138- Then 系統應該以原價結帳
139- And 提示會員還需消費多少才能享有優惠
140-
141- Scenario: 拒絕異常的訂單金額
142- Given 會員嘗試建立訂單
143- When 購物車金額為負數或零
144- Then 系統應該拒絕訂單
145- And 提示會員購物車金額無效
80+ Scenario: 對 VIP 使用者套用折扣
81+ Given 使用者是 VIP
82+ When 使用者購買 1000 美元
83+ Then 最終價格應該是 800 美元
84+ And 套用的折扣應該是 200 美元
85+
86+ Scenario: 非 VIP 使用者無折扣
87+ Given 使用者是 NORMAL
88+ When 使用者購買 1000 美元
89+ Then 最終價格應該是 1000 美元
90+ And 套用的折扣應該是 0 美元
91+
92+ Scenario: 購買金額低於門檻無折扣
93+ Given 使用者是 VIP
94+ When 使用者購買 50 美元
95+ Then 最終價格應該是 50 美元
96+ And 套用的折扣應該是 0 美元
97+
98+ Scenario: 處理無效的購買金額
99+ Given 使用者是 VIP
100+ When 使用者購買 -100 美元
101+ Then 系統應該拒絕並回應錯誤 "無效的購買金額"
146102```
147103
148104## 品質檢查清單
149105
150106完成前,確保您的規格具有:
107+
151108- [ ] 已檢查與現有功能的衝突(如有衝突已向使用者確認)
152- - [ ] 清楚的功能描述,強調業務價值
109+ - [ ] 清楚的功能描述
153110- [ ] 至少一個正常流程情境
154111- [ ] 至少一個邊界情況情境
155112- [ ] 至少一個錯誤處理情境
156113- [ ] 沒有技術實作細節(沒有資料庫、沒有程式碼、沒有架構)
157114- [ ] 所有情境遵循 Given-When-Then 格式
158115- [ ] 每個情境都是原子性且可測試的
159- - [ ] ** 使用行為描述而非實作細節** :
160- - [ ] 避免具體的計算數值和測試斷言
161- - [ ] 從用戶或業務角度描述期望行為
162- - [ ] 描述「應該發生什麼」而非「如何驗證」
163- - [ ] 使用業務語言而非技術術語
164116
165117## 下一步
166118
167119完成此階段後:
120+
168121- 儲存 ` .feature ` 檔案
169- - 您可以使用以下指令進入階段 2:` __CMD_PREFIX__sdd -arch features/<feature_name>.feature`
122+ - 您可以使用以下指令進入階段 2:` /sdd -arch features/<feature_name>.feature`
170123- 或返回給使用者審查
171124
172125現在根據使用者的需求建立 Gherkin 規格。
0 commit comments