【软件测试】Bug 篇

哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ  

今天给大家带来的是 【软件测试】Bug 篇首先了解, 什么是Bug如何定义一个Bug, 如何描述一个 Bug, Bug的级别, 和 Bug 的生命周期, 以及测试人员跟开发人员产生争执如何处理,.等问题. 一起来看看叭~


本期收录于博主的专栏: 软件测试_保护小周ღ的博客-CSDN博客

适用于编程初学者,感兴趣的朋友们可以订阅,查看其它 “软件测试内容”。

更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘


一、Bug 的定义

  1. 当且仅当产品规格说明书存在且正确时, 程序的实现与规格说明书要求不匹配的时候, 就是软件错误. 简单说就是程序的功能实现与需求说明书不符合, 即可认定为 Bug.

  2. 当产品规格说明书没有提到的功能时, 以用户为准, 当程序没有实现其用户合理预期 (测试人员需具备良好的产品思维) 的要求时, 就是软件错误.

1.1 如何描述Bug

描述一个 Bug 的要素:

  1. 标题:简洁明了地概括问题

  2. 问题出现的版本: 浏览器、应用版本等相关信息

  3. 问题出现的环境: 操作系统, 设备等

  4. 出现步骤: 详细描述重现Bug的操作步骤

  5. 预期结果: 说明在正常情况下应该出现的结果。

  6. 实际结果: 描述实际遇到的错误或问题q

提 Bug : 博主网站登录界面,图形验证码,输入大写验证码, 导致验证码校验错误。

针对上述问题描述一个 Bug:

标题

登录时,进行图形验证码的校验,输入大写字母,导致验证码校验不通过, 进而用户无法登陆成功.

问题出现的版本:

Microsoft Edge版本 128.0.2739.9 (正式版本) stable应用,beta频道 (64 位)

出现问题的环境:

Windows 11 家庭中文版

问题出现的步骤:

  1. 启动 Microsoft Edge 浏览器, 地址栏输入 : http://127.0.0.1:18080(博主自己启动的程序)

  2. 页面自动跳转至登录界面, 输入用户名, 密码, 输入图形化验证码与之对应的文本 - YT65.

  3. 点击登录

  4. 提示验证码输入错误

预期结果: 验证码登录成功, 登录成功

实际结果: 验证码输入错误

Bug 归属: 后端问题 (我知道的) Bug 等级: (后面再详细讲解, 根据每个公司的设定来)

在测试的过程中: 如果我们测试的产品有很多版本, 只需要关注用户使用较多的版本(通常企业都会有数据健康后台, 能够监控到使用当前产品的用户所使用到的版本 / 环境), 我们的设备信息在http/ https 请求头中有所表现.


二、Bug 的级别

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

  1. 崩溃(Blocker):严重影响系统的主要功能,导致应用崩溃或无法运行, 阻碍开发或测试工作的问题. 例如 : 造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等.

  2. 严重(Critical):影响主要功能,但可以通过某些方式绕过或暂时解决. 例如 : 系统主要功能部分丧失、数据库保存调用错误、用户数据丢失. 功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。

  3. 一般(Major):对功能有一定影响,但不会严重阻碍使用,可能需要修复但不是紧急的. 例如:操作时间长、查询时间长、格式错误、边界条件错误等.

  4. 次要(Minor):影响较小的功能或用户体验,不会影响主要功能的使用,通常作为未来版本的改进点处理. 例如 : 界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等 .

在实际的工作中, 崩溃, 严重的bug 并不常见, 公司针对于不同的 Bug 等级, 对相关人员的惩罚机制也不一样, 同时 bug 的产生/等级也跟开发人员的技术水平有关.

如果程序有明显的/ 主功能问题, 或者主流程走不通, 测试人员进行项目打回, 开发人员应在提交代码前进行充分的单元测试, 集成测试等, 检查项目是否具备可测性.


三、Bug 的生命周期

同样, 每一个公司对于 bug 的生命周期的定义是不一致的.

测试人员在执行测试的过程中, 如果发现有 bug , 需要在对应的 bug 管理平台来创建 bug -- bug 的生命起源.

以下是常见的例子:

Bug 状态变更流程每个项目团队的实际做法可能不大一样。并且需要结合实际的开发流程和协作流程来 使用。 例如,测试人员新发现的Bug,由测试组长评审后才决定是否Open并分派给开发人员。测试人员 Open的Bug可以直接分派给Bug对应的程序模块的负责人,也可以要求都先统一提交给开发主管,由开 发主管审核后再决定是否分派给开发人员进行修改。 Bug的跟踪以及状态变更应该遵循一些基本原则: 测试人员对每一个缺陷的修改必须重新对一个包含更改后的代码的新版本进行回归测试,确保相同 的问题不再出现,才能关闭缺陷。 对于拒绝修改和延迟修改 Bug,需要经过包含测试人员代表和开发人员代表、用户方面的代表 (或代表用户角度的人)的评审。


