Skip to content

测试报告

1 引言

1.1 目标

本文档记录 AUBB V1 课程交付阶段的测试范围、测试方法、执行结果、压力测试结论、缺陷状态和残留风险。本文为独立测试报告,正文直接给出验收所需的关键事实,不要求评审人员再跳转阅读其他文档才能理解结论。

1.2 被测系统

AUBB 是一体化在线教学与实验平台,V1 被测能力包括平台治理、课程教学、作业提交、自动评测、人工批改、成绩发布、通知、报告型实验和 Web 终端实验。

类别被测对象
前端Next.js 16、React 19、TypeScript、Tailwind CSS 4,默认访问端口 3000
后端Spring Boot 4、Java 25,工作区本地开发端口 18080
数据与中间件PostgreSQL 16、RabbitMQ、MinIO、Redis
评测运行时go-judge,RabbitMQ 评测队列,独立评测消费进程
实验运行时Fake Runtime 用于本地演示;Kubernetes Runtime 用于真实 Web 终端实验
浏览器以桌面端 Chrome / Chromium 实际页面为主要验收对象

1.3 测试范围

范围覆盖内容结论口径
功能测试登录、平台治理、课程、作业、提交、判题、批改、成绩、实验、通知通过 / 失败
接口与集成测试REST API、WebSocket 终端入口、错误码、权限边界、中间件集成通过 / 失败
浏览器 E2E管理员、教师、助教、学员关键页面和主链路通过 / 失败
压力与容量测试读请求、写提交、go-judge、文件、通知/SSE、Web 终端、soak 稳定性已测容量 / 未测 / 待优化
部署与文档验证健康检查、构建、文档站构建、演示环境冒烟通过 / 失败

1.4 不测试范围

不测试项原因
商业计费、合同和开票不属于课程大作业 V1 范围
原生移动端和离线客户端V1 以桌面浏览器教学工作台为验收对象
邮件、短信、企业 IM 发送V1 只承诺站内通知与可扩展边界
VNC/RDP/noVNC/教师接管终端环境型实验只覆盖浏览器 Web 终端
AI 自动讲解、查重和作弊识别不属于当前核心验收链路
生产环境压测本轮只对本地真实前后端与本地依赖做容量验证

2 测试计划

2.1 测试目的

测试计划用于确认系统是否满足以下准入条件:

  1. 核心教学主链路可在真实浏览器和真实后端环境中闭环。
  2. go-judge、RabbitMQ、对象存储和实验运行时相关能力有真实集成结果。
  3. 权限、成绩、审计、导入导出和附件等高风险能力可复查。
  4. 压力测试能说明系统在小并发演示、专项容量和高并发边界下的实际状态。
  5. 压力测试只证明容量和稳定性,不替代功能验收;功能通过与容量通过必须分开判定。

2.2 测试方法

mermaid
flowchart LR
  Static["静态检查与构建"] --> Unit["单元测试"]
  Unit --> Integration["接口 / 集成测试"]
  Integration --> Browser["真实浏览器 E2E"]
  Browser --> Stress["压力与容量测试"]
  Stress --> Smoke["部署冒烟"]
  Smoke --> Report["测试结论与残留风险"]
方法说明
静态检查与构建验证类型、依赖、生产构建和文档构建是否可通过
单元测试覆盖领域规则、状态流转、权限策略和前端共享逻辑
接口 / 集成测试覆盖数据库、队列、对象存储、go-judge、实验会话和通知
真实浏览器 E2E按角色操作页面,验证主链路、权限边界和页面状态
压力与容量测试按并发阶梯采集响应时间、错误率、5xx、队列和资源指标
部署冒烟验证本地演示环境可启动、可访问、可完成核心链路

2.3 通过准则

级别准则
P0主链路阻断、数据泄露、评测或成绩严重错误,必须关闭后验收
P1影响关键角色工作流或容量边界,应说明当前已测范围或纳入优化清单
P2局部体验、文案或低频异常问题,可进入残留风险
P3不影响验收的建议项,记录为后续优化

压力测试结果按实测范围收口。已经实测的压力项写明最高已测并发、时长和关键指标;尚未执行的专项写为“未测”;指标长尾或资源观测不足写为“待优化”。

