当前位置: 首页 > news >正文

软件测试中的BUG

文章目录

  • 软件测试的生命周期
  • Bug
    • Bug 的概念
    • 描述 Bug 的要素
    • 案例
    • Bug 级别
    • Bug 的生命周期
    • 与开发产生争执怎么办?【高频面试题】
      • 先检查自身,Bug 是否描述的不清楚
      • 站在用户角度考虑并抛出问题
      • Bug 的定级要有理有据
      • 提⾼自身技术和业务水平,做到不仅能提出问题,还能构给出解决的思路或方案

软件测试的生命周期

软件测试贯穿软件的整个生命周期。

软件测试的生命周期是指测试流程,这个流程是按照⼀定顺序执行的⼀系列特定的步骤,去保证产品质量符合需求。在软件测试生命周期流程中,每个活动都按照计划的系统的执行。每个阶段有不同的⽬标和交付产物。

各阶段具体内容:

  1. 需求分析:
    1. **用户角度:**评估软件需求是否合理,确保满足用户的真实需求
    2. **技术角度:**评估需求在技术上是否可行,是否还有优化空间
    3. **测试角度:**检查是否存在业务逻辑错误、冗余、冲突等问题
  2. 测试计划:
    1. **制定测试计划:**确定测试的时间表,包括什么时候开发测试、什么时候结束测试、耗时多久
  3. 测试设计与开发:
    1. 参考需求⽂档、技术⽂档等编写测试用例
    2. 写测试⽂档,明确标注使用到的测试方法,测试工具,测试形式等等
  4. 测试执行:
    1. 充分利用测试用例和测试工具对项⽬尽可能做到全方⾯的测试覆盖
  5. 测试评估:
    1. 测试是否通过,本次测试是否有遗留的 Bug,最终测试人员需要产出⼀个测试报告
  6. 上线:
    1. 项⽬测试结束后,将项⽬发布到线上环境
    2. 测试人员需要跟踪上线,并测试线上环境下软件的运行是否正确
  7. 运行维护:
    1. 测试人员需要参与项⽬的实施工作。测试人员对项⽬产品的业务和操作⾮常了解,加上测试人员的沟通表达能⼒⼀般都⽐较强,所以测试人员可以参与用户使用软件的培训,在试运行项⽬时收集问题并及时反馈给相关负责人

Bug

Bug 的概念

定义:⼀个计算机 Bug 指在计算机程序中存在的⼀个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault),这些 Bug 使程序⽆法正确的运行。Bug 产生于程序的源代码或者程序设计阶段的疏忽或者错误。准确的来说:

  1. 当且仅当**规格说明(软件需求文档)**是存在的并且正确,程序与规格说明之间的不匹配才是错误。
  2. 当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。

描述 Bug 的要素

为什么描述 Bug 还有要素要求?因为人们在编写⽂档的时候,经常会出现自己想表达的内容和写出来的内容南辕北辙的现象。

例如,Bug 描述为:浏览器打开链接失败。该描述下,没有明确说明哪个浏览器,失败的具体表现是什么,对于开发人员来说⽆法捕捉到更多有效的信息,会造成沟通效率低下,工作质量低下等问题。

**描述Bug的基本要素:问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果。**
  1. 问题出现的版本:

开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障,并且版本的标识也有利于统计和分析每个版本的质量。

  1. 问题出现的环境:

环境分为硬件环境和软件环境,如果是 web 项目,需要描述浏览器版本,客户机操作系统等;如果是 app 项目,需要描述机型、分辨率、操作系统版本等。详细的环境描述有利于故障的定位。

  1. 问题出现的步骤:

描述问题重现的最短步骤。

  1. 预期结果:

要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需求提出的故障,能写明需求的来源是最好的。

要相信:测试人员是最懂需求的。

  1. 实际结果:

描述问题实际出现的现象。

注意:

  • 某些公司会有一些其他的要求,例如故障的分类:功能故障,界面故障,兼容性故障等。有些有优先级的分类,严重影响测试需要开发人员优先修改的,可以设置优先级为高。
  • 不要把多个 Bug 放到一起:在无法确认是同一段代码造成的故障时,不要将 Bug 放在一起提交。

案例

  1. 问题出现的版本:⾕歌浏览器版本 133.0.6943.127(正式版本) (64 位)
  2. 问题出现的环境:Windows 11 专业版
  3. 问题出现的步骤:
    1. 打开谷歌浏览器
    2. 输入网址:https://www.101eduyun.com/sunrise/login/login.do
    3. 等待页面第一个背景图上的二维码渲染完成
  4. 预期结果:小程序二维码不会被登录模块遮挡,二维码可以正常扫描
  5. 实际结果:小程序二维码被登录模块遮挡,二维码不可以正常扫描

Bug 级别

通过定义 Bug 的级别,能够明确看出问题的严重程度。工作中开发人员通常需要按照 Bug 的级别来分配优先级来处理 Bug,除此之外,通过 Bug 级别也能够体现出开发人员的开发质量。

