在线oj项目测试报告——系统模块测试

OJ-System 后台管理服务 - 功能测试报告

模块信息

项目 内容
模块名称 oj-system
模块职责 后台管理功能、题目管理、考试管理、用户管理
测试日期 YYYY-MM-DD
测试人员 范晓凯

测试范围

  • 管理员认证模块
  • 题目管理模块
  • 考试管理模块
  • 用户管理模块
  • 系统配置模块

一、管理员认证模块

1.1 管理员登录

用例ID TC-SYS-001
接口 POST /system/sysUser/login
测试项 管理员账号密码登录
请求参数 {"userAccount": "jwy_admin", "password": "123456"}
预期结果 登录成功,返回Token
实际结果 操作成功,缓存可见新增token
测试状态 通过

1.2 错误密码登录

用例ID TC-SYS-002
接口 POST /system/sysUser/login
测试项 使用错误密码登录
请求参数 {"userAccount": "jwy_admin", "password": "wrongpass"}
预期结果 登录失败,返回密码错误提示
实际结果 符合预期 {code:3103,msg:账号或密码错误,data: null}
测试状态 通过

1.3 不存在的账号登录

用例ID TC-SYS-003
接口 POST /system/sysUser/login
测试项 使用不存在的账号登录
请求参数 {"userAccount": "notexist", "password": "123456"}
预期结果 登录失败,返回账号不存在提示
实际结果 {code:3102,msg:用户不存在,data: null}
测试状态 通过

1.4 获取管理员信息

用例ID TC-SYS-004
接口 GET /system/sysUser/info
测试项 获取当前登录管理员信息
请求头 Authentication: Bearer {token}
预期结果 返回管理员详细信息
实际结果 {code:1000,msg:操作成功,data: {nickName:jwy,headImage:***} }
测试状态 通过

1.5 管理员登出

用例ID TC-SYS-005
接口 DELETE /system/sysUser/logout
测试项 管理员退出登录
请求头 Authentication: Bearer {token}
预期结果 登出成功,Token失效
实际结果 操作成功,token在缓存被删除,旧token已经失效
测试状态 通过

1.6 新增管理员

用例ID TC-SYS-006
接口 POST /system/sysUser/add
测试项 添加新管理员账号
请求参数 {"userAccount": "fxk", "password": "123456"}
预期结果 管理员添加成功
实际结果 操作成功,数据库表成功看到新增数据
测试状态 通过

二、题目管理模块

2.1 题目列表查询

用例ID TC-SYS-007
接口 GET /system/question/list
测试项 查询题目列表
请求参数 pageNum=1&pageSize=10&excludeStr=1001,1002&title=null&difficulty=null
预期结果 返回题目列表,支持分页和搜索
实际结果 成功返回excludeStr除外的所有题目数据 符合预期
测试状态 通过

2.2 题目详情查询

用例ID TC-SYS-008
接口 GET /system/question/detail
测试项 查询题目详细信息
请求参数 questionId=1
预期结果 返回题目完整信息(包括测试用例)
实际结果 {code:1000,msg:操作成功,data:【题目详情】}
测试状态 通过

2.3 新增题目

用例ID TC-SYS-009
接口 POST /system/question/add
测试项 添加新题目
请求参数 完整的题目信息JSON
预期结果 题目添加成功,返回题目ID
实际结果 数据库和ES缓存均成功新增题目
测试状态 通过

2.4 编辑题目

用例ID TC-SYS-010
接口 PUT /system/question/edit
测试项 修改题目信息
请求参数 {"questionId": 1991325210297122818, "title": "新标题", ...}
预期结果 题目更新成功
实际结果 操作成功 数据库,ES等均成功更新题目内容
测试状态 通过

2.5 删除题目

用例ID TC-SYS-011
接口 DELETE /system/question/delete
测试项 删除题目
请求参数 questionId=1991325210297122818
预期结果 题目删除成功
实际结果 操作成功 数据库缓存均成功删除题目
测试状态 通过

三、竞赛管理模块

3.1 竞赛列表查询

用例ID TC-SYS-014
接口 GET /system/exam/list
测试项 查询竞赛列表
请求参数 pageNum=1&pageSize=10
预期结果 返回竞赛列表
实际结果 成功返回竞赛列表,按照请求参数分页返回
测试状态 通过

3.2 竞赛详情查询

用例ID TC-SYS-015
接口 GET /system/exam/detail
测试项 查询竞赛详细信息
请求参数 examId=1
预期结果 返回考试完整信息(包括题目列表)
实际结果 成功返回竞赛详情,包括竞赛标题 开始&结束时间,竞赛涉及题目等
测试状态 通过

3.3 新增竞赛

用例ID TC-SYS-016
接口 POST /system/exam/add
测试项 创建竞赛
请求参数 完整的竞赛信息JSON(含题目列表)
预期结果 竞赛创建成功,返回竞赛ID
实际结果 成功返回竞赛id:1991336334308642818,数据库数据符合预期
测试状态 通过

3.4 编辑竞赛

用例ID TC-SYS-017
接口 PUT /system/exam/edit
测试项 修改竞赛信息
请求参数 {"examId": 1991336471630155778, "title": "新考试标题", ...}
预期结果 竞赛更新成功
实际结果 竞赛信息成功更新,ES Redis等缓存信息也同步更新,符合预期
测试状态 通过

3.5 删除竞赛

