PiPiPen Stripe 2.0 重构版本测试用例文档

项目概览

当前测试覆盖两个项目的特性分支:

  • pipipen-api: feature/stripe2_ref 分支 (相对主分支有 70+ 个提交)
  • pipipen-front: stripe 分支 (相对主分支有 11 个提交)

核心改动概要

后端核心改动 (pipipen-api)

  1. Stripe 支付系统全面重构
  2. 钱包系统增强与多货币支持
  3. 邮箱验证码系统重构
  4. 提现账户管理优化
  5. 订单支付流程优化

前端核心改动 (pipipen-front)

  1. 钱包功能界面增强
  2. 服务创建货币验证逻辑
  3. 多语言支持完善
  4. 用户认证流程优化

一、Stripe 支付系统测试用例

1.1 Stripe 客户端服务重构 (StripeClientService)

TC-STRIPE-001: Stripe 客户端接口实现测试

测试目标: 验证新的 Stripe 客户端接口架构
涉及文件:

  • app/Service/Stripe/Client/StripeClientInterface.php
  • app/Service/Stripe/Client/StripeClientService.php
  • app/Service/Stripe/Client/BaseStripeClientService.php

测试步骤:

  1. 初始化 Stripe 客户端服务
  2. 验证接口方法是否正确实现
  3. 测试客户端工厂模式创建实例
  4. 验证数据库存储装饰器功能

预期结果:

  • Stripe 客户端正确初始化
  • 所有接口方法正常工作
  • 数据持久化正常

TC-STRIPE-002: Stripe Connect 账户创建测试

测试目标: 验证 Stripe Connect 账户创建流程
涉及文件: app/Http/Controllers/Api/StripeController.php

测试步骤:

  1. 艺术家申请创建 Stripe Connect 账户
  2. 提供必要的身份验证信息
  3. 验证账户创建响应
  4. 检查数据库记录是否正确创建

预期结果:

  • 账户创建成功
  • 返回正确的账户 ID
  • 数据库记录完整

TC-STRIPE-003: Stripe 服务协议验证测试

测试目标: 验证 Stripe 服务协议处理逻辑
涉及文件: app/Enums/UserWithdrawStripeServiceAgreement.php

测试步骤:

  1. 测试不同服务协议类型的验证
  2. 验证服务协议状态转换
  3. 测试协议验证失败情况

预期结果:

  • 服务协议验证正确
  • 状态转换符合业务逻辑
  • 错误处理恰当

1.2 Stripe Checkout Session 管理

TC-STRIPE-004: Checkout Session 创建测试

测试目标: 验证 Stripe Checkout Session 创建功能
涉及文件:

  • app/Service/Stripe/StripeCheckoutSessionService.php
  • app/Models/StripeCheckoutSession.php

测试步骤:

  1. 创建工作任务订单
  2. 生成 Stripe Checkout Session
  3. 验证会话状态和参数
  4. 测试会话过期机制

预期结果:

  • Checkout Session 正确创建
  • 会话参数符合订单要求
  • 状态管理正确

TC-STRIPE-005: Checkout Session 状态管理测试

测试目标: 验证会话状态枚举和状态转换
涉及文件: app/Enums/StripeCheckoutSessionStatus.php

测试用例:

  1. 会话状态创建: pendingprocessingcompleted
  2. 会话过期: pendingexpired
  3. 会话取消: processingcancelled

预期结果: 所有状态转换符合业务规则

1.3 Stripe 支付费用计算

TC-STRIPE-006: 费用计算测试

测试目标: 验证 Stripe 费用计算逻辑
涉及文件: app/Service/Stripe/StripeCalcAmount.php

测试场景:

  1. 基础费用计算:

    • 输入: 订单金额 $100
    • 预期: 平台费用、艺术家费用、Stripe 费用正确分摊
  2. 多货币费用计算:

    • 测试 USD、CNY、JPY 等货币
    • 验证汇率转换准确性
  3. 零小数货币处理:

    • 测试日元等零小数货币的费用计算
    • 验证价格验证逻辑

预期结果: 费用计算准确,符合 Stripe 规则

TC-STRIPE-007: 价格验证逻辑测试

测试目标: 验证货币价格验证增强
涉及提交: 86d404a fix(api): 修复价格验证逻辑

