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

5.8 KiB
Raw Blame History

07. RailwaySystem 质量保障与自动化测试报告

文档定位:面向质量审计人员、技术评测专家及交付团队的系统化测试与验收报告。 当前基线:Final Candidate 5a49b2e2988bf23ca2a70568264c05b24dfda1b6 (origin/feat/cicd-pipeline)


1. 质量保障体系全景

RailwaySystem 建立了多层次的自动化测试与质量防护网络,确保从底层数据模型、服务契约、端到端接口到真实物理数据库的全链路正确性:

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)