Files
railwaysystem/docs/handbook/07-testing-and-acceptance.md
T

90 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 07. RailwaySystem 质量保障与自动化测试报告
> **文档定位**:面向质量审计人员、技术评测专家及交付团队的系统化测试与验收报告。
> **当前基线**:Final Candidate `5a49b2e2988bf23ca2a70568264c05b24dfda1b6` (`origin/feat/cicd-pipeline`)
---
## 1. 质量保障体系全景
RailwaySystem 建立了多层次的自动化测试与质量防护网络,确保从底层数据模型、服务契约、端到端接口到真实物理数据库的全链路正确性:
```mermaid
graph TD
L1["端到端浏览器验收 (E2E)<br/>Playwright 真实 UI 验收 · 0 阻断 / 0 个 500 · <b>PASS</b>"]
L2["核心业务场景集成 Gate (Scenario)<br/>6 大场景真实 HTTP 110 次请求全链路闭环 · <b>PASS</b>"]
L3["应用服务与契约测试 (Unit / Contract)<br/>154 项测试用例全覆盖 · 业务不变量与状态机转换 · <b>PASS</b>"]
L4["数据库物理断言与清理门禁 (DB Gate)<br/>11 项 Kingbase 物理表断言 · 0 脏数据残留 · <b>PASS</b>"]
L4 --> L3
L3 --> L2
L2 --> L1
```
---
## 2. 核心测试指标汇总看板
| 验证维度 | 衡量指标 | 目标要求 | 实测结果 | 门禁结论 |
| :--- | :--- | :---: | :---: | :---: |
| **后端单元与契约测试** | Maven Test Suite 执行用例数 | 100% 通过 | **154 / 154 PASS** | ✅ **通过** |
| **核心业务场景集成** | 真实业务链路场景套件 (Scenarios) | 全部通过 | **6 / 6 PASS** | ✅ **通过** |
| **真实 HTTP 接口探测**| 实际发起网络交互请求总数 | 覆盖主链路 | **110 次** | ✅ **就绪** |
| **服务端异常率** | HTTP 500 系统内部崩溃错误数 | 严格为 0 | **0 异常** | ✅ **通过** |
| **Kingbase 物理数据断言**| 数据库真实记录状态与约束断言 | 100% 一致 | **11 / 11 PASS** | ✅ **通过** |
| **环境清理与残留检验**| 测试数据回滚与物理删除验证 | 零残留 | **Cleaned (Residue: 0)**| ✅ **通过** |
| **端到端浏览器验收** | Playwright 真实交互验收套件 | 全流程通行 | **PASS** *(0 阻断 / 0 个 500)* | ✅ **通过** |
| **Swagger 接口文档平台** | 接口定义与 UI 正常加载探测 | 无 502/死链 | **PASS** *(入口: 系统工具→系统接口)* | ✅ **通过** |
---
## 3. 六大核心场景集成测试覆盖 (Scenarios)
针对铁路教务的最核心闭环,集成测试套件对以下六大关键业务场景进行了真实环境端到端验证:
1. **基础资源初始化与唯一性校验**:
- 教师档案录入(手机号唯一拦截 `40001`)、学员建档(敏感信息脱敏与哈希存储)、课程库建立与教室/实训场地可用性验证。
2. **开班计划拟定与课程师资绑定**:
- 创建 32 位 UUID 标识的开班计划(初始强制为 0:草稿)、绑定计划专属课程与授课教师、计划学时自动汇总。
3. **学员批量报名与容纳上限拦截**:
- 正常学员入班生成参训履历(初始 0:待报到);重复报名强行拦截(`40030 ENROLLMENT_ALREADY_EXISTS`);计划招生超额硬阻断(`40031 ENROLLMENT_CAPACITY_EXCEEDED`);停用学员拒绝报名。
4. **四维排课防重叠智能检测**:
- 课次编排预检;教师授课时间冲突检测(`40040`);场地与班级课次重叠软警告(Warning 不阻断,用户确认后正常保存);场地 XOR 互斥与起止时间非法硬拦截。
5. **现场开班报到与多模式核验**:
- 现场身份核验(人脸/刷卡/扫码/人工),写入报到流水,强事务联动参训档案流转为 1:已报到。
6. **结训联动与历史状态保护**:
- 计划结训触发强事务流转(计划置为 2:已结束);活动在读学员(状态为 0 或 1)自动流转为 4:已完成;历史退训学员(状态为 3)受到严格保护不被误覆盖。
---
## 4. 浏览器真实验收与 Swagger 验证结果
针对 Final Candidate 基线(Tested HEAD: `5a49b2e2988bf23ca2a70568264c05b24dfda1b6`)的端到端真实浏览器验收已全部完成,达成 `FINAL_BROWSER_ACCEPTANCE = PASS`:
* **Browser 交互状态**:`PASS`(Console blocker: `0`,HTTP 500: `0`)
* **Swagger 接口平台**:`PASS`
- 真实系统入口:`系统工具 → 系统接口`
- Swagger UI:正常加载,`v3/api-docs = 200`,`swagger-resources = 200`,无 502,无死链
* **主数据模块 (Master Data)**:Teacher PASS、Student PASS、Classroom PASS、Site PASS 均通过
* **核心业务模块 (Business)**:Plan PASS、PlanCourse PASS、Enrollment PASS 均通过
* **报到核验 (Report Confirm)**:`PASS`,真实调用 `POST /train/enrollments/{enrollmentId}/report` 返回 200 OK,待报到 → 已报到
* **排课冲突处理 (Scheduling)**:
- Warning Cancel = `PASS`
- Warning Confirm/Save = `PASS`
- 逻辑中严格禁止且无 `force` / `ignoreConflict` / `overrideConflict` 旁路
- 课次详情 GET 查询:`Lesson detail GET: NOT CALLED`
* **电子班牌 (Board)**:`PASS`(前端路由:`/equip/board`)
* **统计分析报表 (Analytics)**:Report Analytics、Checkin Analytics、Duration、Portrait 均为 `PASS / Read Only`
* **系统操作日志 (OperLog)**:`PASS`
* **系统工具实际可见**:表单构建、代码生成、系统接口
* **角色分配管理**:`RBAC_ROLE_ASSIGNMENT: ENVIRONMENT_CONFIGURATION`
* **验收数据审计策略**:`Browser acceptance created/changed data: KEEP_FOR_AUDIT`(文档验收阶段留存用于审计追溯,不执行清理)
---
## 5. 技术参考链接 (Technical References)
* 核心测试矩阵明细:[docs/_meta/core-business-test-matrix.md](../_meta/core-business-test-matrix.md)
* 最终测试综合报告:[docs/reports/final-test-report.md](../reports/final-test-report.md)
* 浏览器端到端验收进度:[docs/reports/browser-acceptance-report.md](../reports/browser-acceptance-report.md)