8000 BestBlogs/docs/9-TESTING.md at main · donghl/BestBlogs · GitHub
[go: up one dir, main page]

Skip to content

Latest commit

 

History

History
100 lines (70 loc) · 4.4 KB

9-TESTING.md

File metadata and controls

100 lines (70 loc) · 4.4 KB

9-TESTING.md

更新时间:2026-07-08

本文面向公开同步,只描述测试分层、覆盖原则和质量门禁。具体 CI 配置、内部辅助端点、测试账号、报告路径和临时排障命令不在本文维护。

目标

BestBlogs 的测试体系服务三个目标:

  1. 快速反馈:日常开发能尽快发现明显回归。
  2. 关键链路可信:发布前覆盖登录、阅读、Pro、早报、推荐、设置和管理后台等核心路径。
  3. 边界不漂移:安全、隐私、Pro 门禁、公共 / 私有内容边界和反骚扰红线都有回归保护。

测试分层

层级 目标 典型覆盖
L0 Unit 验证纯逻辑和组件局部行为 Domain Service、工具函数、React 组件、DTO 映射
L1 Integration 验证模块间契约 Controller、Repository、参数配置、API client、权限边界
L2 E2E / Smoke 验证用户主链路 登录、浏览、阅读、Pro 门禁、早报、设置、管理后台关键操作

日常开发优先跑 L0 / L1;发布前补齐 L2 smoke。高风险改动需要提升验证层级。

后端测试原则

  • 核心领域逻辑优先写单元测试,避免只靠 Controller 测试兜底。
  • Repository / MongoDB 行为使用可重复的集成测试,不依赖开发者本机已有数据。
  • 参数化能力统一经过配置读取服务,测试需覆盖默认值、显式配置和关闭态。
  • 外部服务使用 Adapter 边界隔离,测试中使用 mock / fake,禁止真实密钥和真实外部写操作。
  • Job、锁、重试和幂等逻辑需要覆盖重复执行、部分失败和关闭开关。

前端测试原则

  • 组件测试关注用户可见行为,而不是内部状态。
  • API client 测试覆盖成功、失败、401 / 403、空数据和异常响应。
  • 涉及登录态的页面必须覆盖匿名、已登录 Free、Pro 三种状态。
  • 响应式、暗色模式和可访问性问题优先通过 smoke / 截图 / 手工验证结合发现。
  • 用户可控跳转必须覆盖安全重定向逻辑,禁止开放重定向。

Mobile 测试原则

Mobile 项目当前暂缓。后续重启时,至少遵循:

  • 登录、刷新、退出、账号删除和 Pro 权益同步属于高风险链路,必须有回归测试。
  • 离线、弱网、401 自动恢复和本地安全存储需要单独覆盖。
  • Mobile 与 Web 共用产品边界:Pro 门禁、内容可见性、隐私过滤和事件脱敏不允许分叉。

CLI / OpenAPI 测试原则

  • CLI 默认测试不依赖线上服务。
  • OpenAPI 测试必须覆盖鉴权、限流、分页、错误格式和用户数据隔离。
  • 对外响应保持统一 envelope,字段变更需要评估兼容性。

核心回归矩阵

能力 必须覆盖
公共策展层 每日早报、精选周刊、主题解读、内容广场匿名可读与降级态
我的空间 我的早报、我的关注、我的阅读、我的回顾的 Free / Pro 边界
AI 伴读 配额、流式响应、失败恢复、引用来源和隐私过滤
沉浸式翻译 配额、缓存、不同内容类型、失败不重复扣减
推荐与兴趣 关注、阅读、反馈行为能写入画像并影响解释
Pro 订阅 试用、开通、到期、取消、跨端状态一致
管理后台 参数配置、内容审核、运营编辑和权限边界
安全 HttpOnly Cookie、代理层白名单、内部端点保护、安全重定向

断言质量要求

禁止:

  • 只断言「不报错」或只看 snapshot;
  • 使用真实密钥、真实生产账号或不可重复的线上数据;
  • 在测试中放宽安全限制;
  • 为了让测试通过而绕过 Pro、权限或隐私边界。

必须:

  • 断言用户可见结果、响应状态和关键副作用;
  • 覆盖成功、失败和关闭态;
  • 对涉及计费、配额、权限和数据隔离的改动增加边界用例;
  • 为已修复的线上回归补最小复现测试。

发布前验证

发布前至少完成:

  1. 受影响模块的 L0 / L1 测试。
  2. 核心用户链路 smoke。
  3. 与改动相关的权限、Pro、隐私和降级验证。
  4. 文档与代码事实检查。

如果某项验证无法执行,需要在发布说明中写清楚原因、风险和替代验证方式。

与其它文档的关系

  • 产品能力和入口:2-PRODUCT.md
  • 架构边界:4-ARCHITECTURE.md
  • 开发规范:7-CONVENTIONS.md
  • 运维和回滚原则:11-OPERATIONS.md
0