你对Bug了解多少?如何“正确的”向开发人员提出Bug?

文章详细介绍了Bug的不同级别,如Blocker、Critical、Major和Minor,以及Bug的生命周期,包括从新建到关闭的各个状态。同时,提到了如何有效地向开发人员报告Bug,强调了创建Bug时需提供的关键信息,以及在与开发人员产生争执时的处理建议,如采用批判性思维、提供解决方案和召开Bug评审会议。

目录

一、Bug的级别

二、Bug的生命周期

三、如何向开发人员提出Bug(如何创建Bug)?

四、跟开发产生争执怎么办?(面试高频)


一、Bug的级别

        为什么Bug也要存在级别?不同的Bug等级,惩罚机制不一样,同时也跟开发人员的开发质量有直接关系(与开发能力挂钩);

bug的定义每个公司都不一致,在定义级别之前需要查看公司规范,以下给出一个参照~

Blocker(崩溃):

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

Critical(严重):

        系统主要功能部分丧失、数据库保存调用错误、用户数据丢失。如:功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出;

Major(一般):

        功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询 时间长、格式错误、边界条件错误,删除没有确认框;

Minor(次要):

        界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格 式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置 不正确;


二、Bug的生命周期

        测试人员再执行测试的过程中,若发现Bug,需要再对应的Bug管理平台来创建Bug,直到最后Bug被关闭;

具体的生命周期如下图:

 解释:

new:测试人员创建了一个Bug;

open:开发人员要确认是否是Bug,是Bug状态就改为open,不是Bug就拒绝(rejected);

fixed:开发人员在修复完成后,将Bug状态设置为fixed;

rejected:确认不是Bug的标志;

dalay:确认是Bug后,若Bug的优先级较低且开发人员不能立即修复Bug,状态改为delay;

closed;Bug确认修复完成,测试人员将Bug改成closed;

reopen:Bug确认修复未完成,测试人员将Bug状态改为reopen;


三、如何向开发人员提出Bug(如何创建Bug)?

        首先要明确创建Bug的要素:问题出现的版本、问题出现的环境、出现步骤、预期结果、实际结果等;

例如下图Bug:

创建Bug如下:

标题(注意强调影响):二维码被登录模块遮挡,导致二维码扫描失败;

问题出现的版本:谷歌浏览器版本 108.0.5359.125(正式版) (64位);

问题出现的环境:Windows家庭版;

问题出现的步骤:1、打开谷歌浏览器,输入网址www.xxx.com;2、页面渲染完成,结果与预期不符;

预期结果:二维码与登录模块不会出现遮挡,二维码可以正常扫描;

实际结果:二维码被登录模块遮挡,二维码扫描失败;

Bug归属:前端问题;

Bug等级:严重;


四、跟开发产生争执怎么办?(面试高频)

这里回答不统一,只是给出一些建议;

1、批判性思维,多反思自己,是不是Bug创建的适合描述不清楚;

2、开发人员对Bug级别不认可、Bug定级一定要有理有据;(测试人员要明确企业Bug定级规范,拿规范与开发人员沟通);

3、有好沟通,站在用户的角度反问:如果你是用户,你能接受这样的功能吗?

4、不仅能够发现问题,最好也能提出解决方案(供开发参考);

5、若确实是Bug,友好沟通不能解决问题,就召开Bug评审,需要找相关代表参加:产品代表、开发代表、测试代表等;评审内容主要是:如何解决Bug?如何预防类似的Bug再发生?


