搜 索

IBAN 迁移 — 测试计划

  • 72阅读
  • 2026年03月12日
  • 1评论
首页 / Default / 正文
目的: 提供给 QA 团队的迁移测试计划,覆盖个人用户、商户用户及 Lean 迁移全流程

一、测试范围总览

模块测试阶段优先级
新用户自动分配 Zand IBANPhase 0P0
存量活跃用户批量迁移(Batch 1: 19.9K)Phase 1P0
存量非活跃 IBAN 用户迁移(Batch 2)Phase 1+P1
存量无 IBAN 用户手动触发(Batch 3)Phase 1++P2
商户 IBAN 迁移独立阶段P0
FAB 下线 & Phase 2 功能Phase 2P1
Lean 迁移独立阶段P0

二、Phase 0 — 新用户切换

2.1 前置条件

  • 灰度开关已部署(支持 10% / 20% / 50% / 100%)
  • Zand Create VA API 已联调通过
  • Payment Settings 页面已适配

2.2 测试用例

#用例步骤预期结果优先级
P0-01新用户 KYC 通过后自动分配 Zand IBAN1. 新用户注册并完成 KYC 2. 等待 IBAN 分配用户获得 Zand IBAN(非 FAB IBAN)P0
P0-02Payment Settings 展示新 IBAN1. 完成 P0-01 2. 打开 Payment Settings正确展示 Zand IBAN 信息P0
P0-03灰度 10% 切换验证1. 配置灰度 10% 2. 创建多个新用户约 10% 用户分配 Zand IBAN,其余仍为 FABP0
P0-04灰度逐步放量依次切换 20% → 50% → 100%各比例下新用户分配正确P0
P0-05Zand API 调用失败降级1. 模拟 Zand API 不可用 2. 新用户完成 KYC降级方案生效(记录失败日志,不影响用户 KYC 流程)P0

三、Phase 1 — 存量用户迁移(Batch 1,P0)

3.1 前置条件

  • Phase 0 全量验证通过
  • 19.9K 活跃 IBAN 用户清单已准备
  • mini-program 开发完成
  • ToDo Card 模板已创建
  • 通知定时任务已部署

3.2 批量 IBAN 创建

#用例步骤预期结果优先级
B1-01批量创建 Zand IBAN(小批量 Pilot)1. 选取 10% 用户(~2K) 2. 触发批量创建全部用户成功获得 Zand IBANP0
B1-02批量创建 — 并发性能验证1. 监控 Zand API TPS 2. 观察批量创建耗时在 Zand TPS 限制内顺序完成,无超时或限流P0
B1-03批量创建 — 部分失败重试1. 模拟部分用户 Zand 创建失败 2. 观察重试行为失败用户进入重试队列,按 3 次重试机制执行P0
B1-04重试 3 次仍失败 — 告警触发1. 模拟用户 3 次重试均失败触发告警,失败用户标记为 FAILED,出现在运营后台P0
B1-05全量批量创建(剩余 90%)1. Pilot 验证通过后全量执行19.9K 用户全部获得 Zand IBANP0

3.3 通知 & ToDo Card

#用例步骤预期结果优先级
N1-01首次通知触发1. 用户获得 Zand IBAN 后In-app 通知 + ToDo Card 出现在用户端P0
N1-02通知 CTA 跳转 mini-program1. 点击通知或 ToDo Card 的"查看详情"打开 mini-program,展示旧 IBAN / 新 IBAN / 迁移倒计时P0
N1-0310 天后重复通知1. 用户未使用新 IBAN 完成 top-up 2. 等待 10 天再次收到 In-app 通知 + ToDo Card 更新P0
N1-04通知关闭条件 — 首笔成功 top-up1. 用户使用新 Zand IBAN 完成一笔 wallet top-up不再收到迁移通知,ToDo Card 标记完成/消失P0
N1-05老版本 App 通知跳转1. 使用老版本 Botim App 2. 收到通知并点击正确打开 mini-program(非原生页面)P1

3.4 Mini-program 展示

