【软件测试】bug 篇

本章思维导图:

1.  软件测试的生命周期

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

流程阶段需求分析测试计划测试设计/开发测试执行测试评估上线运行维护
具体工作内容1. 阅读需求文档
2. 标记可测试需求
3. 确定测试类型
1. 制定测试范围
2. 选择测试工具
3. 分配资源
1. 编写测试用例
2. 准备测试数据
3. 开发自动化脚本
1. 执行测试用例
2. 记录结果
3. 提交缺陷
1. 统计缺陷
2. 计算覆盖率
3. 编写报告
1. 部署软件
2. 验证功能
3. 监控运行
1. 收集反馈
2. 修复缺陷
3. 性能优化

其中,上线流程并不是一步就完成的,而是分为多步进行, 环境分为线上环境线下环境

  • 线下环境:开发和测试人员测试使用 
  • 线上环境:用户使用

线下环境测试完成后,就需要进行上线,上线又分为 沙盒测试、小流量、全流量、全线上

  • 沙盒测试:企业内部的员工使用
  • 小流量:只有一部分的用户能够使用
  • 全流量:大部分用户能够使用
  • 全线上:所有线上的用户都能够使用
测试/发布类型沙盒测试 (Sandbox Testing)小流量 (Canary Release)全流量 (Full Release)全线上 (Production)
定义在隔离的测试环境中模拟生产环境进行测试将新版本先发布给少量真实用户进行验证新版本对所有用户开放,但尚未完全取代旧版本新版本已完全取代旧版本,成为线上唯一版本
具体工作内容1. 搭建与生产隔离的测试环境
2. 模拟用户请求和数据
3. 验证核心功能与异常场景
1. 选择小部分用户或流量(如1%-5%)
2. 监控用户行为和数据指标
3. 快速回滚发现问题
1. 逐步扩大用户覆盖范围(如50%-100%)
2. 持续监控系统稳定性
3. 与旧版本并行运行验证
1. 完全下线旧版本
2. 全量用户使用新版本
3. 长期监控和优化
目的提前发现功能或性能问题,避免影响真实用户降低风险,通过真实用户反馈验证版本稳定性确保新版本在大规模流量下的稳定性完成版本迭代,进入稳定运维阶段
风险等级无用户影响低风险(影响范围可控)中风险(需快速响应问题)高风险(需确保100%稳定性)
适用场景新功能开发完成后内部验证重大更新或架构改动前的验证确认小流量无问题后的全面推广最终稳定版本的长期运行

2.  Bug

2.1  bug 的概念

「Debug」的由来

        计算机史上第一个著名的“Bug”诞生于1947年9月9日,哈佛大学的Grace Hopper团队在调试马克II计算机时,发现一只飞蛾卡死在继电器中导致机器故障。他们幽默地将这只蛾子贴在日志本上,标注"First actual case of bug being found",从此"bug"成为程序缺陷的代名词,"debug"则指排除故障的过程。这个真实的小故事不仅创造了计算机领域的经典术语,更生动展现了工程师们解决问题的智慧——再复杂的技术问题,往往源于最意想不到的细节。如今保存在史密森尼博物馆的那只飞蛾,成为了计算机发展史上最有趣的文物之一。

定义:在软件测试中,Bug(缺陷) 是指软件系统中存在的任何不符合预期行为或需求的问题。Bug 可能导致功能失效、性能下降、安全漏洞或用户体验不佳。

简单理解:任何与需求文档、设计规范或用户期望不一致的问题,均可称为 Bug。

就比如说当需要一个列表功能,其中有几千上万个选项
但是需要用户一个一个往下翻才能找到想要的,而不能直接检索关键字来确定范围

此时该功能和用过需求有了冲突,此时就可以提一个 bug

当我们进行测试的时候,我们不需要过分关注程序里的代码是如何写的,重点关注的是该程序的输入输出是否符合我们的预期

例如一个排序程序,里面的实现方式可能是冒泡排序,快速排序,归并排序........

不用管,只需要看无序数组经过程序运行后是否变得有序就行

2.2  描述 bug 的要素

        为什么描述 bug 还要有要求?
        在心理学上说,在编写文档是,人们想要表达的和实际书写的文档往往会南辕北辙。而不清楚,不确定的描述更是可能误导开发人员,倒是沟通低效,工作质量低。因此,一个清晰、完整的 Bug 描述能帮助开发人员快速定位修复问题。

描述 bug 的基本要素:

问题标题、问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果

拿浏览器打开同一个网址来举例:

同一个网址,某些浏览器打开会出现页面显示错误,会出现图片错位的情况,以这个 bug 来描述

问题标题:浏览器兼容性问题导致页面图片错位

问题出现的版本:网站版本 v2.1.0(举例)

问题出现的环境:Safari 16.6 / Edge 117(异常环境)  Chrome 118 / Firefox 118 (正常环境)

