【软件测试】测试开发的一生之敌-BUG

news2024/11/23 7:36:12

文章目录

  • 1.前言
  • 2.如何描述/创建一个BUG
  • 3.BUG的级别
  • 4.BUG的生命周期
  • 5.跟开发产生争执怎么办

1.前言

BUG相比大家都知道,程序运行出错或者与预期不符就是BUG.现在我们来用测试人员的角度来看待BUG.

2.如何描述/创建一个BUG

测试人员要测试开发人员的代码,找出开发人员可能忽略的问题.然后把这个问题反馈给开发人员.
如何把BUG清晰简洁明了的描述出来,会涉及到很多东西.这并不只是简单说一下遇到BUG的情况.
一个合格BUG的描述分为以下几部分:

  • 发现问题的版本: 大部分软件的版本应该是很多的,测试人员需要知道出现问题对应的版本,才能获取对应版本的代码进而重现故障
  • 问题出现的环境: 环境分为硬件环境和软件环境,如果是WEB项目,还需要描述浏览器的版本,客户机的操作系统等.如果是APP项目,需要描述机型,分辨率,操作系统等.详细的环境描述有利于故障的定位.
  • 错误重现的步骤: 描述问题重现的最小步骤.
  • 预期行为的描述: 以用户的角度指导开发人员怎么样才是正确的.
  • 错误问题的描述: 出现BUG时的场景

描述一个BUG并不意味着只能有以上这些部分,还可以有别的方面的描述,例如:这个BUG是前端问题还是后端问题,BUG的级别等.

能够描述好一个BUG,创建BUG就很容易了.

3.BUG的级别

BUG存在不同的严重级别.BUG的定义每个公司都不一致,在定义级别之前需要查看公司规范
举个例子:

  • Blocker(崩溃):阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试)。
  • Critical(严重):系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)。
  • Major(一般):功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等(该问题实际测试中存在最多)
  • Minor(次要):界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)

4.BUG的生命周期

测试人员在执行测试的过程中,如果有对应的BUG,需要在对应的BUG 管理平台来创建BUG.
每个公司、每一个工具对bug生命周期的定义都是不一致的.
举个例子:

  • New:测试人员创建BUG
  • Open: 开发人员确认是否是BUG,如果是BUG 状态就会改为Open
  • Rejected:如果认为不是Bug,则拒绝修改。
  • Fixed: 开发人员修复完BUG,状态就改为Fixed
  • Delay: 确认BUG后,BUG的级别不高或开发人员不能立即修复BUG,状态就改为Delay.
  • Closed: BUG确认修复完成,测试人员将BUG改为Closed
  • Reopen: 开发人员修复BUG,但BUG并没有修复完成,BUG状态改为Reopen

5.跟开发产生争执怎么办

测试人员毕竟是要想方设法测试开发人员的代码,并提出BUG.如果处理不好,很容易与开发产生争执.如果产生争执怎么办?
针对这个问题: 我们要坚持"对事不对人".

  1. 要有"批判性思维",想一想是不是自己描述的BUG不够清晰等.
  2. 如果开发人员对BUG的级别不认可,我们要保证BUG的级别有理有据.
  3. 提出BUG会增加开发人员的工作量, 小问题可能不想解决.这时可以引导开发人员进行换位思考,“如果你是用户,出现这样的情况你能接受吗?”
  4. 不仅要提出BUG,最好也能提出解决方案
  5. 如果确实是BUG,此时友好沟通不能解决问题,那么就召开BUG评审.

以上的答案仅供参考,如有更好的想法,也可以加上.

补充:BUG评审需要参加的人员有产品经理,开发代表,测试代表等,讨论内容一般分为两部分:1.如果解决BUG 2.如何避免类似的问题发生.

感谢你的观看!希望这篇文章能帮到你!
专栏:《软件测试》在不断更新中,欢迎订阅!
“愿与君共勉,携手共进!”
在这里插入图片描述

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

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

相关文章

敏态开发在大兴机场数字化转型中的实践

一、最大事业是育人 大兴机场是一个年轻的企业,作为一个企业来讲,最宝贵的就是人才。我们在2017年开始社招大学生,到目前为止,公司有一半都是30岁左右的年轻人,并且每年都会招几十个。年轻人特别想做事,而…

C++之内存管理及函数模版

C中的内存管理机制和C语言是一样的,但在具体内存管理函数上,C语言的malloc已经无法满足C面向对象销毁的需求,于是祖师爷在C中新增了一系列内存管理函数,即 new 和 delete 著名段子:如果你还没没有对象,那就…

( 位运算 ) 342. 4的幂 ——【Leetcode每日一题】

❓342. 4的幂 难度:简单 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n 4 x n 4^x n4x。 示例 1&…

src学习记录(二)

学习目标: Apache Shiro ThinkPHP struts2 Apache Log4j Fastjson Weblogic 学习内容: 1.Apache Shiro 字段内容指纹信息请求包中,在Cookie信息中给 rememberMe变量赋任意值,收到返回包的Set-Cookie 值存在 rememberMedeleteMe …

类和对象【C++】【下篇】

目录 一、初始化列表 二、隐式类型转换 三、静态成员 四、友元 1、友元函数 2、友元类 五、内部类 六、匿名对象 一、初始化列表 下面是日期类的一个构造函数,调用该构造函数后,对象中已经有了一个初始值,但并不能将它称为对对象成员变…

实时操作系统内存管理-TLSF算法