#用例步骤预期结果优先级
M1-01双 IBAN 展示打开 mini-program同时展示旧 FAB IBAN 和新 Zand IBAN 详情P0
M1-02迁移倒计时展示打开 mini-program展示 "Your old IBAN will be deleted after X days on DD/MM/YYYY"P0
M1-03倒计时到期后展示倒计时结束后打开 mini-program展示"旧 IBAN 已过期"或仅展示新 IBAN(根据设计稿)P1

3.5 双 IBAN 并行收款

#用例步骤预期结果优先级
R1-01新 IBAN 收款正常入账1. 通过新 Zand IBAN 向用户转账款项正确入账至用户钱包P0
R1-02旧 IBAN 收款仍可入账(并行期)1. 通过旧 FAB IBAN 向用户转账款项正确入账至用户钱包(FAB → Zand Escrow 由 C&S 手动转账)P0
R1-03路由规则验证 — 优先 Zand1. 用户已有 Zand IBAN 2. 检查系统展示逻辑对外优先展示 Zand IBANP0
R1-04路由规则验证 — 未迁移用户仍走 FAB1. 用户未获得 Zand IBAN 2. 检查收款路由仍走 FAB 通道P0

四、Phase 1+ — Batch 2 迁移(P1)

4.1 前置条件

  • Batch 1 全量迁移完成且稳定运行
  • Batch 2 用户数量已确认(@Qian.Wang)
  • 活跃度判断逻辑已上线

4.2 测试用例

#用例步骤预期结果优先级
B2-01Batch 2 用户筛选准确性1. 执行 Batch 2 筛选逻辑仅包含"持有 FAB IBAN 且近6个月 < 1 笔交易"的用户P0
B2-02Batch 2 批量创建同 B1-01 ~ B1-05流程与 Batch 1 一致,无异常P0
B2-03Batch 2 通知触发同 N1-01 ~ N1-04流程与 Batch 1 一致P0

五、Phase 1++ — Batch 3 用户手动触发(P2)

5.1 前置条件

  • mini-program 中已增加"申请 IBAN"入口
  • 用户手动触发 → Zand IBAN 创建流程已开发

5.2 测试用例

#用例步骤预期结果优先级
B3-01手动申请入口展示1. 无 IBAN 但有钱包交易的用户 2. 打开 mini-program / Payment Settings展示"申请 IBAN"入口P0
B3-02手动触发创建成功1. 点击"申请 IBAN" 2. 等待创建完成用户获得 Zand IBAN,页面更新P0
B3-03手动触发创建失败1. 模拟 Zand API 失败展示友好错误提示,后台进入 3 次重试队列P0
B3-04非目标用户不展示入口1. 非活跃用户(9个月无交易)不展示"申请 IBAN"入口P1

六、商户 IBAN 迁移

6.1 前置条件

  • Pilot 10 家商户已选定(员工数最少)
  • 商户 - Zand IBAN 映射关系已准备(BD 提供)
  • 邮件通知模板已准备

6.2 测试用例

#用例步骤预期结果优先级
MC-01新商户直接分配 Zand IBAN1. 新商户入驻直接获得 Zand IBAN(非 FAB)P0
MC-02Pilot 商户分配新 Zand IBAN1. 为 10 家 Pilot 商户执行迁移每家商户获得 Zand IBANP0
MC-03双 IBAN 指向同一 WPS_SALARY 账户1. 迁移后检查 FAB & Zand IBAN 绑定关系两个 IBAN 均指向同一 WPS_SALARY 账户P0
MC-04新 IBAN 收款入账1. 通过 Zand IBAN 向商户转账正确入账至 WPS_SALARY 账户P0
MC-05旧 IBAN 收款入账(30天内)1. 通过 FAB IBAN 向商户转账正确入账P0
MC-0630天后 FAB IBAN 外部关闭1. 30天通知期结束 2. 外部尝试向 FAB IBAN 转账外部转账被拒绝 / 无法到达P0
MC-0715天静默回退 — FAB 后端仍接收1. 30天后仍有 FAB 入账后端仍接收,C&S 手动转至 Zand EscrowP0
MC-08迁移完成 — FAB IBAN delink & deactivate1. 45天缓冲期结束FAB IBAN 与商户解绑并停用P0
MC-09全量商户迁移1. Pilot 通过后执行全量全部 125 + 1K 商户完成迁移P0

七、Phase 2 — FAB 下线 & Salary Credit