3.1 测试的执行和BUG管理

  1. 打开待测试的系统

  2. 打开测试管理工具用例模

  3. 发现bug!进行复现并确认

  4. 记录bug

  5. 与开发人员沟通bug

  6. 验证修复后的bug

  7. 确认本次测试完成

  8. 编写测试报告


四、测试人员跟开发人员产生争执如何处理

软件测试的目的, 为了保障产品的质量, 但有些时候, 在开发人员眼中, 你就像是故意挑他刺, 开发人员直接否定三连: 这不是问题, 我没错, 不是我写的~

遇到争执不要怕,记住批判性思维:清楚--准确、切题--深刻,有意义,有逻辑性--公正、全面

  1. 检查自身:在报告 bug 时,要确保描述清楚,多反思自己,是不是 Bug 创建的时候描述不太清楚。如果发现描述不足或难以表达,立即找相关开发人员解释,避免等待他们主动联系你。

  2. 站在用户角度:让开发人员理解 bug 对用户的影响,增加解决问题的紧迫感。可以问:“如果你是用户,你能接受吗?”

  3. 合理定级:确定 bug 级别时 ,不仅要看 bug 的严重性,还要考虑其对用户流程的影响。站在用户角度来定级。

  4. 提升技术水平:除了提出问题,还能提出解决方案,这样更具说服力。资深测试工程师通常会提供解决思路,增加权威性。

  5. 处理拒绝:如果开发人员拒绝接受 bug,可以发起 bug 评审,避免争吵,寻找更客观的解决方式。


好了,到这里, 【软件测试】Bug 篇 博主已经分享完了,这只是简单的概念性的理解,希望对大家有所帮助,如有不妥之处欢迎批评指正。 

感谢每一位观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* 

遇见你,所有的星星都落在我的头上……

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

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

相关文章

【MYSQL】聚合查询、分组查询、联合查询

目录 聚合查询聚合函数count()sum()avg()max()和min()总结 分组查询group by 子句having 子句 联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询 合并查询 聚合查询 聚合查询就是针对表中行与行之间的查询。 聚合函数 count() count(列名)&a…

个人随想-代码生成工具v0+claude+cursor

cursor出来已经有一段时间了,不知道大家用了感觉怎么样。今天就以我个人为例,给大家介绍一下我是如何使用cursor搭建原型。 首先,我并不觉得cursor对于后端程序员带来了革命性改进,我们与很多团队沟,使用cursor80%以上…

spring中的容器接口的实现类和功能

