PiPiPen Stripe 2.0 重构版本测试用例文档
项目概览
当前测试覆盖两个项目的特性分支:
- pipipen-api:
feature/stripe2_ref分支 (相对主分支有 70+ 个提交) - pipipen-front:
stripe分支 (相对主分支有 11 个提交)
核心改动概要
后端核心改动 (pipipen-api)
- Stripe 支付系统全面重构
- 钱包系统增强与多货币支持
- 邮箱验证码系统重构
- 提现账户管理优化
- 订单支付流程优化
前端核心改动 (pipipen-front)
- 钱包功能界面增强
- 服务创建货币验证逻辑
- 多语言支持完善
- 用户认证流程优化
一、Stripe 支付系统测试用例
1.1 Stripe 客户端服务重构 (StripeClientService)
TC-STRIPE-001: Stripe 客户端接口实现测试
测试目标: 验证新的 Stripe 客户端接口架构
涉及文件:
app/Service/Stripe/Client/StripeClientInterface.phpapp/Service/Stripe/Client/StripeClientService.phpapp/Service/Stripe/Client/BaseStripeClientService.php
测试步骤:
- 初始化 Stripe 客户端服务
- 验证接口方法是否正确实现
- 测试客户端工厂模式创建实例
- 验证数据库存储装饰器功能
预期结果:
- Stripe 客户端正确初始化
- 所有接口方法正常工作
- 数据持久化正常
TC-STRIPE-002: Stripe Connect 账户创建测试
测试目标: 验证 Stripe Connect 账户创建流程
涉及文件: app/Http/Controllers/Api/StripeController.php
测试步骤:
- 艺术家申请创建 Stripe Connect 账户
- 提供必要的身份验证信息
- 验证账户创建响应
- 检查数据库记录是否正确创建
预期结果:
- 账户创建成功
- 返回正确的账户 ID
- 数据库记录完整
TC-STRIPE-003: Stripe 服务协议验证测试
测试目标: 验证 Stripe 服务协议处理逻辑
涉及文件: app/Enums/UserWithdrawStripeServiceAgreement.php
测试步骤:
- 测试不同服务协议类型的验证
- 验证服务协议状态转换
- 测试协议验证失败情况
预期结果:
- 服务协议验证正确
- 状态转换符合业务逻辑
- 错误处理恰当
1.2 Stripe Checkout Session 管理
TC-STRIPE-004: Checkout Session 创建测试
测试目标: 验证 Stripe Checkout Session 创建功能
涉及文件:
app/Service/Stripe/StripeCheckoutSessionService.phpapp/Models/StripeCheckoutSession.php
测试步骤:
- 创建工作任务订单
- 生成 Stripe Checkout Session
- 验证会话状态和参数
- 测试会话过期机制
预期结果:
- Checkout Session 正确创建
- 会话参数符合订单要求
- 状态管理正确
TC-STRIPE-005: Checkout Session 状态管理测试
测试目标: 验证会话状态枚举和状态转换
涉及文件: app/Enums/StripeCheckoutSessionStatus.php
测试用例:
- 会话状态创建:
pending→processing→completed - 会话过期:
pending→expired - 会话取消:
processing→cancelled
预期结果: 所有状态转换符合业务规则
1.3 Stripe 支付费用计算
TC-STRIPE-006: 费用计算测试
测试目标: 验证 Stripe 费用计算逻辑
涉及文件: app/Service/Stripe/StripeCalcAmount.php
测试场景:
-
基础费用计算:
- 输入: 订单金额 $100
- 预期: 平台费用、艺术家费用、Stripe 费用正确分摊
-
多货币费用计算:
- 测试 USD、CNY、JPY 等货币
- 验证汇率转换准确性
-
零小数货币处理:
- 测试日元等零小数货币的费用计算
- 验证价格验证逻辑
预期结果: 费用计算准确,符合 Stripe 规则
TC-STRIPE-007: 价格验证逻辑测试
测试目标: 验证货币价格验证增强
涉及提交: 86d404a fix(api): 修复价格验证逻辑
测试用例:
-
零小数货币验证 (如 JPY):
- 有效价格: 1000, 1500, 2000
- 无效价格: 100.5, 999.99
-
小数货币验证 (如 USD):
- 有效价格: 10.00, 15.50, 20.99
- 无效价格: 0.50 (低于最小金额)
预期结果: 价格验证符合各货币规则,抛出适当异常
二、钱包系统测试用例
2.1 钱包基础功能
TC-WALLET-001: 钱包类型和用途测试
测试目标: 验证钱包类型枚举和用途分类
涉及文件:
app/Enums/WalletUsage.phpapp/Enums/WalletDepositType.php
测试用例:
-
钱包用途类型:
DEPOSIT: 收款钱包CREDIT: 礼品卡钱包PLAT_FEE: 平台费钱包
-
存款类型:
STRIPE: Stripe 入金ADMIN: 管理员操作
预期结果: 枚举值正确,业务逻辑清晰
TC-WALLET-002: 钱包创建和关联测试
测试目标: 验证钱包创建和用户关联
涉及文件: app/Models/Wallet.php
测试步骤:
- 用户注册时自动创建钱包
- 艺术家申请时创建特定钱包类型
- 验证钱包与用户关联关系
- 测试多货币钱包支持
预期结果:
- 钱包自动创建成功
- 关联关系正确
- 支持多货币
2.2 钱包交易系统
TC-WALLET-003: 钱包交易记录测试
测试目标: 验证钱包交易记录功能
涉及文件:
app/Models/WalletTransaction.phpapp/Service/Wallet/WalletTransactionService.php
测试场景:
-
入账交易:
- 类型:
DEPOSIT - 来源: Stripe 支付
- 验证余额变化
- 类型:
-
出账交易:
- 类型:
WITHDRAW - 目标: 银行账户
- 验证余额扣减
- 类型:
-
转账交易:
- 类型:
TRANSFER - 钱包间转账
- 验证双向记录
- 类型:
预期结果: 所有交易记录完整,余额计算准确
TC-WALLET-004: 钱包扣减逻辑测试
测试目标: 验证钱包扣减流程优化
涉及提交:
b6ccf24 refactor(payment): 优化钱包扣减逻辑d3eb921 fix(payment): 修复钱包扣减余额不足检查
测试用例:
-
余额充足扣减:
- 当前余额: $100
- 扣减金额: $50
- 预期余额: $50
-
余额不足处理:
- 当前余额: $30
- 扣减金额: $50
- 预期: 抛出余额不足异常
-
原子操作验证:
- 并发扣减请求
- 验证数据一致性
预期结果: 扣减逻辑正确,异常处理完善
2.3 钱包扣款记录系统
TC-WALLET-005: 扣款记录状态管理测试
测试目标: 验证钱包扣款记录状态枚举
涉及文件:
app/Enums/WalletDeductionStatus.phpapp/Models/WalletDeductionRecord.php
状态转换测试:
PENDING→PROCESSING→COMPLETEDPENDING→FAILEDPROCESSING→CANCELLED
预期结果: 状态转换符合业务规则
TC-WALLET-006: 钱包补差系统测试
测试目标: 验证钱包补差功能
涉及提交: 5892c80 feat(wallet): 新增钱包补差系统及Stripe转账功能
测试场景:
-
费用差额计算:
- 原费用: $100
- 新费用: $120
- 补差: $20
-
补差支付:
- 从用户钱包扣减补差金额
- 转账到艺术家钱包
预期结果: 补差计算准确,转账成功
2.4 提现功能测试
TC-WALLET-007: 钱包提现功能测试
测试目标: 验证钱包提现重构功能
涉及文件:
app/Service/Wallet/WalletWithdrawService.phpapp/Service/Wallet/WalletWithdrawValidator.phpapp/Service/Wallet/WalletWithdrawContext.php
测试步骤:
- 验证提现请求验证逻辑
- 测试提现金额计算
- 验证提现账户验证
- 测试 Stripe 转账集成
预期结果:
- 提现请求验证通过
- 金额计算正确
- Stripe 转账成功
TC-WALLET-008: 提现账户管理测试
测试目标: 验证用户提现账户功能
涉及文件:
app/Models/UserWithdrawAccount.phpapp/Http/Controllers/Api/User/UserWithdrawAccountController.php
测试功能:
-
账户绑定:
- 绑定银行账户
- 验证账户信息
- 设置账户状态
-
账户解绑:
- 解绑流程
- 状态更新
- 时间戳记录
预期结果: 账户管理功能完整,状态控制正确
三、邮箱验证系统测试用例
3.1 邮箱验证码重构
TC-EMAIL-001: 邮箱验证码服务测试
测试目标: 验证邮箱验证码系统重构
涉及文件:
app/Service/EmailVerifyCodeService.phpapp/Models/EmailVerifyCode.phpapp/Enums/EmailVerifyCodeType.phpapp/Enums/EmailVerifyCodeStatus.php
测试场景:
-
验证码生成:
- 生成6位数字验证码
- 设置过期时间 (15分钟)
- 记录生成时间
-
验证码类型:
- 注册验证:
REGISTER - 登录验证:
LOGIN - 密码重置:
RESET_PASSWORD
- 注册验证:
-
验证码状态:
PENDING: 待验证USED: 已使用EXPIRED: 已过期
预期结果: 验证码系统功能完整,状态管理正确
TC-EMAIL-002: 验证码尝试限制测试
测试目标: 验证验证码尝试次数限制
涉及提交:
578c284 fix(email): 调整邮箱验证码尝试限制8fca018 feat(email): 增加新的错误代码用于验证尝试次数限制
测试用例:
-
正常验证:
- 第1次尝试: 输入正确验证码
- 结果: 验证成功
-
错误尝试限制:
- 第1-3次: 输入错误验证码
- 第4次: 触发限制
- 预期: 返回错误码,阻止进一步尝试
-
时间窗口重置:
- 等待限制时间过期
- 重新尝试验证
- 预期: 重置尝试次数
预期结果: 尝试限制机制有效防止暴力破解
TC-EMAIL-003: 验证码过期和使用时间测试
测试目标: 验证验证码时间管理
涉及提交: fa4b460 feat(EmailVerifyCode): 添加过期和使用时间字段
测试场景:
-
验证码过期检查:
- 生成时间: T0
- 验证时间: T0 + 16分钟
- 预期: 验证码已过期
-
使用时间记录:
- 验证成功时记录
used_at - 状态变更为
USED
- 验证成功时记录
预期结果: 时间管理准确,状态更新及时
四、支付流程集成测试用例
4.1 工作任务支付流程
TC-PAYMENT-001: 工作任务支付重构测试
测试目标: 验证工作任务支付流程模块化
涉及文件:
app/Http/Controllers/Api/User/WorkTaskPayController.phpapp/Service/Payment/WorkTaskPaymentService.phpapp/Service/Payment/WorkTaskPaymentContext.phpapp/Service/Payment/WorkTaskPaymentValidator.php
测试流程:
-
支付请求验证:
- 验证工作任务状态
- 验证用户权限
- 验证支付金额
-
支付方式选择:
- Stripe 支付
- 钱包扣减
- 混合支付
-
支付执行:
- 创建支付会话
- 执行资金转移
- 更新任务状态
预期结果: 支付流程完整,各模块协调工作正常
TC-PAYMENT-002: 订单取消逻辑测试
测试目标: 验证订单取消与钱包处理
涉及提交: 262b806 refactor(order service): 优化订单取消与钱包处理逻辑
测试场景:
-
支付前取消:
- 订单状态:
PENDING - 操作: 用户取消
- 预期: 订单状态变更,无资金操作
- 订单状态:
-
支付后取消:
- 订单状态:
PAID - 操作: 申请退款
- 预期: 执行退款流程,更新钱包余额
- 订单状态:
-
部分完成取消:
- 任务进度: 50%
- 操作: 协商取消
- 预期: 按比例退款
预期结果: 取消逻辑正确,资金处理安全
4.2 Stripe 转账功能
TC-PAYMENT-003: Stripe Connect 转账测试
测试目标: 验证 Stripe Connect 账户转账功能
涉及文件: app/Service/Wallet/StripeTransferService.php
测试用例:
-
平台到艺术家转账:
- 来源: 平台主账户
- 目标: 艺术家 Connect 账户
- 金额: 任务完成费用
-
转账状态追踪:
- 转账创建
- 转账处理中
- 转账完成
-
转账失败处理:
- 账户不存在
- 余额不足
- 网络异常
预期结果: 转账功能稳定,状态追踪完整
五、前端用户体验测试用例
5.1 钱包界面功能
TC-FRONTEND-001: 钱包页面功能测试
测试目标: 验证钱包页面重构功能
涉及文件:
pages/setting/wallet.vuecomponents/wallets/add_alipay.vuecomponents/wallets/hint.vue
测试功能:
-
钱包余额显示:
- 多货币余额展示
- 实时汇率转换
- 余额变动动画
-
支付宝账户添加:
- 表单验证
- 账户绑定流程
- 成功提示
-
提示和帮助:
- 操作指引
- 安全提示
- 常见问题
预期结果: 界面友好,操作流畅,提示清晰
TC-FRONTEND-002: 国家选择功能测试
测试目标: 验证国家选择组件
涉及提交:
a86ccfa 添加国家b1f9601 添加选择国家
测试用例:
-
国家列表展示:
- 完整国家列表
- 搜索功能
- 国旗图标显示
-
选择交互:
- 点击选择
- 搜索过滤
- 选中状态
预期结果: 国家选择功能完整,用户体验良好
5.2 服务创建优化
TC-FRONTEND-003: 服务创建货币验证测试
测试目标: 验证服务创建时的货币验证逻辑
涉及文件:
components/services/create.vuepages/artist_center/service_form.vue
测试场景:
-
可用货币判断:
- 检查艺术家支持的货币
- 验证 Stripe 账户支持的货币
- 过滤不可用货币
-
价格验证增强:
- 不同货币的最小金额验证
- 小数位数验证
- 实时汇率提示
预期结果: 货币验证逻辑正确,用户输入体验优化
5.3 用户认证流程
TC-FRONTEND-004: 验证码功能测试
测试目标: 验证前端验证码逻辑更新
涉及文件:
pages/forget_password.vuepages/signup.vue
测试场景:
-
验证码发送:
- 邮箱格式验证
- 发送频率限制
- 发送状态反馈
-
验证码输入:
- 6位数字验证
- 实时验证
- 错误提示
-
验证码过期处理:
- 过期检测
- 重新发送
- 状态重置
预期结果: 验证码功能稳定,用户操作清晰
5.4 多语言支持测试
TC-FRONTEND-005: 多语言更新测试
测试目标: 验证多语言文件更新
涉及文件:
locales/en.jsonlocales/zh.jsonlocales/ja.json
测试内容:
-
新增翻译条目:
- 钱包相关术语
- 验证码提示信息
- 错误消息
-
翻译质量检查:
- 术语一致性
- 语法正确性
- 文化适应性
-
动态切换测试:
- 语言切换功能
- 界面即时更新
- 数据格式适配
预期结果: 多语言支持完整,翻译质量高
六、性能和安全测试用例
6.1 数据库性能测试
TC-PERFORMANCE-001: 数据库迁移测试
测试目标: 验证新增迁移文件的性能影响
涉及改动: 大量新增的数据库迁移文件
测试重点:
-
迁移执行时间:
- 记录每个迁移的执行时间
- 检查是否有长时间运行的迁移
-
索引优化:
- 验证新增索引的有效性
- 检查查询性能提升
-
数据完整性:
- 验证外键约束
- 检查数据一致性
预期结果: 迁移顺利执行,性能影响在可接受范围内
6.2 安全测试
TC-SECURITY-001: 权限控制测试
测试目标: 验证新增的权限控制机制
测试场景:
-
API 访问控制:
- 未认证用户访问受保护接口
- 普通用户访问艺术家接口
- 艺术家访问管理员接口
-
资源权限验证:
- 用户只能访问自己的钱包
- 艺术家只能管理自己的服务
- 管理员权限边界检查
预期结果: 权限控制严格,无权限泄露
TC-SECURITY-002: 支付安全测试
测试目标: 验证支付流程的安全性
测试内容:
-
支付数据加密:
- 敏感信息传输加密
- 数据库存储加密
-
防重复支付:
- 同一订单重复支付检测
- 并发支付处理
-
异常情况处理:
- 网络中断恢复
- 部分支付失败处理
预期结果: 支付流程安全可靠,异常处理完善
七、集成测试用例
7.1 端到端业务流程测试
TC-INTEGRATION-001: 完整委托流程测试
测试目标: 验证从服务发布到支付完成的完整流程
测试流程:
-
艺术家端:
- 创建服务 (使用新的货币验证)
- 设置提现账户
- 接受委托请求
-
用户端:
- 浏览服务
- 发起委托请求
- 使用新支付流程完成支付
-
系统处理:
- 自动创建工作任务
- 钱包资金流转
- 通知发送
预期结果: 整个流程顺畅,各环节协调工作
TC-INTEGRATION-002: 多语言环境集成测试
测试目标: 验证多语言环境下的系统表现
测试场景:
-
中文用户使用流程:
- 注册验证码 (中文界面)
- 钱包操作 (人民币)
- 服务委托 (中文沟通)
-
日文用户使用流程:
- 注册验证码 (日文界面)
- 钱包操作 (日元)
- 服务委托 (日文沟通)
预期结果: 多语言环境下功能正常,用户体验一致
7.2 负载测试
TC-LOAD-001: 并发支付测试
测试目标: 验证系统在高并发支付场景下的表现
测试设置:
- 并发用户数: 100
- 测试时长: 30分钟
- 支付频率: 每分钟10次
监控指标:
- 响应时间
- 成功率
- 系统资源使用率
- 数据一致性
预期结果: 系统稳定,支付成功率高于99%
八、回归测试用例
8.1 现有功能回归测试
TC-REGRESSION-001: 基础功能回归测试
测试目标: 确保重构不影响现有功能
测试范围:
- 用户注册登录
- 聊天系统
- 文件上传
- 订单管理
- 艺术家申请
测试方法: 使用现有测试套件进行自动化回归测试
TC-REGRESSION-002: API 兼容性测试
测试目标: 验证 API 接口的向后兼容性
测试内容:
- 请求格式兼容
- 响应格式兼容
- 错误码兼容
- 认证机制兼容
预期结果: 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 高风险项
- Stripe 支付集成: 涉及资金安全,需重点测试
- 钱包余额一致性: 并发操作可能导致数据不一致
- 数据库迁移: 大量迁移文件可能影响部署
11.2 缓解措施
- 分步部署: 先部署到测试环境,充分验证后再上生产
- 数据备份: 升级前完整备份数据库
- 回滚方案: 准备快速回滚机制
- 监控告警: 加强支付和钱包操作的监控
测试用例文档版本: v1.0
创建日期: 2025-07-10
适用版本:
- pipipen-api: feature/stripe2_ref
- pipipen-front: stripe