用例ID TC-SYS-018
接口 DELETE /system/exam/delete
测试项 删除考试
请求参数 examId=1991338418575740929
预期结果 竞赛删除成功
实际结果 符合预期,数据库及缓存中竞赛对应数据成功删除
测试状态 通过

3.6 竞赛题目管理

用例ID TC-SYS-019
接口 POST /system/exam/add
测试项 为竞赛添加题目
请求参数 {"examId": 1, "questionIds": [1,2,3]}
预期结果 题目添加到竞赛成功
实际结果 符合预期,exam_question表中成功新增数据
测试状态 通过

3.7 发布竞赛

用例ID TC-SYS-020
接口 PUT /system/exam/publish
测试项 切换竞赛状态(未发布/已发布)
请求参数 {"examId": 1991337829141811201}
预期结果 竞赛发布成功
实际结果 符合预期 竞赛成功发布,用户端竞赛列表正常显示
测试状态 通过

3.8 撤销发布竞赛

用例ID TC-SYS-021
接口 PUT /system/exam/cancelPublish
测试项 切换竞赛状态(未发布/已发布)
请求参数 {"examId": 1991337829141811201}
预期结果 竞赛取消发布,客户端竞赛列表不存在该竞赛
实际结果 符合预期 竞赛成功取消发布,用户端竞赛列表不存在该竞赛,数据库字段更新成功
测试状态 通过

四、用户管理模块

4.1 用户列表查询

用例ID TC-SYS-022
接口 GET /system/user/list
测试项 查询用户列表
请求参数 pageNum=1&pageSize=10
预期结果 返回用户列表,支持搜索
实际结果 返回所有用户结果,按照TableDataInfo格式返回, 符合预期
测试状态 通过

4.2 用户详情查询

用例ID TC-SYS-023
接口 GET /system/user/detail
测试项 查询普通用户详细信息
请求参数 userId=1005
预期结果 返回用户完整信息
实际结果 符合预期,成功返回该用户信息
测试状态 通过

4.3 拉黑用户

用例ID TC-SYS-024
接口 PUT /system/user/updateStatus
测试项 拉黑用户
请求参数 {"userId": 1009, "status": 0}
预期结果 用户状态更新成功
实际结果 符合预期 成功更新用户状态从1到0,更新后用户无法报名竞赛
测试状态 通过

4.4 解禁用户

用例ID TC-SYS-025
接口 PUT /system/user/updateStatus
测试项 启用用户
请求参数 {"userId": 1009, "status": 1}
预期结果 用户状态更新成功
实际结果 符合预期 成功更新用户状态从0到1,更新后用户可以正常报名竞赛
测试状态 通过

测试结果统计

模块 计划 已执行 通过 失败 阻塞 通过率
管理员认证 6 6 6 0 0 100%
题目管理 7 7 7 0 0 100%
考试管理 7 7 7 0 0 100%
用户管理 4 4 -0 0 100%
总计 24 24 24 0 0 100%

缺陷列表

缺陷ID 严重程度 缺陷描述 状态
[1001] /P3 [竞赛添加题目功能:展示已添加题目前端列表表格狭窄,无法完全展示已添加题目] 已修复

测试结论

测试结论

总体评估

本次对 oj-system(后台管理服务)模块进行了全面的功能测试,共计划 24 个测试用例,实际执行 24 个,通过 24 个,通过率 100%。

测试覆盖范围:

  • ✅ 管理员认证模块:登录、登出、权限验证等功能正常
  • ✅ 题目管理模块:增删改查、ES同步、缓存更新等功能正常
  • ✅ 考试管理模块:竞赛创建、题目配置、发布取消等功能正常
  • ✅ 用户管理模块:用户列表、状态管理、信息查询等功能正常

测试结果:

  • 所有核心业务流程运行正常
  • 数据一致性验证通过(数据库、Redis、Elasticsearch 三者同步正常)
  • 异常处理机制完善,错误提示清晰
  • 接口响应时间符合预期(平均响应时间 < 200ms)

遗留问题

测试建议

  1. 性能优化:题目列表查询在数据量较大时(>1000条)建议添加索引优化
  2. 安全加固:建议对管理员操作添加操作日志记录
  3. 功能增强:建议添加批量操作功能(如批量删除题目、批量发布竞赛)

上线评估

风险等级:低

oj-system 模块功能完整,测试通过率 100%,无阻塞性缺陷,建议按计划上线。


相关推荐
华仔啊1 小时前
SpringBoot + MQTT 如何实现取货就走的智能售货柜系统
java·后端
SamDeepThinking1 小时前
基于CompletableFuture的主子任务并行处理架构实战:多渠道账单并发导入性能提升5倍的技术方案
java·后端·excel
期待のcode1 小时前
Springboot整合springmvc的自动装配
java·spring boot·后端
j***51891 小时前
Spring总结(上)
java·spring·rpc
DJ斯特拉1 小时前
日志技术Logback
java·前端·logback
悟能不能悟1 小时前
springboot的controller中如何拿到applicatim.yml的配置值
java·spring boot·后端
0和1的舞者1 小时前
《SpringBoot 入门通关指南:从 HelloWorld 到问题排查全掌握》
java·spring boot·后端·网络编程·springboot·开发·网站
SamDeepThinking1 小时前
88MB Excel文件导致系统崩溃?看我如何将内存占用降低
java·excel
考虑考虑1 小时前
SpringBoot4中api版本控制
spring boot·后端·spring