测试用例:

  1. 零小数货币验证 (如 JPY):

    • 有效价格: 1000, 1500, 2000
    • 无效价格: 100.5, 999.99
  2. 小数货币验证 (如 USD):

    • 有效价格: 10.00, 15.50, 20.99
    • 无效价格: 0.50 (低于最小金额)

预期结果: 价格验证符合各货币规则,抛出适当异常


二、钱包系统测试用例

2.1 钱包基础功能

TC-WALLET-001: 钱包类型和用途测试

测试目标: 验证钱包类型枚举和用途分类
涉及文件:

  • app/Enums/WalletUsage.php
  • app/Enums/WalletDepositType.php

测试用例:

  1. 钱包用途类型:

    • DEPOSIT: 收款钱包
    • CREDIT: 礼品卡钱包
    • PLAT_FEE: 平台费钱包
  2. 存款类型:

    • STRIPE: Stripe 入金
    • ADMIN: 管理员操作

预期结果: 枚举值正确,业务逻辑清晰

TC-WALLET-002: 钱包创建和关联测试

测试目标: 验证钱包创建和用户关联
涉及文件: app/Models/Wallet.php

测试步骤:

  1. 用户注册时自动创建钱包
  2. 艺术家申请时创建特定钱包类型
  3. 验证钱包与用户关联关系
  4. 测试多货币钱包支持

预期结果:

  • 钱包自动创建成功
  • 关联关系正确
  • 支持多货币

2.2 钱包交易系统

TC-WALLET-003: 钱包交易记录测试

测试目标: 验证钱包交易记录功能
涉及文件:

  • app/Models/WalletTransaction.php
  • app/Service/Wallet/WalletTransactionService.php

测试场景:

  1. 入账交易:

    • 类型: DEPOSIT
    • 来源: Stripe 支付
    • 验证余额变化
  2. 出账交易:

    • 类型: WITHDRAW
    • 目标: 银行账户
    • 验证余额扣减
  3. 转账交易:

    • 类型: TRANSFER
    • 钱包间转账
    • 验证双向记录

预期结果: 所有交易记录完整,余额计算准确

TC-WALLET-004: 钱包扣减逻辑测试

测试目标: 验证钱包扣减流程优化
涉及提交:

  • b6ccf24 refactor(payment): 优化钱包扣减逻辑
  • d3eb921 fix(payment): 修复钱包扣减余额不足检查

测试用例:

  1. 余额充足扣减:

    • 当前余额: $100
    • 扣减金额: $50
    • 预期余额: $50
  2. 余额不足处理:

    • 当前余额: $30
    • 扣减金额: $50
    • 预期: 抛出余额不足异常
  3. 原子操作验证:

    • 并发扣减请求
    • 验证数据一致性

预期结果: 扣减逻辑正确,异常处理完善

2.3 钱包扣款记录系统

TC-WALLET-005: 扣款记录状态管理测试

测试目标: 验证钱包扣款记录状态枚举
涉及文件:

  • app/Enums/WalletDeductionStatus.php
  • app/Models/WalletDeductionRecord.php

状态转换测试:

  1. PENDINGPROCESSINGCOMPLETED
  2. PENDINGFAILED
  3. PROCESSINGCANCELLED

预期结果: 状态转换符合业务规则

TC-WALLET-006: 钱包补差系统测试

测试目标: 验证钱包补差功能
涉及提交: 5892c80 feat(wallet): 新增钱包补差系统及Stripe转账功能

测试场景:

  1. 费用差额计算:

    • 原费用: $100
    • 新费用: $120
    • 补差: $20
  2. 补差支付:

    • 从用户钱包扣减补差金额
    • 转账到艺术家钱包

预期结果: 补差计算准确,转账成功

2.4 提现功能测试

TC-WALLET-007: 钱包提现功能测试

测试目标: 验证钱包提现重构功能
涉及文件:

  • app/Service/Wallet/WalletWithdrawService.php
  • app/Service/Wallet/WalletWithdrawValidator.php
  • app/Service/Wallet/WalletWithdrawContext.php

测试步骤:

  1. 验证提现请求验证逻辑
  2. 测试提现金额计算
  3. 验证提现账户验证
  4. 测试 Stripe 转账集成

预期结果:

  • 提现请求验证通过
  • 金额计算正确
  • Stripe 转账成功

TC-WALLET-008: 提现账户管理测试

测试目标: 验证用户提现账户功能
涉及文件:

  • app/Models/UserWithdrawAccount.php
  • app/Http/Controllers/Api/User/UserWithdrawAccountController.php

