测试工程师如何有效的编写bug报告?

news2024/11/27 14:49:57

为什么要求有效的缺陷报告?

缺陷报告是测试过程中最重要的部分,对产品的质量有较大的影响,是测试人员价值的终极体现。好的缺陷报告可以减少研发部门的二次缺陷率、提高研发修改缺陷的速度、提高测试部门的信用度、增强测试和研发部门的协作。Bug写的越好,在实际中为了修改这个bug花费的时间相对来说就会越少,测试人员的信誉度和产品的贡献度也会很好的提升。

衡量优秀缺陷报告的质量指标

·对于管理层来说,是清晰明了的,特别是在主题摘要这一级。
-对于研发人员来说,是有用的。提供能够让研发人员高效的调试问题的相关信息,使其很快的将bug从“打开"状态转变成“关闭"状态,提高测试和开发的工作效率。
·对于后期的维护,能够有效的从bug信息查询出问题的描述和解决办法
说来容易,在实践中需要测试人员仔细用心。

如何编写缺陷报告

缺陷报告作为测试和研发之间的沟通的桥梁,测试人员在报告bug的时候,有效的bug描述,会更加容易帮助开发解决问题。写有效的缺陷报告不要求有较好的文字功底,关键是覆盖了研发所关注的要点。作为一个优秀的缺陷报告,应该包括以下内容:

一、摘要
简明扼要的对bug进行一个概述,目的是让人看了就知道大概出了什么问题。Bug标题必须简短而且要求描述和传达出准确的信息。这个摘要一般比较短,所以使用一些精炼的关键词是很必要的。比如:用户登录时,密码显示为明文。
以下是一些较差的摘要:

1、摘要太模糊:在用户登录界面,在输入框中能看到输入的内容。
分析:这个摘要太模糊,没有准确的描述出现了什么问题,反而将问题出现时的状态写了上去。在一些标准中,密码输入框应显示为密文,并且也没有说明是在用户名输入框中还是密码输入框中显示输入的内容。

**修正:**用户登录时,密码框中显示输入内容。2、不足够的信息∶密码框问题。
分析:这个bug摘要信息很不充足,不知道出了什么问题
太长的摘要:在用户登录界面,在输入框中,输入正确的用户名和密码。在密码框中,显示密码信息。
分析:此摘要有太多冗余信息,把步骤添加到了摘要中。如“在输入框中,输入正确的用户名和密码”等这些完全可以放置到bug描述步骤中去,
**修正:**用户登录时,密码框中显示输入内容。
备注:有些测试人员将其命名为“标题”,这里以我们的QC为准,名为“摘要”

二、bug属性
在编写bug缺陷报告时应该尽可能全面的描述bug的属性。以QC为例,bug属性包含如下:

产品模块:发现的bug所属的模块测试版本:当前的测试版本
严重级别
所属项目
是否可重现

三、负责人:

负责解决此问题的研发人员四、检测者:发现此问题的测试人员

四、检测者:

发现此问题的测试人员

**五、**根据公司的实际情况,增加了“部门”和“迭代周期"两项,“部门"是必填项,“迭代周期"可选。

六、Bug的详细描述
Bug的详细描述要达到让研发人员清晰这是一个什么问题,看了能够自己复现的程度,所以要详细但要避免冗余。要包含以下几点∶
**1、测试配置:**主要是产品的相关配置,比如:使用用户登录某一个系统,前提条件是需要注册或者管理员添加用户。又或者是其他如交换机或路由器等的配置
**2、测试环境:**测试所搭建的网络拓扑环境。对于不需要搭建网络环境的测试,可省略,如升级安装包等。
**3、测试步骤:**这是比较关键的,目的是帮助研发重现。在有多条步骤的情况下组号列出1、2、3等步骤
**4、预期结果和实际结果:**这两个实际上都应该写的描述中,不但能够做对比,而且能够有效的证明这确实是一个bug。例如这样的bug描述:

上述bug的描述在很熟悉测试产品的情况下或许可以看懂,但都会犹豫一下他想表达什么意思,正确的结果是什么,错误的结果是什么。
在这种情况下若加上“预期结果"和“实际结果”,会使意思表达的更加明确。第二个bug将步骤和结果混杂在一起,可以这样修改一下:
1:使用浏览器访问登陆界面。
2∶输入正确的用户名和密码。3∶然后点击“登录"按钮。
预期结果:密码输入框,显示信息为密文。
实际结果:密码输入框内容为明文。

