Files
platforms/checking/05-执行批次与质量门禁.md

136 lines
6.3 KiB
Markdown
Raw Permalink Normal View History

# 执行批次与质量门禁
## 1. 建议批次
| 批次 | 内容 | 频率 | 预计目标 |
| --- | --- | --- | --- |
| B0 基线 | 范围冻结、环境/账号/数据验证、依赖健康 | 每轮开始 | 证明结果可复现 |
| B1 快速门禁 | 静态、单元、契约、构建 | 每次提交/合并请求 | 尽早阻断低层错误 |
| B2 API 回归 | 鉴权、CRUD、状态动作、金额、幂等、审计、上传 | 每日 | 后端事实层稳定 |
| B3 单端回归 | 两 App、三个管理端、官网 | 每日/候选版 | 单端功能和兼容性 |
| B4 跨端 E2E | `06-业务流程测试.md`、AC-01AC-25 | 候选版 | 业务闭环可验收 |
| B5 专项 | 安全、性能、弱网、稳定性、灾备、可访问性 | 候选版 | 非功能风险可接受 |
| B6 UAT | 产品、运营、安全、财务、运维签署 | 发布前 | 业务与上线决策完成 |
| B7 发布验证 | 部署校验、迁移、低风险冒烟、监控和回滚 | 发布时 | 生产可用且可回退 |
## 2. 可直接执行的当前基线命令
### Flutter App分别在两个 App 目录执行)
```bash
flutter pub get
flutter analyze
flutter test
flutter build apk --debug
flutter build web --release --dart-define=API_BASE_URL=https://api.example.com
```
iOS 构建需 macOS 执行:
```bash
flutter build ios --simulator --no-codesign
```
### 三个 Vue 管理端(分别执行)
```bash
pnpm install --frozen-lockfile
pnpm type:check
pnpm lint
pnpm contract:check
pnpm build
```
涉及后端资源/路由变化时,先执行 `pnpm contract:sync` 并审查生成差异,再执行 `contract:check`
### 官网
```bash
npm ci
npm run test:sites
npm run build
```
### 后端
```bash
cd backend/api && go test ./... && go vet ./... && go build ./cmd/main/main.go
cd backend/worker && go test ./... && go vet ./... && go build ./cmd/main/main.go
cd backend/iot-gateway && go test ./... && go vet ./... && go build ./cmd/main/main.go
cd backend/iot-server && go test ./... && go vet ./... && go build ./cmd/main/main.go
```
建议 CI 增加 `go test -race ./...`(运行环境支持时)、覆盖率输出、依赖/密钥扫描和 API E2E 作业。命令只是门禁,不等价于完整业务验收。
## 3. 准入条件
- 被测提交、构建号、数据库版本、配置和变更范围已冻结。
- 环境健康,基线账号/数据/Mock 可用,上一轮阻塞缺陷已处理。
- 新增或变更需求有明确验收口径;接口变更已同步资源契约。
- 高风险动作在隔离环境执行,设备、资金、通知不会影响真实用户。
## 4. 各阶段准出条件
### 合并请求
- 受影响模块 L0/L1/L2/L3 通过。
- 状态机、金额、权限、幂等改动具有回归测试。
- 无新增高危依赖/密钥泄露,生成契约无非预期漂移。
### 候选版
- 全模块构建通过B2/B3 全回归完成。
- `06-业务流程测试.md` 中 P0/P1 流程和 AC-01AC-25 全部执行。
- P0/P1 为 0性能、安全、弱网和恢复专项已出报告。
- IoT 模拟器、真实设备、TLS/证书和厂商联调的通过层级在报告中明确,不混写结论。
### 生产发布
- UAT、安全、财务、运维签署完成所有 P2 延期有风险接受。
- 数据库迁移已演练,备份、回滚和监控告警可用。
- 发布后冒烟仅执行审批过的低风险动作;设备控制和真实资金动作使用专门演练方案。
## 5. 冒烟清单
1. API、Worker、IoT Gateway、IoT Server 启动、健康、配置加载和无敏感日志。
2. 五类客户端登录及 client claim 隔离。
3. 三个管理端菜单加载、核心列表、详情和一个低风险写操作。
4. user_app 读取首页/商品/订单service_app 读取准入/任务。
5. 一次幂等写入重复提交,事实不重复。
6. 一次跨组织 identity 访问,被稳定错误码拒绝。
7. 一次完整 IoT 命令下行与 MQTT 回执,以及一次 ACK 丢失后的待确认。
8. 一次订单到任务的跨端可见性校验。
9. 一次敏感字段脱敏和审计查询。
10. 官网首页、主要导航、静态资源与错误页。
## 6. 自动化建设优先级
| 优先级 | 建设项 | 原因 |
| --- | --- | --- |
| P0 | API 鉴权/组织隔离/状态机/金额/幂等集成测试 | 当前最高业务与安全风险 |
| P0 | AC-02、03、04、07、08、09、21、25 跨端回归 | 设备、安全、资金、隔离、离线和 IoT 可靠性核心链路 |
| P1 | App Repository/ViewModel/离线草稿及 Web 权限组件测试 | 当前端侧自动化覆盖较薄 |
| P1 | 三管理端契约检查统一 CI、浏览器冒烟 | 防止路由/菜单/资源漂移 |
| P1 | 上传、日志脱敏、依赖与密钥扫描 | 隐私与供应链风险 |
| P2 | 性能基线、故障注入、备份恢复自动化 | 候选版稳定性保障 |
| P2 | 视觉回归、可访问性和多设备兼容矩阵 | 降低交互与适配回归 |
## 7. 每轮报告最小指标
- 计划/执行/通过/失败/阻塞/未执行用例数及覆盖率。
- 按模块和 P0P3 的新增、遗留、关闭、重开缺陷。
- AC-01AC-25 状态,关键链路通过率。
- 自动化通过率、偶发失败率、覆盖率变化和执行时长。
- API 性能分位数/错误率、资源峰值、安全发现、恢复实测值。
- 环境限制、未测范围、残余风险、责任人和下一步日期。
## 8. 当前自动化缺口基线
本次盘点只用于安排优先级,不代表功能缺陷结论:
- `backend/iot-gateway` 已有命令元数据转发、上行转发和无本地状态测试,但缺 Handler 鉴权、过期、体积限制、上游错误映射和优雅退出覆盖。
- `backend/iot-server` 已有配置、加密帧往返、篡改拒绝、阀门命令和实时传感器解析测试,但缺 Broker 级设备认证、Topic ACL、真实 MQTT 上下行、ACK、断线重连和 TLS 测试。
- `backend/worker` 当前没有 `_test.go`支付扫描、Outbox 轮询、HTTP 状态分支、超时、坏响应、重试和停止行为应列为 P0 自动化补齐项。
- `backend/api` 的新增支付/退款和 IoT Logic 尚缺直接数据库事务及路由安全测试;优先覆盖并发回调、迟到回调、退款金额守恒、命令/Outbox 原子性、重复认领和 ACK 状态更新。
- 跨四进程的设备模拟 E2E 和支付沙箱 E2E 尚未形成持续集成作业,应在候选版验收前落地或以人工证据明确替代。