【软件测试】Bug 篇

news2024/9/23 6:14:52

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

今天给大家带来的是 【软件测试】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.coloradmin.cn/o/2156829.html

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

相关文章

最佳植树距离 - 华为OD统一考试(E卷)

2024华为OD机试(C卷D卷E卷)最新题库【超值优惠】Java/Python/C合集 题目描述 按照环保公司要求,小明需要在沙化严重的地区进行植树防沙工作,初步目标是种植一条直线的树带。由于有些区域目前不适合种植树木,所以只能在…

橙子质量检测系统源码分享

橙子质量检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

【报告阅读】chatgpt-o1 技术报告阅读 | 新的迭代开始了~

OpenAI o1是通过强化学习去进行复杂推理,在它回答之前,他会经过复杂的内部思维链的思考。 经过强化训练的o1多强 1 表现 在美国数学奥林匹克预选赛中名列前500名的学生中,o1排89名 在物理、生物、化学问题的基准测试中超过人类博士水平 其…

stm32单片机个人学习笔记7(TIM定时中断)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

Python可迭代对象(1)---从C++开发者学习python日记

目录 1。什么是可迭代对象? 2。列表(list) 列表的创建 列表基本操作 以上全部代码的总运行结果 列表脚本操作符 列表常用的方法和函数 列表推导式 ​编辑列表的嵌套 以上全部代码的总运行结果 复习列表内容 3。元组(tuple) 元组的基本运算 元组的方法 …

SFUD库移植

1.源码 GitHub - armink/SFUD: An using JEDECs SFDP standard serial (SPI) flash universal driver library | 一款使用 JEDEC SFDP 标准的串行 (SPI) Flash 通用驱动库 2.介绍 这个通用驱动库,实际就是帮你封装好了读写spiflash的函数, 我们只需要对接以下底层,就可以轻松…

快速了解使用路由器

插槽的使用和用法:slot 为什么要使用插槽: 在Vue.js等前端框架中 在Vue.js等前端框架中,插槽(Slot)是一种强大的工具,允许开发者在组件之间动态地传递和呈现内容。使用插槽的主要原因包括: …

【LTW】Domain General Face Forgery Detection by Learning to Weight

文章目录 Domain General Face Forgery Detection by Learning to Weightkey points方法LTW元分割策略学习过程损失函数实验评价结果消融实验总结Domain General Face Forgery Detection by Learning to Weight 会议:AAAI-21 作者: code: https://github.com/skJack/LTW 上…

用uniapp 及socket.io做一个简单聊天 升级 9

比这之前优化了以下功能 上线通知 群聊里适时显示在线人数 约请好友 通过好友通过socket 相应端自动变化 PC端可以拉取摄象头拍照 PC端可以录音发送 拉起摄象头发送录象 <template><view class""><scroll-view scroll-y"true" class&…

2024 离线ASR和TTS推荐与示例

2024 离线ASR和TTS推荐 文章目录 2024 离线ASR和TTS推荐一、前言二、安装与使用1、EdgeTTS的安装和使用&#xff08;1&#xff09;Edge TTS介绍与效果试听&#xff08;2&#xff09;Edge TTS安装&#xff08;3&#xff09;Edge TTS查看支持的音色&#xff08;4&#xff09;Edge…

16【Protues51单片机仿真】智能洗衣机倒计时系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 用直流电机转动模拟洗衣机。要求 有弱洗、普通洗、强洗三种模式&#xff0c;可通过按键选择。可以设置洗衣时长&#xff0c;通关按键选择15、30、45、60、90分钟。时间到蜂鸣器报警提示。LCD 显示…

MySQL:事务的ACID特性隔离级别脏读/不可重复读/幻读/Next-Key锁——场景复现

目录 1、什么是事务 2、 事务的ACID特性 2.1 事务的隔离性 3、为什么要使用事务&#xff1f; 4、查看支持事务的存储引擎 5、使用事务 5.1 控制事务 5.1.1 开启事务 5.1.2 关闭事务 5.2 开始一个事务&#xff0c;执行修改后回滚 5.3 开始一个事务&#xff0c;执行修…

set-ExecutionPolicy RemoteSigned 提示不是内部或外部命令,也不是可运行的程序或批处理文件

这个错误一般发生在使用命令提示符或者PowerShell窗口中找不到set-ExecutionPolicy RemoteSigned。如果你想在命令提示符或者PowerShell窗口运行set-ExecutionPolicy RemoteSigned&#xff0c;你需要搜索打开Window PowerShell ISE&#xff0c;并以管理员身份打开&#xff0c;输…

图结构感知的Transformer:一种新的图表示学习方法

人工智能咨询培训老师叶梓 转载标明出处 尽管图神经网络&#xff08;GNNs&#xff09;在处理图数据方面取得了显著成就&#xff0c;但它们在表达能力和捕获长距离依赖方面存在局限性。为了突破这些局限&#xff0c;研究者们开始探索将Transformer架构应用于图表示学习。在此基…

使用Electron打包一个Vue3项目全步骤

1.创建一个Vue3项目 2.使用 WebStorm打开项目&#xff0c;并安装依赖项 npm install 等待完成后&#xff0c; 安装electron npm install --save-dev electron 等待完成后&#xff0c; 安装electron 打包依赖项(打包成可执行文件) npm install electron-packager --save-dev 3…

从零开始一个git操作实例,图文并茂

徒弟不懂git怎么用&#xff0c; 于是写了篇文章&#xff0c; 把本地git操作从头写了一遍&#xff0c; 自己去看吧&#xff01; 0、基本概念 •Git是一个免费、开源的、分布式版本控制系统 •它使用一个特殊的叫做仓库的数据库来记录文件的变化 •仓库中的每个文件都有一个…

ccfcsp-202406(1、2、3、4、5)

矩阵重塑&#xff08;其一&#xff09; #include <bits/stdc.h> using namespace std; int main() {int n,m,p,q;cin >> n >> m >> p >> q;vector<int> vec(n * m);vector<vector<int>> res(p, vector(q,0));int k 0;for(in…

力扣反转链表系列【25. K 个一组翻转链表】——由易到难,一次刷通!!!

力扣《反转链表》系列文章目录 刷题次序&#xff0c;由易到难&#xff0c;一次刷通&#xff01;&#xff01;&#xff01; 题目题解206. 反转链表反转链表的全部 题解192. 反转链表 II反转链表的指定段 题解224. 两两交换链表中的节点两个一组反转链表 题解325. K 个一组翻转…

HarmonyOS---权限和http/Axios网络请求

网络请求(http,axios) 目录 一、应用权限管理1.1权限的等级1.2授权方式1.3声明权限的配置1.4如何向用户进行申请 二、内置http请求使用三、Axios请求使用&#xff08;建议&#xff09;3.1 使用方式一3.2 使用方式二&#xff08;建议&#xff09; 一、应用权限管理 应用权限保护…

git仓库服务器端损坏如何用本地code重新部署

文章目录 1. **在新服务器上创建一个新的 Git 仓库**2. **将本地仓库推送到新服务器**2.1. 添加新服务器为远程仓库2.2. 推送代码和历史记录2.3. 推送 tags&#xff08;如果有 tags&#xff09; 3. **在新服务器上拉取代码并部署**4. **确保修改记录和历史完整**5. **可选&…