当前位置: 首页 > 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采用深度学习网络来估计深度信息,提供更高的精度与鲁棒性…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...

在Zenodo下载文件 用到googlecolab googledrive

方法&#xff1a;Figshare/Zenodo上的数据/文件下载不下来&#xff1f;尝试利用Google Colab &#xff1a;https://zhuanlan.zhihu.com/p/1898503078782674027 参考&#xff1a; 通过Colab&谷歌云下载Figshare数据&#xff0c;超级实用&#xff01;&#xff01;&#xff0…...