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

第九章 软件BUG和管理

一、学习目的与要求

软件测试的目的就是为了发现软件BUG。通过本章的学习,应了解软件BUG的产生和影响,掌握软件开发过程中产生的BUG种类,掌握使BUG重现的技术,了解软件BUG报告单应该包括的主要内容及软件BUG的管理流程。

二、考核知识点与考核目标

(一)软件BUG的产生和影响(一般)

  1. 理解:软件BUG的产生和影响

产生

  1. 程序编写错误
  2. 需求变更过于频繁
  3. 软件的复杂度
  4. 交流不充分或者沟通出问题
  5. 测试人员的经验与技巧不足
  6. 时间过于紧迫
  7. 缺乏文档:
  8. 管理上的缺陷

影响:Bug会给用户或使用者带来相当大的麻烦,会给集体或者国家带来很大的经济损失。如:千年虫问题。

(二)软件BUG的种类(重点)

  1. 理解:需求阶段的BUG
  1. 模糊、不清晰的需求;
  2. 被忽略的需求;
  3. 相互冲突的需求;
  1. 理解:分析设计阶段的BUG
  1. 忽略设计;
  2. 混乱的设计;
  3. 模糊的设计;
  1. 理解:实现阶段的BUG
  1. 系统级别错误
    (1)消息错误
    (2)用户界面错误
    (3)遗漏的功能
    (4)内存溢出或者程序崩溃
    (5)其他实现错误
  2. 用户界面错误,可归纳为GUI错误。
  3. 遗漏的功能BUG(以输入框输入信息错误,程序抛出未异常为典型)
  4. 内存溢出或者程序崩溃BUG
  1. 理解:配置阶段的BUG
  1. 旧的代码覆盖了新的代码
  2. 测试服务器上的代码和实现人员本机最新代码版本不一致。
  3. 实现人员操作配置管理工具不正确引起的;
  4. 测试人员或者最终用户操作不正确。
  1. 理解:短视将来的BUG
  1. 为了节省硬件的设计
  1. 理解:静态文档的BUG

说明模糊、描述不完整和过期的都属于文档BUG。

  1. 说明模糊特指无充分的信息判断如何正确地处理事情;
  2. 描述不完整特指文档信息不足以支持用户完成某项工作;
  3. 过期的文档是没有及时更新过的、错误的文档。

(三)BUG报告单的提交和管理(一般)

  1. 理解:BUG报告单的内容
  1. 问题报告编号
  2. 程序名
  3. 版本标识:发布号和版本号。是用来识别被测的代码。
  4. 报告类型:描述了发现的问题类型。包括:编码错误、设计问题、建议、文档、硬件、质疑。
  5. 严重性:为问题严重程度评分。包含三个等级:三个等级:轻微的、严重的和致命的。
  6. 附件
  7. 问题概要:对问题进行描述,有助于评审突出的问题,并找到相应的问题报告。
  8. 问题能否重现。要多次测试看能否再次出现。
  9. 问题描述及如何重现。描述所有的步骤和现象,包括错误信息。一定要提交报告。
  10. 建议的改正措施
  11. 报告人
  12. 日期:指的是报告人员发现问题的日期。
  13. 功能域:对问题进行大体分类。
  14. 承办人
  15. 注释:程序员在这里简短地说明为什么要推迟处理,或说明是如何改正问题的。
  16. 状态。三个状态码:开放、关闭和已解决。
  17. 优先级。只由项目经理设置。
  18. 处理状态与处理版本。处理状态定义了问题的当前状态:
    <1>未解决:初始化状态或仍有冲突状态。
    <2>已改正
    <3>不能重现
    <4>暂缓:对存在的问题在下个版本改正。
    <5>符合设计
    <6>由报告人撤回
    <7>需要进一步信息
    <8>不同意建议
    <9>重复:关闭重复上报的缺陷。
    <7>需要进一步信息
    <8>不同意建议
    <9>重复:关闭重复上报的缺陷。
  19. 签名:签署以表明已经对改动进行了测试,)
    结果表示满意。
  20. 暂缓处理:对缺陷的推迟处理。

报告单特点:一份好的问题报告应是书面的、已编号的、简单的、易于理解的、可重现的、易读的和不做判断的。

  1. 理解:BUG的管理流程

(四)重现BUG的分析和方法(重点)

  1. 理解:重现BUG的分析和方法
  1. 寻找最关键的步骤
  2. 最大程度地提高程序运行的可见性
  3. 多尝试一些结果
  4. 查找后续错误
  5. 渐进地省略或改变步骤
  6. 在程序以前的版本中查找错误
  7. 查找配置依赖