<think>首先,用户的问题是:“java发常见bug类型”,意思是“Java发常见bug类型”。我需要用中文回答这个问题。 我的回答需要用中文阐述Java发中常见的bug类型。根据我对Java的了解,常见的bug类型包括: - **空指针异常(NullPointerException)**:当尝试访问一个null对象的成员时发生。 - **数组越界(ArrayIndexOutOfBoundsException)**:当访问数组时索引超出范围。 - **类型转换错误(ClassCastException)**:当尝试将对象强制转换为不兼容的类型时。 - **并发问题**:如线程安全、死锁、竞争条件等。 - **内存泄漏**:对象不再被使用但没有被垃圾回收器回收。 - **资源泄漏**:如文件句柄或数据库连接没有正确关闭。 - **逻辑错误**:程序逻辑错误导致不正确的结果。 - **异常处理不当**:未捕获异常或错误处理。 - **集合框架错误**:如使用不当的集合操作。 - **序列化问题**:对象序列化和反序列化错误。 我需要列出这些bug类型并简要解释。 回答完问题后,我必须根据用户的问题和我的回答提出3-5个 **相关问题**。 **关键点:** - 在回答的末尾,必须输出 **“§§相关问题§§”**。这是第一行,必须完整输出,不能换行分散。 - 然后,列出3-5个相关问题,用数字编号,如“1. ···”,“2. ···”等。 - 格式参考示例:示例中先有回答,然后“§§相关问题§§”,接着编号问题。 - 确保所有内容符合规则。 **结构我的回答:** 1. **回答部分**:用中文描述Java发常见bug类型。简洁明了。 2. **相关问题部分**:以“§§相关问题§§”始,然后列出3-5个问题。 - 问题应该基于用户的问题“Java发常见bug类型”和我的回答。 - 示例问题:比如如何避免空指针异常?Java并发bug如何解决?等。 - 数量:3到5个。 **脑storm相关问题:** 基于主题: 1. 如何预防Java中的NullPointerException? 2. Java并发编程中常见的错误有哪些? 3. 在Java中如何调试内存泄漏? 4. 最佳实践来处理Java异常? 5. 集合框架使用中应避免哪些陷阱? 确保3-5个。 **完整回答格式:** - 先写回答。 - 然后“§§相关问题§§” - 接着: 1. 第一个问题 2. 第二个问题 3. ... 等等。 不能换行分散,但示例中是换行的,所以我需要写成连续的行。 示例格式: ``` 快速排序的基本思想是选择一个基准元素 ```python 代码 ``` §§相关问题§§ 1. ··· 2. ··· 3. ··· ``` 所以,我需要在回答后直接写“§§相关问题§§”,然后换行列出问题。 在我的回答中,用户的问题是文本,所以我直接写文本回答。 **起草回答:** 回答部分: 在Java发中,常见的bug类型包括: - 空指针异常(NullPointerException):当尝试访问null对象的成员时发生。 - 数组越界异常(ArrayIndexOutOfBoundsException):访问数组时索引无效。 - 类型转换异常(ClassCastException):强制转换对象到不兼容类型。 - 并发问题:如死锁、竞争条件等。 - 内存泄漏:对象不再使用但未被回收。 - 资源泄漏:如未关闭文件和数据库连接。 - 逻辑错误:代码逻辑缺陷导致错误输出。 - 异常处理不当:未捕获异常或错误处理。 - 集合框架错误:错误使用ArrayList、HashMap等。 - 序列化问题:对象序列化失败。 相关问题部分: §§相关问题§§ 1. 如何避免Java中的空指针异常? 2. Java并发编程中如何预防死锁? 3. 哪些工具可以帮助检Java内存泄漏? 4. 在Java异常处理中最佳实践是什么? 5. 集合框架使用中常见错误有哪些? 确保3-5个,我列了5个,可以。 **最终输出:** - 回答用中文。 - 相关问题也用中文。 </think>在Java发中,常见的bug类型主要包括以下几种: 1. **空指针异常(NullPointerException)**:当尝试访问或调用一个null对象的成员方法或属性时发生,是最常见的bug之一。 2. **数组越界异常(ArrayIndexOutOfBoundsException)**:访问数组元素时索引超出有效范围,导致程序崩溃。 3. **类型转换异常(ClassCastException)**:在强制类型转换时,对象类型不兼容引发运行时错误。 4. **并发问题**:如线程死锁(Deadlock)或竞争条件(Race Condition),多线程环境下资源竞争导致程序阻塞或数据不一致。 5. **内存泄漏(Memory Leak)**:对象不再被使用但未被垃圾回收器回收,长时间运行后可能导致内存耗尽。 6. **资源泄漏(Resource Leak)**:未正确关闭文件、数据库连接或网络资源,导致系统资源浪费。 7. **逻辑错误(Logical Error)**:代码逻辑缺陷导致输出结果错误,如算法实现失误或条件判断不准确。 8. **异常处理不当**:未捕获或处理异常(如IOException),或错误使用try-catch块,影响程序健壮性。 9. **集合框架错误**:错误使用ArrayList、HashMap等集合类,如并发修改异常(ConcurrentModificationException)。 10. **序列化问题**:对象序列化或反序列化失败,如版本不兼容或字段缺失。 这些bug通常需要通过代码审查、单元测试和调试工具来预防和修复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈亦康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值