Project

General

Profile

Actions

Feature #6712

closed

Feature #6693: [Test Suite] Coffee Cart 網站全功能驗收測試案例

[TC-19] 結帳防護邊界 - 驗證購物車為空 ($0.00) 時是否阻斷結帳與訂單提交

Feature #6712: [TC-19] 結帳防護邊界 - 驗證購物車為空 ($0.00) 時是否阻斷結帳與訂單提交

Added by Aiden cwc 2 days ago. Updated 2 days ago.

Status:
Rejected
Priority:
High
Assignee:
Category:
核心功能
Start date:
09/21/2026
Due date:
% Done:

0%

Estimated time:
0:18 h

Description

測試目的 (Objective)

驗證當購物車內無任何商品(品項數為 0、總金額為 $0.00)時,系統是否具備結帳防護邏輯,嚴禁使用者喚出付款彈窗或強制送出無效訂單。

前置條件 (Preconditions)

  1. 開啟受測網站:Coffee cart
  2. 購物車為初始空狀態(cart (0),顯示 Total: $0.00)。

測試步驟 (Test Steps)

  1. 在首頁確認無任何品項的情況下,直接點擊右下角 Total: $0.00 付款按鈕。
  2. 若彈出付款彈窗(Payment Modal),輸入測試資訊(Name: Test, Email: test@example.com)。
  3. 點擊提交付款(Submit)。
  4. 另從導覽列進入 /cart 頁面,觀察在空狀態提示下是否仍有結帳觸發按鈕,若有則嘗試提交。

預期結果 (Expected Results)

  1. 正常防禦邏輯:在購物車為空時,右下角付款按鈕應為 Disabled(不可點擊)狀態,或點擊時提示「請先選購商品」,不可開啟付款表單。
  2. 系統嚴禁允許使用者以總額 $0.00 且商品為空的情況下成功提交訂單。

Updated by Aiden cwc 2 days ago · Edited Actions #1

Aiden cwc wrote:

測試目的 (Objective)

驗證當購物車內無任何商品(品項數為 0、總金額為 $0.00)時,系統是否具備結帳防護邏輯,嚴禁使用者喚出付款彈窗或強制送出無效訂單。

前置條件 (Preconditions)

  1. 開啟受測網站:Coffee cart
  2. 購物車為初始空狀態(cart (0),顯示 Total: $0.00)。

測試步驟 (Test Steps)

  1. 在首頁確認無任何品項的情況下,直接點擊右下角 Total: $0.00 付款按鈕。
  2. 若彈出付款彈窗(Payment Modal),輸入測試資訊(Name: Test, Email: test@example.com)。
  3. 點擊提交付款(Submit)。
  4. 另從導覽列進入 /cart 頁面,觀察在空狀態提示下是否仍有結帳觸發按鈕,若有則嘗試提交。

預期結果 (Expected Results)

  1. 正常防禦邏輯:在購物車為空時,右下角付款按鈕應為 Disabled(不可點擊)狀態,或點擊時提示「請先選購商品」,不可開啟付款表單。
  2. 系統嚴禁允許使用者以總額 $0.00 且商品為空的情況下成功提交訂單。

實際測試結果 (Actual Results)

  • 執行狀態:Fail (未通過 - 存在業務邏輯缺陷)

  • 嚴重程度:High (邏輯漏洞 / 結帳防禦缺失)

  • 實際呈現

    1. 首頁右下角按鈕狀態異常:在購物車為空 (cart (0)) 且總額為 $0.00 時,右下角付款按鈕仍維持啟用狀態(pointer-events 正常、無 disabled 屬性或置灰反饋)。
    2. 非預期喚出付款視窗:點擊 Total: $0.00 按鈕後,系統毫無防阻地彈出結帳資訊彈窗(Payment Details Modal)。
    3. 成功提交零元無效訂單:在彈窗內填寫姓名與 Email 後,點擊 Submit 即可成功送出;頁面右下角隨即彈出綠色 Thanks for your purchase. Please check your email for payment. 的 Snackbar 成功提示。
    4. 購物車頁面表現不一致:直接訪問 /cart 頁面時,因無商品僅顯示提示文字 No coffee, go add some. 且未渲染付款按鈕;但在首頁卻允許空車結帳,兩者在「空購物車」情境下的交互邏輯前後矛盾。
  • 原因分析

    1. 前端欠缺購物車狀態防禦校驗 (Lack of Cart State Guarding)
      右下角結帳按鈕的點擊監聽事件(Click Handler)僅綁定了開啟 Modal 的動作,未在觸發前對當前購物車品項陣列長度進行守門判斷(即缺少 if (cart.length === 0) return; 或屬性綁定 :disabled="cart.length === 0" 的前端防護)。
    2. 表單提交未核驗金額與明細 (Missing Payload / Amount Validation)
      提交付款的邏輯僅校驗了 Modal 內部的表單欄位(姓名、Email 是否填寫),並未校驗關聯的購物車上下文(Cart Context),導致後續的「結帳成功」事件在沒有實質購買資料的情況下仍被無條件觸發。

Updated by Aiden cwc 2 days ago Actions #2

  • Status changed from New to Resolved
  • % Done changed from 0 to 100

Updated by Aiden cwc 2 days ago Actions #3

  • Estimated time set to 0:18 h

Updated by Aiden cwc 2 days ago Actions #4

  • Status changed from Resolved to Rejected
  • % Done changed from 100 to 0
Actions

Also available in: PDF Atom