软件测试基础之软件缺陷处理

一、什么是缺陷

不满足用户确定需求、影响软件功能实现的问题、故障
缺陷就是人们通常所说的bug。

ex.一下哪一种选项不属于软件缺陷___。
A.软件没有实现产品规格说明所要求的功能
B.软件中出现了产品规格说明不应该出现的功能
C.软件实现了产品规格说明没有提到的功能
D.软件实现了产品规格说明书所要求的功能但因受性能限制而未考虑可移植性问题

答案:D

二、缺陷的识别

缺陷的产生原因

  • 人员(用户、设计、开发、测试、技术支持等)之间的沟通交流不够,交流上有误解或者根本不进行交流
  • 文档不完善甚至没有文档(尤其是国内中小软件企业)
  • 需求不断电变化
  • 参与人员技术能力上的局限
  • 程序设计本身有误
  • 软件复杂度大,缺陷很难避免(例如Windows、Word)
  • 工期短,任务重,时间压力大
  • 软件开发工具与系统软硬件的支持有局限

判断缺陷的依据

  • 通过参考文档来确认缺陷
  • 需求规格说明书
  • 概要设计、详细设计
  • 用户手册
  • ...
  • 通过了解软件行业标准、行业背景(或参考同类典型软件)来发现缺陷
  • 通过沟通来确认和识别缺陷(问开发人员、问需求人员、问用户... ...)

三、再现与优化缺陷

再现(又叫重现)与优化缺陷的必要性
优化缺陷并不是指优化缺陷本身,而是优化缺陷的再现步骤

为什么要再现与优化缺陷?
关于软件中“随机”出现的缺陷如何处理?

再现与优化缺陷的方法

  • 深入熟悉需求,从需求本身出发
  • 熟悉程序设计、从设计开发着手
  • 熟悉常用测试方法、手段、典型套路
  • 同一个缺陷用不同测试过程(含步骤、数据)多次验证,分析缺陷的现象与成因,找出规律和最简实现过程
  • 查找依赖关系和竞争条件
  • 不断积累处理缺陷的经验

四、怎样有效记录缺陷

保证重现缺陷

判断一个缺陷报告撰写好坏的简单方法:让非缺陷报告撰写者(技术人员)依据缺陷报告重现缺陷,如果能简单、迅速的重现缺陷,表明缺陷报告较好

分析故障——使用最少步骤重现缺陷

减少开发人员重复缺陷的时间
使开发人员更准确的定位缺陷

包含所有重现缺陷的必要步骤

测试人员假定常用的操作步骤开发人员不一定熟悉,省略了必要的步骤长处造成开发人员无法重现缺陷。

其他注意事项

方便阅读

举例:
概述:使用“记事本”仅保存“联通”二字后再打开该文件,出现乱码。
描述步骤:
1.点击“开始” → “程序” → “附件” → “记事本” 打开记事本软件;
2.仅输入“联通”二字,点击“文件” → 保存;
3.在打开的“另存为”对话框中保存文件后退出(文件名、保存位置任意);
4.打开保存的文件,出现乱码,不是“联通”二字。

注意自己的语气

举例:
概述:“记事本”中“另存为”对话框中默认文件后缀写成了“.txk”。
描述步骤:
1.点击“开始” → “程序” → “附件” → “记事本” 打开记事本软件;
2.仅输入“联通”二字,点击“文件” → 保存;
3.在打开的“另存为”对话框中,默认文件文件后缀应该是“.txt”,你们开发人员是不是用脚后跟考虑问题的,居然写成了“.txk”;

六、缺陷报告

缺陷报告是描述软件缺陷现象和重现步骤地集合。
软件缺陷报告Sottware Bug Report(SBR)或软件问题报告Software Problem Report(SPR)

缺陷报告的作用

1.缺陷报告是软件测试人员的工作成果之一,体现软件测试的价值
2.缺陷报告可以把软件存在的缺陷准确描述出来,便于开发人员修正
3.缺陷报告可以反映项目/产品当前的质量状态,便于项目整体进度和质量控制
4.软件测试缺陷报告是软件测试的输出成果之一,可以衡量测试人员的工作能力

