Skip to main content

代付審核修改收款人姓名 - 完整 QA 測試計劃

功能概述

用戶在後台審核代付(payout)訂單時(狀態為 AUDITING),可在審核彈窗中修改收款人姓名(payout_name)。修改後的姓名在推送到上游渠道時使用。

API: PATCH /backstage/api/v1/tasks/external-tasks/{task_id}

新增欄位: payout_name(String, 可選)


測試範圍

1. Happy Path -- AUDITING 狀態下修改姓名並審核通過

ID測試場景前置條件測試步驟預期結果優先級類型
TC-PEN-001AUDITING 訂單傳 payout_name + 有效渠道訂單狀態為 AUDITING1. 建立 AUDITING 狀態 payout
2. PATCH 傳 status=2, platform_channel_id, payout_name="新姓名"
姓名更新為 "新姓名",狀態轉為 EXECUTINGP0E2E
TC-PEN-002AUDITING 訂單不傳 payout_name訂單狀態為 AUDITING1. 建立 AUDITING 狀態 payout
2. PATCH 傳 status=2, platform_channel_id,不傳 payout_name
保留原始姓名,狀態正常轉為 EXECUTINGP0E2E
TC-PEN-003AUDITING 訂單傳 payout_name="" (空字串)訂單狀態為 AUDITING1. 建立 AUDITING 狀態 payout
2. PATCH 傳 status=2, platform_channel_id, payout_name=""
保留原始姓名,狀態正常轉為 EXECUTINGP0E2E

2. DB 持久化驗證

ID測試場景前置條件測試步驟預期結果優先級類型
TC-PEN-004修改姓名後 DB payout_name 已更新訂單狀態為 AUDITING1. 建立 AUDITING 狀態 payout (原始姓名="原始姓名")
2. PATCH 傳 payout_name="修改後姓名"
3. 直接查 DB payout_tab
DB 中 payout_name = "修改後姓名"P0整合
TC-PEN-005不傳 payout_name 時 DB 不變訂單狀態為 AUDITING1. 建立 AUDITING 狀態 payout (原始姓名="原始姓名")
2. PATCH 不傳 payout_name
3. 查 DB
DB 中 payout_name 仍為 "原始姓名"P0整合

3. 邊界條件測試

ID測試場景前置條件測試步驟預期結果優先級類型
TC-PEN-006payout_name 為 null訂單狀態為 AUDITING1. PATCH 傳 payout_name=null保留原始姓名P0E2E
TC-PEN-007payout_name 僅含空白字元訂單狀態為 AUDITING1. PATCH 傳 payout_name=" "保留原始姓名(視同空字串)P1E2E
TC-PEN-008payout_name 含特殊字元訂單狀態為 AUDITING1. PATCH 傳 payout_name="張@三#test"姓名更新為 "張@三#test"P1E2E
TC-PEN-009payout_name 為超長字串 (>64 chars)訂單狀態為 AUDITING1. PATCH 傳 65 字元的 payout_name視系統處理,可能截斷或報錯(DB 欄位 varchar(64))P2E2E

4. 非 AUDITING 狀態驗證 -- payout_name 應被忽略

ID測試場景前置條件測試步驟預期結果優先級類型
TC-PEN-010PENDING 狀態訂單傳 payout_name訂單狀態為 PENDING1. 建立 PENDING 狀態 payout
2. 嘗試觸發帶 payout_name 的操作
payout_name 被忽略,保留原始姓名P0E2E
TC-PEN-011EXECUTING 狀態訂單傳 payout_name訂單狀態為 EXECUTING1. 同上payout_name 被忽略P1E2E
TC-PEN-012SUCCESS 狀態訂單傳 payout_name訂單狀態為 SUCCESS1. 同上payout_name 被忽略P1E2E
TC-PEN-013CANCEL 狀態訂單傳 payout_name訂單狀態為 CANCEL1. 同上payout_name 被忽略P1E2E

5. 上游渠道驗證

ID測試場景前置條件測試步驟預期結果優先級類型
TC-PEN-014修改姓名後上游渠道收到新姓名訂單狀態為 AUDITING,已配置上游渠道1. 修改 payout_name
2. 審核通過推送上游
3. 檢查 channel_log
channel_log 中上游請求包含修改後的姓名P0手動/整合

6. 前端 UI 測試