问题出现的步骤:

  1. 使用 Safari 16.6 或 Edge 117 浏览器。

  2. 访问网址:https://example.com/product/123

  3. 滚动页面至「产品详情」模块。

预期结果:图片应与文字描述对齐,布局符合设计稿

实际结果:图片向右偏移 50px,与文字重叠

2.3  bug 级别

级别类型描述示例
Critical严重程度 (Severity)导致系统崩溃、数据丢失或核心功能完全不可用支付失败但扣款成功、数据库数据损坏
Major严重程度 (Severity)重要功能异常,但系统可降级运行商品搜索返回错误结果、图片错位影响操作
Minor严重程度 (Severity)非核心功能问题,用户体验受损字体颜色不符设计稿、次要按钮无响应
Trivial严重程度 (Severity)微小瑕疵,不影响功能控制台无关警告、拼写错误
P1优先级 (Priority)必须立即修复(阻塞开发/上线)所有用户无法登录、关键业务流程中断
P2优先级 (Priority)高优先级,需在当前版本修复部分用户遭遇数据展示错误(如浏览器兼容性问题)
P3优先级 (Priority)可延期至后续版本修复低频率UI错位,不影响核心功能
P4优先级 (Priority)修复成本高于收益,可能永不修复IE11浏览器下的边缘样式问题

2.4  bug 的生命周期

状态描述常见操作
New测试人员新发现的缺陷,尚未分配提交Bug报告
Assigned缺陷已分配给开发人员,等待修复开发认领任务
In Progress开发人员正在修复中代码修改、本地测试
Fixed开发完成并部署到测试环境,等待验证标记为“已修复”
Verified测试人员确认缺陷已解决回归测试通过
Closed缺陷完全关闭,流程结束归档至历史记录
Rejected开发认为不是缺陷(如需求理解错误)需产品经理仲裁
Deferred暂不修复(如低优先级、下个版本处理)记录延期原因
Reopened验证时问题复现,重新激活(从Verified/Fixed回到Assigned)

重新分配开发

流程图:

2.5  与开发发生争执应该怎么做

1) 先检查自己,是否 bug 描述不清楚

2) 站在用户的角度考虑并抛出问题 ---- 功能正常只是测试的一部分,还要考虑用户的感受

3) bug 定级需要有理有据 ---- bug 级别描述文档

4) 提高业务水平,做到不仅能够提出问题,最好也能够提出解决方案

举例:双十一活动

测试新手:双十一活动时间边界值不符合预期
测试大牛:  双十一活动时间边界值不符合预期  修改建议:.......

注意,不要以命令式的口吻去告诉开发人员,术业有专攻,建议只是建议

5)  bug 评审

如果确实是 bug ,但不能友好沟通,就召开 bug 评审

Bug评审是软件开发过程中由跨职能团队共同评估、分类和处理缺陷的关键环节,其核心目标是高效分配资源并确保产品质量。

bug 评审需要三个代表参加:测试代表、开发代表、产品代表

bug 评审主要解决两个问题

  • 决定如何处理 bug
  • 分析缺陷产生的原因,并找出预防的对策

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

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

相关文章

「Unity3D」图片导入选项取消Read/Write,就无法正确显示导入大小,以及Addressable打包无法正确显示的问题

如果在Edit -> Project Settings -> Editor中的“Load texture data on demand”勾选,就会让图片导入设置中,不勾选Read/Write,就无法正确显示纹理的大小数字。 更进一步的问题是,使用Addressable打包的时候, 如…

《MySQL从入门到精通》

文章目录 《MySQL从入门到精通》1. 基础-SQL通用语法及分类2. 基础-SQL-DDL-数据库操作3. 基础-SQL-DDL-表操作-创建&查询4. 基础-SQL-DDL-数据类型及案例4.1 数值类型4.2 字符串类型4.3 时间和日期类型 5. 基础-SQL-DDL-表操作-修改&删除5.1 DDL-表操作-修改5.2 DDL-表…

Vccaux_IO在DDR3接口中的作用

一、Vccaux_IO在DDR3接口中的作用 1.vccaux_io通常为FPGA的IO bank的辅助电源,用于支持特定电压的IO标准 2.在DDR3接口中,FPGA的IO bank需要DDR3芯片的电压(1.5v/1.35v)匹配 3.Vccaux_IO用于为FPGA的DDR3接口I/O Bank供电,其电压值、噪声和稳…

深入理解Apache Kafka

引言 在现代分布式系统架构中,中间件扮演着至关重要的角色,它作为系统各组件之间的桥梁,负责处理数据传递、消息通信、负载均衡等关键任务。在众多中间件解决方案中,Apache Kafka凭借其高吞吐量、低延迟和可扩展性,已…

【NLP】 21. Transformer整体流程概述 Encoder 与 Decoder架构对比

1. Transformer 整体流程概述 Transformer 模型的整个处理流程可以概括为从自注意力(Self-Attention)到多头注意力,再加上残差连接、层归一化、堆叠多层的结构。其核心思想是利用注意力机制对输入进行并行计算,从而避免传统 RNN …