其他注意事项

在报告缺陷的过程中,除了上述描述外还应注意如下:
1.一个bug报告只能描述—个bug,如果将几个问题都写在一个bug报告中,开发人员很难发现自己的问题并解决,或者导致某些优先级高的bug没有及时得到解决

2.Bug的唯一性:在提交bug报告之前,要确认这个bug是否已经被其他人发现并报告(搜索功能)

3.重现:有些bug很容易就重现,有些就很难。如果你能重现一个bug,应该准确的解释必须的条件。应该列出所有的步骤,包括精确的组合,文件名以及你碰到或重现这个问题的操作顺序。如果你能够确认这个问题在任何文件,任何的操作顺序等条件下都会发生,那也做好能够给出一个明确的示例来帮助开发重现。如果发现一个不能重新的bug,就尽可能多的提供有效的信息给你的开发人员。截图、日志,抓包等对捕获这个bug有帮助的信息可以包含在你的bug报告中

4.定位:对于一个测试人员来说,应该做一些有效的事情来帮助定位问题。要多想会不会是外部的什么特殊原因引起的这个问题?会不会是因为网络的问题导致数据不通?或者是应用软件配置错误导致数据不通?如果实在不能定位问题原因,是否可以想办法缩小出错的范围?尽量避免是由于测试人员的问题导致误报了bug。测试人员定位bug的能力,一定程度上是测试人员附加值的体现,能够节省项目组相关人员的时间,缩短了回归bug的时间。

5.报告bug时要使用中性语言,不要带有感情色彩。不要带有幽默也不要带有任何不满情绪,尽量考虑一下研发的情绪。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

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

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

相关文章

Resful API是什么

文章目录 摘要1、RESTful API是什么?2、RESTful是什么?参考资料 摘要 RESTful是整个网络应用程序设计风格和开发方式。而RESTful API是其中API的设计风格。 1、RESTful API是什么? API接口在设计命名时,由版本/操作资源名称/操…

【Spring Boot 初识丨六】依赖注入

上一篇讲了 Spring Boot 的beans 本篇来讲一讲 依赖注入 Spring Boot 初识: 【Spring Boot 初识丨一】入门实战 【Spring Boot 初识丨二】maven 【Spring Boot 初识丨三】starter 【Spring Boot 初识丨四】主应用类 【Spring Boot 初识丨五】beans 依赖注入 一、 定…

攻防世界-Crypto-easychallenge

题目描述:将文件下载下来,只有一个pyc文件 1. 思路分析 先向chatgpt问下什么是pyc文件: OK,这里简单总结下: 1. pyc文件是python源码编译后的生成的二进制文件 2. 通过一些库可以逆向出pyc的源代码 那么我们需要做…

数组题目总结 -- 单调栈问题

目录 零. 单调栈一. Next Greater Element(单调栈问题模板)题目简述:思路和代码:I. 思路II. 代码 二. Next Warmer Weather题目简述:思路和代码:I. 思路II. 代码 三. Next Greater Elements(循环数组)题目简…

UG\NX二次开发 装配下的点坐标

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UF_CURVE_create_point 创建一个点 UF_CSYS_create_temp_csys 创建临时坐标系 以上两个函数都有一个点坐标输入,而且都是输入的绝对坐标系下的点坐标值。下面验证在装配下两个绝对坐标值具体指 “当…

【三维视觉】空间点集的最小包围盒计算

0 问题描述 假设有一个空间点集,不重合的点数有N个。 N1时,最小包围盒是一个点:中心为其本身,半径无穷小 N2时,最小包围盒是一个圆:中心为连线中点,半径为边长一半 N3时,不共线的三…

【C#】并行编程实战:任务并行性(上)

在 .NET 的初始版本中,我们只能依赖线程(线程可以直接创建或者使用 ThreadPool 类创建)。ThreadPool 类提供了一个托管抽象层,但是开发人员仍然需要依靠 Thread 类来进行更好的控制。而 Thread 类维护困难,且不可托管&…

优惠券超发问题该怎么测试?

在拼夕夕面试中,面试官问了一连串经典的问题:“优惠券库存是怎么扣减的?开发为了解决超发优惠券问题而设计的方案,你了解过吗?你又是如何测试的呢?” 当时听到这些问题还挺懵的,没遇到过超发问…