3 测试设计说明

3.1 环境基线

项目基线
测试日期2026-06-11 至 2026-06-12
测试环境本地真实前后端、本地 Docker 依赖、本地浏览器
前端地址http://127.0.0.1:3000
后端地址http://127.0.0.1:18080
机器摘要8 CPU、16 GiB 内存、macOS,本地 Docker 运行依赖服务
实验运行时基础压测使用 Fake Runtime;Web 终端专项使用 Kubernetes Runtime
数据准备平台管理员、教师、学员、课程、教学班、作业、实验、提交附件和实验附件

3.2 功能测试设计

用例编号用例名称输入 / 前置条件预期输出实际结果结论
TC-AUTH-01教师登录成功有效教师账号进入教师工作台,当前用户信息正确真实浏览器登录通过通过
TC-AUTH-02学员越权访问管理员页面有效学员账号访问管理员入口返回无权限页或 403越权被拦截通过
TC-ADM-01用户导入与审计CSV 用户数据、管理员账号返回导入结果,关键操作产生审计记录用户导入和审计查询通过通过
TC-CRS-01创建课程、教学班和成员教师账号、课程和学员数据教师与学员只能看到授权课程范围课程和成员主链路通过通过
TC-ASG-01发布结构化编程作业教师账号、题目与评分规则学员可看到作业、题目和在线 IDE 入口作业发布和学员可见性通过通过
TC-SUB-01在线工作区保存与整份作业提交学员进入编程题工作区工作区可保存;整份提交在作业详情页生成记录保存、返回、正式提交通过通过
TC-JDG-01自动评测成功编程题正式提交评测进入终态,报告可查看或下载go-judge 真实链路通过通过
TC-JDG-02评测异常与重评错误代码、重评请求失败状态清晰,重评可进入队列五类结果和重评通过通过
TC-GRD-01人工评分和成绩发布教师批改提交并发布学员发布后可查看成绩和反馈成绩发布链路通过通过
TC-LAB-01报告型实验提交与评阅学员提交实验报告教师可评阅,学员可查看反馈基础实验链路通过通过
TC-LAB-02Web 终端实验会话Kubernetes Runtime 可用学员获得短期 token,连接 Web 终端,停止后清理资源真实 Kubernetes Web 终端通过通过
TC-NTF-01通知列表与未读数触发关键教学事件通知产生,未读数可更新,断线可轮询恢复通知轮询通过;SSE 高并发仍需补测部分通过
TC-OPS-01部署冒烟和健康检查本地依赖、前后端启动readiness、前端访问和文档构建通过健康检查、E2E、构建通过通过

3.3 压力测试设计

压力测试覆盖核心 API 读请求、写提交、评测轮询、真实 go-judge、文件上传下载、通知、SSE、实验运行时、Kubernetes Web 终端和 soak 稳定性。

mermaid
flowchart TB
  Data["准备课程 / 学员 / 作业 / 实验 / 附件"] --> Read["读请求阶梯"]
  Data --> Write["提交写入阶梯"]
  Data --> Judge["go-judge 与评测队列"]
  Data --> File["文件上传下载"]
  Data --> Notify["通知轮询 / SSE"]
  Data --> Lab["实验 Runtime / WebSocket 终端"]
  Read --> Capacity["容量结论"]
  Write --> Capacity
  Judge --> Capacity
  File --> Capacity
  Notify --> Capacity
  Lab --> Capacity
  Capacity --> Risk["容量边界与未测范围"]
指标判定方式
响应时间记录平均值、P95、P99;关键读请求严格阈值为 P95 < 500ms、P99 < 1500ms
错误率压力阶段总错误率应低于 1%;关键专项要求 5xx 为 0
写入容量正式提交、文件上传、重评等写入请求应无 5xx、无误触发限流
评测容量go-judge sample-run、正式提交、报告下载、重评均能进入终态
Web 终端容量Kubernetes WebSocket 初连、命令 I/O、重连、重置、停止清理均成功
稳定性soak 阶段验证长时间混合流量下错误率、5xx、资源清理和健康检查

4 测试用例说明

4.1 主链路用例结果

