← 返回博客

一本账 · 测试计划

单元、兼容、并发、安全与内测的分层测试策略。


项目内容
版本v1.1
状态已评审
测试周期第 13-16 周(与开发尾部重叠)
变更记录v1.0 首次定稿;v1.1 修订:新增离线编辑拦截、全量重同步(full_resync)、邀请码穷举锁定用例

1. 测试策略总览

小团队无专职测试(产品兼),策略是自动化兜底 + 真机人工聚焦:

  • 后端:单元测试 + 集成测试自动化(CI 强制门禁),人工只测接口串联场景
  • 客户端:核心路径人工真机测试 + 埋点数据监控;UI 巡检脚本覆盖金额展示
  • 专项:多人并发、弱网同步、安全越权 —— 三个高风险区各设专项
  • 验收:全员 Dogfooding(用真实账本生活记账 1-2 周)是最终关卡

2. 测试范围与优先级

范围优先级方式负责人
记一笔核心链路P0人工真机 + Demo 日检客户端
同步引擎(离线/幂等/冲突)P0后端自动化 + 人工弱网后端
账本权限(邀请/角色/越权)P0自动化集成 + 安全专项后端
金额计算准确性P0自动化(后端单测 + 客户端 money.ts 单测)各自
统计报表准确性P0后端自动化(SQL 对拍)+ 人工抽查后端
登录注册注销P0自动化 + 人工后端
兼容性(机型矩阵)P1人工真机产品
性能(帧率/首屏/接口)P1工具测量客户端
埋点上报P1抓包抽查产品
深度 UI 走查P1人工对照 Figma产品

3. 测试环境

环境用途数据
本地 docker compose开发自测种子数据
staging集成测试 / 联调 / 弱网模拟与 prod 同构;可重置;造数脚本(用户/账本/账目批量生成)
prod仅灰度与线上监控真实数据(只读验证 + 监控)

工具:Apifox/Postman(接口)、Charles(抓包/弱网模拟)、PerfDog(真机帧率)、Sentry(崩溃监控)。

4. 机型兼容矩阵(真机优先,云真机补齐)

档位代表机型数量重点
iOS 高端iPhone 15/141主流体验基准
iOS 中端iPhone 12/SE 32SE 验证小屏布局(375 宽红线)
Android 高端小米 14 / 华为 Mate 602华为:无 GMS,验证推送/分享
Android 中端OPPO Reno / vivo S 系列2WebView 版本差异
Android 低端2GB RAM 千元机(如红米入门款)2性能红线主战场(R1 风险)

系统底线:iOS 13+ / Android 7.0+(WebView 版本记录进测试报告)。

5. 专项测试设计

5.1 多人并发专项(P0)

用例预期
两成员同时记不同账目均成功、双方 3s 内互见、统计正确合并
离线状态下尝试编辑/删除账目入口置灰/请求被拒(提示需联网),本地数据不受影响
两成员同时编辑同一笔LWW:后到达(服务器时间)覆盖;双方最终一致
A 离线记 5 笔期间 B 记 3 笔,A 联网8 笔全部入库无丢失;A 的幂等键防重
A 上传中断网重试 3 次服务端仅 1 条(client_txn_id 去重)
成员被移除瞬间正在记账该笔记账失败,明确提示无权限,本地数据保留
owner 解散账本时成员在线成员收到事件,账本从列表消失,本地缓存标记只读

5.2 弱网与离线专项(P0)

用例预期
飞行模式记账 10 笔 → 恢复30s 内全部同步成功,角标状态流转正确
3G 慢网(Charles 限速)下拉刷新不 ANR 不闪退,超时有提示
WS 断连(地铁场景模拟)期间他人记账重连后 pull 兜底补齐,无数据缺口
本地版本落后超过 6 个月(模拟)pull 返回 full_resync,客户端走 snapshot 全量重建,数据完整无缺口
同步失败(服务端 500)角标红色可重试;数据本地留存;重试成功后清角标
登录态过期时正在同步静默刷新 token 重试,不打断用户

5.3 安全专项(P0)

用例预期
非成员直接请求他人 ledger 的账目接口40301,不含任何数据字段
遍历 transaction_id 猜测他人账目40401(不区分存在性,防枚举)
member 调用移除成员/解散接口40302
过期 accessToken 请求40101 → 客户端静默刷新恢复
refreshToken 被重复使用(轮换后旧 token)40102,要求重新登录
验证码暴力尝试(错误 5 次)锁定,42901
邀请码连续错误尝试(10 次)42901 锁定 1 小时(防 6 位码穷举)
amount 传负数 / 0 / 浮点 / 超上限42201
修改他人账目(非记账人非 owner)40301/40302
抓包检查 HTTPS全链路 TLS,无明文敏感字段

5.4 金额精度专项(P0,自动化)

  • 后端单测:分↔元换算边界(0.01 元、100 万上限、千分位)
  • 客户端 money.ts 单测:3500 分 → "35.00"、123456789 分 → 超限拒绝
  • 统计对拍:随机生成 1000 笔账目,SQL 聚合 vs 接口返回逐字段相等

6. 准出标准(M5 门禁)

  • P0 用例通过率 100%,P1 ≥ 95%(遗留项须有 workaround 说明)
  • 后端核心模块行覆盖率 ≥ 60%(权限 Guard / 同步幂等 / 金额逻辑必须覆盖)
  • 兼容矩阵全部机型无 P0/P1 缺陷;低端机记一笔 ≤ 5s、列表滚动无白屏
  • 崩溃率(Dogfooding 期间)< 0.5%
  • 安全专项全部通过(尤其越权三条)
  • Dogfooding:团队 + 亲友 ≥ 10 人真实记账 ≥ 7 天,每人 ≥ 20 笔

7. 缺陷管理

  • 分级:P0 阻断(崩溃/资损/越权)、P1 严重(功能不可用/体验劣化)、P2 一般、P3 轻微
  • 流转:提交(附录屏/日志 request_id)→ 修复 → 回归 → 关闭;周五统计燃尽
  • 上线门槛:P0=0、P1=0;P2 遗留 ≤ 5 个且列入 V1.1 首批修复