什么是软件缺陷
软件缺陷是指软件在开发或者测试人员在执行测试的过程中遇到的功能缺失、功能不完善、与预期功能相违背、系统错误等各种问题。准确有效的找到缺陷的发生路径可以快速的修复缺陷,提高软件的质量。
软件缺陷产生的原因
在软件开发的过程中,软件或多或少都会存在一定的缺陷,以下是可能产生缺陷的原因:

- 需求描述不清晰,导致程序在开发过程中设计目标偏离客户的需求,从而引起功能或产品上的缺陷。
- 系统架构设计过于复杂,当一个功能无法设计成一个很好的层次结构或组件结构时,往往这个功能会出现意想不到的问题。
- 开发过程中沟通与监管不到位,导致开发人员对需求的理解产生曲解,监管不到位导致软件功能特性与用户需求脱节 。
- 程序员在编码中会对程序逻辑路径或数据范围的边界考虑不够周全,漏掉些许边界条件,造成容量或者边界的错误。
- 与用户需求不符,即使本身不存在某种意义上的缺陷(例如:字体过小,显示颜色不利于用户观看)。
- 软件需求复杂度越来越高,功能之间的交互程度越来密切,导致在开发过程中不能很好的兼顾所有的逻辑关系。
- 开发工具本身错误,当软件产品的开发依赖于某些软件工具时,工具本身隐藏的错误也可能导致产品的错误。
软件缺陷的属性
软件缺陷的严重程度,一般根据公司实际情况来决定缺陷级别的划分,这里划分为四级:
![]()
- 严重:系统任何一一个主要功能完全失效,用户数据受到破坏,系统崩溃、悬挂、死机或者危机人身安全。
- 一般:系统的主要功能部分失效,数据不能保存,系统的次要功能丧失,软件所提供的功能或服务受到明显影响.
- 轻微:系统的次要功能没有完全实现,但不影响用户的正常使用。
- 优化:使操作者不方便,软件内出现错别字或排版不整齐,但它不影响功能的操作和执行。
软件缺陷产生的可能性,根据公司实际情况来决定缺陷级别的划分,这里划分为三种:
![]()
- 必发:该软件缺陷总是能够复现,复现率为100%。
- 偶发:根据测试用例步骤执行,偶尔复现软件缺陷,复现率为40%~70%
- 极低:根据测试用例步骤执行,很少复现软件缺陷,复现率为10%~30%
软件缺陷的类型
整理了日常测试中遇到的几种缺陷类型:
- 功能异常:运行结果达不到预期效果,在用户接口上提供的选项及动作,使用者操作后毫无反应。
- 软件使用不方便:好用的软件就是使用上尽量方便,使用户易于操作。用户不知软件如何使用或难以使用,增加用户的的学习难度,同时体现软件的集成能力不足。
- 软件互动不良:一个好的软件必须与操作者之间可以实现正常互动。在操作者使用软件的过程中,软件必须很好地响应。
- 使用性能不佳:被测软件功能正常,但使用性能不佳,如大批量的数据导入导出时导致软件出现卡顿或奔溃,此类缺陷通常是采用了错误的解决方案或使用了不恰当的算法导致的。
- 边界错误:程序无法处理超越边界所导致的错误很多情况下是由于开发人员在声明变量或使用边界范围时不小心引起的。
- 计算错误:软件之所以会出现计算错误,大部分出错的原因是由于采用了错误的计算工式或计算后未进行初始化。
软件缺陷描述
软件缺陷描述是测试人员对问题的陈述,一个好的描述需要使用简单、准确、专业的语言抓住缺陷的本质。否则信息模糊容易误导开发人员。缺陷有效的描述规则,主要分为以下几点:
- 单一准确:一个报告只针对一个软件缺陷。一个报告多个缺陷时常常会导致缺陷部分被注意和修复,不能得到彻底的修复。
- 可复现:可以提供缺陷再现的精确操作步骤,使开发人员容易看懂并能够根据描述的步骤再现缺陷,有利于缺陷能够正确的修复。
- 完整:提供完整、前后统一的软件缺陷信息,如图片,视屏以及文件等。
- 简短:通过使用关键词准确额的描述缺陷所在,能够快速的定位缺陷的现象。
- 特定条件:软件通常都能够正常运行,而在某种特定条件下会导致功能存在缺陷(如:特定的操作系统、不同的浏览器等),所以应在描述过程中应附上特定条件环境,能够帮助开发人员寻找缺陷根源。
- 补充完善:从缺陷发现时,测试人员应保证缺陷描述的正确性,并持续监视缺陷修复。
- 不做评价:描述缺陷时不应带有个人观点,对开发人员进行评价。只针对产品、问题本身,将事实或现象客观的描述出来即可,不需要任何评论或意见。
软件缺陷跟踪
软件缺陷跟踪是测试中非常重要的环节,测试的目的是为了尽早发现软件系统中的缺陷,因此对缺陷进行跟踪管理,确保每一被发现的缺陷都能够及时得到处理。
以下是对缺陷的跟踪管理一般需要达到以下目标:
- 确保所有被发现的缺陷都能够得到解决,“解决”不一定是修复缺陷,也可以是通过缺陷评审达成一致后决定是否关闭缺陷。
- 收集缺陷数据并根据缺陷趋势曲线识别测试过程的阶段;决定测试过程是否结束有很多种方式,通过缺陷趋势曲线来确定测试过程是否结束是常用并且较为有效的一种方式。
- 收集缺陷数据并在其上进行数据分析,作为组织的过程财富。
软件缺陷管理系统比较多,以下是比较常见的几款测试管理工具:

版权声明:本文为weixin_55484323原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。