主链路覆盖角色关键步骤实际结果结论
平台初始化管理员平台配置、组织、用户、权限解释、审计管理入口可用,权限与审计可查询通过
教学组织教师 / 助教建课、建班、成员、公告、资源、讨论教师课程工作区和课程上下文入口可完成教学组织通过
作业发布教师创建作业、编辑题目、配置判题环境、发布学员可在授权范围查看作业通过
学员提交学员查看作业、在线 IDE 保存、返回作业详情、正式提交工作区保存与整份提交边界清晰通过
自动评测系统 / 教师 / 学员入队、go-judge 执行、报告生成、下载真实 go-judge 链路通过通过
批改成绩教师 / 学员人工评分、成绩发布、学员查看发布前后可见性符合规则通过
实验链路教师 / 学员发布实验、提交报告或启动 Web 终端、评阅报告型实验和终端实验主流程可用通过
通知链路全角色事件产生、通知列表、未读数、轮询恢复轮询链路通过;SSE 100/300 长连接专项未测轮询通过,SSE 高并发未测

4.2 压力测试结果

场景编号压力场景并发 / 时长关键结果结论
PERF-01公共入口、认证与基础读请求50 / 200 / 500 / 1000 并发错误率 0、5xx=0;P95 为 18.31ms / 224.38ms / 2346.07ms / 2713.40ms,P99 为 34.57ms / 2283.08ms / 2777.94ms / 3160.52ms最高已测:1000 并发无 5xx;严格低延迟指标满足到 200 并发,500/1000 长尾待优化
PERF-02学员提交写路径10 / 30 / 50 / 100 并发错误率 0、5xx=0、429=0;100 并发总体 P95 73.47ms,提交端点 P95 94.35ms通过
PERF-03评测轮询50 / 200 / 500 并发错误率 0、5xx=0通过
PERF-04真实 go-judge sample-run5 / 10 / 20 并发,各 120 秒三档错误率 0、5xx=0通过
PERF-05真实 go-judge 正式提交链路5 / 10 / 20 并发,各 300 秒提交数 916 / 1646 / 2060,错误率 0、5xx=0,学生与教师报告下载成功通过
PERF-06go-judge 重评5 / 10 并发,各 120 秒创建 380 / 640 个重评任务,错误率 0、5xx=0通过
PERF-07文件上传5 / 10 / 20 并发三档文件上传均返回 201,覆盖 64KiB、1MiB、20MiB通过
PERF-08文件下载20 / 100 / 300 并发下载 300 阶段 42472 次请求全 200、5xx=0最高已测:300 并发;权限负例和 MinIO 指标未测
PERF-09通知轮询50 / 200 / 500 并发错误率 0、5xx=0,500 并发 P95 71.38ms通过
PERF-10SSE 长连接20 并发 1 分钟;100 / 300 并发未执行20 并发错误率 0;100 / 300 长连接保持尚未执行最高已测:20 并发 1 分钟;100 / 300 未测
PERF-11Fake 实验运行时10 并发 1 分钟P95 45.6ms、5xx=0通过
PERF-12Kubernetes Web 终端5 / 10 / 20 并发,各 600 秒错误率 0、5xx=0,初连、命令 I/O、重连、重置和停止清理成功,Pod 重启 0通过
PERF-1310 分钟 smoke soak100 并发 600 秒384751 次请求,RPS 640.96,P95 20.36ms,P99 54.17ms,错误率 0、5xx=0通过
PERF-1430 分钟合同 soak100 并发 1800 秒runner 已具备执行能力,但该阶段未完成实测未测

4.3 压力测试总结

结论项说明
总体结论已形成本地环境容量边界
已证明能力写提交、评测轮询、真实 go-judge、文件上传下载容量、通知轮询、Fake Runtime、真实 Kubernetes Web 终端、10 分钟 smoke soak
已测容量边界基础读请求最高测到 1000 并发且 5xx=0,严格低延迟目标满足到 200 并发;写提交最高测到 100 并发;文件下载最高测到 300 并发;Kubernetes Web 终端最高测到 20 并发 10 分钟
未测范围SSE 100/300 长连接、30 分钟 soak、文件权限负例、MinIO 指标、部分管理/课程/题库/成绩/权限/前端专项压力阶梯
交付口径可用于课程演示和功能验收说明;容量结论按“已测最高容量”表述,不声明未测范围