测试功能:

  1. 账户绑定:

    • 绑定银行账户
    • 验证账户信息
    • 设置账户状态
  2. 账户解绑:

    • 解绑流程
    • 状态更新
    • 时间戳记录

预期结果: 账户管理功能完整,状态控制正确


三、邮箱验证系统测试用例

3.1 邮箱验证码重构

TC-EMAIL-001: 邮箱验证码服务测试

测试目标: 验证邮箱验证码系统重构
涉及文件:

  • app/Service/EmailVerifyCodeService.php
  • app/Models/EmailVerifyCode.php
  • app/Enums/EmailVerifyCodeType.php
  • app/Enums/EmailVerifyCodeStatus.php

测试场景:

  1. 验证码生成:

    • 生成6位数字验证码
    • 设置过期时间 (15分钟)
    • 记录生成时间
  2. 验证码类型:

    • 注册验证: REGISTER
    • 登录验证: LOGIN
    • 密码重置: RESET_PASSWORD
  3. 验证码状态:

    • PENDING: 待验证
    • USED: 已使用
    • EXPIRED: 已过期

预期结果: 验证码系统功能完整,状态管理正确

TC-EMAIL-002: 验证码尝试限制测试

测试目标: 验证验证码尝试次数限制
涉及提交:

  • 578c284 fix(email): 调整邮箱验证码尝试限制
  • 8fca018 feat(email): 增加新的错误代码用于验证尝试次数限制

测试用例:

  1. 正常验证:

    • 第1次尝试: 输入正确验证码
    • 结果: 验证成功
  2. 错误尝试限制:

    • 第1-3次: 输入错误验证码
    • 第4次: 触发限制
    • 预期: 返回错误码,阻止进一步尝试
  3. 时间窗口重置:

    • 等待限制时间过期
    • 重新尝试验证
    • 预期: 重置尝试次数

预期结果: 尝试限制机制有效防止暴力破解

TC-EMAIL-003: 验证码过期和使用时间测试

测试目标: 验证验证码时间管理
涉及提交: fa4b460 feat(EmailVerifyCode): 添加过期和使用时间字段

测试场景:

  1. 验证码过期检查:

    • 生成时间: T0
    • 验证时间: T0 + 16分钟
    • 预期: 验证码已过期
  2. 使用时间记录:

    • 验证成功时记录 used_at
    • 状态变更为 USED

预期结果: 时间管理准确,状态更新及时


四、支付流程集成测试用例

4.1 工作任务支付流程

TC-PAYMENT-001: 工作任务支付重构测试

测试目标: 验证工作任务支付流程模块化
涉及文件:

  • app/Http/Controllers/Api/User/WorkTaskPayController.php
  • app/Service/Payment/WorkTaskPaymentService.php
  • app/Service/Payment/WorkTaskPaymentContext.php
  • app/Service/Payment/WorkTaskPaymentValidator.php

测试流程:

  1. 支付请求验证:

    • 验证工作任务状态
    • 验证用户权限
    • 验证支付金额
  2. 支付方式选择:

    • Stripe 支付
    • 钱包扣减
    • 混合支付
  3. 支付执行:

    • 创建支付会话
    • 执行资金转移
    • 更新任务状态

预期结果: 支付流程完整,各模块协调工作正常

TC-PAYMENT-002: 订单取消逻辑测试

测试目标: 验证订单取消与钱包处理
涉及提交: 262b806 refactor(order service): 优化订单取消与钱包处理逻辑

测试场景:

  1. 支付前取消:

    • 订单状态: PENDING
    • 操作: 用户取消
    • 预期: 订单状态变更,无资金操作
  2. 支付后取消:

    • 订单状态: PAID
    • 操作: 申请退款
    • 预期: 执行退款流程,更新钱包余额
  3. 部分完成取消:

    • 任务进度: 50%
    • 操作: 协商取消
    • 预期: 按比例退款

预期结果: 取消逻辑正确,资金处理安全

4.2 Stripe 转账功能

TC-PAYMENT-003: Stripe Connect 转账测试

测试目标: 验证 Stripe Connect 账户转账功能
涉及文件: app/Service/Wallet/StripeTransferService.php