三、习题

  1. BUG的来源及影响?

来源:

  1. 程序编写错误
  2. 需求变更过于频繁
  3. 软件的复杂度
  4. 交流不充分或者沟通出问题
  5. 测试人员的经验与技巧不足
  6. 时间过于紧迫
  7. 缺乏文档:
  8. 管理上的缺陷

影响:Bug会给用户或使用者带来相当大的麻烦,会给集体或者国家带来很大的经济损失

  1. BUG的种类有那些?并通过对实际案例的测试,分析一下找出的BUG都是在软件生命周期的哪个阶段出现的?

种类:

  1. 需求阶段的BUG
  2. 分析设计阶段的BUG
  3. 设计阶段的BUG
  4. 实现阶段的BUG
  5. 配置阶段的BUG
  6. 短视将来的BUG
  7. 静态文档的BUG
  1. BUG报告单应该包括哪些内容及特点?填写一份报告单给程序设计人员,听听他的意见。

报告单特点:一份好的问题报告应是书面的、已编号的、简单的、易于理解的、可重现的、易读的和不做判断的。

  1. 简述BUG的管理流程
  1. 提交bug:测试人员提交新的Bug入库,错误状态为New。
  2. 确认bug:高级测试人员验证错误,如果确认是错误,分配给相应的开发人员,设没置状态为Open。如果不是错误,则拒绝,设置为Declined(拒绝)状态。
  3. 查询并修复bug:开发人员查询状态为Open的Bug,如果不是错误,则置状态为Declined;如果是Bug则修复并置状态为Fixed。不能解决的Bug,要留下文字说明及保持Bug管理为Open状态。对于不能解决和延期解决的Bug,不能由开发人员自己决定,一般要通过会议(评审会)通过才能认可。
  4. 验证bug是否解决:测试人员查询状态为Fixed的Bug,然后验证Bug是否已解决,如解决置Bug的状态为Closed,如没有解决置状态为Reopen。
  1. 程序员在编写代码时会出错,把这种错误称之为BUG
  2. 下列BUG中最危险的是
    A需求阶段的BUG
    B配置阶段的BUG
    C设计阶段的BUG
    D分析阶段的BUG
  3. 下面有关软件缺陷的说法中错误的是______。
    A. 缺陷就是软件产品在开发中存在的错误
    B. 缺陷就是软件维护过程中存在的错误、毛病等各种问题
    C. 缺陷就是导致系统程序崩溃的错误
    D. 缺陷就是系统所需要实现的某种功能的失效和违背
  4. 简述BUG产生的原因
  1. 程序编写错误
  2. 需求变更过于频繁
  3. 软件复杂
  4. 交流不充分或沟通出现问题
  5. 测试人员的经验与技巧不足
  6. 时间过于紧迫,缺乏文档
  1. 简述制定测试计划的主要步骤

制定测试计划主要包括以下五个步骤∶

  1. 取得需求文档;
  2. 确定测试策略
  3. 确定测试系统;
  4. 预估测试工作量
  5. 准备并复查测试计划
  1. 简述软件缺陷(bug)与软件错误(error)的区别与联系

区别

  1. 软件缺陷是存在于软件之中的不希望或不可接受的偏差。而软件错误是由于人为的原因产生的错误
  2. 软件缺陷是在软件中抽象存在的,而错误是人为的问题
  3. 由于人为的错误,在设计或编码过程中的失误、导致了软件内部的缺陷,人为的错误是引发软件缺陷的直接原因,一个软件错误必然引发多个软件缺陷。
  1. 简述一般进行回归测试的步骤
  1. 建立测试基线,这是回归测试的前提·具体方式是将所有的测试用例放到配置库中,打上版本标记。
  2. 从基线测试用例库中提取合适的测试用例组成回归测试包。必要时进行开发和重新设计整理
  3. 在后续开发过程中,每次测试之前先运行回归测试包。保存在基线测试用例库中的测试用例可能是自动测试脚本,也有可能是测试用例的手工实现过程。
  1. 试论述在BUG重现时可能出现的问题及解决办法
  1. 竞争条件:出现竞争条件时,可以按照第一次运行时的节类,再将程序快速地测试一遍。如果还出现错误,就要试着减慢计算机的速度,或者在稍慢点的计算机上进行测试了
  2. 被遗忘的细节:很多时候测试是在没有制定测试计划的情况下进行的,在测试中发现了某个问题后却无法重现它,那么很可能是忘记了一些细节,因此应该努力回忆那写被遗忘的细节,这往往成为恢复BUG的关
  3. BUG造成的影响会导致其无法重现,如果发生这种情况,除非复原文件或将计算机恢复到正确状态。否则根本无法重现
  4. BUG依赖于内存,此时可以使用一些专用的内存监视软件
  5. 仅会在初次运行时出现的BUG"这种BUG危害并不大,只要在用户说明书中详细说明初始化数据前的操作步骤。这种BUG就可以避免
  6. 因数据错误导致的BUG:为重现这些错误,必须对程序进行相同的数据输入
  7. 间断性硬件故障,检查硬件
  8. BUG 依赖于时间,详细检查跨日、月、年等边界情况
  9. BUG 依赖于资源,必须重现资源请求受拒的情形
  10. 由于一些其他问题附带引起的BUG,在发现初始BUG后,就要重现它、 这样由它导致的后续BUG重现起来就要容易多了