7.1 前置条件

  • 全部个人用户 + 商户用户迁移完成
  • Phase 2 mini-program 入口已开发

7.2 测试用例

#用例步骤预期结果优先级
P2-01FAB IBAN 冻结/注销1. 全量迁移完成 2. 执行 FAB 下线操作所有 FAB IBAN 不再可用P0
P2-02Add Funds 页面新入口1. 打开 Add Funds 页面展示新 IBAN mini-program 入口P1
P2-03Salary Credit 功能验证1. 通过新 IBAN 接收工资入账款项正确入账至用户钱包P1

## 八、Lean 迁移

8.1 前置条件

  • Lean guaranteed payment solution 已上线
  • 存量用户通知机制已部署

8.2 测试用例

#用例步骤预期结果优先级
LN-01存量用户收到 Lean 迁移通知1. 触发 Lean 迁移通知用户收到推送,引导使用新 Lean 方案P0
LN-02用户连接新 destination1. 用户按引导连接新 Lean destination连接成功P0
LN-03旧 destination 自动删除1. 完成 LN-02 后旧 destination 自动删除,不可再使用P0
LN-04新 Lean 方案正常收款1. 通过新 Lean 通道发起收款款项正常到账P0

九、运营后台验证

#用例步骤预期结果优先级
OP-01迁移进度总览打开运营后台展示各批次迁移进度(总数/成功/失败/待处理)P1
OP-02失败用户列表查看失败用户展示用户 ID、失败原因、重试次数、当前状态P1
OP-03重试状态查看查看重试中的用户展示下次重试时间、已重试次数P1
OP-04手动触发重试对失败用户手动触发重试重新进入重试队列P2

十、回归测试要点

迁移过程中需确保以下现有功能不受影响:

功能验证点
Wallet Top-up(未迁移用户)FAB IBAN 收款仍正常
Quantix Loan Repayment还款流程不受迁移影响
WPS Salary(未迁移商户)工资代发仍正常
Merchant Top-up(未迁移商户)商户充值仍正常
KYC 流程新用户 KYC 不因 Zand API 问题阻塞

十一、测试环境要求

需求说明
Zand Sandbox/测试环境需要 Zand 提供 Create VA API 测试环境
测试用户数据需准备各批次对应的测试用户(活跃/非活跃/无 IBAN)
mini-program 测试包需 mini-program 开发方提供测试版本
ToDo Card 测试模板需在测试环境创建对应的 ToDo Card 模板
灰度开关配置需在测试环境支持灰度比例配置
通知定时任务测试环境中周期可调整为分钟级(加速验证)
无标签
评论区
Vivi 2周前

Return value of Cuteen_Comment::___parentContent() must be an instance of Widget\Base\Contents, array returned

TypeError: Return value of Cuteen_Comment::___parentContent() must be an instance of Widget\Base\Contents, array returned in /var/www/typecho/usr/themes/Cuteen/core/Comment.php:245 Stack trace: #0 /var/www/typecho/var/Typecho/Widget.php(462): Cuteen_Comment->___parentContent() #1 /var/www/typecho/usr/themes/Cuteen/core/Comment.php(211): Typecho\Widget->__get() #2 /var/www/typecho/var/Typecho/Widget.php(462): Cuteen_Comment->___permalink() #3 /var/www/typecho/usr/themes/Cuteen/core/Comment.php(564): Typecho\Widget->__get() #4 /var/www/typecho/usr/themes/Cuteen/core/Comment.php(88): Cuteen_Comment->reply() #5 /var/www/typecho/usr/themes/Cuteen/core/Comment.php(512): Cuteen_Comment->threadedCommentsCallback() #6 /var/www/typecho/usr/themes/Cuteen/include/comment.php(24): Cuteen_Comment->listComments() #7 /var/www/typecho/var/Widget/Archive.php(1308): require('/var/www/typech...') #8 /var/www/typecho/usr/themes/Cuteen/post.php(234): Widget\Archive->need() #9 /var/www/typecho/var/Widget/Archive.php(1390): require_once('/var/www/typech...') #10 /var/www/typecho/var/Typecho/Router.php(88): Widget\Archive->render() #11 /var/www/typecho/index.php(23): Typecho\Router::dispatch() #12 {main}