容器实现 BeanFactory 实现 这里我们就来一步步实现BeanFactory的功能。 首先创建我们需要的类 Configuration static class Config{Beanpublic Bean1 bean1(){return new Bean1();}Beanpublic Bean2 bean2(){return new Bean2();}}static class Bean1{private static fina…

【Linux】Shell 编程规范及检查工具推荐

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】(全…

【RH124】解释Linux文件系统权限

RH124教材中控制对文件的访问一章中有一道解释Linux文件系统权限的测验题,可以一起来看看: 一、权限解释 这是通过 ls -l 命令查看的结果。它显示了文件或目录的权限、拥有者、所属组等信息。 1、长列表的第一个字符表示文件类型: -是常…

【C语言零基础入门篇 - 16】:栈和队列

文章目录 栈和队列栈栈功能的实现源代码 队列队列功能的实现源代码 栈和队列 栈 什么是栈:功能受限的线性数据结构 栈的特点:先进后出 。例如:仓库进货、出货。 栈只有一个开口,先进去的数据在栈底(bottom&#xf…

STM32篇:STM32CubeMX的安装

一.介绍与安装 1.作用 通过界面的方式,快速生成工程文件。 2.下载 官网 https://www.st.com/zh/development-tools/stm32cubemx.html#overview 3.安装 一路下一步,建议不要安装在C盘 4.配置 更新固件包位置(比较大,默认在…

LeetCode 257. 二叉树的所有路径(回溯详解)

文章目录 LeetCode 257. 二叉树的所有路径思路递归版本一:非常明确的回溯代码版本二:精简的回溯代码 LeetCode 257. 二叉树的所有路径 LeetCode 257. 二叉树的所有路径 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节…

全网最适合入门的面向对象编程教程:51 Python函数方法与接口-使用Zope实现接口

全网最适合入门的面向对象编程教程:51 Python 函数方法与接口-使用 Zope 实现接口 摘要: 在 Python 中,Zope 提供了一种机制来定义和实现接口。Zope 的接口模块通常用于创建可重用的组件,并确保组件遵循特定的接口规范。 原文链…

力扣 209.长度最小的子数组

一、长度最小的子数组 二、解题思路 采用滑动窗口的思路&#xff0c;详细见代码。 三、代码 class Solution {public int minSubArrayLen(int target, int[] nums) {int n nums.length, left 0, right 0, sum 0;int ans n 1; for (right 0; right < n; right ) { …

【二等奖论文】2024年华为杯研赛D题成品论文(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 点击链接获取【2024华为杯研赛资料汇总】&#xff1a; https://qm.qq.com/q/jTIeGzwkSchttps://qm.qq.com/q/jTIeGzwkSc 题 目&#xff1a; 大数据驱动的…

一劳永逸:用脚本实现夸克网盘内容自动更新

系统环境&#xff1a;debian/ubuntu 、 安装了python3 原作者项目&#xff1a;https://github.com/Cp0204/quark-auto-save 感谢 缘起 我喜欢看电影追剧&#xff0c;会经常转存一些资源到夸克网盘&#xff0c;电影还好&#xff0c;如果是电视剧&#xff0c;麻烦就来了。 对于一…

深度学习-卷积神经网络(CNN)

文章目录 一、网络构造1. 卷积层&#xff08;Convolutional Layer&#xff09;&#xff08;1&#xff09;卷积&#xff08;2&#xff09;特征图计算公式&#xff08;3&#xff09;三通道卷积 2. 激活函数&#xff08;Activation Function&#xff09;3. 池化层&#xff08;Pool…

【JUC并发编程系列】深入理解Java并发机制:线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)

文章目录 【JUC并发编程系列】深入理解Java并发机制&#xff1a;线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)1. 基本 API 介绍2. 简单用法3. 应用场景4. Threadlocal与Synchronized区别5. 内存溢出和内存泄漏5.2 内存溢出 (Memory Overflow)5.2 内存泄…

全栈项目小组【算法赛】题目及解题

题目&#xff1a;全栈项目小组【算法赛】 题目&#xff1a; 解题思路 1.遍历简历信息&#xff1a;我们需要读取所有简历&#xff0c;根据期望薪资和岗位类型进行分类和统计。 2.分类统计&#xff1a;使用哈希表来存储每个薪资下的前端&#xff08;F&#xff09;和后端&#…

【线程】线程的同步

本文重点&#xff1a;理解条件变量和生产者消费者模型 同步是在保证数据安全的情况下&#xff0c;让我们的线程访问资源具有一定的顺序性 条件变量cond 当一个线程互斥地访问某个变量时&#xff0c;它可能发现在其它线程改变状态之前&#xff0c;它什么也做不了&#xff0c;…

window系统DockerDesktop 部署windows容器

目录 参考文献1、安装Docker Desktop1.1 下载安装包1.2 安装教程1.3 异常解决 2、安装windows容器2.1 先启动DockerDesktop 软件界面2.2 检查docker版本2.3 拉取windows镜像 参考文献 windows容器docker中文官网 Docker: windows下跑windows镜像 1、安装Docker Desktop 1.1 …

SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目

一、源码特点 smm VUE电影售票管理系统是一套完善的完整信息管理类型系统&#xff0c;结合SSM框架和VUE、redis完成本系统&#xff0c;对理解vue java编程开发语言有帮助系统采用ssm框架&#xff08;MVC模式开发&#xff09;&#xff0c;系 统具有完整的源代码和数据库&#…

【C语言零基础入门篇 - 17】:排序算法

文章目录 排序算法排序的基本概念冒泡排序选择排序插入排序 排序算法 排序的基本概念 1、什么是排序&#xff1f; 排序是指把一组数据以某种关系&#xff08;递增或递减&#xff09;按顺序排列起来的一种算法。 例如&#xff1a;数列 8、3、5、6、2、9、1、0、4、7 递增排序…

深入浅出:Eclipse 中配置 Maven 与 Spark 应用开发全指南

Spark 安装配置 1.在 Eclipse 中配置 Maven Eclipse 中默认自带 Maven 插件&#xff0c;但是自带的 Maven 插件不能修改本地仓库&#xff0c;所 以通常我们不使用自带的 Maven &#xff0c;而是使用自己安装的&#xff0c;在 Eclipse 中配置 Maven 的 步骤如下&#xff1a;…