测试策略
1. 目标
- 保证课程大作业主链路可稳定演示。
- 在正式验收前发现阻断性问题,而不是在答辩现场发现。
- 为测试报告提供结构化测试范围、判定口径和残留风险分类。
- 区分功能验收与压力 / 容量验收,避免用功能通过结论替代容量结论。
2. 测试分层
| 层级 | 重点 |
|---|---|
| 单元测试 | 状态流转、分数计算、权限判断、截止时间规则 |
| 接口测试 | 认证、课程、任务、提交、成绩、通知 |
| 集成测试 | 提交到评测、批改到成绩发布、导入到审计 |
| 冒烟测试 | 演示账号、演示数据、关键页面和关键链路 |
| 压力与容量测试 | 读请求、写提交、评测队列、真实 go-judge、文件、通知、SSE、Web 终端、soak 稳定性 |
3. 必测主链路
- 登录
- 建课 / 选课
- 发布作业或实验
- 学生提交
- 自动评测
- 教师批改
- 成绩发布
4. 高风险专项
- 越权访问与角色隔离
- 超时、超次数、超大小提交
- 判题失败、超时和重评
- 成绩撤回与重新发布
- 审计日志与导出权限
- 500/1000 并发读请求长尾
- 真实 go-judge 提交和报告下载
- Kubernetes Web 终端连接、重连、重置和停止清理
- SSE 长连接保持、文件上传下载、对象存储权限负例
- 30 分钟以上混合流量 soak
5. 压力测试判定
| 判定项 | 通过口径 |
|---|---|
| 读请求 | 记录最高已测并发、错误率、5xx、P95/P99;若长尾较高,写明已测容量和待优化范围 |
| 写提交 | 正式提交和附件写入无 5xx,不因压测误触发业务限流 |
| 评测 | 评测轮询、真实 go-judge sample-run、正式提交、报告下载和重评进入稳定终态 |
| 文件 | 记录上传、下载、完整性、权限负例和对象存储指标的已测范围;未执行项写“未测” |
| 通知 | 分别记录轮询和 SSE 的最高已测并发与保持时长 |
| Web 终端 | 记录 Kubernetes 会话初连、命令 I/O、重连、重置、停止清理和资源观测的已测范围 |
| Soak | 记录混合流量最高已测时长、并发、错误率、5xx、资源使用和健康检查 |
压力测试报告使用“最高已测容量 / 未测 / 待优化”表达:未执行的压力专项写“未测”,已经执行但长尾或资源观测不足的专项写“待优化”,不默认声明超出实测范围的容量。
6. 输出物
- 测试用例
- 测试结果
- 缺陷清单
- 回归记录
- 压力测试摘要
- 关键截图与日志证据摘要