测试用例:

  1. 平台到艺术家转账:

    • 来源: 平台主账户
    • 目标: 艺术家 Connect 账户
    • 金额: 任务完成费用
  2. 转账状态追踪:

    • 转账创建
    • 转账处理中
    • 转账完成
  3. 转账失败处理:

    • 账户不存在
    • 余额不足
    • 网络异常

预期结果: 转账功能稳定,状态追踪完整


五、前端用户体验测试用例

5.1 钱包界面功能

TC-FRONTEND-001: 钱包页面功能测试

测试目标: 验证钱包页面重构功能
涉及文件:

  • pages/setting/wallet.vue
  • components/wallets/add_alipay.vue
  • components/wallets/hint.vue

测试功能:

  1. 钱包余额显示:

    • 多货币余额展示
    • 实时汇率转换
    • 余额变动动画
  2. 支付宝账户添加:

    • 表单验证
    • 账户绑定流程
    • 成功提示
  3. 提示和帮助:

    • 操作指引
    • 安全提示
    • 常见问题

预期结果: 界面友好,操作流畅,提示清晰

TC-FRONTEND-002: 国家选择功能测试

测试目标: 验证国家选择组件
涉及提交:

  • a86ccfa 添加国家
  • b1f9601 添加选择国家

测试用例:

  1. 国家列表展示:

    • 完整国家列表
    • 搜索功能
    • 国旗图标显示
  2. 选择交互:

    • 点击选择
    • 搜索过滤
    • 选中状态

预期结果: 国家选择功能完整,用户体验良好

5.2 服务创建优化

TC-FRONTEND-003: 服务创建货币验证测试

测试目标: 验证服务创建时的货币验证逻辑
涉及文件:

  • components/services/create.vue
  • pages/artist_center/service_form.vue

测试场景:

  1. 可用货币判断:

    • 检查艺术家支持的货币
    • 验证 Stripe 账户支持的货币
    • 过滤不可用货币
  2. 价格验证增强:

    • 不同货币的最小金额验证
    • 小数位数验证
    • 实时汇率提示

预期结果: 货币验证逻辑正确,用户输入体验优化

5.3 用户认证流程

TC-FRONTEND-004: 验证码功能测试

测试目标: 验证前端验证码逻辑更新
涉及文件:

  • pages/forget_password.vue
  • pages/signup.vue

测试场景:

  1. 验证码发送:

    • 邮箱格式验证
    • 发送频率限制
    • 发送状态反馈
  2. 验证码输入:

    • 6位数字验证
    • 实时验证
    • 错误提示
  3. 验证码过期处理:

    • 过期检测
    • 重新发送
    • 状态重置

预期结果: 验证码功能稳定,用户操作清晰

5.4 多语言支持测试

TC-FRONTEND-005: 多语言更新测试

测试目标: 验证多语言文件更新
涉及文件:

  • locales/en.json
  • locales/zh.json
  • locales/ja.json

测试内容:

  1. 新增翻译条目:

    • 钱包相关术语
    • 验证码提示信息
    • 错误消息
  2. 翻译质量检查:

    • 术语一致性
    • 语法正确性
    • 文化适应性
  3. 动态切换测试:

    • 语言切换功能
    • 界面即时更新
    • 数据格式适配

预期结果: 多语言支持完整,翻译质量高


六、性能和安全测试用例

6.1 数据库性能测试

TC-PERFORMANCE-001: 数据库迁移测试

测试目标: 验证新增迁移文件的性能影响
涉及改动: 大量新增的数据库迁移文件

测试重点:

  1. 迁移执行时间:

    • 记录每个迁移的执行时间
    • 检查是否有长时间运行的迁移
  2. 索引优化:

    • 验证新增索引的有效性
    • 检查查询性能提升
  3. 数据完整性:

    • 验证外键约束
    • 检查数据一致性

预期结果: 迁移顺利执行,性能影响在可接受范围内

6.2 安全测试

TC-SECURITY-001: 权限控制测试

测试目标: 验证新增的权限控制机制

测试场景:

  1. API 访问控制:

    • 未认证用户访问受保护接口
    • 普通用户访问艺术家接口
    • 艺术家访问管理员接口
  2. 资源权限验证:

    • 用户只能访问自己的钱包
    • 艺术家只能管理自己的服务
    • 管理员权限边界检查

预期结果: 权限控制严格,无权限泄露

TC-SECURITY-002: 支付安全测试

测试目标: 验证支付流程的安全性