**Bug 级别的定义每个公司都不一致,在定义级别之前需要查看公司规范。**⼀般分为:崩溃、严重、⼀般、次要。

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

Bug 的生命周期

测试人员在执行测试的过程中如有发现 Bug,需要在对应的 Bug 管理平台来创建 Bug(Bug 生命起源),创建好的 Bug 需要被开发人员修复,以及测试人员的持续跟踪和测试。

  • New:新发现的 Bug,未经评审决定是否指派给开发人员进行修改。
  • Open:确认是 Bug,并且认为需要进行修改,指派给相应的开发人员。
  • Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
  • Rejected:如果认为不是 Bug,则拒绝修改。
  • Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
  • Closed:修改状态的 Bug 经测试人员的回归测验,验证通过则关闭 Bug。
  • Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
  • 无效的Bug:open->closed open-rejected-closed

与开发产生争执怎么办?【高频面试题】

在测试工作中,最常遇到的是测试人员和开发人员的 PK,测试经理还会和项⽬经理、产品经理的 PK 进度、质量。作为⼀名测试人员,要理性处理与开发人员的冲突。

先检查自身,Bug 是否描述的不清楚

如果能正确地、⾼质量地录入⼀个 Bug,那么基本上已经成功地与开发人员沟通了⼀大半的关于 Bug 的信息。但是总会有“书难达意”的时候,这时就需要测试人员主动与开发人员进行沟通了。

如果测试人员发现在写完⼀个缺陷后,好像还有很多关于 Bug 的信息没有表达出来,或者很难用书⾯语言表达出来时,就应该在提交 Bug 后,⻢上找相关的程序员解释刚才录入的 Bug,确保程序员明⽩ Bug 描述的意思,而不要等到开发人员找自己了解更多的信息。

站在用户角度考虑并抛出问题

应该让开发人员了解到 Bug 对用户可能造成的困扰,这样才能促使开发人员更加积极地、⾼质量地修改 Bug。在争执时,可以问⼀句:如果你是用户,你可以接受么?

Bug 的定级要有理有据

Bug 定级时,不仅要参考 Bug 定级描述文档,还要考虑 Bug 是否会影响到流程,往往用户的 Bug 级别和我们的是有区别的,需站在用户的角度定考虑定位级别。

提⾼自身技术和业务水平,做到不仅能提出问题,还能构给出解决的思路或方案

能够提出问题,并给出解决问题的思路或方案,这样会让人更加信服。

在工作中,资深测试工程师和初级测试工程师提出的同⼀个 Bug,两者的结果完全不同,最大的差别是资深测试工程师往往会提出解决方案。而⻓此以往,权威性逐渐的建立起来,开发人员看到 Bug 的第⼀反应,就是这是⼀个 Bug,而不是这是⼀个 Bug吗?

注意:可以给出解决方案,但是不能喧宾夺主,命令式让开发人员按照自己的想法来修改。

相关文章:

软件测试中的BUG

文章目录 软件测试的生命周期BugBug 的概念描述 Bug 的要素案例Bug 级别Bug 的生命周期与开发产生争执怎么办?【高频面试题】先检查自身,Bug 是否描述的不清楚站在用户角度考虑并抛出问题Bug 的定级要有理有据提⾼自身技术和业务水平,做到不仅…...

LabVIEW基于IMAQ实现直线边缘检测

本程序基于 NI Vision Development 模块,通过 IMAQ Find Straight Edges 函数,在指定 ROI(感兴趣区域) 内检测多条直线边缘。用户可 动态调整检测参数 或 自定义ROI,实时观察识别效果,适用于 高精度视觉检测…...

C#:LINQ学习笔记01:LINQ基础概念

一、LINQ 架构体系 1. LINQ 的核心思想 统一查询模型:对对象、XML、数据库等不同数据源使用一致的语法。强类型检查:编译时类型安全,减少运行时错误。 2. 核心组件 技术数据源典型场景LINQ to Objects内存集合 (IEnumerable)过滤/排序集合…...

15Metasploit框架介绍

metasploit目录结构 MSF ——the metasploit framework 的简称。MSF高度模块化,即框架结构由多个module组成,是全球最受欢迎的工具 是一筐开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行sheellcode,并且保持…...

NLP如何训练AI模型以理解知识

一、自然语言处理(NLP)的定义与核心目标 1. 什么是自然语言处理? NLP是计算机科学与人工智能的交叉领域,旨在让机器具备以下能力: • 理解:解析人类语言(文本或语音)的语法、语义和…...

【树莓派学习】树莓派3B+的安装和环境配置

