【软件测试】BUG篇 — 详解

目录

[1. 软件测试的生命周期](#1. 软件测试的生命周期)

[2. BUG](#2. BUG)

[2.1 BUG的概念](#2.1 BUG的概念)

[2.2 BUG的要素](#2.2 BUG的要素)

[2.3 BUG级别](#2.3 BUG级别)

[2.4 BUG的生命周期](#2.4 BUG的生命周期)

[2.5 与开发人员发生争执怎么办](#2.5 与开发人员发生争执怎么办)

[2.6 BUG评审](#2.6 BUG评审)


1. 软件测试的生命周期

需求分析

  • 判断软件需求是否合理
  • 技术上是否可行,有没有优化空间
  • 是否存在业务逻辑错误(先登录用户后创建用户 X)

测试计划

  • 说明什么时候开始测试,什么时候结束测试

测试设计与开发

  • 根据需求文档,技术文档编写测试用例。
  • 编写测试文档,说明使用到的测试方法和测试工具

测试执行

  • 根据测试文档和测试工具,尽可能做到全方面的测试
  • 严格记录实际结果(截图/日志)

测试评估

  • 对进行的测试用例进行评估
  • 评估:本次测试是否通过,测试是否有遗留的bug,是否解决
  • 最终需要编写出一个测试报告

上线

  • 项目测试结束后,将项目发布到线上环境
  • 线上环境和线下环境不一样,线上环境非常复杂
  • 测试人员需持续跟踪程序线上运行状态,查看运行是否正常
  • 测试人员还需要在线上进行手动测试,还要关注有没有错误日志。

运行维护

  • 测试工作执行完,不能认为项目100%的问题都被发现并解决,问题是不可能被完全发现的,
  • 需要测试人员在运行期间做到实时监测,收集运行时产生的问题并及时解决。

实际工作中,项目的上线被分为多个步骤:沙盒,小流量,全流量

  • 沙盒:企业内部的线上环境,供内部人员进行测试。
  • 小流量:部分线上正式的用户可以使用到。
  • 全流量:所有的真实用户可以使用到

因为在实际情况中,线上环境和线下环境并不是完全一样,线下测试没有问题,可能线上会存在问题,如果一次性全部上线,可能会造成无可挽回的损失

2. BUG

2.1 BUG的概念

如果是需求文档提到的功能并是正确的,程序实现的和需求文档中描述的不匹配,那就是bug

如果需求文档没有提到的功能,判断标准以用户为准,程序没有实现用户的合理预期,那也是bug

bug举例:

在测试文档中说明,文字为百度一下,这里却是百度五下。这就是bug

2.2 BUG的要素

bug要素的作用就是描述bug

如果你发现了这个bug,告诉开发人员,百度五下,开发人员会问你百度五下什么信息。

如果没有一个标准来规定,会出现描述不清晰,不准确,无法快速定位问题

描述bug的基本要素:问题出现的版本,问题出现的环境,bug的级别,问题出现的步骤,预期结果,实际结果(不限于这些)

比如刚刚的模拟百度bug编写一个描述:

bug编号:1

版本:IE浏览器 版本 9.0.6.7021(正式版本) (64 位)

环境:Windows 11

步骤:1. 打开IE浏览器 2.输入网址 https://baidu.com 3.找到搜索按钮

预期结果: 搜索按钮中的文字为百度一下

实际结果: 搜索按钮中的文字为百度五下

给出具体的信息是为了让开发人员可以还原bug,才能更好的解决bug

如果在测试时,遇到无法复现的Bug,会怎么处理?

  1. 我会先记录Bug发生的具体描述,发生bug的具体环境(那个版本的浏览器,网络环境是什么,发生的具体时间)和系统版本是什么,步骤是什么,将相关日志和发生的现象进行截图保存

  2. 系统性的进行复现

  • 设备方面:使用不同型号的设备
  • 数据方面:使用新建账号/历史账号
  • 环境方面:在不同的时间/不同的网络环境
  • 并发维度:模拟多用户同时操作
  1. 必要时会使用fiddle抓包工具对发送的网络数据包进行详细分析

  2. 如果实在找不到,在关键的节点,添加实时监控和预警

  3. 在编写测试报告的时候,将这一类问题单独存放起来,并说明自己是怎么处理的,提醒后续的测试人员在进行这一块测试的时候,注意一下

2.3 BUG级别

通过定义bug的级别,能够明确看出问题的严重程度。工作中开发人员会通过bug级,决定优先处理哪个bug。同时bug级别也可以体现出开发人员的开发质量

bug级别分为:崩溃,严重,一般,次要

**崩溃:**会阻碍开发或测试工作,会导致系统崩溃,死机,主要功能缺失,基本功能丧失,数据库连接异常等。

严重: 系统主要功能部分丧失,数据库的调用错误,程序接口错误。程序自动退出,功能设计与需求文档中的严重不符等

**一般:**功能没有完全实现,但不影响使用。功能设计与需求文档中的一般不符,响应时间过长等

**次要:**建议类问题,不影响操作功能的执行,无界面格式不规范,显示重叠,性能缺陷等

2.4 BUG的生命周期

测试人员在执行测试的过程中发现bug,需要在对应的bug管理平台创建bug,创建好的bug需要被开发人员修复,以及测试人员的持续跟踪和测试。

在工作中测试人员创建的bug并不一定是有效的,可能由于误操作导致的无效bug。

  1. 测试人员创建出一个bug(表示bug的生命周期开始。)
  2. 开发人员拿到bug会先判断这个bug是否是有效bug(如果为无效bug,则生命周期结束。)
  3. 开发人员承认这个bug才会打开bug,
  4. 根据bug的优先级和时间,判断是否立即修改这个bug,如果bug优先级很高则必须要修改。
  5. 开发人员将bug修改完后,开发人员会对这个bug进行验证,如果验证不通过则会被打回,开发人员再次修复,如果验证通过则结束(表示bug的生命周期终止)
  6. 如果bug的优先级很低或者时间不够,来不及修改,且这个bug不会对系统功能造成任何影响,则会进入延迟在下一个迭代修改(最终肯定是要修复)

2.5 与开发人员发生争执怎么办

  • 首先分析自己提出的bug是否合理,是不是由于自己的误操作导致的bug
  • 检查bug的描述是否清楚,根据自己的描述尝试复现bug
  • 检查确实存在bug,并且根据描述成功复现出了bug。
  • 如果开发人员觉得这算不上一个bug,尝试站在用户的角度考虑并抛出问题。
  • 如果对bug的定级不满意,拿出企业的bug定级文档。将bug的表现和定级描述文档中进行匹配说服开发人员
  • 提高自己的技术和业务水平,在提出bug的同时,并能给出一定的解决方案,更像是一种建议(不能命令的口吻)
  • 如果开发人员就是不承认这是一个bug,就需要进行bug评审。

2.6 BUG评审

Bug评选需要三个代表:测试代表,开发代表,产品代表

Bug评审主要解决两个问题。

  • 决定如何处理bug。
  • 分析缺陷产生的原因,找出预防的对策。

修改可能会带来回归测试的风险,如果剩下的时间不够做一次有效的回归测试且bug的级别很低,可能在这次迭代中不修改更好。

相关推荐
程序员二黑1 小时前
需求评审时,如何让开发主动说“这个用例写得好”?
单元测试·测试·ab测试
程序员二黑1 小时前
测试用例怎么写?工具有哪些?
单元测试·测试·ab测试
ak啊1 天前
如何破解Fiddler Everywhere试用限制:一步步指南
http·https·测试
青青子衿越2 天前
微信小程序右上角分享页面找不到路径bug
微信小程序·小程序·bug
刘火锅3 天前
Bug 记录:SecureRandom.getInstanceStrong()导致验证码获取阻塞
spring boot·spring·spring cloud·bug
一起去改变世界3 天前
卸载或重装软件提示缺少msi的解决方法(软件卸载功能修复)
windows·bug·美女
甜甜圈圈子5 天前
JMeter配置全局变量token的方法
测试
云和数据.ChenGuang5 天前
envFrom 是一个 列表类型字段bug
大数据·云原生·容器·kubernetes·云计算·bug
俞凡5 天前
掌握软件测试的艺术:策略、工具和最佳实践
测试