MidJourney教程02

1.主体内容:高数AI你需要画什么?比如说,一个男生在电脑前画画? 2.环境北京:例如给某些地点或者物件,比如桌子上,足球场,水面有倒影等? 3.构图镜头:比如说强…

springboot项目外卖管理 day07-功能补充

文章目录 前端补充功能1、历史订单功能1.1、梳理过程1.2历史订单展示1.3、效果展示 2、修改/删除地址2.1、回显数据梳理过程 代码展示 2.2、修改地址梳理过程代码 2.3、删除地址梳理过程代码展示 3、再来一单功能3.1、梳理过程3.2、具体实现思路(参考一下当初我们怎…

Linux操作系统——第四章 进程间通信

目录 进程间通信介绍 进程间通信目的 进程间通信发展 进程间通信分类 管道 System V IPC POSIX IPC 管道 什么是管道 匿名管道 管道读写规则 管道特点 命名管道 创建一个命名管道 匿名管道与命名管道的区别 命名管道的打开规则 system V共享内存 共享内存示意…

【SpringBoot】解决依赖版本不一致报错问题

哈喽大家好,我是阿Q。今天在开发代码的过程中,由于手抖,不知道引入了什么包依赖,导致项目启动一直报错,特写本文来记录下解决问题的经过。 文章目录 问题描述报错信息如下报错描述 解决方法总结 问题描述 报错信息如下…

vite中使用 vite- aliases 插件报错

vite 中使用 vite-aliases 插件报错 vite-aliases 介绍报错内容解决方法 vite-aliases 介绍 vite-aliases 可以帮助我们自动生成别名: 检测你当前目录下包括 src 在内的所有文件夹, 并帮助我们去生成别名。 下载 npm i vite-aliases -D 使用 import { defineConfig } from vi…

VALSE 2023 无锡线下参会个人总结 6月11日-2

VALSE2023无锡线下参会个人总结 6月11日-2 6月11日会议日程安排Workshop:目标检测与分割程明明:粒度自适应的图像感知技术张兆翔:基于多传感器融合的视觉物体检测与分割 Workshop:ChatGPT与计算机视觉白翔:再谈ChatGPT…

290. 单词规律

290. 单词规律 C代码:别人手搓的 bool wordPattern(char * pattern, char * s){char arr[301][3001];char *p strtok(s, " ");int pos 0;while(p ! NULL) {sprintf(arr[pos], "%s", p);p strtok(NULL, " ");}int len strlen(pat…

Linux环境安装Jdk图文步骤

准备工作: a、jdk安装包:百度网盘 请输入提取码,提取码:jdk8 b、远程工具,xshell,,electerm,,MobaXterm,,fxp,docker,宝…

软件测试V、W和H模型的优缺点汇总,零基础必看哦

目录 V模型 W模型 H模型 总结: 软件测试有三种模型,分别是V模型,W模型和H模型。每种模型都有自己的优点和缺点。 V模型 V模型如下图所示: V模型的优点 V模型明确地标识出了在开发过程中一般应完成的测试级别,以及…

STM32-HAL库串口DMA空闲中断的正确使用方式+解析SBUS信号

STM32-HAL库串口DMA空闲中断的正确使用方式解析SBUS信号 一. 问题描述二. 方法一——使用HAL_UART_Receive_DMA三. 方法二——使用HAL_UARTEx_ReceiveToIdle_DMA四. 方法三——使用HAL_UARTEx_ReceiveToIdle_IT(不使用DMA)五. 总结 一. 问题描述 能够点…

java springboot整合MyBatis-Plus 多用点Plus支持一下国人开发的东西吧

文章java springboot整合MyBatis做数据库查询操作讲述了boot项目整合MyBatis的操作方法 但现在就还有一个 MyBatis-Plus Plus是国内整合的一个技术 国内的很多人会喜欢用 特别是一些中小型公司 他们用着会比较舒服 好 然后我们打开idea 创建一个项目 选择 Spring Initializr…

(九)CSharp-数组

一、矩形数组 1、访问数组元素 class Program{static void Main(string[] args){int[] intArr1 new int[15];intArr1[2] 10;int var1 intArr1[2];int[,] intArr2 new int[5, 10];intArr2[2, 3] 7;int var2 intArr2[2, 3];int[] myIntArray new int[4];for (int i 0; i…