Compilify Beta阶段测试报告
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阶段测试报告相关推荐
- Beta阶段测试报告
iCourse课程平台beta阶段测试报告 本报告由"烫烫烫烫烫"团队撰写 测试环境及工具 此部分与alpha阶段一样 windows10/selenium/jmeter/badb ...
- Compilify Alpha阶段测试报告
Compilify Alpha阶段测试报告 本文为Compilify编译课程平台Alpha阶段测试报告. Bug列表 后端 bug现象 bug原因 作业顺序不齐 没有返回的保证作业顺序 管理员无法查看 ...
- 【CodingNoBorder - 12】无际软工队 - 求职岛:BETA 阶段测试报告
无际软工队 - 求职岛:BETA 阶段测试报告 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 团队项目-Beta阶段测试报告 我们在这个课程的目标是 熟悉敏捷开发 ...
- 第十二周 beta阶段测试报告
文章目录 场景测试 场景一 场景二 场景三 场景四 场景五 场景六 场景七 场景八 场景九 真机测试 每个人的任务与总结 张盟琳 个人总结 已经完成的工作 计划完成的工作 遇到的问题: 张佳怡 心得体 ...
- 公客网beta阶段项目展示
课程评价网站--公客网 为大学生选课排忧解难 公正客观的评课网站 为大学生提供发表自己看法的平台 为每一门课程打出公正的评分 beta阶段的新功能 beta阶段发布说明 评价的增删改 对课程发表评价 ...
- 【CodingNoBorder - 15】无际软工队 - 求职岛:BETA 阶段事后分析
无际软工队 - 求职岛:BETA 阶段事后分析 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程 这个作业的要求在哪里 团队项目-Beta阶段反思 我们在这个课程的目标是 熟悉敏捷开发的方 ...
- OUC2021软件工程“OUC拼车“校园拼车程序小组Beta阶段软件测试报告
一.Version 1.2 Bug List 1.用户个人中心界面存在一定的排版问题. 2.用户在发布拼车需求时,存在可能无法将拼车需求发布到主页面的情况. 3.暂未实现通过向左滑动拼车需求即可将需求 ...
- Beta版本测试报告以及Beta版本发布说明
Beta版本测试报告 请根据团队项目中软件的需求文档.功能说明.系统设计和Beta阶段的计划安排,写出软件的测试过程和测试结果,并回答下述问题. 在测试过程中总共发现了多少bug?每个类别的bug分别 ...
- [BUAA软工]beta阶段贡献分
团队成员在Beta阶段的角色和具体贡献: 名字 角色 具体的可衡量的可验证的贡献 zpj 前段+ 前后端对接 博客X1 20+ commits ui 设计与实现 bug fixed: 2 推广:10 ...
最新文章
- wireshark C插件开发
- 画原理图和PCB图该注意什么?
- 开学啦!你还焦躁吗?
- HTML中select的option设置selected=“selected“无效的解决方案
- jmeter中特殊的时间处理方式
- 分享,用sql快速创建MODEL,快速提高工作效率哦
- Ubuntu 离线安装软件包
- OD教程(去除NAG窗口--PE文件结构)
- 网际风全推数据接口_网际风飞狐全推接口
- python聊天室详细教程_python编写简易聊天室实现局域网内聊天功能
- 图片alt属性添加方法
- docker安装常用命令docker网络
- 关于核磁共振项目的硬件理解
- 阿里总结的《Java成神之路》 PDF 火了,完整版开放下载!
- xftp7要继续使用此程序,您必须应用最新的更新,100%已解决.
- tp中ueditor编辑器的使用
- 一个简单的登录注册网页的实现
- 空洞卷积(dilated convolution)理解
- CATIA达索三维建模软件的功能和核心技术是什么?
- Micropython——关于Pico中I2C和SPI的实际应用示例(OLED屏幕显示)