缺陷报告的“5C”原则

  • 内容准确(Correct)
    每个组成部分的描述正确,不会引起误解
  • 步骤简洁(Concise)
    只包含必不可少的信息,不包括任何多余的内容
  • 内容清晰(Clear)
    每个组成部分的描述清晰,易于理解
  • 结构完整(Complete)
    包含重现该缺陷的完整步骤和其他本质信息
  • 风格一致(Consistent)
    按照一致的格式书写全部缺陷报告

缺陷报告的内容

缺陷的标题
缺陷的的基本信息:
1.测试的软件和硬件环境
2.测试的软件版本
3.缺陷的类型
4.缺陷的严重程度
5.缺陷的处理优先级
复现缺陷的操作步骤
缺陷的实际结果描述
期望的正确结果描述
注释文字和截取的缺陷图像

缺陷的二八定理

在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的缺陷,而系统测试又能找出其余缺陷中的80%,最后的4%的缺陷可能只有在用户大范围、长时间使用后才会暴露出来。

七、记录缺陷与缺陷报告

  • 使用较少的、必要的操作步骤确保缺陷能够重现
  • 记录缺陷时要使用专业术语、注意书写格式
  • 缺陷要言简意赅、尽量一个缺陷一个报告
  • 对于实在不可重现的缺陷也需要报告,并且尽快报告
  • 不能夸大缺陷的数量和缺陷的级别
  • 及时记录缺陷

八、缺陷的分类

按照严重程度分类、缺陷的优先级、缺陷的类型以及功能模块等进行分类

按严重程度

致命错误:如数据丢失、死机、系统崩溃
严重错误:如功能未完成,功能完成不正确
一般错误:如功能不完善,界面问题等
建议(轻微):测试人员认为怎么处理更好一些的问题

按照修改优先级

立即修改
在本版本修改
在产品发发布前修改
在发布版本中可以存在的问题

按照缺陷类型

功能、压力/负载、界面、兼容、易用、安装/卸载、安全

按照功能模块

功能模块1
功能模块2
功能模块3
功能模块4
......

缺陷报告的处理流程 

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

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

相关文章

Python实现透明隧道爬虫ip:不影响现有网络结构

作为一名专业爬虫程序员,我们常常需要使用隧道代理来保护个人隐私和访问互联网资源。本文将分享如何使用Python实现透明隧道代理,以便在保护隐私的同时不影响现有网络结构。通过实际操作示例和专业的解析,我们将带您深入了解透明隧道代理的工…

Base64编码-算法特别的理解

Base64 在DES加密和AES加密的过程中,加密的编码会出现负数,在ascii码表中找不到对应的字符,就会出现乱码。为了解决乱码的问题,一般结合base64使用 所谓Base64,即是说在编码过程中使用了64种字符:大写A到Z、…

Azure资源命名和标记决策指南

参考 azure创建虚拟机在虚拟机中选择编辑标签,并添加标记,点击应用 3.到主页中转到所有资源 4. 添加筛选器并应用 5.查看结果,筛选根据给服务器定义的标签筛选出结果。 参考链接: https://learn.microsoft.com/zh-cn/azure/cloud-adoption…

在Java中操作Redis(详细-->从环境配置到代码实现)

在Java中操作Redis 文章目录 在Java中操作Redis1、介绍2、Jedis3、Spring Data Redis3.1、对String的操作3.2、对哈希类型数据的操作3.3、对list的操作3.4、对set类型的操作3.5、对 ZSet类型的数据(有序集合)3.6、通用类型的操作 1、介绍 Redis 的Java客…

基于Echarts的数据可视化大屏

本项目学习于b站up主(视频链接) up主分享的资料,gitee仓库: 其中有笔记,笔记链接 项目总结 项目主要分为前端页面的布局和Echarts图表的嵌入,页面主要就是css较为繁琐,图表毕竟官网有模板&…

数组slice、splice字符串substr、split

一、定义 这篇文章主要对数组操作的两种方法进行介绍和使用,包括:slice、splice。对字符串操作的两种方法进行介绍和使用,包括:substr、split (一)、数组 slice:可以操作的数据类型有:数组字符串 splice:数组 操作数组…

计算机网络-物理层(一)物理层的概念与传输媒体

