Compilify Beta阶段测试报告

本文为Compilify编译课程平台Alpha阶段测试报告。

Bug列表

后端

bug现象 bug原因
作业顺序不齐 没有返回的保证作业顺序
管理员无法查看小测正确答案 后端没有设置
管理员无法查看用户教师 后端没有返回
无法添加新用户 数据库里添加了教师的外键约束,后删除教师实体、约束后解决

前端

bug现象 bug原因
错误地修改用户信息后前端没有报错 前端直接刷新而非再次获取数据
下载图片和txt资源直接显示 前端获得url直接下载
添加用户部分user_name为空提示user_name过长 rules的逻辑错误
带有分页的表格在分页大小处点击ALL后无法获取到所有信息 ALL在该组件中代表0,所以发送给后端时认为传输了无效的值,于是被替换为默认值
管理员部分按钮被公告等内容挡住 组件的层次问题
md编辑器的语法提示弹窗会出现在编辑器下层 组件的层次问题
在日期选择的弹窗中,不可以通过点击最上方的年份数字对年份进行更改 该组件自身存在bug
未读通知数量在更换课程时无法实时更新 没有刷新
提交评测的页面标题有误 复制粘贴后忘了改
进入讨论详情页控制台会有minio报错 头像被赋了初始值导致解析出错
指导书未渲染部分图片和行内公式
通知管理的表格有时不刷新 缺少await
修改密码时确认密码和新密码可以不一样 没有判断
修改密码输入错误的旧密码可能引发token无限刷新

评测端

bug现象 bug原因
多个评测机时会出错 没有给获取任务加锁,导致获取了错误的评测

前端测试

前端功能测试

前端功能测试采用手动点击前端页面方式进行测试,测试结果见前端 bug 列表

前端压力测试

使用 apache bench 模拟 200 路并发获取前端较大资源,结果如下:Benchmarking 10.212.30.38 (be patient)