相关文章:

第九章 软件BUG和管理

一、学习目的与要求 软件测试的目的就是为了发现软件BUG。通过本章的学习&#xff0c;应了解软件BUG的产生和影响&#xff0c;掌握软件开发过程中产生的BUG种类&#xff0c;掌握使BUG重现的技术&#xff0c;了解软件BUG报告单应该包括的主要内容及软件BUG的管理流程。 二、考核…...

大厂面试题-Java并发编程基础篇(二)

目录 一、wait和notify这个为什么要在synchronized代码块中&#xff1f; 二、ThreadLocal是什么&#xff1f;它的实现原理呢&#xff1f; 三、基于数组的阻塞队列ArrayBlockingQueue原理 四、怎么理解线程安全&#xff1f; 五、请简述一下伪共享的概念以及如何避免 六、什…...

测绘屠夫报表系统V1.0.0-beta

1. 简介 测绘屠夫报表系统&#xff0c;能够根据变形监测数据&#xff1a;水准、平面、轴力、倾斜等数据&#xff0c;生成对应的报表&#xff0c;生成报表如下图。如需进一步了解&#xff0c;可以加QQ&#xff1a;3339745885。视频教程可以在bilibili观看。 2. 软件主界面 3. …...

『力扣刷题本』:移除链表元素

一、题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输入&a…...

图像特征Vol.1:计算机视觉特征度量|第一弹:【纹理区域特征】

目录 一、前言二、纹理区域度量2.1&#xff1a;边缘特征度量2.2&#xff1a;互相关和自相关特征2.3&#xff1a;频谱方法—傅里叶谱2.4&#xff1a;灰度共生矩阵(GLCM)2.5&#xff1a;Laws纹理特征2.6&#xff1a;局部二值模式&#xff08;LBP&#xff09; 一、前言 &#x1f…...

day01:数据库DDL

一:基础概念 数据库:存储数据的仓库&#xff0c;数据是有组织的进行存储 数据库管理系统:操纵和管理数据库的大型软件 SQL&#xff1a;操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 关系图 二:数据模型 关系型数据库:建…...

9、定义错误页

在layouts目录下新建error.vue&#xff0c;可以通过layout函数使用布局文件&#xff0c;通过props: [“error”]能拿到错误信息对象。 <template><div>{{ error.statusCode }}: {{ error.message }}</div> </template><script> export default {…...

有关多线程环境下的Volatile、lock、Interlocked和Synchronized们

&#x1f4e2;欢迎点赞 &#xff1a;&#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff0c;赐人玫瑰&#xff0c;手留余香&#xff01;&#x1f4e2;本文作者&#xff1a;由webmote 原创&#x1f4e2;作者格言&#xff1a;新的征程&#xff0c;我们面对的不仅…...

spring boot利用redis作为缓存

一、缓存介绍 在 Spring Boot 中&#xff0c;可以使用 Spring Cache abstraction 来实现缓存功能。Spring Cache abstraction 是 Spring 框架提供的一个抽象层&#xff0c;它对底层缓存实现&#xff08;如 Redis、Ehcache、Caffeine 等&#xff09;进行了封装&#xff0c;使得在…...

Android Studio 查看Framework源码