内存管理-TLSF算法 前言TLSF算法:为什么内存又叫内存“块”:O(1)查找空闲块:确定fl:确定sl:提级申请:分割块: 空闲块如何串成链表?减少外部碎片:查找上下块: …

Java补充之MySQL入门必备知识

文章和代码已经归档至【Github仓库:https://github.com/timerring/java-tutorial 】或者公众号【AIShareLab】回复 java 也可获取。 文章目录 零基础学MySQL解决之道文件、数据库MySQL 数据库的安装和配置使用命令行窗口连接MYSQL 数据库操作示意图 数据库三层结构数…

使用Intellij IDEA创建新项目时,maven路径总是默认的,一创建maven就卡死

目录 使用Intellij IDEA创建新项目时,maven路径总是默认的 弄了老半天,终于把这个破玩意给弄好了,真的没有意思,真的很恶心 我经历了两个过程,一个是 使用Intellij IDEA创建新项目时,maven路径总是默认的…

用免费蜜罐工具配置Modbus工控蜜罐

导语:本文将用DecoyMini免费蜜罐工具来配置自定义的ModbusTCP工控仿真模板,并介绍部署后的Modbus蜜罐的使用效果。 DecoyMini是一个免费的蜜罐工具,其特色是仿真能力采用与软件松耦合的仿真模板来进行管理。通过一键式导入云端仿真模板库里的…

【Linux】多线程 --- 线程同步与互斥+生产消费模型

人生总是那么痛苦吗?还是只有小时候是这样? —总是如此 文章目录 一、线程互斥1.多线程共享资源访问的不安全问题2.提出解决方案:加锁(局部和静态锁的两种初始化/销毁方案)2.1 对于锁的初步理解和实现2.2 局部和全局锁…

计算机中丢失msvcr120.dll怎么办,电脑找不到msvcr120.dll怎么办

电脑提示msvcr120.dll丢失是一个常见的问题,这个问题通常会在你尝试打开某些程序或游戏时出现。这个问题的原因是因为你的电脑缺少了一个名为msvcr120.dll的文件,这个文件是微软Visual C Redistrle for Visualv 2013的一部分。如果你遇到了这个问题&…

算法设计 || 第5题:田忌赛马-杭州电子科技大学(贪心算法)

目录 (一)杭电原题 (二)Please speak Chinese: (三)手写草稿理解思路核心算法 第一款代码: 第二款代码: (一)杭电原题 Tian Ji -- The Horse Racing Pro…

【分治法】

目录 知识框架No.1 分治法基本思想No.2 合并排序No.3 快速排序一、基本思想三、效率分析四、快速排序不稳定例子 No.4 二叉树遍历及其相关特性一、基本概念二、中序遍历三、前序遍历四、二叉树的高度计算(高度不是深度) 知识框架 No.1 分治法基本思想 将规模为N的问题分解为k…

Spring MVC:常用参数(注解)的使用和参数绑定的验证

Spring MVC:常用参数(注解)的使用和参数绑定的验证 一、学习资源二、基础源码三、实验结果3.1 Spring MVC常用参数Controller和RequestMappingRequestMappingRequestParamPathVariableCookie ValueRequestHeader 3.2 Spring MVC参数绑定3.2.1…

一路对标顶级产品,奇遇XR为何仍不见起色?

临近6月,再度遇冷的XR行业,又让很多人充满期待。外界普遍认为,基于苹果酝酿多年的MR头显产品,将于6月举行的WWDC 2023全球开发者大会正式亮相,XR行业或将迎来“iPhone时刻”。 在一派期待中,一家国内XR企业…

代码审计之PHP基础铺垫

目录 1、标记 2、注释 3、输出语句 4、关键字 5、常量的定义与使用 6、预定义常量 7、变量的赋值&#xff08;传参赋值与引用赋值&#xff09; 8、可变变量 9、双引号和单引号的区别 10、heredoc结构和nowdoc结构 11、其他符号 1、标记 <?php 和 ?> 是PHP标…

第十一届蓝桥杯青少组省赛Python中/高级组编程题真题,包含答案解析

第十一届蓝桥杯青少组省赛Python中/高级组编程题真题 编程实现 第一题&#xff1a; 输入一个字符串&#xff0c;如果该字符串以er、Iy或者ing后缀结尾的&#xff0c;则删除该字符串后缀&#xff0c;并输出删除后的字符串&#xff0c;否者将原字符串输出。 输入描述 输入一个…

零知识证明:应用和具体用例

零知识证明&#xff08;Zero-Knowledge Proofs&#xff0c;ZKPs&#xff09;是应用密码学中令人兴奋的突破&#xff0c;将在各个行业中解锁新的用例&#xff0c;从 Web3 到供应链再到物联网。通过在不揭示信息的情况下验证其真实性&#xff0c;ZKPs 可以增强数字系统的隐私、安…

【Unity-UGUI控件全面解析】| Slider 滑动条组件详解

🎬【Unity-UGUI控件全面解析】| Slider 滑动条组件详解一、组件介绍二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 充当 进度条控制灯光亮度4.2 模拟 血条 使用💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CS…

【Spring全家桶系列】面向切面编程AOP

⭐️前面的话⭐️ 本文已经收录到《Spring框架全家桶系列》专栏&#xff0c;本文将介绍面向切面编程的思想和相关概念&#xff0c;附加一个小案例。 &#x1f4d2;博客主页&#xff1a;未见花闻的博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&a…