Benchmarking 10.212.30.38 (be patient)Server Software:
Server Hostname:        10.212.30.38
Server Port:            9201Document Path:          /assets/index-3a4db1b6.css
Document Length:        203617 bytesConcurrency Level:      200
Time taken for tests:   6.521 seconds
Complete requests:      200
Failed requests:        0
Total transferred:      40775000 bytes
HTML transferred:       40723400 bytes
Requests per second:    30.67 [#/sec] (mean)
Time per request:       6520.841 [ms] (mean)
//用户平均请求等待时间
Time per request:       32.604 [ms] (mean, across all concurrent requests)
//服务器平均处理时间,
Transfer rate:          6106.47 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        6   18   1.4     18      20
Processing:  1032 5269 1091.3   5697    6487
Waiting:        9  563 537.8    576    2717
Total:       1049 5287 1092.0   5714    6504Percentage of the requests served within a certain time (ms)50%   571466%   596775%   617680%   621790%   639295%   644798%   647499%   6503100%   6504 (longest request)

根据测试报告可以看出,前端访问资源的瓶颈在于带宽速度,服务处理的时间很短

前端压测的url有

http://10.212.30.38:9201/assets/index-2b6ab67a.js
http://10.212.30.38:9201/assets/Home-8fb1e6d5.js
http://10.212.30.38:9201/assets/menu-62e33bbf.js
http://10.212.30.38:9201/assets/api-121a8453.js
http://10.212.30.38:9201/assets/index-3a4db1b6.css
http://10.212.30.38:9201/assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-4a4dbc62.woff2#

后端测试

后端API单元测试

完成了主要功能、访问需求量大的API的单元测试。覆盖率无法进一步提升是由于对数据库异常进行了一定的检测,部分无法覆盖。部分API由于测试条件较复杂编写难度较大,需要进一步完善。

  • 用户单元测试,行覆盖率83.7%

    • 对于AdminAddUser API,进行了功能测试400、401、403、500的错误处理测试
    • 对于AdminDeleteUser API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminResetUserPassword API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminChangeUserInfo API,进行了功能测试400、401、403、404的错误处理测试
    • 对于ChangePassword API,进行了功能测试400、401的错误处理测试
    • 对于ChangeEmail API,进行了功能测试400、401的错误处理测试
    • 对于ChangeCourse API,进行了功能测试400、401、403的错误处理测试
    • 对于Login API,进行了功能测试400、401、404的错误处理测试
    • 对于Logout API,进行了功能测试401的错误处理测试
    • 对于ChangePhoto API,进行了功能测试400、401的错误处理测试
    • 对于GetUserInfo API,进行了功能测试401的错误处理测试
    • 对于AdminGetAllUser API,进行了功能测试400、401、403的错误处理测试
  • 课程管理单元测试,行覆盖率92.5%
    • 对于AdminAddCourse API,进行了功能测试400、401、403、409的错误处理测试
    • 对于tAdminAddCourseUser API,进行了功能测试400、401、403、500的错误处理测试
    • 对于AdminDeleteCourseUser API,进行了功能测试400、401、403、409的错误处理测试
    • 对于AdminChangeCourseInfo API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminDeleteCourse API,进行了功能测试400、401、403、404的错误处理测试
  • 作业管理单元测试,行覆盖率77.5%
    • 对于AdminCreateContent API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminUpdateContent API,进行了功能测试400、401、403的错误处理测试
    • 对于AdminDelContent API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminCreateQuiz API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminUpdateQuiz API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminDelQuiz API,进行了功能测试400、401、403、404的错误处理测试
    • 对于PostQuiz API,进行了功能测试401、404、409的错误处理测试
    • 对于ExtendedTime API,进行了功能测试400、401、403、404的错误处理测试
  • 讨论区单元测试,行覆盖率85.2%
    • 对于AddPost API,进行了功能测试400、401、403、404的错误处理测试
    • 对于ChangePostInfo API,进行了功能测试400、401、403、404的错误处理测试
    • 对于FollowLikePost API,进行了功能测试400、401、403、404的错误处理测试
    • 对于StarPinPost API,进行了功能测试400、401、403、404的错误处理测试
    • 对于DeletePost API,进行了功能测试400、401、403、404的错误处理测试
    • 对于GetAllPost API,进行了功能测试400、401、403、404的错误处理测试
    • 对于GetPostInfo API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AddReply API,进行了功能测试400、401、403、404的错误处理测试
    • 对于ChangeReplyInfo API,进行了功能测试400、401、403、404的错误处理测试
    • 对于LikeReply API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminVerifyReply API,进行了功能测试400、401、403、404的错误处理测试
    • 对于DeleteReply API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminAddTag API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminChangeTagInfo API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminDeleteTag API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminGetAllTag API,进行了功能测试400、401、403、404的错误处理测试
  • 通知管理单元测试,行覆盖率70.2%
    • 行覆盖率相较于别的较低是因为通知管理里面有websocket,ws没有测试
    • 对于AdminCreateNotice API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminPublishNotice API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminUpdateNotice API,进行了功能测试400、401、403、404的错误处理测试
    • 对于AdminDelNotice API,进行了功能测试400、401、403、404的错误处理测试
    • 对于UserReadNotice API,进行了功能测试400、401、403、404的错误处理测试
    • 对于UserGetAllNotice API,进行了功能测试400、401、403的错误处理测试
    • 对于AdminGetAllNotice API,进行了功能测试400、401、403的错误处理测试
    • 对于UserGetAllNoReadNotice API,进行了功能测试400、401、403的错误处理测试

后端API压力测试

使用 apache bench对涉及信息量最多的评测记录API(获取所有用户信息)进行测试,结果如下

全部
Server Software:
Server Hostname:        10.212.30.38
Server Port:            9200Document Path:          /user/get_all_user?page_size=2000
Document Length:        245067 bytesConcurrency Level:      100
Time taken for tests:   4.077 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      24522200 bytes
HTML transferred:       24506700 bytes
Requests per second:    24.53 [#/sec] (mean)
Time per request:       4076.778 [ms] (mean)
Time per request:       40.768 [ms] (mean, across all concurrent requests)
Transfer rate:          5874.11 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        6   12   1.9     11      17
Processing:    68 2952 1035.0   3288    4025
Waiting:       31  612 221.6    611    1483
Total:         74 2964 1035.2   3298    4037Percentage of the requests served within a certain time (ms)50%   329866%   364975%   381880%   384990%   394995%   399498%   400399%   4037100%   4037 (longest request)单页 页面大小为10
Server Software:
Server Hostname:        0.0.0.0
Server Port:            9200Document Path:          /user/get_all_user?page_size=50
Document Length:        6173 bytesConcurrency Level:      100
Time taken for tests:   0.328 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      632800 bytes
HTML transferred:       617300 bytes
Requests per second:    305.18 [#/sec] (mean)
Time per request:       327.677 [ms] (mean)
Time per request:       3.277 [ms] (mean, across all concurrent requests)
Transfer rate:          1885.91 [Kbytes/sec] receivedConnection Times (ms)min  mean[+/-sd] median   max
Connect:        0    4   0.8      4       4
Processing:    45  162  25.0    159     280
Waiting:       43  161  25.1    159     280
Total:         45  165  25.2    163     284Percentage of the requests served within a certain time (ms)50%    16366%    17975%    18080%    18190%    19095%    19098%    20099%    284100%    284 (longest request)

对于全部数据发现服务器平均处理时间为40.768ms,对单页数据的处理时间为3.277ms,能够保证助教和教师的查看

使用asyncio 和 aiohttp对后端使用次数多的API进行并发访问访问,其中登录2000路并发,管理员获取用户所有信息和用户查看历史提交200路并发

test_url: /user/get_all_user, number: 200, cost_time: 0.4110887050628662s
test_url: /user/get_all_user, number: 200, cost_time: 1.0943667888641357s
test_url: /user/get_all_user, number: 200, cost_time: 0.13801002502441406s
test_url: /user/get_all_user, number: 200, cost_time: 0.15606403350830078s
test_url: /user/get_all_user, number: 200, cost_time: 0.3288722038269043s
test_url: /user/login, number: 2000, cost_time: 3.7957608699798584s
test_url: /user/login, number: 2000, cost_time: 3.6607179641723633s
test_url: /user/login, number: 2000, cost_time: 3.694988965988159s
test_url: /user/login, number: 2000, cost_time: 3.7916181087493896s
test_url: /user/login, number: 2000, cost_time: 3.504262924194336s
test_url: /judge/history, number: 200, cost_time: 1.3025119304656982s
test_url: /judge/history, number: 200, cost_time: 1.1705520153045654s
test_url: /judge/history, number: 200, cost_time: 1.320146083831787s
test_url: /judge/history, number: 200, cost_time: 1.6104991436004639s
test_url: /judge/history, number: 200, cost_time: 1.5889379978179932s

时间如上所示,能够满足多位用户同时登录、访问资源的需求

评测端压力测试

评测机扩容测试

  • 测试题目是一般的代码生成题目,共包含3个中等的测试点,mars中的代码指令条数在65535条以下,源代码形式为java共100次提交
  • 5个评测节点耗时118.767s,平均每分钟评测50.5道题目(三个服务端节点两个虚拟机节点)
  • 4个评测节点耗时136.178s,平均每分钟评测44.0道题目(两个服务端节点两个虚拟机节点)
  • 3个评测节点耗时184.171s,平均每分钟评测32.6道题目(一个服务端节点两个虚拟机节点)
  • 2个评测节点耗时275.074s,平均每分钟评测21.8道题目(一个服务端节点一个虚拟机节点)
  • 1个评测节点耗时425.055s,平均每分钟评测14.1道题目(一个服务端节点)

3个以下的评测节点已经能够满足评测量不大时的评测要求,另外每分钟评测数量和评测节点数量基本上(考虑道不同机器的性能差异以及服务器增加节点导致平均性能下降)呈线性关系,在考试或者ddl等大规模提交作业的情况下可以通过扩容评测机来提升评测效果

压力测试

进行压力测试时共在服务端开启四个评测节点,共评测1000道题目,11500个测试点,包含源代码为java、cpp,目标代码为llvm、mips,题目类型为词法、语法分析、代码生成等各种类型的题目,共耗时39.8分钟

场景测试

用户信息 用户情况
姓名 刘狗
用户身份 计算机学院大三学生
用户情况 学习编译知识或者预习编译比赛
用户痛点 1. 原版编译平台UI设计不合理 2. 无法查看指导书 3. 想要查看自己的历史测评信息 4.下载资源页面难以找到
软件对应功能 即时通知、讨论区、指导书、作业题面、作业小测、课程资料下载、提交评测、查看评测详情和竞速结果、个人中心
预期使用场景实现该用户需求的功能 1. UI设计简洁,美观,查看作业更加便捷 2. 可以在平台上查看指导书 3. 可以轻松查看历史测评信息,并添加自己的备注 4. 下载课程资源更便捷
用户信息 用户情况
姓名 王跌
用户身份 计算机学院学生
用户情况 编译课程平台助教
用户痛点 原版平台操作不舒服,缺乏便捷操作
软件对应功能 1. 查看用户列表,查看课程、班级信息,查看评测列表和评测详情 2. 发布、修改作业及小测,管理、发布通知 3. 以图表的形式查看分数分布、编译器语言及目标语言占比
预期使用场景实现该用户需求的功能 1. 对用户管理更便捷,支持批量修改 2. UI简洁美观,对作业管理支持好 3. 可视化查看学生成绩
用户信息 用户情况
姓名 rjd0
用户身份 计算机学院教授
用户情况 编译课程讲师
用户痛点 原版平台设计不好,llvm版本过低
软件对应功能 1. 发布通知和作业 2. 通过清晰的表格和卡片形式管理用户、课程、班级,并查看评测列表 3. 以图表的形式查看指定班级、指定作业的学生分数分布、编译器语言及目标语言占比
预期使用场景实现该用户需求的功能 1. UI简洁美观,管理便捷 2. 提高了编译版本 3. 可视化查看学生成绩

测试矩阵

OS Browser 登录 公告查看 课程作业 小测 提交评测 竞速排序 课程资料 个人中心 课程管理 用户管理 评测记录 讨论区 通知
macOS 13.3.1 Chrome 112.0.5615.137 pass pass pass pass pass pass pass pass pass pass pass pass pass
macOS 13.3.1 Safari 18615.1.26.11.23 pass pass pass pass pass pass pass pass pass pass pass pass pass
macOS 13.3.1 Firefox 112.0.1 pass pass pass pass pass pass pass pass pass pass pass pass pass
macOS 13.3.1 Edge 112.0.1722.58 pass pass pass pass pass pass pass pass pass pass pass pass pass
Windows 10 19044.2846 Chrome 105.0.5195.127 pass pass pass pass pass pass pass pass pass pass pass pass pass
Windows 10 19044.2846 Edge 112.0.1722.58 pass pass pass pass pass pass pass pass pass pass pass pass pass
  • macOS火狐浏览器下保存用户名密码到浏览器后,点击修改密码自动填充相应字段
  • macOS火狐浏览器、safari下登陆界面字体过小

出口条件

功能条件

完成原定Alpha阶段的指定需求:

学生用户需求:

  • 个人相关

    • 登录登出(注册方式见下方安装使用方法)
    • 修改邮箱密码(其他信息不提供自由编辑,需联系助教/管理员修改)
  • 公告相关
    • 查看课程公告
  • 资料相关
    • 查看下载课程资料
  • 作业相关
    • 查看作业介绍、测验、评测
    • 提交小测、查看小测答案
    • 提交评测、获取评测结果、下载提交、查看详情
  • 讨论区
    • 查看课程对应的全部讨论帖
    • 发表讨论帖、修改删除自己发布的讨论帖
    • 点赞关注讨论帖
    • 查看讨论帖下面的回复
    • 发表回复、修改删除自己发布的回复
    • 点赞回复
  • 通知
    • 查看通知
    • 接收关注的讨论帖有新回复的通知
  • 指导书
    • 查看课程指导书
    • 通过chatbot提问指导书上相关内容

在学生用户的基础上,对管理员用户进一步提供用于管理的基本功能:

  • 用户管理

    • 添加删除用户
    • 修改用户信息、重置用户密码为默认值
  • 课程管理
    • 添加修改删除课程
    • 添加删除课程开放用户
  • 公告管理
    • 修改删除课程公告
  • 资源管理
    • 添加更新删除资源
  • 作业管理
    • 添加删除作业、修改作业题面
    • 创建更新删除小测
    • 延长作业时间
    • 评测管理
      • 添加更新删除评测
      • 添加更新删除数据点
      • 上传测试点文件
  • 成绩管理
    • 查看统计分析作业对应的成绩
  • 讨论区管理
    • 增删改查讨论帖
    • 加精置顶讨论帖
    • 管理讨论帖对应的标签
  • 指导书管理
    • 修改维护指导书内容
    • 维护GPT

测试条件

编写并通过全部单元测试,尽可能提高测试覆盖率。

进行后端压力测试、评测机压力测试。压测情况下系统稳定不崩溃。

数据条件

创建编译技术测试课程。

创建课程所需的题目、评测用例、评测脚本。

Compilify Beta阶段测试报告相关推荐

  1. Beta阶段测试报告

    iCourse课程平台beta阶段测试报告 本报告由"烫烫烫烫烫"团队撰写 测试环境及工具 此部分与alpha阶段一样 windows10/selenium/jmeter/badb ...

  2. Compilify Alpha阶段测试报告

    Compilify Alpha阶段测试报告 本文为Compilify编译课程平台Alpha阶段测试报告. Bug列表 后端 bug现象 bug原因 作业顺序不齐 没有返回的保证作业顺序 管理员无法查看 ...

  3. 【CodingNoBorder - 12】无际软工队 - 求职岛:BETA 阶段测试报告

    无际软工队 - 求职岛:BETA 阶段测试报告 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 团队项目-Beta阶段测试报告 我们在这个课程的目标是 熟悉敏捷开发 ...

  4. 第十二周 beta阶段测试报告

    文章目录 场景测试 场景一 场景二 场景三 场景四 场景五 场景六 场景七 场景八 场景九 真机测试 每个人的任务与总结 张盟琳 个人总结 已经完成的工作 计划完成的工作 遇到的问题: 张佳怡 心得体 ...

  5. 公客网beta阶段项目展示

    课程评价网站--公客网 为大学生选课排忧解难 公正客观的评课网站 为大学生提供发表自己看法的平台 为每一门课程打出公正的评分 beta阶段的新功能 beta阶段发布说明 评价的增删改 对课程发表评价 ...

  6. 【CodingNoBorder - 15】无际软工队 - 求职岛:BETA 阶段事后分析

    无际软工队 - 求职岛:BETA 阶段事后分析 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 团队项目-Beta阶段反思 我们在这个课程的目标是 熟悉敏捷开发的方 ...

  7. OUC2021软件工程“OUC拼车“校园拼车程序小组Beta阶段软件测试报告

    一.Version 1.2 Bug List 1.用户个人中心界面存在一定的排版问题. 2.用户在发布拼车需求时,存在可能无法将拼车需求发布到主页面的情况. 3.暂未实现通过向左滑动拼车需求即可将需求 ...

  8. Beta版本测试报告以及Beta版本发布说明

    Beta版本测试报告 请根据团队项目中软件的需求文档.功能说明.系统设计和Beta阶段的计划安排,写出软件的测试过程和测试结果,并回答下述问题. 在测试过程中总共发现了多少bug?每个类别的bug分别 ...

  9. [BUAA软工]beta阶段贡献分

    团队成员在Beta阶段的角色和具体贡献: 名字 角色 具体的可衡量的可验证的贡献 zpj 前段+ 前后端对接 博客X1 20+ commits ui 设计与实现 bug fixed: 2 推广:10 ...

最新文章

  1. wireshark C插件开发
  2. 画原理图和PCB图该注意什么?
  3. 开学啦!你还焦躁吗?
  4. HTML中select的option设置selected=“selected“无效的解决方案
  5. jmeter中特殊的时间处理方式
  6. 分享,用sql快速创建MODEL,快速提高工作效率哦
  7. Ubuntu 离线安装软件包
  8. OD教程(去除NAG窗口--PE文件结构)
  9. 网际风全推数据接口_网际风飞狐全推接口
  10. python聊天室详细教程_python编写简易聊天室实现局域网内聊天功能
  11. 图片alt属性添加方法
  12. docker安装常用命令docker网络
  13. 关于核磁共振项目的硬件理解
  14. 阿里总结的《Java成神之路》 PDF 火了,完整版开放下载!
  15. xftp7要继续使用此程序,您必须应用最新的更新,100%已解决.
  16. tp中ueditor编辑器的使用
  17. 一个简单的登录注册网页的实现
  18. 空洞卷积(dilated convolution)理解
  19. CATIA达索三维建模软件的功能和核心技术是什么?
  20. Micropython——关于Pico中I2C和SPI的实际应用示例(OLED屏幕显示)

热门文章

  1. 何谓KVM切换器及其功能之详解
  2. ffmpeg缩放处理视频背景高斯模糊
  3. Telegram 使用 Markdown 语法编写消息
  4. 实现一下类似百度网盘的预览功能:支持Word、Excel、Ppt
  5. 在kernel中如何sleep
  6. 手机QQ轻聊版,3.2.0升级3.3.1区别
  7. Herd Sums(hdu 2715)
  8. vmware EXSI 6.7的安装及使用
  9. Android仿豆瓣书影音频道推荐表单堆叠列表RecyclerView-LayoutManager
  10. laravel email