1、背景 安卓系统源码量很庞大&#xff0c;选择好的开发工具和方式去开发可以提升开发效率&#xff0c;常用的开发工具有Source Insight 、Visual Studio Code、Android Studio&#xff0c;vscode适合C和C代码开发&#xff0c;java层代码无法跳转和提示&#xff0c;因此&#…...

FileInputStream文件字节输入流

一.概念 以内存为基准&#xff0c;把磁盘文件中的数据以字节形式读入内存中 二.构造器 public FileInputStream(File file) public FileInputStream(String pathname) 这两个都是创建字节输入流管道与源文件接通 三.方法 public int read() :每次读取一个字节返回&#xff0c;如…...

【Qt】窗口和对话框区别、主窗口和二级窗口区别、QMainWindow和QDialog区别

窗口和对话框&#xff08;Window and Dialog Widgets&#xff09; 未嵌入在父界面中的界面称为窗口。&#xff08;通常&#xff0c;窗口具有边框和标题栏&#xff0c;尽管也可以使用合适的窗口标志创建没有此类标志的窗口&#xff09;。 在Qt中&#xff0c;QMainWindow和QDial…...

Python参数种类介绍

Python参数种类介绍 相比于一些其他编程语言&#xff0c;Python提供了更多的参数种类选项。这是Python的一大特点&#xff0c;使用不同的参数类型&#xff0c;可以提高函数的可读性和可维护性。例如&#xff0c;使用关键字参数可以使函数调用更加清晰&#xff0c;不需要记住参数…...

react事件机制

React 事件机制 React的事件机制是React框架中非常重要的一部分&#xff0c;用于处理用户交互和用户界面上的事件。React的事件机制在底层使用了虚拟DOM以及合成事件来提高性能和跨浏览器兼容性。以下是关于React事件机制的详细信息&#xff1a; 合成事件&#xff08;Syntheti…...

JAVA删除excel指定列

首先POI没有提供删除列的API&#xff0c;所以就需要用其他的方式实现。 在 java - Apache POI xls column Remove - Stack Overflow 这里找到了实现方式&#xff1a; 先将该列所有值都清空&#xff0c;然后将该列之后的所有列往前移动。 下面的工具类中 deleteColumns(Inpu…...

Netty编码器和解码器

文章目录 一、Decoder原理与实践1、ByteToMessageDecoder解码器2、自定义整数解码器1&#xff09;常规方式2&#xff09;ReplayingDecoder解码器 3、分包解码器3、MessageToMessageDecoder解码器 二、Netty内置的Decoder1、LineBasedFrameDecoder解码器2、DelimiterBasedFrameD…...

大语言模型(LLM)综述(三):大语言模型预训练的进展

A Survey of Large Language Models 前言4. PRE-TRAINING4.1数据收集4.1.1 数据源4.1.2 数据预处理4.1.3 预训练数据对LLM的影响 4.2 模型架构4.2.1 典型架构4.2.2 详细配置4.2.3 预训练任务4.2.4 解码策略4.2.5 总结和讨论 4.3 模型训练4.3.1 优化设置4.3.2 可扩展的训练技术 …...

如何在Node.js中使用环境变量或命令行参数来设置HTTP爬虫ip?

首先&#xff0c;定义问题&#xff1a;在 Node.js 应用程序中&#xff0c;我们可以通过环境变量或命令行参数来设置HTTP爬虫ip&#xff0c;以便在发送请求时使用这些HTTP爬虫ip。 亲身经验&#xff1a;我曾经需要为一个项目设置HTTP爬虫ip&#xff0c;以便在发送请求时使用这些…...

VMware打开共享虚拟机后找不到/mnt/hgfs/文件夹,以及不能拖拽/复制粘贴等操作,ubuntu不能安装VMware tools

问题原因 我的问题出现原因是&#xff0c;安装ubuntn虚拟机的时候VMware tools没有安装好&#xff0c;需要重新安装&#xff0c;但安装选项是暗的&#xff0c;不能操作。 类似这种情况&#xff0c;虚拟机开启时也是&#xff0c;因为我虚拟机已经装好了&#xff0c;开启时是亮…...

pytorch 入门 (五)案例三:乳腺癌识别识别-VGG16实现

本文为&#x1f517;小白入门Pytorch内部限免文章 &#x1f368; 本文为&#x1f517;小白入门Pytorch中的学习记录博客&#x1f366; 参考文章&#xff1a;【小白入门Pytorch】乳腺癌识别&#x1f356; 原作者&#xff1a;K同学啊 在本案例中&#xff0c;我将带大家探索一下深…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...