4-软件错误(BUG)

news2025/1/11 0:53:39

目录

1.什么是bug?

2.如何描述一个bug?

①发现问题的版本

②问题出现的环境

③错误重现的步骤

④预期行为的描述

⑤错误行为的描述

⑥其他

⑦不要把多个bug放到一起

PS:案例1

PS:案例2

3.如何定义bug的级别?

①Blocker(崩溃)

②Critical(严重)

③Major(一般)

④Minor(次要)

4.bug的生命周期

PS:Bug的跟踪以及状态变更应该遵循一些基本原则:


1.什么是bug?

第一个bug :

1945年9月的某天,在一间老式建筑里,从窗外飞进来一只飞蛾,此时Hopper正埋头工作在一台名为 Mark Il的计算机前,并没有注意到这只即将造就历史事件的飞蛾。

这台计算机使用了大量的继电器(电子机械装置,那时还没有使用晶体管)。突然,Mark II死机了。Hopper试了很多次还是不能启动,他开始用各种方法查找问题,最后定位到了某个电路板的继电器上。

Hopper观察这个继电器,惊奇地发现一只飞蛾已经被继电器打死。Hopper小心地用镊子将飞蛾夹出来,用透明胶布贴到“事件记录本”中, 写上“第一个发现虫子的实例”。Hopper的事件记录本,连同那只飞蛾,现在都陈列在美国历史博物馆中。

  • 当且仅当规格说明(软件需求)是存在的并且正确,程序与规格说明之间的不匹配才是软件错误。
  • 当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时(执行结果 != 预期结果),就是软件错误。

即:

当软件功能不存在,用户需求(软件需求)存在且合理,软件功能和用户需求不相符合,说明软件是错误的。

2.如何描述一个bug?

一个合格的bug描述应该包括以下几个部分:

①发现问题的版本

开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障。并且版本的标识也有利于统计和分析每个版本的质量。

②问题出现的环境

环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等;如果是 app项目,需要描述机型、分辨率、操作系统版本等。环境还可分为本地环境和服务器环境。详细的环境描述有利于故障的定位。

③错误重现的步骤

描述问题重现的最短步骤。

④预期行为的描述

要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需求提出的故障,能写明需求的来源是最好的。 要相信:测试人员是最懂需求的。

⑤错误行为的描述

描述错误的现象。crash等可以上传log,UI问题可以有截图。

⑥其他

某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等;BUG复现的前置条件;BUG优先级:严重影响测试需要开发人员优先修改的,可以设置优先级为高;BUG给谁。

⑦不要把多个bug放到一起

在无法确认是同一段代码造成的故障时,不要将bug放在一起提交。

PS:案例1

提交了如下bug:

  1. 在短信列表,选择一条短信,进行删除,删除失败。
  2. 在短信列表,选择一条短信,进行查看,在查看页面,进行删除,删除失败。(这个更好,要记录详细)

PS:案例2

  • 故障发现版本:VPS20180226_01
  • 故障类别:兼容性
  • 故障优先级:中
  • 故障标题:ie下界面显示异常,界面文字有重叠
  • 故障描述:
  1. 测试环境:win7+IE8
  2. 测试步骤:1)、打开vps首页,点击“通知”链接,进入通知页面
  3. 预期结果:通知页面显示正确,一页显示10条通知,按时间顺序倒序排列
  4. 实际结果:页面显示10条通知,通知顺序正确,但是页面文字有重叠
  5. 附件:上传截图

3.如何定义bug的级别?

bug的定义每个公司都不一致,在定义级别之前需要查看公司规范。

以下为样例:

①Blocker(崩溃)

阻碍开发或测试工作的问题。

造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。

如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等。

(该问题在测试中较少出现,一旦出现应立即中止当前版本测试,测试打回:测试写一个报告给上级领导,打回给开发。接下来开发就需要去修复,修复完自己得仔细地测试一下)

②Critical(严重)

系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。

功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。

如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等。

(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)

③Major(一般)

功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。

如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等。

(该问题实际测试中存在最多)

④Minor(次要)

界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。

如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等。

(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)

4.bug的生命周期