5 测试规程说明

5.1 命令规程

目的命令本轮结果
工作区状态just statusserver、web、docs 均保持干净后进入测试
健康检查just healthcheck / 严格健康检查通过
快速门禁just verify通过
完整门禁just verify-full通过
真实浏览器 E2Ejust e2e-real50 个用例通过
文档站构建cd docs && npm run docs:build通过,保留既有 chunk size warning
压力测试合同 profile 压力脚本与专项脚本已形成本地容量边界

5.2 角色流程规程

  1. 管理员完成平台配置、组织、用户、权限解释和审计检查。
  2. 教师创建课程、教学班、成员、课程内容和作业。
  3. 学员查看课程,进入在线 IDE 保存、试运行,并在作业详情页提交整份作业。
  4. 系统完成评测,教师查看提交、批改并发布成绩。
  5. 学员查看成绩、通知和反馈。
  6. 对报告型实验和终端实验分别执行实验提交、评阅、Web 终端启动和资源清理验证。
  7. 对压力测试容量边界和未测项单独记录,不用功能通过结论覆盖容量结论。

6 测试日志摘要

日期环境测试内容结果备注
2026-06-11本地真实前后端真实浏览器 E2E通过50 个 E2E 用例通过
2026-06-11本地真实前后端快速门禁通过后端测试、前端 lint/typecheck、文档构建通过
2026-06-11本地真实前后端完整门禁通过后端测试、前端测试、生产构建、文档构建通过
2026-06-12本地真实前后端读请求与写路径修复后复测已测读请求 1000 并发 5xx=0;严格低延迟目标满足到 200 并发
2026-06-12Kubernetes RuntimeWeb 终端单会话与并发专项通过5/10/20 并发各 10 分钟通过
2026-06-12go-judgesample-run、正式提交、报告下载、重评通过五类评测结果完成覆盖
2026-06-12MinIO / 文件链路文件上传下载矩阵已测上传最高 20 并发,下载最高 300 并发;权限负例与指标未测
2026-06-12本地真实前后端10 分钟 smoke soak通过100 并发、错误率 0、5xx=0
2026-06-12本地真实前后端30 分钟合同 soak未测未完成实测

7 缺陷与残留风险

编号描述级别当前记录说明
TR-PERF-01基础读请求 500/1000 并发长尾较高P1待优化最高已测 1000 并发 5xx=0;严格低延迟目标满足到 200 并发
TR-PERF-02SSE 100/300 长连接保持未完成实测P1未测已测 20 并发 1 分钟
TR-PERF-0330 分钟合同 soak 未完成实测P1未测已测 100 并发 10 分钟 smoke soak
TR-PERF-04文件权限负例、MinIO 指标和 gradebook 导出/报告长尾待优化P1部分未测 / 待优化文件上传下载容量已测;权限负例和 MinIO 指标未测
TR-PERF-05管理、课程、题库、成绩、权限和前端静态资源专项压力阶梯未完全执行P2未测主链路和核心专项已有容量记录
TR-OBS-01Kubernetes Metrics API 不可用,未记录 Web 终端 CPU / 内存曲线P2残留不影响 Web 终端功能通过,但影响资源观测完整性

8 测试总结报告

  1. 功能验收主链路通过:管理员、教师、学员、作业、提交、评测、成绩、实验和通知主流程可完成。
  2. 真实 go-judge 通过:sample-run、正式提交、五类结果、报告下载和重评均有通过结果。
  3. 真实 Kubernetes Web 终端通过:单会话、5/10/20 并发、WebSocket 命令 I/O、重连、重置和停止清理均通过。
  4. 压力测试已形成本地容量边界:基础读请求最高测到 1000 并发且 5xx=0,严格低延迟目标满足到 200 并发;写提交最高测到 100 并发,文件下载最高测到 300 并发,Web 终端最高测到 20 并发 10 分钟。
  5. 当前系统可用于课程大作业演示和功能答辩;未测范围按“未测”说明,不在报告中声明超出实测范围的容量。