# 执行批次与质量门禁 ## 1. 建议批次 | 批次 | 内容 | 频率 | 预计目标 | | --- | --- | --- | --- | | B0 基线 | 范围冻结、环境/账号/数据验证、依赖健康 | 每轮开始 | 证明结果可复现 | | B1 快速门禁 | 静态、单元、契约、构建 | 每次提交/合并请求 | 尽早阻断低层错误 | | B2 API 回归 | 鉴权、CRUD、状态动作、金额、幂等、审计、上传 | 每日 | 后端事实层稳定 | | B3 单端回归 | 两 App、三个管理端、官网 | 每日/候选版 | 单端功能和兼容性 | | B4 跨端 E2E | `06-业务流程测试.md`、AC-01~AC-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-01~AC-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. 每轮报告最小指标 - 计划/执行/通过/失败/阻塞/未执行用例数及覆盖率。 - 按模块和 P0~P3 的新增、遗留、关闭、重开缺陷。 - AC-01~AC-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 尚未形成持续集成作业,应在候选版验收前落地或以人工证据明确替代。