一.项目简介
1.1项目背景
-
历史起源:最早的OJ系统(如UVa、POJ)是为国际大学生程序设计竞赛(ICPC)等赛事开发的,用于自动评判参赛者的代码正确性和效率。
-
需求场景:竞赛需要公平、高效的评分系统,避免人工判题的耗时和主观性。
-
教学工具:高校和培训机构需要OJ系统来布置编程作业、实验或考试,实时反馈学生代码的逻辑错误、时间/空间复杂度等问题。
-
自学平台:个人学习者通过OJ(如LeetCode、洛谷)刷题提升算法和数据结构能力。
-
标准化筛选:企业(如Google、国内大厂)将OJ题目嵌入笔试环节,快速筛选候选人的编码能力。
-
常见平台:HackerRank、Codeforces等支持企业定制题库和在线编程测试。
-
自动化判题:利用沙箱(Docker等)隔离运行用户代码,通过测试用例比对结果。
-
云计算支持:现代OJ系统依赖云服务实现高并发判题
1.2 应用技术
SpringCloud微服务架构,SpringBoot框架,Mybatis-plus操作数据库,使用ApiFox进行代码测试以及生成接口文档,全局引入日志框架,Nacos配置中心,API网关,JWT身份认证,redis缓存,Mybatis的分页插件PageHelper,接口性能测试Jmeter.TransmittableThreadLocal.分布式任务调度平台xxl-job处理定时任务.Elasticsearch进行题目关键字搜索,使用阿里云的oss用于存储头像信息,rabbitmq消息队列
二.项目功能
2.1 管理端
登录:管理员可以通过账号密码进行登录,对于管理员密码存储到数据库要进行加密.
竞赛:添加竞赛,竞赛中的题目信息添加,查询题目,竞赛编辑,删除.以及竞赛的发布和撤销发布
题目:管理员可以添加题目,对题目信息进行修改,删除题目,查询题目
2.2 用户端
登录:用户使用手机号+验证码的方式进行登录,并对手机号进行加密处理
题目:用户可以参与答题,查询题目等操作
竞赛:用户可以报名参加竞赛,查看历史竞赛,以及查看我的竞赛列表
用户:提供用户可以查看个人信息,以及修改个人信息等
三.测试报告
3.1测试用例设计

3.2 功能测试
3.2.1 b端
3.2.1.1 登录测试
直接点击登录,提示我们账号密码不能为空

输入账号,不输入密码,提示我们密码不能为空

只输入密码,不输入账号,提示我们用户名不能为空

登录成功测试,登录成功后直接跳转管理页面

用户点击退出登录后是否会退到登录界面,测试成功

3.2.1.1 竞赛测试
3.2.1.1.1竞赛搜索
输入正确的日期区间是否会查询出结果,查询结果成功

输入错误的区间是否也会搜索出竞赛 ,查询结果失败.

输入竞赛完整名称是否会完成搜索,搜索成功

搜如关键字是否会搜索出结果,搜索成功
日期和竞赛名同时搜索会是否会搜索出结果,搜索成功

3.2.1.1.1竞赛添加
竞赛名称包含特殊字符是否可以创建,这里并没有对竞赛名称限制,后续需考虑

使用重复的竞赛名称进行竞赛添加是否可以通过,提示竞赛已经存在

竞赛开始时间在当前时间之前是否可以创建竞赛成功,提示竞赛时间不能早于当前时间

未添加竞赛题目的竞赛是否可以发布

添加竞赛题目的竞赛是否可以发布
![]()
![]()
3.2.1.1.1竞赛删除
管理员点击删除竞赛是否可以成功删除竞赛


3.2.1.1.1竞赛编辑
用户点击编辑竞赛是否会成功显示竞赛详情信息

3.3 界面测试
页面显示正常,功能模块布局完整,功能点显示没有异常.各个模块位置分配符合预期.背景图片清晰
用户登录后右上角会正确显示用户信息

3.2.2 c端
3.2.2.1 登录测试
用户未登录
我们可以看到用户在未登录的时候是不能进行答题操作的

同样我们测试下位报名是否可以报名参加竞赛,点击参加竞赛,提示我们未登录不能参加竞赛

接下来进入登录页面进行测试
什么都不输入,提示出验证码获取失败,提示信息不准确,需要后续进行更改

输入错误的手机号错误的验证码,提示验证码过期,也是有漏洞的需要更改

输入正确的手机号验证码后点击登录,直接跳转页面,由于该项目本打算使用阿里云短信服务,但是阿里云限制测试学习,我们只能通过日志打印的方式打印验证码.我们也可以设置一个开关,固定验证码测试时使用.

用户登录后可以发现我们可以进行答题操作

点击竞赛页面,报名参加竞赛,提示我们报名成功

同时在我的竞赛列表也能刚刚看到报名的竞赛
3.2.2.2 答题测试
答题使用es进行分词查询,通过测试效果是可以通过的

根据题目难度也可以进行测试

用户在答题页面进行题目切换


题目切换也是没问题的
接下里是用户答题测试


功能测试总结:
总体来说功能实现基本测试完成,
b端管理员操作对于竞赛或题目的增删改查已经基本实现
b端登录功能基本实现,登录失败会正确提示用户
c端用户答题功能,题目竞赛搜索功能,题目查询功能基本实现
但是c端用户登录的时候登录失败的提示不是很准确需要后续整改
3.3 性能测试
首先我们简单的对登录接口进行压力测试,准备100个线程对管理员登录接口进行测试


目前他抵挡住了我100个线程的攻击,此时我们加大马力,进行300次,由于博主电脑配置不是很高不敢贸然尝试更大的

查看结果树

聚合报告

我们可以看到请求300次也是可以成功的,当然这并不能说明什么, 还需要后续的梯度压测进行测试,
生成梯度压测测试报告后,因为只是简单测试了一个登录,一般不会有什么问题,并且线程数也不是很大,轻薄本不敢轻易尝试,还望见谅




















