# 微信小程序测试与发布检查

在 feature 完成 QA、存量功能走查或 N8 编制发布待决清单时读取本文件。只执行与本次
功能有关的检查，不为简单改动机械生成整套无关用例。

## 1. 证据层级

| 层级 | 证据 | 可以证明什么 |
| --- | --- | --- |
| L1 | 项目正式 lint/test/build 命令 | 代码、类型和构建产物通过 |
| L2 | 微信开发者工具编译与模拟器 | 页面注册、渲染、导航和基础交互 |
| L3 | 预览/体验版真机 | 设备、微信容器、授权和平台 API 的真实表现 |
| L4 | 平台后台记录 | 域名、隐私、类目、版本、审核与发布状态 |

Web 页面、H5 预览或跨端框架的 Web target 不属于 L2/L3，不能替代小程序形态证据。
需要 L3/L4 而当前不可访问时，将对应 blocking 用例记为 `BLOCKED` 或人工待决。

## 2. 专项测试矩阵

按 feature 实际使用能力选取测试：

| 类别 | 最小检查 |
| --- | --- |
| 构建 | 项目正式命令成功；开发者工具无阻断编译错误；页面/分包注册正确 |
| 用户流程 | 冷启动、前后台切换、返回栈、空态、错误态和重复操作 |
| 网络 | 首次加载、慢网/断网、超时、重试和服务端错误；不得无限 loading |
| 登录与会话 | 登录成功、失败、过期和重新进入；日志不出现 code/session/Token |
| 权限与隐私 | 首次询问、同意、拒绝、再次触发和降级路径；声明与实际调用一致 |
| 平台 API | 分享、保存图片、扫码、位置、相机、手机号等在真机验证 |
| 后端与云 | 环境隔离、合法域名、云函数失败、上传/下载与数据清理 |
| 广告或支付 | 仅在合规测试环境验证展示/成功/取消/失败；不操作真实资金 |
| 兼容性 | 至少覆盖项目声明的最低基础库和代表性设备尺寸；差异如实记录 |

有副作用的用例必须写 cleanup；无法安全清理、环境不明或可能触达生产数据时停止。
测试账号由用户在安全通道配置，报告只写账号别名，不保存密码、Cookie 或验证码。

## 3. 测试合同生成

- `browser` 表示用户可观察交互，不等于必须使用浏览器；小程序由开发者工具/真机执行。
- 平台 API、授权和真机差异不能仅靠 logic `SUPPORTED` 判定通过。
- 根据 feature 能力生成正常、拒绝/取消、异常和恢复用例；不使用的能力不生成。
- 需要用户扫码、登录、验证码或后台权限时暂停让用户完成，再继续采集非敏感结果。

## 4. 发布待决清单

N8 至少核对以下项目并标记 `就绪 | 待确认 | BLOCKED | 不适用`：

- 本次版本、commit 与变更说明；
- 主体、服务类目与所需资质的当前官方核验；
- 隐私保护指引、权限声明和实际调用的一致性；
- request/upload/download/WebSocket/业务域名与云环境；
- L1–L3 证据及未覆盖设备/场景；
- 审核所需截图、演示路径和测试账号准备状态（不记录凭证）；
- 回退到上一可用版本的方法及负责人；
- 上传体验版、提交审核、灰度/全量发布的执行人和确认状态。

本地编译和模拟器验证可按测试任务执行。上传体验版属于外部状态变更，只有任务明确
授权该动作且账号通道已就绪时才执行；提交审核和生产发布始终要求人工确认。审核中
状态是待决项，不得伪造为通过，也不得因等待审核阻塞已经完成的代码交付结论。
