【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阶段测试报告 我们在这个课程的目标是 测试项目 这个作业在哪个 ...
随机推荐
- java四种字符串拼接方式
1.直接用"+"号 2.使用String的方法concat 3.使用StringBuilder的append 4.使用StringBuffer的append
- 全量同步Elasticsearch方案之Canal
一.前言 Canal 是阿里的一款开源项目,纯 Java 开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了 MySQL(也支持 mariaDB). Canal 除了支持 b ...
- 【Spring Cloud & Alibaba全栈开源项目实战】:SpringBoot整合ELK实现分布式登录日志收集和统计
一. 前言 其实早前就想计划出这篇文章,但是最近主要精力在完善微服务.系统权限设计.微信小程序和管理前端的功能,不过好在有群里小伙伴的一起帮忙反馈问题,基础版的功能已经差不多,也在此谢过,希望今后大家 ...
- 简易计算器实现:while循环+switch语句
个人练习: 写一个计算器,要求实现加减乘除功能,并且能循环接收新的数据,通过用户交互实现(即Scanner对象) 用到了 while循环 switch语句,实现了数据的循环输入并计算!!!!妙啊!!! ...
- vue+quasar+electron+springboot+mysql撸一个TODO LIST 看板
先看效果 写本项目的目的有几点: 学习下vue+electron桌面开发 学习下java和spring开发(本人一直使用PHP) 一直缺少一款能适合自己的TODO LIST软件,能有桌面端的 可直接打 ...
- Centos6无法使用yum解决办法
12月后Centos 6 系统无法使用yum出现错误(文章底部看) 相信已经有一部分朋友今天连接到CentOS 6的服务器后执行yum后发现报错,那么发生了什么? CentOS 6已经随着2020年1 ...
- ret2dl32
ret2dl32 首先检查一下保护: IDA分析一下 程序很简单就是,往bss段上的buf读入0x400个数据,然后拷贝到栈上.read_got还被置为0,这一看就是要逼着你使用ret2dlresol ...
- K8s - 解决主机重启后kubelet无法自动启动问题 错误:The connection to the server 192.168.60.128:6443 was refused - did you specify the right host or port?
1,问题描述 (1)在安装配置好 Kubernetes 后,正常情况下服务器关机重启,kubelet 也会自动启动的.但最近配置的一台服务器重启后,输入命令 kubectl get nodes 查看节 ...
- ES6 第一天
study in bilibili: es6视频教程(无废话版) 关键字: let 代码块内起作用,不会代码提升 const 常量 ES6结构赋值 作用:解析解构,然后自动赋值,简化程序员代码编写: ...
- C++ Primer Plus(第6版)中文版电子版awz+epub+mobi三版
电子书资源:C++ Primer Plus(第6版)中文版 书籍简介: C++是在C语言基础上开发的一种集面向对象编程.通用编程和传统的过程化编程于一体的编程语言,是C语言的超集.<C++ ...