ID測試場景前置條件測試步驟預期結果優先級類型
TC-PEN-015審核彈窗顯示 payout_name 輸入欄位AUDITING 狀態的代付訂單1. 打開審核彈窗彈窗中顯示可編輯的「收款人姓名」欄位,預填原始姓名P0手動
TC-PEN-016修改姓名後提交同上1. 修改姓名
2. 選擇渠道
3. 點擊送出
請求帶上 payout_name 欄位,API 回傳成功P0手動
TC-PEN-017不修改姓名直接提交同上1. 不修改姓名
2. 選擇渠道
3. 點擊送出
請求不帶 payout_name 或帶原始值,正常通過P1手動
TC-PEN-018清空姓名後提交同上1. 清空姓名欄位
2. 選擇渠道
3. 點擊送出
保留原始姓名(空值視為不修改)P1手動

測試環境要求

  1. 資料庫: Testcontainers (MySQL 8.0) + Flyway migrations
  2. 測試資料: 使用 type1_lifecycle.sql(audit_type=1,有 AUDITING 流程)
  3. 測試框架: JUnit 5 + Spring Boot Test + Testcontainers

測試數據準備

自動化測試利用既有的 E2E 測試基礎設施(BaseIntegrationTest + Testcontainers),使用 type1_lifecycle.sql 準備 audit_type=1 的商戶資料,確保訂單能經過 AUDITING 狀態。


自動化測試覆蓋

P0 自動化測試

測試檔案: PayoutEditNameP0Test.java

執行命令:

mvn test -Dtest="com.diamondpayintegration.feature.PayoutEditNameP0Test" -f /Users/david.ku/side-project/diamond-pay/diamond-pay-backstage-backend-payout-edit-name/pom.xml

覆蓋測試項目:

測試類別測試項目數說明
Happy Path3 項TC-PEN-001 ~ TC-PEN-003: AUDITING 狀態下傳/不傳/空字串 payout_name
DB 驗證2 項TC-PEN-004 ~ TC-PEN-005: 驗證 DB payout_name 欄位更新
邊界條件1 項TC-PEN-006: payout_name=null
非 AUDITING 狀態1 項TC-PEN-010: PENDING 狀態忽略 payout_name

額外回歸測試: TC-PEN-REG-001: 修改姓名不影響餘額計算

需手動驗證的項目

ID項目原因
TC-PEN-014上游渠道收到新姓名需要真實上游渠道或 mock,超出黑盒 E2E 範圍
TC-PEN-015 ~ TC-PEN-018前端 UI 測試需瀏覽器環境

測試執行結果

執行時間: 2026-02-26 執行環境: Testcontainers (MySQL 8.0 + Redis 5), JUnit 5, Spring Boot 2.1.4 執行命令:

mvn clean test -Dtest="com.diamondpayintegration.feature.PayoutEditNameP0Test" -DfailIfNoTests=false -f /Users/david.ku/side-project/diamond-pay/diamond-pay-backstage-backend-payout-edit-name/pom.xml

結果摘要

指標數值
總測試數8
通過8
失敗0
錯誤0
跳過0
耗時58.489 秒

各測試案例結果

ID測試名稱結果
TC-PEN-001AUDITING + payout_name="新姓名" → 姓名更新PASS
TC-PEN-002AUDITING + 不傳 payout_name → 保留原始姓名PASS
TC-PEN-003AUDITING + payout_name="" → 保留原始姓名PASS
TC-PEN-004DB 驗證 — 中英文混合姓名持久化PASS
TC-PEN-005DB 驗證 — 不傳時 payout_name 不變PASS
TC-PEN-006payout_name=null → 保留原始姓名PASS
TC-PEN-010PENDING 狀態 — reassign 應失敗PASS
TC-PEN-REG-001修改姓名不影響餘額計算PASS

Bug 清單

無。所有 P0 測試案例均通過。


回歸測試清單

確保本次變更不影響現有功能:

  • 正常的 Payout 建單流程(每個測試案例都先建單驗證)
  • AUDITING → PENDING (reassign) 審核通過流程
  • 非 AUDITING 狀態拒絕 reassign(TC-PEN-010)
  • 餘額計算正確性不受影響(TC-PEN-REG-001)
  • AUDITING → CANCEL 審核取消流程(需手動驗證)
  • 前端 UI 互動流程(需手動驗證)