4-软件错误(BUG)

目录

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.hqwc.cn/news/15864.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes Pod卷 - Pod镜像的升级和回滚 - 探针

目录 扩展: Pod创建的拓扑图: 提出的问题: Pod 卷的使用:Pod的数据持久化问题 配置 Pod 以使用卷进行存储 参考文档:配置 Pod 以使用卷进行存储 | Kubernetes 有状态应用和无状态应用: Pod 配置卷 1…

linux 系统errno 对应参考及代码

结论 linux下系统errno都有对应的说明描述&#xff0c;发生错误时获取errno即可知道具体问题描述 如下图 代码如下 golang版 package main import ("syscall""strings""fmt" ) func main() {for i : 0; i < 200; i {if !strings.HasPrefi…

uniapp 微信小程序导航功能(单个地址)

获取终点的坐标&#xff0c;根据终点的坐标&#xff0c;终点名称&#xff0c;终点详细地址&#xff0c;调起地图导航到第三方APP 1、针对单个地址导航 <template><view click"toGetLocation"></view><view click"toNavigation">&…

机器学习20:嵌入-Embeddings

嵌入&#xff08;Embeddings&#xff09;是一个相对低维的空间&#xff0c;我们可以将高维向量转换到其中。嵌入使得对大型输入&#xff08;例如表示单词的稀疏向量&#xff09;进行机器学习变得更加容易。理想情况下&#xff0c;嵌入通过将语义相似的输入紧密地放置在嵌入空间…

在SpringBoot中整合RabbitMQ(19版idea)

首先呢就需要我们在RabbitMQ的可视化端口创建一个虚拟机,我创建的为 xm 1.创建SpringBoot项目 到这里SpringBoot项目就创建成功了 2.创建测试类 Testpublic void testConnection() throws Exception {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory…

windows PE 指南(基础部分)(一)

windows PE 指南&#xff08;基础部分&#xff09;&#xff08;一&#xff09; 查找软件注册码64位汇编和编译连接PE和COFF文件简介PE和COFF文件布局简介源代码的作用obj的作用PE的作用 COFF格式文件布局概览PE格式文件布局概览COFF格式和PE格式的布局总结 COFF头COFF File Hea…

深入理解Linux内核网络——内核与用户进程协作之同步阻塞方案(BIO)

文章目录 一、相关实际问题二、socket的直接创建三、内核和用户进程协作之阻塞方式1&#xff09;等待接收消息2&#xff09;软中断模块3&#xff09;同步队列阻塞总结 在上一部分中讲述了网络包是如何从网卡送到协议栈的&#xff08;详见深入理解Linux网络——内核是如何接收到…

Wireshark简单使用教程

混合模式 混合模式就是在抓包的时候不轮是有线网络还是WIFI网络等都会将流量给打印出来 1.打开Wireshark抓包软件 2.点击捕获选择选项按钮 3.选中《在接口上使用混杂模式》 &#xff08;默认是开启的&#xff09; 过滤器 过滤器可以只筛选你要的数据包&#xff0c;下图箭…

网络化航天器弹性姿态跟踪控制

源自&#xff1a;指挥与控制学报 作者&#xff1a;于洋 陈哲 袁源 摘 要 针对网络化航天器姿态弹性跟踪控制问题,借鉴主动抗干扰控制思想,设计攻击检测机制对控制器端到执行器端网络攻击进行监测,利用网络通道传输信息设计两个自适应观测器,在抑制内部噪声的同时对外界扰…

2023年5月少儿编程 中国电子学会图形化编程等级考试Scratch编程二级真题解析(判断题)

2023年5月scratch编程等级考试二级真题 判断题(共10题,每题2分,共20分) 26、如下图所示,点击绿旗,运行程序后,舞台上会出现五个机器人 答案:对 考点分析:考查积木综合使用,重点考查图章积木的使用,本题还有一个关键是初始位置x坐标值是-150,所以到最后端的时候总…

大模型调用工具魔搭GPT——一键调用魔搭社区上百个AI模型的API

为了让模型开发变得更容易,阿里云在发布会现场推出了一款令开发者耳目一新的工具:ModelScopeGPT(魔搭GPT)。它能够通过担任“中枢模型”的大语言模型一键调用魔搭社区其他的AI模型,实现大模型和小模型协同完成复杂任务。 这类智能调用工具被业界普遍看好。ModelScopeGP…

自学网络安全究竟该从何学起?

一、为什么选择网络安全&#xff1f; 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏入行…