【树莓派学习】树莓派3B的安装和环境配置 文章目录 【树莓派学习】树莓派3B的安装和环境配置一、搭建Raspberry Pi树莓派运行环境1、下载树莓派镜像下载器2、配置wifi及ssh3、SSH访问树莓派1)命令行登录2)远程桌面登录3)VNC登录(推…...

python连接neo4j的方式汇总

python连接neo4j的方式汇总 1.官方驱动(neo4j)特点代码示例 2. 全功能ORM(py2neo)特点代码示例 3. 领域驱动设计框架(neomodel-odm)特点代码示例 4. 异步高性能驱动(asyncneo4j)特点…...

Graph RAG 迎来记忆革命:“海马体”机制让问答更精准!

随着生成式 AI 技术的快速发展,RAG(Retrieval-Augmented Generation)和 Agent 成为企业应用大模型的最直接途径。然而,传统的 RAG 系统在准确性和动态学习能力上存在明显不足,尤其是在处理复杂上下文和关联性任务时表现不佳。近期,一篇论文提出了 HippoRAG 2,这一新型 R…...

Spring(三)容器-注入

一 自动注入Autowire 代码实现: package org.example.spring01.service;import org.springframework.stereotype.Service;Service public class UserService {}package org.example.spring01.controller;import lombok.Data; import lombok.ToString; import org.…...

剧本杀门店预约小程序:市场发展下的刚需

在剧本杀爆发式增长下,门店数字化运营的模式正在市场中逐渐展开,线下门店的竞争方向已发生了全新转变! 目前,数字化发展已经成为了消费市场的刚需,利用网络的便捷性提高服务,优化运营,提高自身…...

stable-diffusion-webui 加载模型文件

背景 stable-diffusion-webui 安装完毕后,默认的模型生成的效果图并不理想,可以根据具体需求加载指定的模型文件。国内 modelscope 下载速度较快,以该站为例进行介绍 操作步骤 找到指定的模型文件 在 https://modelscope.cn/models 中查找…...

Ubuntu20.04双系统安装及软件安装(十一):向日葵远程软件

Ubuntu20.04双系统安装及软件安装(十一):向日葵远程软件 打开向日葵远程官网,下载图形版本: 在下载目录下打开终端,执行: sudo dpkg -i SunloginClient(按tab键自动补全)出现报错: …...

华为云 | 快速搭建DeepSeek推理系统

DeepSeek(深度求索)作为一款国产AI大模型,凭借其高性能、低成本和多模态融合能力,在人工智能领域崛起,并在多个行业中展现出广泛的应用潜力。 如上所示,在华为云解决方案实践中,华为云提供的快速…...

printf 与前置++、后置++、前置--、后置-- 的关系

# 前置和前置-- 先看一段代码 大家是不是认为printf输出的是 2 3 3 2 1 1 但是实际输出的是 3 3 3 1 1 1 在这两行printf函数代码里,编译器会先计算 a 和 --a 的值,然后再 从右向左 开始输出。 printf函数中,如果有多个…...

centos7操作系统下安装docker,及查看docker进程是否启动

centos7下安装docker,需要用到的yun命令 (yum命令用于添加卸载程序) 1.设置仓库: yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 2.安装 Docker Engine-Community yum in…...

【向量数据库Weaviate】 和Elasticsearch的区别

Weaviate 和 Elasticsearch 是两种不同类型的数据库,设计目标和应用场景有显著差异。以下是它们的核心区别和适用场景的详细对比: 1. 设计目标与核心能力 维度WeaviateElasticsearch核心能力向量数据库 图数据库(语义搜索优先)全…...

深度学习-大白话解释循环神经网络RNN

目录 一、RNN的思想 二、RNN的基本结构 网络架构 ​关键点 三、RNN的前向传播 四、RNN的挑战:梯度爆炸和梯度消失 问题分析 ​示例推导 五、LSTM:RNN的改进 核心组件 ​网络架构 3. LSTM 的工作流程 4. 数学公式总结 5. LSTM 的优缺点 ​优点 ​缺点 6. LSTM 的…...

python3.13安装教程【2025】python3.13超详细图文教程(包含安装包)

文章目录 前言一、python3.13安装包下载二、Python 3.13安装步骤三、Python3.13验证 前言 本教程将为你详细介绍 Python 3.13 python3.13安装教程,帮助你顺利搭建起 Python 3.13 开发环境,快速投身于 Python 编程的精彩实践中。 一、python3.13安装包下…...

RocketMQ的运行架构

目录 1. 核心组件(1) NameServer(2) Broker(3) Producer(4) Consumer 2. 消息流转流程3. 高可用机制4. 扩展性与负载均衡5.容错机制5. 特殊功能支持6. 典型部署架构总结 RocketMQ 是一款高性能、高可靠的分布式消息中间件,其运行架构设计为分布式、可扩展、高可用的…...

SLAM文献之-DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras

DROID-SLAM 是一种结合深度学习与传统视觉SLAM技术的先进算法,其核心目标是通过端到端可训练的深度神经网络来实现高精度的相机位姿估计和稠密三维重建。与传统SLAM方法不同,DROID-SLAM采用深度学习网络来估计深度信息,提供更高的精度与鲁棒性…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

LangFlow技术架构分析

🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...