软件测试过程中如何区分什么是功能bug,什么是需求bug,什么是设计bug?

问题描述:

  测试过程中如何区分什么是功能bug,什么是需求bug,什么是设计bug?

  精彩答案:

  会员 土土的豆豆:

  本期问题其实主要是针对不同方面或纬度上对于bug的一个归类和定位。

  个人认为,从软件开发测试生命周期上分析的话,三者从开发测试阶段应该是需求bug、设计bug、功能bug。(这里仅针对提问排比)

  需求问题可以包括设计问题和功能问题,当然还有非功能性缺陷等。

  需求bug,简而言之就是对于业务需求不清晰或者理解有偏差产生的问题。可能包括业务分析人员不专业因素、开发与测试人员思维不一致、产品未满足客户实际需求(想法)等一系列bug。

  功能问题大部分理应该是附属于需求说明书上的功能模块,因为开发、设计、实现等原因故而产生功能bug。但也不仅限于需求上列举出的功能,因为一个项目/产品,完全有可能因为相关协作的功能模块或整合的第三方程序导致产生bug。所以功能bug既可能是需求bug,也可能是需求外的bug。这里对于bug的优先级和安全级别等不作赘述。

  设计问题可以认为是开发架构师/人员在项目设计编码前遗留的“历史”问题。因为设计bug还是根据需求说明书来进行开发设计,故而一些业务逻辑上的关系、代码算法的优化、数据库/表的关联等都属于设计bug。

  个人认为,需求bug最为麻烦,也是后期维护成本最高的bug。设计bug次之,因为一个产品/项目设计层面问题较多的话,无论修复或改进多少,在代码编写结束后,开发人员很难重头再整理一套框架,即便目前没有设计bug,以后产生的风险也是很大的。

  功能bug最平凡,但是也是基础。除去客户业务需求上的变更因素,整个项目/产品的质量好坏最基本的就是取决于功能是否按需求进行了实现,其问题是否很多。我们大部分测试阶段的bug以功能问题为主。

  当然还有其他一些bug类型,本期问题所列3个bug从根本上分析不属于一个维度。但是也是很基本的概念。

  以上是我个人拙见,请大家补充指正。谢谢!

  会员 TesterChen:

  首先什么是需求Bug、设计Bug、功能bug?

  需求Bug,指由于客户需求描述不清晰或错误、需求收集人员自身原因及需求本身模糊难于分析、获取等原因,导致客户需求获取不准确,后期产品不能满足客户、用户的要求

  设计Bug,是指产品在最初设计时由于未考虑全面,而使产品在使用中存在的一些潜在的缺陷。

  功能Bug,是指计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。

  建议从以下几点进行区分:

  1、产生的时间不相同:
需求Bug:产生于项目前期
设计Bug:产生于项目前期或中期
功能Bug:产生于项目中期或后期

  2、产生的原因不相同:
需求Bug:客户需求描述不清晰或错误、需求收集人员不够专业、需求本身模糊难于分析、获取等原因
设计Bug:系统框架、通讯模式、库表设计、编写语言等选择不当,导致后期扩展棘手、安全性低等
功能Bug:开发工程师需求理解错误、代码编写缺陷等原因

  3、造成的影响不相同:
需求Bug:对整个项目的影响极大,会直接拖后项目的进度、加大项目成本、降低客户对公司的评价
设计Bug:后期功能扩展、性能、安全性等可能会遭到威胁
功能Bug:影响用户使用体验、影响数据、资金安全

  4、处理方式不相同
需求Bug:重新收集需求,重新设计和开发(需求Bug是对项目成本和进度影响最大的因素)
设计Bug:重大缺陷必须修复,小设计缺陷在下一次发布时更新(一般难于修复或修复成本较大)
功能Bug:直接修复缺陷,重新发布或更新

  5、Bug的直接责任人不相同
需求Bug:业务人员、需求专员、项目经理等
设计Bug:架构工程师、数据库工程师、技术经理、项目经理等
功能Bug:开发、测试工程师

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-16 15:57:00

软件测试过程中如何区分什么是功能bug,什么是需求bug,什么是设计bug?的相关文章

软件测试过程中对bug的处理流程

又属于一篇普及文,希望自己在被各种技术吸引的同时,能时常来整理和总结软件测试最基本的知识. 从刚工作时接触的第一个缺陷管理工具禅道,到redmine.JIRA.bugzilla ,再到现在的QC,当然还有其它种的开源的或商业的缺陷管理工具,它们的本质是一样的,就是来管理缺陷的生命周期. 其实,你理解任意的一款工具,其它的工具也一定能无师自通.这不谈某款工具,单把它本质的一些东西抽离出来与大家分享. Bug的属性 Bug重现环境 这个应该是我们重现bug的一个前提,如果没有这个前提,我们可能会无法

软件测试过程中的度量与分析

