【BUAA软工】Beta阶段测试报告
项目 | 内容 |
---|---|
班级:北航2020春软件工程 | 博客园班级博客 |
作业:Beta阶段测试报告 | 测试报告 |
发现的bug
Beta阶段的bug
- [已解决]CPP项目无法进行调试
- [已解决] 注册界面注册后不能够自动跳转到登录界面
- [已解决] 草稿纸功能当程序没有输出或者程序异常时,output栏没有任何反应
- [已解决] 前端页面资源过于庞大,加载需要较长时间
- [已解决] 当从只读项目退出打开可写项目时,Terminal仍为只读状态
- [已解决] CPP尚不能够进行多文件调试
Alpha遗留bug [均已解决]
- Terminal最后一行会被挡住
- 下拉菜单栏有滚轮
- 右键菜单栏点了可能没反应
- 不能够重复上传同一文件
场景测试与压力测试
在beta阶段,我们的测试除了继续沿用alpha阶段的单元测试外,还采用了AB压力测试和Jmeter测试,直接从用户操作的角度和流程进行黑盒测试,模拟多用户并发场景,下面将分布介绍如下内容
- 后端的单元测试
- AB压力测试
- Jmeter测试
单元测试
后端单元测试
后端的单元测试较多,但在后期开展还是存在一些困难。因为后端涉及很多相关的软件,如云盘、Docker容器等,这些内容本身不属于后端服务器,单从服务器代码难以获取这些内容的状态,因而导致一些测试的展开有一定的困难。
基于MVC的设计,后端的核心功能代码和请求处理代码的耦合较低,所以后端主要针对核心功能代码进行了测试
同时,因为前后端分离的设计,后端实现的代码和API在前端开发过程中会被一直调用,因而在开发使用过程中前端也是在对相关的内容进行测试,在前端工作正常的条件下,有相当的把握认为后端代码工作正常
AB压力测试
AB全称是Apache Bench,是通过多线程发出请求对目标网站进行压力测试的工具,我们在发布前使用了该工具对我们的项目网站进行了相应的测试,具体内容如下
由于我们项目的特性,导致网站的并发量并不会很高,同时,因为不同于传统的OLTP应用,我们的应用的核心压力也不在数据库,所以除非恶意为之,否则高并发场景一般不会出现在我们的项目中。
- 单线程100请求总用时
- 10线程100请求总用时
- 10线程1000请求总用时
从上面的测试中,可以看出,在正常甚至高使用量下,前端内容分发过程不会成为软件的性能瓶颈。
关于软件的性能瓶颈,在alpha阶段我们也有说明,其实是内存占用,虽然在beta阶段,通过云存储技术解决了硬盘占用的问题,但是多用户同时使用时的内存消耗还是无法回避的。
当然,为了缓解上述问题,我们也提出了一个更加轻量级的“草稿纸”概念,该子应用不依赖于docker技术,大大减少了一个用户的资源开销,同时,在设计上,该子应用更加吸引人,更容易成为用户点击的第一个按钮,从而通过用户行为引导的方式减少了很多不必要的资源开销。也就是说,让那些只想进来瞧一瞧的用户不会占用过多的系统资源。
Jmeter测试
该项测试是使用的BlazeMeter配合Jmeter完成的,下面简单介绍一下这两项工具的功能
BlazeMeter
该工具可以作为浏览器插件安装,功能是可以录制用户在浏览器上的操作并保存为.jmx文件(Jmeter的工程文件)
通过使用该工具,可以模拟录制用户使用我们产品的全过程,并将操作过程保存下来,供Jmeter进行回放测试。
Jmeter
该工具可以定义一个工程组,其中可以包含一系列HTTP请求,同时可以设置相关的断言。一个工程组可以重复执行,从而使得测试变得可重复。
在这里,Jmeter可以用上一个工具录制得到的工程文件生成相应的测试计划,从而进行黑盒测试。
运行该测试计划,可以生成相应的HTML形式的测试报告
从中可以看出,整个流程的执行都是正常的,全部正确返回
同时还会生成一些统计数据,包括平均响应时间、最大响应时间、最小响应时间等内容。
可以看到,没有任何错误发生。
此外,我们还对前端页面的性能进行了测试,重点关注了首页的加载时间方面的问题。
如下图所示,是在我们优化首页性能前,首页的加载时间统计
其中,红线代表的文件占据了大量的加载和页面渲染的时间,对此,我们做了文件压缩和一些不必要的文件去除以及文件瘦身,经过一系列优化,最终的结果如下图所示。
和优化前相比,峰值被削去了,整体的响应时间都在40ms以内,首页的加载速度也得到了明显的提升。
回归测试
对于功能性要求比较高的后端设计,我们会在新增功能,或者改写旧逻辑后,在push到远程仓库前,会重新跑一遍之前进行过的单元测试,以确保旧功能不受影响:
例如对于后端的container-server,在beta阶段需要支持新建文件以及新建文件夹时支持多层目录创建。因此在拓展该接口功能时,需要测试原功能是否仍然有效,这里需要重新运行原单元测试,以检验是否存在bug:
describe('POST /dir/new', function() {
it('response with json', function (done) {
request(app)
.post('/dir/new')
.send('dir_path=' + encodeURIComponent('./test/tt/'))
.expect(200)
.end(function (err, res) {
if (err) {
done(err)
}
should.eql(fs.statSync('./test/tt/').isDirectory(), true)
done()
})
})
})
describe('POST /dir/new', function() {
it('response with json', function (done) {
request(app)
.post('/dir/new')
.send('dir_path=' + encodeURIComponent('./test/tt/'))
.expect(200)
.end(function (err, res) {
if (err) {
done(err)
}
res.data.message.should.eql("存在同名文件夹")
done()
})
})
})
在运行完单元测试后,结果如下:
说明新接口运行并不影响旧功能,因此能够上线,因此再将代码push到远程,并且在pr前提交单元测试通过的相关截图,以方便组员进行复审通过。
测试矩阵
我们项目的测试矩阵基本和Alpha阶段一致,选择和Alpha阶段的设备和环境进行测试,不同的是对新增功能检测是否能够正常访问:
系统 | 浏览器 | 操作流程 | 登录页面 | 首页 | IDE页下拉菜单栏 | IDE文件树 | IDE编译运行 | IDE的Terminal | 刷新 | 编辑器 | 草稿纸功能 | 分享功能 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | Chrome | 基本流畅 | 功能正常 | 功能正常 | 排版不太对齐,功能正常 | 右键菜单栏不太灵敏,功能基本正常 | 正常 | 正常 | 正常 | 显示与功能均正常 | 正常 | 正常 |
Windows | Edge79以下版本 | 基本流畅 | 功能正常 | 功能正常 | 排版不太对齐,功能正常 | 显示正常,功能正常 | 不能使用 | 正常 | 正常 | 不能使用 | 不能使用 | 不能使用 |
Windows | Edge79以上版本 | 基本流畅 | 功能正常 | 功能正常 | 排版不太对齐,功能正常 | 显示正常,功能正常 | 正常 | 正常 | 正常 | 显示与功能均正常 | 正常 | 正常 |
MacOS | Chrome | 基本流畅 | 功能正常 | 功能正常 | 排版不太对齐,功能正常 | 显示正常,功能正常 | 正常 | 正常 | 正常 | 显示与功能均正常 | 正常 | 正常 |
MacOS | Safari | 基本流畅 | 功能正常,如果打开跨站追踪则不能正常登陆 | 功能正常 | 排版不太对齐,功能正常 | 显示正常,功能正常 | 正常 | 正常 | 正常 | 显示正常,跳转到引用存在不显示的bug | 正常,但存在滚轮 | 正常 |
MacOS | Firefox | 基本流畅 | 功能正常 | 功能正常 | 排版不太对齐,功能正常 | 显示正常,功能正常 | 正常 | 正常 | 正常 | 显示与功能均正常,部分快捷键与浏览器冲突 | 正常 | 正常 |
Ubuntu | Chrome | 基本流畅 | 功能正常 | 功能正常 | 排版不太对齐,功能正常 | 显示正常,功能正常 | 正常 | 正常 | 正常 | 显示与功能均正常 | 正常 | 正常 |
出口条件
我们产品Beta阶段的出口条件主要有以下四个:
- 比Alpha美化的UI
- 上线了Beta阶段新功能:草稿纸功能和项目共享功能
- 完善了Alpha的功能:调试功能,以及下载上传等功能
- 优化了后端容器管理机制,支持更多项目的存在,回收不必要的资源避免资源浪费
更多的优点请详见Beta阶段发布声明,这里不再一一列举。
【BUAA软工】Beta阶段测试报告的更多相关文章
- [BUAA软工]Beta阶段测试报告
Beta阶段测试报告 Bug发现与报告 BUG 出现原因 解决方案 将shell加上编辑器UI以后,两边显示的文件不同步 两边的根目录不一致 修改编辑器获取根目录的函数,使其与shell的/home目 ...
- [BUAA软工]beta阶段贡献分
团队成员在Beta阶段的角色和具体贡献: 名字 角色 具体的可衡量的可验证的贡献 zpj 前段+ 前后端对接 博客X1 20+ commits ui 设计与实现 bug fixed: 2 推广:10 ...
- [BUAA软工]Alpha阶段测试报告
测试报告 一.测试计划 1.1 功能测试 1.2 UI测试 1.3 测试中发现的bug https://github.com/bingduoduo1/backend/issues/21 https:/ ...
- 2021北航敏捷软工Beta阶段评分与总结
概述 Beta 阶段评分,按照之前的规则,主要组成部分为: 博客部分,基于 Beta 阶段博客的评分(每篇正规博客 10 分,每篇 Scrum5 分,评定方式类比往年) 评审部分,基于 Beta 阶段 ...
- [BUAA软工]Alpha阶段事后分析
设想和目标 虽然我们是从零开始的一个自定义项目,但语音Coding助手从一开始的设计与目标就很明确:加入语音接口使其能在shell端实现命令语音实现以及编辑运行脚本,设计前端编辑器并将后端shell与 ...
- [BUAA软工]Alpha阶段项目展示
[冰多多]Alpha项目展示 冰多多项目: 语音coding 助手, alpha阶段目标: 语音辅助输入 一. 团队成员的简介和个人博客地址 成员 角色 个人博客地址 卓培锦 PM, 后端开发 htt ...
- [BUAA软工]gamma阶段贡献分
Gamma阶段评分 基本公式:贡献度 = 工作量 × 工作的影响力 × 工作的不可替代性 + 对项目有重大意义的idea gamma阶段所有的工作及idea issue/idea/job (repo: ...
- [敏捷软工团队博客]Beta阶段测试报告
项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 Beta阶段测试报告 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 对Bet ...
- [敏杰开发]Beta阶段测试报告
[敏杰开发]Beta阶段测试报告 这是一篇软工课程博客 项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 作业要求 Beta阶段测试报告 我们在这个课程的目标是 测试项目 这个作业在哪个 ...
随机推荐
- 一文搞懂如何实现 Go 超时控制
为什么需要超时控制? 请求时间过长,用户侧可能已经离开本页面了,服务端还在消耗资源处理,得到的结果没有意义 过长时间的服务端处理会占用过多资源,导致并发能力下降,甚至出现不可用事故 Go 超时控制必要 ...
- 关于HashMap的一些思考
一.HashMap的负载因子的作用 当 HashMap 中的元素个数(包含链表.红黑树上的元素)达到数组长度的0.75倍的时候,开始扩容. 二.HashMap的负载因子为什么是0.75 主要是为了 ...
- Java例题_30 在已经排好序的数组中插入值
1 /*30 [程序 30 插入数字] 2 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 3 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插 ...
- Kubernetes 常见问题总结
Kubernetes 常见问题总结 如何删除不一致状态下的 rc,deployment,service 在某些情况下,经常发现 kubectl 进程挂起现象,然后在 get 时候发现删了一半,而另外的 ...
- 201871030118-雷云云 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客 班级链接 这个作业要求链接 作业链接 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(2)掌握Github协作开发程序的操作方法(3)学习遗传算法 这个作 ...
- 电梯也能无为而治——oo第二单元作业总结
oo第二单元作业总结 一.设计策略与质量分析 第一次作业 设计策略 在第一次作业之前,我首先确定了生产者--消费者模式的大体架构,即由输入线程(可与主线程合并)充当生产者,电梯线程充当消费者,二者不直 ...
- 【源码解析】- ArrayList源码解析,绝对详细
ArrayList源码解析 简介 ArrayList是Java集合框架中非常常用的一种数据结构.继承自AbstractList,实现了List接口.底层基于数组来实现动态容量大小的控制,允许null值 ...
- 机器学习--PR曲线, ROC曲线
在机器学习领域,如果把Accuracy作为衡量模型性能好坏的唯一指标,可能会使我们对模型性能产生误解,尤其是当我们模型输出值是一个概率值时,更不适宜只采取Accuracy作为衡量模型性泛化能的指标.这 ...
- 从一个Demo开始,揭开Netty的神秘面纱
本文是Netty系列第5篇 上一篇文章我们对于I/O多路复用.Java NIO包 和 Netty 的关系有了全面的认识. 到目前为止,我们已经从I/O模型出发,逐步接触到了Netty框架.这个过程中, ...
- HTTP 基础(特性、请求方法、状态码、字段)
1. HTTP 简介(含义.特性.缺点) 2. HTTP 报文 3. GET 和 POST 4. 状态码 5. HTTP 头字段 1. HTTP 简介 HTTP 的含义 HTTP (HyperText ...