【观隅】Alpha阶段测试报告
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021学年春季软件工程(罗杰 任健) |
这个作业的要求在哪里 | 团队项目-测试报告 |
在这个课程的目标是 | 锻炼在软件工程中的团队协作能力 |
这个作业在哪个具体方面帮助我实现目标 | 通过团队协作真实开发出一款产品,并在软件工程的评价体系中对自己进行评价 |
单元测试
我们通过django
自带的test
模块进行单元测试。我们为涉及数据库表项的相关函数设计了单元测试,以保证各函数在迭代过程中能符合需求预期:
测试对象 | 测试预期 | 测试结果 |
---|---|---|
数据集 | 能对数据集进行正确的增删查改 | 正常 |
数据集配置 | 能对数据集配置进行正确的增删查改 | 正常 |
反馈 | 能够将反馈信息正确地存储至数据库 | 正常 |
统计 | 能够正确地统计日活跃量并展示 | 正常 |
压力测试
我们对我们的后端接口进行了压力测试,测试设置和结果如下:
测试设置 | 总时间/s | 平均时间/s |
---|---|---|
1个进程请求50次 | 52.3765 | 1.0475 |
2个进程同时请求,共80次 | 156.5541 | 1.9569 |
5个进程同时请求,共100次 | 520.8520 | 5.2085 |
10个进程同时请求,共100次 | 1057.9717 | 10.5797 |
20个进程同时请求,共100次 | 2465.0520 | 24.6505 |
30个进程同时请求,共100次 | 3322.5053 | 33.2251 |
40个进程同时请求,共100次 | 4797.9504 | 47.9795 |
50个进程同时请求,共100次 | 6602.0218 | 66.0202 |
60个进程同时请求,共100次 | 7908.6074 | 79.0861 |
可以看出目前平均请求时间随进程数增加和请求次数增加而线性增加,暂时未触及性能瓶颈。
场景测试
我们按照功能规格说明书的“典型用户”与“典型场景”两节构建了常见的 \(4\) 个典型场景,进行了如下测试:
- 用户1:入门深度学习的高校学生
- 用户特征:刚刚接触深度学习,对数据集只有一个模糊的概念。
- 潜在总量:随着计算机专业和深度学习越来越热门,学习这方面的学生会越来越多,而大多数刚入门的学生,对数据集的理解存在较大障碍,需要一款数据集可视化软件来帮助理解。所以,这部分用户的潜在总量会很大。
- 市场比例:20%
- 使用环境:主要是学习场所,例如教室、宿舍、实验室。
- 动机:在入门深度学习时,往往需要对使用的数据集有直观的认识,而现有的数据集格式复杂,数据大多以数字、文本这样的形式体现,无法从现有格式中感性认识数据集,因此,需要将数据集中的信息直观表示出来。
- 困难:数据集格式多样,暂无统一软件以形象展示
- 偏好:这部分用户专业知识缺乏,无法对数据集进行专业的操作,因此需要软件便捷、易上手
- 愿意付出的代价:该类用户使用的功能比较基础,并且经济能力有限,为产品付出代价的意愿比较小。
- 典型场景:A同学,刚选了一门叫“计算机导论”的课程,就被要是要求实现xxx神经网络的训练,该同学不太理解数据集中的标注,于是打开了本软件,导入下发的标注好的数据集,本软件提供的可视化的标注信息能帮助他快速理解标注的意义,他同时可以和其他同学一起查看并共同讨论,使他更容易的理解课程内容。
- 相关功能:数据集搜索,数据集概述,数据集条目总览,数据集条目详细可视化
- 用户2:模型设计与模型优化等相关从业者
- 用户特征:从事的工作与深度学习密切相关
- 潜在用户:对工作效率要求高的从业者
- 市场比例:35%
- 使用环境:主要是在工作中使用,例如办公室、家中
- 动机:方便筛选部分数据,查看其特征 在用测试集对模型的进行测试时,常常会遇到表现不好的测试数据,需要筛选这部分的数据
- 困难:数据集的筛选清洗需要自行编写,是重复劳动
- 偏好:特定数据集中进行大量筛选,可能是非公开的
- 愿意付出的代价:企业或部门会愿意为软件或功能付费,方式可能是买断或年付
- 典型场景:B工程师,盯着训好的目标网络,再看看效果不佳的测试集,无法找出其中的原因。使用本软件,可以查看数据集中的标注情况,让他对难以完成的调优工作有了一丝思路,同时还可以可视化的与同事讲解,交流可能的问题。使他更轻松的完成工作。
- 相关功能:数据集条目交互,自定义数据集上传(Beta版本),信息反馈
- 用户3:深度学习相关研究者
- 用户特征:从事的研究与深度学习密切相关
- 潜在用户:对工作效率要求高的研究者
- 市场比例:35%
- 使用环境:主要是在实验室中使用
- 动机:除了筛选数据集的功能外,研究者通常还有发论文的需求,论文中需要将实验数据、结果等信息用直观的方式表示出来,所以研究者需要方便快速的将数据信息转化成可视化的信息在论文中使用。
- 困难:数据集的筛选和需要自行编写、数据集的可视化需要自行编写,重复劳动
- 偏好:支持多种数据集类型的多种可视化模式
- 愿意付出的代价:实验室或课题组会愿意为软件或功能付费,实验室可能是买断或年付,课题组可能视课题情况而定,可能方式是按月付。
- 典型场景:C研究员,刚读完顶会的最新paper,准备复现一下实验,于是先下载了数据集,使用本软件查看数据集中的标注情况,同时保存了一些图片,为之后的组会presentation,论文中的插图做了不少准备。本软件使他更轻松的完成科研。
- 相关功能:数据集搜索,数据集条目总览,数据集条目详细可视化
- 用户4:用作教学的教师
- 用户特征:课堂内容涉及数据集相关内容,需要让学生更好的理解与掌握,同时需要方便课堂讲解
- 潜在用户:越来越多的高校开设人工智能专业与课程,数据集的处理是这些课程中很重要的内容,传统的数据集形式对学生的理解与老师的讲课效果来说都是不尽人意的。
- 市场比例:10%
- 使用环境:主要是在教学中,例如课堂、讲座
- 动机:在课堂上用传统的数据集形式讲解,课堂枯燥、学生理解困难,导致课堂效果差,需要以更直观的方式讲解数据集。
- 困难:教室中设备的局限性较大
- 偏好:软件具有丰富的展示形式,可以直观反映数据集的特征等信息。
- 愿意付出的代价:课程组会愿意为软件或功能付费,可能方式是买断或年付。
- 典型场景:D讲师,为了在课堂上展示数据集的标注工作,于是打开了本软件,向同学们展示标注好的可视化数据集。使用本软件,让同学们更容易的理解数据集的标注工作,拉近了师生距离,使用本软件,让老师们更轻松的完成了教学任务。
- 相关功能:数据集浏览,数据集搜索,数据集概述,数据集条目总览,数据集条目详细可视化,数据集条目交互,信息反馈
根据有关测试,观隅已经能够较好满足以上Alpha阶段的典型用户和典型场景的需求,可认为通过场景测试。
测试矩阵
我们在不同浏览器内核及版本上进行了基本功能测试,结果如下:
其中,正常指的是,前端显示效果正常,跳转比较流畅,渲染时间较短;一般是相对于正常情况,在不同维度上存在不够理想的情况,会在括号内说明。
浏览器内核及版本号 | 数据集 浏览 |
数据集 搜索 |
数据集 概述 |
数据集条目 总览 |
数据集条目 详细可视化 |
数据集条目 交互 |
信息 反馈 |
---|---|---|---|---|---|---|---|
Chromium 86 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 |
缩放50% | 一般(显示效果) | 一般(显示效果) | 正常 | 正常 | 正常 | 正常 | 正常 |
缩放150% | 一般(显示效果) | 一般(显示效果) | 正常 | 正常 | 正常 | 正常 | 正常 |
Firefox 88 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 |
Safari | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 | 正常 |
Bug记录
前端
Bug说明 | 原因 | 修复方式 | 结果 |
---|---|---|---|
切换页面时可视化按钮状态与图片隐藏状态对不上 | 按钮状态忘记保存 | 按钮切换时对其状态进行保存 | 切换页面后再查看可视化页面,不会出现可视化按钮与图片状态错位的情况 |
可视化页中labels过多导致页面溢出 | 未设置overflow 参数 |
限定一个合理的范围,并增添overflow 参数 |
通过滚动的方式查看过多的labels |
可视化列表中的label name导出布局错位 | 未合理安排布局 | 进行布局重排布 | 在能正常的长度下不会出现布局错位的情况 |
点击Next按钮跳转到错误的路由 | 未做越界判断 | 增添越界判断 | 不会跳转到错误的路由 |
过窄的屏幕导致整体页面布局崩坏 | 未设置minWidth ,导致屏幕较窄时元素布局崩坏 |
设置合理的minWidth |
在比较常见的屏幕比例上显示正常 |
含有请求的页面会多次加载,耗费性能,甚至错误 | setState 在生命周期错误的地方调用 |
在合理的生命周期中调用请求函数 | 页面加载次数在能接受的范围内 |
后端
Bug说明 | 原因 | 修复方式 | 结果 |
---|---|---|---|
并发访问可视化接口出错 | matplotlib 绘图是状态相关的,并发时出现了不可预估的代码执行顺序导致出错 |
修改了状态相关的代码部分 | 并发访问可视化接口可以正常返回结果 |
数据集条目框图和标记位置不对应 | matplotlib 绘图对图片的 \(x,y\) 轴的比例进行了自动调节,使得图像的大小不一致 |
固定了相关 \(x,y\) 轴的比例 | 数据集条目框图和标记位置对应 |
日活无法更新 | 使用 session 记录日活时,对其内容的修改没有同步到数据库 |
将该部分数据同步到数据库 | 日活可以正常更新 |
缺少isBase 字段说明数据集条目的底图 |
返回的 json 缺少前端所需要的 isBase 字段 |
在返回的 json 加入前端所需要的 isBase 字段 |
使前端可以正常显示底图 |
url 路由和逻辑不一致 | url 路由和逻辑不一致 | 修改路由跳转方式 | url 路由和逻辑一致 |
对数据库表项的修改存在远程代码执行漏洞 | 相关代码滥用了python 的eval 函数 |
将eval 函数的相关逻辑替换为了更安全的实现方式 |
保证数据库表项的修改的安全性 |
解析引擎处理动态脚本型数据集时,高并发场景下可能会出错 | 动态脚本加载时需要修改系统路径并重新导入库,此时可能产生竞争条件进而引发错误 | 更改引入方法,不需要对路径进行操作 | 成功修复 |
出口条件
- 系统功能:完成功能规格说明书的"系统功能及验收标准"一节中的所有功能,并达到验收标准
- 系统性能:数据集概要等界面跳转流畅,数据集条目加载与渲染等功能耗时不过长
- 在真实测试中不出现以下严重Bug(出自技术规格说明书的“真实测试”一节):
- 频繁的或不知原因的崩溃(包括但不限于闪退、操作系统卡死等)
- 有歧义的文字、图标、按钮、提示信息或乱码
- 不正常加载的页面(包括但不限于CSS崩坏、缩放比例不正常等)
- 错误显示的信息(与团队预期不符)
- 无效或无响应的按钮、链接等
根据以上测试,可认为目前观隅已达到Alpha版本的出口条件,故进行发布。