项目 内容
班级:北航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阶段测试报告的更多相关文章

  1. [BUAA软工]Beta阶段测试报告

    Beta阶段测试报告 Bug发现与报告 BUG 出现原因 解决方案 将shell加上编辑器UI以后,两边显示的文件不同步 两边的根目录不一致 修改编辑器获取根目录的函数,使其与shell的/home目 ...

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

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

  3. [BUAA软工]Alpha阶段测试报告

    测试报告 一.测试计划 1.1 功能测试 1.2 UI测试 1.3 测试中发现的bug https://github.com/bingduoduo1/backend/issues/21 https:/ ...

  4. 2021北航敏捷软工Beta阶段评分与总结

    概述 Beta 阶段评分,按照之前的规则,主要组成部分为: 博客部分,基于 Beta 阶段博客的评分(每篇正规博客 10 分,每篇 Scrum5 分,评定方式类比往年) 评审部分,基于 Beta 阶段 ...

  5. [BUAA软工]Alpha阶段事后分析

    设想和目标 虽然我们是从零开始的一个自定义项目,但语音Coding助手从一开始的设计与目标就很明确:加入语音接口使其能在shell端实现命令语音实现以及编辑运行脚本,设计前端编辑器并将后端shell与 ...

  6. [BUAA软工]Alpha阶段项目展示

    [冰多多]Alpha项目展示 冰多多项目: 语音coding 助手, alpha阶段目标: 语音辅助输入 一. 团队成员的简介和个人博客地址 成员 角色 个人博客地址 卓培锦 PM, 后端开发 htt ...

  7. [BUAA软工]gamma阶段贡献分

    Gamma阶段评分 基本公式:贡献度 = 工作量 × 工作的影响力 × 工作的不可替代性 + 对项目有重大意义的idea gamma阶段所有的工作及idea issue/idea/job (repo: ...

  8. [敏捷软工团队博客]Beta阶段测试报告

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 Beta阶段测试报告 我们在这个课程的目标是 在团队合作中锻炼自己 这个作业在哪个具体方面帮助我们实现目标 对Bet ...

  9. [敏杰开发]Beta阶段测试报告

    [敏杰开发]Beta阶段测试报告 这是一篇软工课程博客 项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 作业要求 Beta阶段测试报告 我们在这个课程的目标是 测试项目 这个作业在哪个 ...

随机推荐

  1. 一文搞懂如何实现 Go 超时控制

    为什么需要超时控制? 请求时间过长,用户侧可能已经离开本页面了,服务端还在消耗资源处理,得到的结果没有意义 过长时间的服务端处理会占用过多资源,导致并发能力下降,甚至出现不可用事故 Go 超时控制必要 ...

  2. 关于HashMap的一些思考

    一.HashMap的负载因子的作用 当 HashMap 中的元素个数(包含链表.红黑树上的元素)达到数组长度的0.75倍的时候,开始扩容.   二.HashMap的负载因子为什么是0.75 主要是为了 ...

  3. Java例题_30 在已经排好序的数组中插入值

    1 /*30 [程序 30 插入数字] 2 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 3 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插 ...

  4. Kubernetes 常见问题总结

    Kubernetes 常见问题总结 如何删除不一致状态下的 rc,deployment,service 在某些情况下,经常发现 kubectl 进程挂起现象,然后在 get 时候发现删了一半,而另外的 ...

  5. 201871030118-雷云云 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客 班级链接 这个作业要求链接 作业链接 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(2)掌握Github协作开发程序的操作方法(3)学习遗传算法 这个作 ...

  6. 电梯也能无为而治——oo第二单元作业总结

    oo第二单元作业总结 一.设计策略与质量分析 第一次作业 设计策略 在第一次作业之前,我首先确定了生产者--消费者模式的大体架构,即由输入线程(可与主线程合并)充当生产者,电梯线程充当消费者,二者不直 ...

  7. 【源码解析】- ArrayList源码解析,绝对详细

    ArrayList源码解析 简介 ArrayList是Java集合框架中非常常用的一种数据结构.继承自AbstractList,实现了List接口.底层基于数组来实现动态容量大小的控制,允许null值 ...

  8. 机器学习--PR曲线, ROC曲线

    在机器学习领域,如果把Accuracy作为衡量模型性能好坏的唯一指标,可能会使我们对模型性能产生误解,尤其是当我们模型输出值是一个概率值时,更不适宜只采取Accuracy作为衡量模型性泛化能的指标.这 ...

  9. 从一个Demo开始,揭开Netty的神秘面纱

    本文是Netty系列第5篇 上一篇文章我们对于I/O多路复用.Java NIO包 和 Netty 的关系有了全面的认识. 到目前为止,我们已经从I/O模型出发,逐步接触到了Netty框架.这个过程中, ...

  10. HTTP 基础(特性、请求方法、状态码、字段)

    1. HTTP 简介(含义.特性.缺点) 2. HTTP 报文 3. GET 和 POST 4. 状态码 5. HTTP 头字段 1. HTTP 简介 HTTP 的含义 HTTP (HyperText ...