计算机网络-物理层(一)物理层的概念与传输媒体 物理层相关概念 物理层的作用用来解决在各种传输媒体上传输比特0和1的问题,进而为数据链路层提供透明(看不见)传输比特流的服务物理层为数据链路层屏蔽了各种传输媒体的差异,使数据…

最新Kali Linux安装教程:从零开始打造网络安全之旅

Kali Linux,全称为Kali Linux Distribution,是一个操作系统(2013-03-13诞生),是一款基于Debian的Linux发行版,基于包含了约600个安全工具,省去了繁琐的安装、编译、配置、更新步骤,为所有工具运行提供了一个…

[低端局][cx32L003] 移植U8G2

文章目录 一、简介(1)U8g2(2)U8x8 二、配置要求三、移植步骤(1)文件准备和添加(2)实现回调接口(I2C的读写函数)①软件I2C②硬件I2C (3)功能裁剪① u8g2_d_set…

Python Selenium 设置带账号密码的socks5代理,启动浏览器

selenium添加带有账密的socks5代理 我们都知道在使用selenium开发爬虫的时候不可避免的会使用socks5高匿名代理。一般情况下我们使用方法如下(开发语言为python): from selenium import webdriver chrome_options webdriver.ChromeOptions() chrome_options.add_…

Java并发之ReentrantLock

AQS AQS(AbstractQueuedSynchronizer):抽象队列同步器,是一种用来构建锁和同步器的框架。在是JUC下一个重要的并发类,例如:ReentrantLock、Semaphore、CountDownLatch、LimitLatch等并发都是由AQS衍生出来…

React Native Expo项目,复制文本到剪切板

装包: npx expo install expo-clipboard import * as Clipboard from expo-clipboardconst handleCopy async (text) > {await Clipboard.setStringAsync(text)Toast.show(复制成功, {duration: 3000,position: Toast.positions.CENTER,})} 参考链接&#xff1a…

3.文件目录

第四章 文件管理 3.文件目录 ​   对于D盘这个根目录来说它对应的目录文件就是图中的样子,其实就是用一个所谓的目录表来表示这个目录下面存放了哪些东西。在D盘中的每一个文件,每一个文件夹都会对应这个目录表中的一个表项,所以其实这些一…

Autoware感知02—欧氏聚类(lidar_euclidean_cluster_detect)源码解析

文章目录 引言一、点云回调函数:二、预处理(1)裁剪距离雷达过于近的点云,消除车身的影响(2)点云降采样(体素滤波,默认也是不需要的)(3)裁剪雷达高…

【概念篇】文件概述

✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! 文件概述 1,文件的概念 狭义上的文件是计算机系统中用于存储和组织数据的一种数据存…

React源码解析18(5)------ 实现函数组件【修改beginWork和completeWork】

摘要 经过之前的几篇文章,我们实现了基本的jsx,在页面渲染的过程。但是如果是通过函数组件写出来的组件,还是不能渲染到页面上的。 所以这一篇,主要是对之前写得方法进行修改,从而能够显示函数组件,所以现…

【深度学习】NLP中的对抗训练

在NLP中,对抗训练往往都是针对嵌入层(包括词嵌入,位置嵌入,segment嵌入等等)开展的,思想很简单,即针对嵌入层添加干扰,从而提高模型的鲁棒性和泛化能力,下面结合具体代码…

Spark 学习记录

基础 SparkContext是什么?有什么作用? https://blog.csdn.net/Shockang/article/details/118344357 SparkContext 是什么? SparkContext 是通往 Spark 集群的唯一入口,可以用来在 Spark 集群中创建 RDDs 、累加和广播变量( Br…

【数据库基础】Mysql下载安装及配置

下载 下载地址:https://downloads.mysql.com/archives/community/ 当前最新版本为 8.0版本,可以在Product Version中选择指定版本,在Operating System中选择安装平台,如下 安装 MySQL安装文件分两种 .msi和.zip [外链图片转存失…

C++11时间日期库chrono的使用

chrono是C11中新加入的时间日期操作库,可以方便地进行时间日期操作,主要包含了:duration, time_point, clock。 时钟与时间点 chrono中用time_point模板类表示时间点,其支持基本算术操作;不同时钟clock分别返回其对应…