测试内容:

  1. 支付数据加密:

    • 敏感信息传输加密
    • 数据库存储加密
  2. 防重复支付:

    • 同一订单重复支付检测
    • 并发支付处理
  3. 异常情况处理:

    • 网络中断恢复
    • 部分支付失败处理

预期结果: 支付流程安全可靠,异常处理完善


七、集成测试用例

7.1 端到端业务流程测试

TC-INTEGRATION-001: 完整委托流程测试

测试目标: 验证从服务发布到支付完成的完整流程

测试流程:

  1. 艺术家端:

    • 创建服务 (使用新的货币验证)
    • 设置提现账户
    • 接受委托请求
  2. 用户端:

    • 浏览服务
    • 发起委托请求
    • 使用新支付流程完成支付
  3. 系统处理:

    • 自动创建工作任务
    • 钱包资金流转
    • 通知发送

预期结果: 整个流程顺畅,各环节协调工作

TC-INTEGRATION-002: 多语言环境集成测试

测试目标: 验证多语言环境下的系统表现

测试场景:

  1. 中文用户使用流程:

    • 注册验证码 (中文界面)
    • 钱包操作 (人民币)
    • 服务委托 (中文沟通)
  2. 日文用户使用流程:

    • 注册验证码 (日文界面)
    • 钱包操作 (日元)
    • 服务委托 (日文沟通)

预期结果: 多语言环境下功能正常,用户体验一致

7.2 负载测试

TC-LOAD-001: 并发支付测试

测试目标: 验证系统在高并发支付场景下的表现

测试设置:

  • 并发用户数: 100
  • 测试时长: 30分钟
  • 支付频率: 每分钟10次

监控指标:

  • 响应时间
  • 成功率
  • 系统资源使用率
  • 数据一致性

预期结果: 系统稳定,支付成功率高于99%


八、回归测试用例

8.1 现有功能回归测试

TC-REGRESSION-001: 基础功能回归测试

测试目标: 确保重构不影响现有功能

测试范围:

  1. 用户注册登录
  2. 聊天系统
  3. 文件上传
  4. 订单管理
  5. 艺术家申请

测试方法: 使用现有测试套件进行自动化回归测试

TC-REGRESSION-002: API 兼容性测试

测试目标: 验证 API 接口的向后兼容性

测试内容:

  1. 请求格式兼容
  2. 响应格式兼容
  3. 错误码兼容
  4. 认证机制兼容

预期结果: API 接口保持向后兼容,现有客户端正常工作


九、测试环境和数据准备

9.1 测试环境配置

后端环境:

  • PHP 8.2+
  • Laravel 11
  • MySQL 8.0+
  • Redis 6.0+
  • Stripe 测试环境

前端环境:

  • Node.js 18+
  • Nuxt.js 3
  • Vue.js 3

9.2 测试数据准备

用户数据:

  • 普通用户账户 x 10
  • 艺术家账户 x 5
  • 管理员账户 x 2

业务数据:

  • 测试服务 x 20
  • 测试订单 x 50
  • 测试钱包余额配置

支付测试数据:

  • Stripe 测试卡号
  • 不同货币的测试金额
  • 失败场景测试数据

十、测试执行计划

10.1 测试阶段安排

第一阶段 (2天):

  • 基础功能测试
  • 单元测试执行

第二阶段 (3天):

  • 集成测试
  • 端到端测试

第三阶段 (2天):

  • 性能测试
  • 安全测试

第四阶段 (1天):

  • 回归测试
  • 用户验收测试

10.2 测试完成标准

功能完整性: 所有新功能测试通过率 ≥ 95% 性能指标: 响应时间不超过现有基线的 110% 安全标准: 所有安全测试用例通过 兼容性: 向后兼容性测试 100% 通过


十一、风险点识别

11.1 高风险项

  1. Stripe 支付集成: 涉及资金安全,需重点测试
  2. 钱包余额一致性: 并发操作可能导致数据不一致
  3. 数据库迁移: 大量迁移文件可能影响部署

11.2 缓解措施

  1. 分步部署: 先部署到测试环境,充分验证后再上生产
  2. 数据备份: 升级前完整备份数据库
  3. 回滚方案: 准备快速回滚机制
  4. 监控告警: 加强支付和钱包操作的监控

测试用例文档版本: v1.0
创建日期: 2025-07-10
适用版本:

  • pipipen-api: feature/stripe2_ref
  • pipipen-front: stripe