当前位置: 首页 > article >正文

在线OJ项目测试

一.项目简介

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次也是可以成功的,当然这并不能说明什么, 还需要后续的梯度压测进行测试,

生成梯度压测测试报告后,因为只是简单测试了一个登录,一般不会有什么问题,并且线程数也不是很大,轻薄本不敢轻易尝试,还望见谅

http://www.lryc.cn/news/2402507.html

相关文章:

  • C++ --- vector
  • 【python基础知识】变量名和方法名的单下划线(_)和双下划线(__)总结
  • FART 脱壳某大厂 App + CodeItem 修复 dex + 反编译还原源码
  • ✅ 常用 Java HTTP 客户端汇总及使用示例
  • 快速用 uv 模拟发布一个 Python 依赖包到 TestPyPI 上,以及常用命令
  • Keil调试模式下,排查程序崩溃简述
  • Python读取PDF:文本、图片与文档属性
  • 基于SpringBoot+Vue2的租房售房二手房小程序
  • 数学:学好数学需要对数系进行系统的对比和分析
  • 基于本地LLM与MCP架构构建AI智能体全指南
  • AT2659_GNSS低噪声放大器芯片
  • 跨平台游戏引擎 Axmol-2.6.1 发布
  • MADlib —— 基于 SQL 的数据挖掘解决方案(4)—— 数据类型之矩阵
  • ServBay 1.13.0 更新,新增第三方反向代理/内网穿透
  • C#对象扩展方法:提升对象操作的灵活性与效率
  • Python爬虫爬取天猫商品数据,详细教程【Python经典实战项目】
  • Oracle 的 SEC_CASE_SENSITIVE_LOGON 参数
  • Docker构建自定义的镜像
  • 【SSM】SpringMVC学习笔记8:拦截器
  • 井川里予瓜pdf完整版
  • UI自动化常见的一些问题解决方式
  • 基于 Zynq 平台的 EtherCAT 主站的软硬件协同设计
  • 聊一聊 .NET在Linux下的IO多路复用select和epoll
  • 从零开始的嵌入式学习day33
  • ArcGIS Pro 3.4 二次开发 - 宗地
  • 前端面试准备-7
  • 黑马Java面试笔记之框架篇(Spring、SpringMvc、Springboot)
  • 全球IP归属地查询接口如何用C#进行调用?
  • NumPy 比较、掩码与布尔逻辑
  • 力扣HOT100之二分查找:35. 搜索插入位置