每个公司、每一个工具对bug生命周期的定义都是不一致的,下面仅是一个常见的例子。

测试人员应该跟踪一个Bug的整个生命周期,从Open到Closed的所有状态。

BUG状态转换图:

  • New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
  • Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
  • Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
  • Rejected:如果认为不是Bug,则拒绝修改。
  • Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
  • Closed:修改状态的Bug经测试人员的回归测斌验证通过,则关闭Bug。
  • Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。

无效的bug:

  • open->closed
  • open-rejected-closed

缺陷状态变更流程每个项目团队的实际做法可能不大一样,需要结合实际的开发流程和协作流程来使用。

例如,测试人员新发现的Bug,必须由测试组长评审后才决定是否Open并分派给开发人员。测试人员 Open的Bug可以直接分派给Bug对应的程序模块的负责人,也可以要求都先统一提交给开发主管,由开发主管审核后再决定是否分派给开发人员进行修改。

PS:Bug的跟踪以及状态变更应该遵循一些基本原则:

  • 测试人员对每一个缺陷的修改必须重新取一个包含更改后的代码的新版本进行回归测试,确保相同 的问题不再出现,才能关闭缺陷。
  • 对于拒绝修改和延迟修改的Bug,需要经过包含测试人员代表和开发人员代表、用户方面的代表 (或代表用户角度的人)的评审。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg5.0源码阅读—— avcodec_send_packetavcodec_receive_frame

摘要:本文主要描述了FFmpeg中用于解码的接口的具体调用流程,详细描述了该接口被调用时所作的具体工作。   关键字:ffmpeg、avcodec_send_packet、avcodec_receive_frame   读者须知:读者需要了解FFmpeg的基本使用流程&#xf…

CUDA C编程及GPU基本知识【二】

文章目录 1、CPU和GPU的架构2、CPUs: 延迟导向设计和GPUs: 吞吐导向设计2.1 CPUs: 延迟导向设计2.2 GPUs: 吞吐导向设计2.3 GPU&CPU特点2.4 GPU编程:什么样的问题适合GPU 3、GPU编程与CUDA3.1 CUDA编程并行计算整体流程3.2 CUDA编程术语3.2.1 硬件3.2.2 内存模型…

Hive分桶

分桶的概述 为什么要分桶 数据分区可能导致有些分区数据过多,有些分区数据极少。分桶是将数据集分解为若干部分(数据文件)的另一种技术。分区和分桶其实都是对数据更细粒度的管理。当单个分区或者表中的数据越来越大,分区不能细粒度的划分数据时&#x…

阐述说明NLP发展历史,以及 NLP与chatgpt的关系

自然语言处理(Natural Language Processing,NLP)是人工智能(AI)领域的一个重要分支,关注计算机与人类(自然)语言之间的交互。NLP的目标是使计算机能够理解、生成和解释自然语言&…

心法利器[89] | 实用文本生成中的解码方法

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

[CVPR‘23] PanoHead: Geometry-Aware 3D Full-Head Synthesis in 360 deg

论文|项目 总结: 任务:3D human head synthesis现有问题:GANs无法在「in-the-wild」「single-view」的图片情况下,生成360度人像解决方案:1)提出了two-stage self-adaptive image alignment&am…

C++ 设计模式之策略模式

文章目录 一、简介二、场景三、举个栗子四、小结参考资料 一、简介 策略模式的定义很简单:即创建一系列的算法,把它们一个个封装起来 , 并且使它们可相互替换(用扩展的方式来面对未来变化)。在GoF一书中将其定位为一种“对象行为式模式”&…

vs code insiders 配置c语言