本文中考虑的软件测试过程专指第三方的软件测试过程,即在测试的过程中,不涉及开发人员的修复过程. 度量和分析的目的是开发和维持一个用于支持项目信息需要的度量能力.通过对项目的度量,一方面可以逐渐丰富和完善公司的度量财富库,从而为项目经理进行项目工作量.进度等的预估时提供可靠的参考依据:另一方面,通过度量分析,项目经理可以有效的对项目情况进行监控,当度量分析报告中提供的结果超过了一定的阈值时,项目经理就应该采取相应的措施,也就是说度量分析有利于项目经理做出正确的管理和技术决策以及采取适当的纠正活动.

项目管理中横向视角下的软件测试过程管理

摘要:对软件测试过程的管理可以从项目管理的角度出发,在横向视角下分析,应先按照过程模型来认清测试过程本身,对测试过程进行配置管理.对测试过程进行有效评价,测试风险分析与测试成本管理. 关键词:软件测试:过程管理:项目管理:测试管理: 1.软件测试过程概述 软件测试在软件开发中 占重要的地位,它关乎所开发软件的总体质量,它是保证软件可靠性的重要手段.软件测试目的是找出软件的缺陷,并对缺陷进行分析和管理,从而消除缺陷,并为 软件的评价及决策提供依据.软件测试过程从理论上来说是一种抽象的模型,主要用于

谈谈如何应对软件开发中的需求变更

令人烦恼的需求变更     在软件开发中,大家都会遇到过这样的问题:客户的一个新想法,就推翻了之前与客户经过再三讨论而确认定下来的需求.如果是功能性需求变更还会让人容易接受一些,毕竟功能性需求不实现的话,是会大大影响到软件产品的质量.但是一些非功能性的变更会让人很头疼,许多是看起来无关痛痒的.鸡毛蒜皮的变更,却是极为令人无语和无奈,甚至是烦恼和厌恶的.     (1)什么是软件需求?     在IEEE中,软件需求的定义是:用户解决问题或达到目标所需的条件或功能.一般包含业务需求.用户需求.功能

link中如何使用codefirst技术实现《网盘软件》中的“弹出下载选择”功能?

问题描述 link中如何使用codefirst技术实现<网盘软件>中的"弹出下载选择"功能? link中如何使用codefirst技术实现<网盘软件>中的"弹出下载选择"功能? 解决方案 下载 html的a标签经过浏览器的渲染后,用户点击后本身就有"弹出下载选择"的功能. 解决方案二: 只要你有下载链接,用户点了,选择存放位置是浏览器自己实现的,你不用关心.

移动理财软件Lemon在平台中新增了电子钱包功能

在原有功能(消费追踪及基于云环境的收据管理)的基础上,移动理财软件Lemon在平台中新增了电子钱包功能.同时,Lemon宣布融资800万美元,由Maveron领投,同时参与这轮投资的还有Light Venture Partners,CampVentures,Draper Fisher Jurveston以及其他天使投资人. Lemon的电子钱包功能已经在前几天悄然上线,它可以将用户钱包里的各种卡片集成在一起,卡片包括信用卡.店铺会员卡.身份证.保险卡等.该应用加有Pin码保护,目前作为真实钱包的

测试过程中的评审工作及关注事项

测试过程中的评审工作及关注事项 公司的软件开发EPG过程规范中对测试领域的工作及其规范做了细致的说明,虽然是CMMI3+,不过还是有些地方只是官样文章,是形而上的东西,在实际工作中不具备任何的指导作用.所以我们领导觉得这个可以自己重新定义一些在测试思维上较为技术性的东西纳入到测试领域的规范当中,而我负责关于用户需求评审和系统测试用例评审的检查点整理工作.由于用户需求评审能够有助于测试人员系统测试工作的开展,所以下面就用户与需求评审所需要准备的工作.用户需求评审时所要思考的问题.系统测试用例评审过

GIT在测试过程中的基本使用

1.基本了解 1.1版本控制概念 Git 命令是部分命令行工具的集合,它可以用来跟踪,记录文件的变动.比如你可以进行保存.比对.分析,合并等.这个过程被称之为版本控制 常见:比如 SVN, Mercurial, Perforce, CVS, Bitkeepe 等. 1.2本地仓库及创建 Git是分布式的,这意味着它并不依赖于中心服务器,任何一台机器都可以有一个本地版本的控制系统,我们称之为仓库 创建一个新仓库 创建一个新的仓库,首先要去到项目路径,执行 git init.然后git会创建一个隐藏

在Eclipse中创建新的重构功能

创建 对重构的强大支持是软件开发人员喜爱Eclipse的一个最为重要的原因.而Eclipse还有一个至少和重构不相上下的优点,那就是其近乎无懈可击的可扩展性.这两者的结合意味着我们可以根据自己的需要来创建展新的重构功能. 介绍 重构在现代软件开发过程中扮演着重要的角色,它能够减轻软件开发人员的工作负担,提高软件开发的生产效率.为了阐明重构的重要性,我们在这里引用了developerWorks上David Carew提供的关于重构的教程中的一段话: 现在,一个开发者的工作大部分在于对现有的代码进行