File tree Expand file tree Collapse file tree 1 file changed +86
-37
lines changed
Expand file tree Collapse file tree 1 file changed +86
-37
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,41 @@ __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+
2257## 您的任務
2358
24591 . ** 檢查需求衝突** :
@@ -50,68 +85,82 @@ Feature: <清楚簡潔的功能名稱>
5085 <功能業務價值的簡短描述>
5186
5287 Scenario: <正常流程情境名稱>
53- Given <前置條件 1 >
54- And <前置條件 2 >
55- When <使用者動作或事件 >
56- And <額外動作 (如需要)>
57- Then <預期結果 1 >
58- And <預期結果 2 >
88+ Given <業務前置條件,從用戶角度描述 >
89+ And <補充前置條件 >
90+ When <用戶執行的業務動作 >
91+ And <額外的業務動作 (如需要)>
92+ Then <預期的業務結果,描述行為而非驗證 >
93+ And <補充的業務結果 >
5994
6095 Scenario: <邊界情況情境名稱>
61- Given <邊界情況設定 >
62- When <邊界情況下的動作 >
63- Then <預期行為 >
96+ Given <邊界情況的業務場景 >
97+ When <邊界情況下的用戶動作 >
98+ Then <系統應展現的業務行為 >
6499
65100 Scenario: <錯誤處理情境名稱>
66- Given <無效條件 >
67- When <嘗試的動作 >
68- Then <預期的錯誤回應 >
101+ Given <導致錯誤的業務情境 >
102+ When <觸發錯誤的用戶動作 >
103+ Then <系統應如何回應(從業務角度) >
69104```
70105
106+ ** 撰寫技巧:**
107+ - Given:描述業務情境,而非系統狀態(例如:「VIP 會員進行結帳」而非「會員等級 = VIP」)
108+ - When:描述用戶行為,而非系統操作(例如:「完成訂單」而非「呼叫 checkout API」)
109+ - Then:描述業務期望,而非技術驗證(例如:「應該套用折扣」而非「折扣 = 200」)
110+
71111## 範例輸出
72112
73113針對需求:"VIP 使用者購買超過 $100 可享 20% 折扣"
74114
75115``` gherkin
76- Feature: VIP 折扣系統
77- 作為企業,我想要給予 VIP 客戶折扣優惠
116+ Feature: VIP 會員優惠計劃
117+ 作為企業,我想要給予 VIP 客戶購物折扣優惠
78118 以提高客戶忠誠度和重複購買率。
79119
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 系統應該拒絕並回應錯誤 "無效的購買金額"
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 提示會員購物車金額無效
102146```
103147
104148## 品質檢查清單
105149
106150完成前,確保您的規格具有:
107151- [ ] 已檢查與現有功能的衝突(如有衝突已向使用者確認)
108- - [ ] 清楚的功能描述
152+ - [ ] 清楚的功能描述,強調業務價值
109153- [ ] 至少一個正常流程情境
110154- [ ] 至少一個邊界情況情境
111155- [ ] 至少一個錯誤處理情境
112156- [ ] 沒有技術實作細節(沒有資料庫、沒有程式碼、沒有架構)
113157- [ ] 所有情境遵循 Given-When-Then 格式
114158- [ ] 每個情境都是原子性且可測試的
159+ - [ ] ** 使用行為描述而非實作細節** :
160+ - [ ] 避免具體的計算數值和測試斷言
161+ - [ ] 從用戶或業務角度描述期望行為
162+ - [ ] 描述「應該發生什麼」而非「如何驗證」
163+ - [ ] 使用業務語言而非技術術語
115164
116165## 下一步
117166
You can’t perform that action at this time.
0 commit comments