vs code insiders 配置c语言 1.下载插件 2.再配置代码 (1)launch.json {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/…

操作系统的可扩展访问控制

访问控制是操作系统安全的基石,当前的操作系统已部署了很多访问控制的模型:Unix和Windows NT多用户安全;SELinux中的类型执行;反恶意软件产品;Apple OS X,Apple iOS和Google Android中的应用沙盒&#xff1…

RNN介绍

时间序列的表示 [seq_len, batch_size, vec ] seq_len表示一个句子通常有多少个单词或者一个序列有多少个时间段,batch_size表示同时多个样本,vec表示单词的编码长度 请问rnn和lstm中batchsize和timestep的区别是什么? - 知乎 (zhihu.com) import torch import torch.nn …

MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍

文章目录 ①. 查看、修改存储引擎②. InnoDB和MyISAM对比③. Archive引擎 - 归档④. Blackhole引擎丢数据⑤. CSV - 引擎⑥. Memory引擎 - 内存表⑦. Federated引擎 - 访问远程表⑧. Merge引擎 - 管理多个MyISAM⑨. NDB引擎 - 集群专用 ①. 查看、修改存储引擎 ①. 查看mysql提…

Spring Boot原理分析(一):项目启动(上)——@SpringBootApplication

文章目录 〇、准备工作一、SpringBootApplication.java源码解析1.源码2.自定义注解3.组合注解4.注解ComponentScan过滤器 5.注解SpringBootConfigurationConfiguration 6.注解EnableAutoConfiguration 本文章是Spring Boot源码解读与原理分析系列博客的第一篇,将会介…

Mac(M1Pro)下运行ChatGLM2

最近很多人都尝试在M1/M2芯片下跑chatglm/chatglm2,结果都不太理想,或者是说要32G内存才可以运行。本文使用cpu基于chatglm-cpp运行chatglm2的int4版本。开了多个网页及应用的情况下(包括chatglm2),总体内存占用9G左右。chatglm2可…

PYTHON+YOLOV5+OPENCV,实现数字仪表自动读数,并将读数结果进行输出显示和保存

最近完成了一个项目,利用pythonyolov5实现数字仪表的自动读数,并将读数结果进行输出和保存,现在完成的7788了,写个文档记录一下,若需要数据集和源代码可以私信。 最后实现的结果如下: 项目过程 首先查阅文…

从单体到SpringBoot/SpringCloud微服务架构无感升级的最佳实践

目录导读 从单体到SpringBoot/SpringCloud微服务架构无感升级的最佳实践1. 业务背景2. 当前问题3. 升级方案3.1 架构设计4. 详细设计4.1 迁移阻碍4.2 解决思路 5. 实现过程5.1 认证兼容改造5.2 抽象业务流程5.2.1 抽象业务的思路5.2.2 抽象业务的抽象编码5.2.3 抽象业务的具体实…

BFF网关模式开发指南

BFF是近些年新衍生出来的一种开发模式,或者说是一种适配模式的系统,BFF全称为Backend OF Front意为后端的前端,为了适配微服务模式下前端后端系统接口调用混乱而出现的。在如今微服务盛行的趋势下,大型系统中划分出了数十个服务模…

前端优化的一些方向

对于浏览器来说,加载网页的过程可以分为两部分,下载文档并响应(5%左右),下载各种组件(95%左右)。 而对比大部分优秀网页来说下载文档(10%~ 20%),下载组件&…

23_7第一周LeetCode刷题回顾

目录 1. 两数之和2. 两数相加3.无重复字符的最长子串4.寻找两个正序数组的中位数5.最长回文子串6.N 形变换7.整数反转8.字符串转整数(atoi)9.回文数10. 正则表达式匹配11. 盛最多水的容器12. 整数转罗马数字13. 罗马数字转整数14. 最长公共前缀15.三数之…

MyBatis中的动态SQL(sql标签、where标签、set标签、批量增加与批量删除)

目录 sql标签 ​编辑 where标签 set标签 foreach标签 批量增加 批量删除 将基础SQL语句中重复性高的增加它的复用性&#xff0c;使得sql语句的灵活性更强 sql标签<sql> <sql id"text">select * from user</sql><select id"selectA…

如何在苹果商店发布App?

一、介绍 众所周知&#xff0c;苹果对于自家产品的安全问题十分重视&#xff0c;他们有严格的一套审核标准和流程&#xff0c;当我们想要在苹果商店发布一款App的时候就需要经过重重艰难险阻&#xff0c;克服不少繁杂的问题去完成这项工作。 另外有一点需要注意的是&#xff…