路由器端口映射的意思、使用场景、及内网ip让公网访问常见问题和解决方法

一、端口映射是什么意思 端口映射是将内网主机的IP地址端口映射到公网中,内部机器提供相应的互联网服务。当异地用户访问该这个端口时,会自动将请求映射到对应局域网内部的机器上。 二、端口映射常见使用场景 1,远程访问需求。当有…

GEO全域优化白皮书:盈达科技如何打造AI生态中的认知护城河

副标题:让内容被AI优先引用,占领生成式引擎的“主屏入口” 一、GEO:生成式引擎时代的内容占位权之战 随着ChatGPT、Kimi、DeepSeek等生成式AI快速成为信息获取的主流方式,搜索逻辑正在根本性改变:从“网页排名”转向“…

如何用DeepSeek大模型提升MySQL DBA工作效率?实战案例解析

如何用DeepSeek大模型提升MySQL DBA工作效率?实战案例解析 MySQL DBA(数据库管理员)的工作涉及数据库监控、SQL优化、故障排查、备份恢复等复杂任务,传统方式依赖手动操作和经验判断,效率较低。而DeepSeek大模型可以结…

系统设计思维的讨论

我们经常说自己熟悉了spring,能够搭建起一个项目基本框架,并且在此之上进行开发,用户or客户提出需求碰到不会的百度找找就可以实现。干个四五年下一份工作就去面试架构师了,运气好一些可能在中小公司真的找到一份架构师、技术负责…

项目部署-(二)Linux下SpringBoot项目自动部署

一、项目部署架构 二、项目部署环境 192.168.138.100(服务器A): -Nginx :部署前端项目、配置反向代理 -MySQL:主从复制结构中的主库 192.168.138.101(服务器B): -JDK:运行Java项目 -Git:版本控制工具 -Maven:项目构建…

【LeetCode 热题 100】哈希 系列

📁1. 两数之和 本题就是将通过两层遍历优化而成的,为什么需要两层遍历,因为遍历 i 位置时,不知道i-1之前的元素是多少,如果我们知道了,就可以通过两数相加和target比较即可。 因为本题要求返回下标&#xf…

【Kubernetes基础】--查阅笔记1

目录 Kubernetes 是什么为什么要用 KubernetesKubernetes 概念MasterNodePodLabelReplication ControllerDeploymentHorizontal Pod AutoscalerStatefulSetService服务发现机制 JobVolumePersistent VolumeNamespaceConfigmap Kubernetes 是什么 Kubernetes是一个开放的开发平…

卷积神经网络CNN到底在卷些什么?

来源: 卷积神经网络(CNN)到底卷了啥?8分钟带你快速了解!_哔哩哔哩_bilibili卷积神经网络(CNN)到底卷了啥?8分钟带你快速了解!共计2条视频,包括:卷…

Axios 的 POST 请求:QS 处理数据的奥秘与使用场景解析

在现代前端开发中,Axios 已经成为了进行 HTTP 请求的首选库之一,它的简洁易用和强大功能深受开发者喜爱。当使用 Axios 进行 POST 请求时,我们常常会遇到一个问题:是否需要使用 QS 库来处理请求数据?什么时候又可以不用…

java面试题带答案2025最新整理

文章目录 一、java面试题集合框架1. 请简要介绍 Java 集合框架的体系结构2. ArrayList 和 LinkedList 的区别是什么3. HashMap 的工作原理是什么,它在 JDK 7 和 JDK 8 中有哪些不同4. 如何解决 HashMap 的线程安全问题5. TreeSet 是如何保证元素有序的 二、java面试…

4.B-树

一、常见的查找方式 顺序查找 O(N) 二分查找 O(logN)(要求有序和随机访问) 二叉搜索树 O(N) 平衡二叉搜索树(AVL树和红黑树) O(logN) 哈希 O(1) 考虑效率和要求而言,正常选用 平衡二叉搜索树 和 哈希 作为查找方式。 但这两种结构适合用于…

CTF--shell

一、原题 (1)提示: $poc"a#s#s#e#r#t";$poc_1explode("#",$poc);$poc_2$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET[s]) (2)原网页:一片空白什么都…

基于51单片机的正负5V数字电压表( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的正负5V数字电压表( proteus仿真程序设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0101 1. 主要功能: 设计一个基于51单片机数字电压表 1、能够…

hive数仓要点总结

1.OLTP和OLAP区别 OLTP(On-Line Transaction Processing)即联机事务处理,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用…

【实战手册】8000w数据迁移实践:MySQL到MongoDB的完整解决方案

🔥 本文将带你深入解析大规模数据迁移的实践方案,从架构设计到代码实现,手把手教你解决数据迁移过程中的各种挑战。 📚博主其他匠心之作,强推专栏: 小游戏开发【博主强推 匠心之作 拿来即用无门槛】文章目录 一、场景引入1. 问题背景2. 场景分析为什么需要消息队列?为…