软件危机是计算机软件在它的开发和维护中所遇到的一系列严重问题
软件缺陷是不是软件开发存在的问题 是客户使用过程中出现的问题
主要有:软件成本和进度的估计常常很不准确
用户对“已经完成的”软件系统不满意
软件产品的质量靠不住
软件是不可维护的
软件没有适当的文档资料
软件成本在计算机系统总成本中所占的比例逐年上升
软件缺陷怎么描述
认识软件缺陷,首先要了解软件缺陷的概念,其次是了解软件缺陷的详细特征,最后就是它的属性了,再高一个层次就是学习利用管理软件缺陷的工具了。 1、首先介绍软件缺陷的概念
软件缺陷是指系统或系统部件中那些导致系统或部件不能实现其功能的缺陷。 2、软件缺陷的详细特征 a、单一准确
b、可以再现(要求软件缺陷具有精确的步骤) c、完整统一 d、短小简练 e、特定条件 f、补充完整 g、不做评价
3、软件缺陷的属性
软件缺陷的属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。 下面详细介绍一下以上这些属性:
a、缺陷标识:是标记某个缺陷的唯一标识,可以用数字序号表示; b、缺陷类型:功能、用户界面、文档、软件包、性能、系统\模块接口 功能:影响了各种系统功能、逻辑的缺陷;
用户界面:影响了用户界面、人机交互特性,包括屏幕格式、用户输入灵活性、结果输入格式等方面的缺陷;
文档:影响发布和维护,包括注释、用户手册、设计文档; 软件包:由于软件配置库、变更管理或版本控制引起的错误;
性能:不满足系统可测量的属性值,如执行时间、事务处理速率等; 系统\模块接口:与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表等不匹配、冲突。
c、缺陷严重程度:致命(Fatal)、严重(Ceritical)、一般(Major)、较小(Minor)
致命:系统任何一个主要功能完全丧失,用户数据受到破坏,系统崩溃、悬挂、死机或者危机人身安全; 严重:系统的主要功能部分丧失,数据不能保存,系统的次要功能完全丧失,系统所提供的功能或服务受到明显的影响;
一般:系统的次要功能没有完全实现,但不影响用户的正常使用。例如:提示信息不太准确或用户界面差、操作时间长等一些问题;
较小:使操作者不方便或遇到麻烦,但它不影响功能过的操作和执行,如个别不影响产品理解的错别字、文字排列不整齐等一些小问题 d、缺陷产生可能性:总是、通常、有时、很少
总是:总是产生这个软件缺陷,其产生的频率是100%;
通常:按照测试用例,通常情况下会产生这个软件缺陷,其产生的频率大概是80%—90%;
有时:按照测试用例,有时候产生这个软件缺陷,其产生的频率大概是30%—50%;
软件缺陷包括哪些内容?
软件危机是计算机软件在它的开发和维护中所遇到的一系列严重问题
软件缺陷是不是软件开发存在的问题 是客户使用过程中出现的问题
主要有:软件成本和进度的估计常常很不准确
用户对“已经完成的”软件系统不满意
软件产品的质量靠不住
软件是不可维护的
软件没有适当的文档资料
软件成本在计算机系统总成本中所占的比例逐年上升
软件缺陷的构成
从软件测试观点出发,软件缺陷有以下五大类: (1)规格说明书缺陷:规格说明书可能不完全,有二义性或自身矛盾。另外,在设计过程中可能修改功能,如果不能紧跟这种变化并及时修改规格说明书,则产生规格说明书错误。 功 规格说明书 404 能 功能 147 缺 测试 7 陷 总计 558 27% (2)功能缺陷:程序实现的功能与用户要求的不一致。这常常是由于规格说明书包含错误的功能、多余的功能或遗漏的功能所致。在发现和改正这些缺陷的过程中又可能引入新的缺陷。
(3)测试缺陷:软件测试的设计与实施发生错误。特别是系统级的功能测试,要求复杂的测试环境和数据库支持,还需要对测试进行脚本编写。因此软件测试自身也可能发生错误。另外,如果测试人员对系统缺乏了解,或对规格说明书做了错误的解释,也会发生许多错误。
(4)测试标准引起的缺陷:对软件测试的标准要选择适当,若测试标准太复杂,则导致测试过程出错的可能就大。 ◆外部接口缺陷:外部接口是指如终端、打印机、通信线路等系统与外部环境通讯的手段。所有外部接口之间、人与机器之间的通讯都使用形式的或非形式的专门协议。如果协议有错,或太复杂,难以理解,致使在使用中出错。此外,还包括对输入/输出格式错误理解,对输入数据不合理的容错等。 内部接口 29 系 硬件 63 统 操作系统 2 缺 软件结构 193 陷 控制与顺序 43 资源 8 总计 338 16% ◆内部接口缺陷:内部接口是指程序内部子系统或模块之间的联系。它所发生的缺陷与外部接口相同,只是与程序内实现的细节有关,如设计协议错、输入/输出格式错、数据保护不可靠、子程序访问错等。
◆硬件结构缺陷:与硬件结构有关的软件缺陷在于不能正确的理解硬件如何工作。如忽视或错误地理解分页机构、地址生成、通道容量、I/O指令、中断处理、设备初始化和启动等而导致的出错。
◆操作系统缺陷:与操作系统有关的软件缺陷在于不了解操作系统的工作机制而导致出错。当然,操作系统本身也有缺陷,但是一般用户很难发现这种缺陷。
◆软件结构缺陷:由于软件结构不合理而产生的缺陷。这种缺陷通常与系统的负载有关,而且往往在系统满载时才出现。如错误地设置局部参数或全局参数;错误地假定寄存器与存储器单元初始化了;错误地假定被调用子程序常驻内存或非常驻内存等,都将导致软件出错。
◆控制与顺序缺陷:如忽视了时间因素而破坏了事件的顺序;等待一个不可能发生的条件;漏掉先决条件;规定错误的优先级或程序状态;漏掉处理步骤;存在不正确的处理步骤或多余的处理步骤等。
◆资源管理缺陷:由于不正确地使用资源而产生的缺陷。如使用未经获准的资源;使用后未释放资源;资源死锁;把资源链接到错误的队列中等。 ◇算法与操作缺陷:是指在算术运算、函数求值和一般操作过程中发生的缺陷。如数据类型转换错;除法溢出;不正确地使用关系运算符;不正确地使用整数与浮点数做比较等。 算术 114 加 初始化 15 工 控制与次序 271 缺 静态逻辑 13 陷 其他 120 总计 533 26% ◇初始化缺陷:如忘记初始化工作区,忘记初始化寄存器和数据区;错误地对循环控制变量赋初值;用不正确的格式、数据或类类型进行初始化等。
◇控制和次序缺陷:与系统级同名缺陷相比,它是局部缺陷。如遗漏路径;不可达到的代码;不符合语法的循环嵌套;循环返回和终止的条件不正确;漏掉处理步骤或处理步骤有错等。
◇静态逻辑缺陷:如不正确地使用switch语句;在表达式中使用不正确的否定(例如用“>”代替“<”的否定);对情况不适当地分解与组合;混淆“或”与“异或”等。 △动态数据缺陷:动态数据是在程序执行过程中暂时存在的数据,它的生存期非常短。各种不同类型的动态数据在执行期间将共享一个共同的存储区域,若程序启动时对这个区域未初始化,救护导致数据出错。 类型 36 数 结构 34 据 初始值 51 错 其他 120 误 总计 241 12% △静态数据缺陷:静态数据在内容和格式上都是固定的。它们直接或间接的出现在程序或数据库中,有编译程序或其他专门对他们做预处理,但预处理也会出错。
△数据内容、结构和属性缺陷:数据内容是指存储于存储单元或数据结构中的位串、字符串或数字。数据内容缺陷就是由于内容被破坏或被错误地解释而造成的缺陷。数据结构是指数据元素的大小和组织形式。在同一存储区域中可以定义不同的数据结构。数据结构缺陷包括结构说明错误及数据结构误用的错误。数据属性是指数据内容的含义或语义。数据属性缺陷包括对数据属性不正确地解释,如错把整数当实数,允许不同类型数据混合运算而导致的错误等。 包括数据说明错、数据使用错、计算错、比较错、控制流错、界面错、输入\输出错,及其他的错误。
规格说明书是软件缺陷出现最多的地方,其原因是: 程序编写错误 78 4% 文档和其他错误 322 16% ◆用户一般是非软件开发专业人员,软件开发人员和用户的沟通存在较大困难,对要开发的产品功能理解不一致。
◆由于在开发初期,软件产品还没有设计和编程,完全靠想象去描述系统的实现结果,所以有些需求特性不够完整、清晰。
◆用户的需求总是不断变化,这些变化如果没有在产品规格说明书中得到正确的描述,容易引起前后文、上下文的矛盾。
◆对规格说明书不够重视,在规格说明书的设计和写作上投入的人力、时间不足。
◆没有在整个开发队伍中进行充分沟通,有时只有设计师或项目经理得到比较多的信息。
排在产品规格说明书之后的是设计,编程排在第三位。许多人印象中,软件测试主要是找程序代码中的错误,这是一个认识的误区。
软件缺陷的产生原因
在软件开发的过程中,软件缺陷的产生是不可避免的。那么造成软件缺陷的主要原因有哪些?从软件本身、团队工作和技术问题等角度分析,就可以了解造成软件缺陷的主要因素。
软件缺陷的产生主要是由软件产品的特点和开发过程决定的。 1.需求不清晰,导致设计目标偏离客户的需求,从而引起功能或产品特征上的缺陷。
2.系统结构非常复杂,而又无法设计成一个很好的层次结构或组件结构,结果导致意想不到的问题或系统维护、扩充上的困难;即使设计成良好的面向对象的系统,由于对象、类太多,很难完成对各种对象、类相互作用的组合测试,而隐藏着一些参数传递、方法调用、对象状态变化等方面问题。
3.对程序逻辑路径或数据范围的边界考虑不够周全,漏掉某些边界条件,造成容量或边界错误。
4.对一些实时应用,要进行精心设计和技术处理,保证精确的时间同步,否则容易引起时间上不协调,不一致性带来的问题。
5.没有考虑系统崩溃后的自我恢复或数据的异地备份、灾难性恢复等问题,从而存在系统安全性、可靠性的隐患。
6.系统运行环境的复杂,不仅用户使用的计算机环境千变万化,包括用户的各种操作方式或各种不同的输入数据,容易引起一些特定用户环境下的问题;在系统实际应用中,数据量很大。从而会引起强度或负载问题。
7.由于通信端口多、存取和加密手段的矛盾性等,会造成系统的安全性或适用性等问题。
8.新技术的采用,可能涉及技术或系统兼容的问题,事先没有考虑到。 1.系统需求分析时对客户的需求理解不清楚,或者和用户的沟通存在一些困难。
2.不同阶段的开发人员相互理解不一致。例如,软件设计人员对需求分析的理解有偏差,编程人员对系统设计规格说明书某些内容重视不够,或存在误解。
3.对于设计或编程上的一些假定或依赖性,相关人员没有充分沟通。
4.项目组成员技术水平参差不齐,新员工较多,或培训不够等原因也容易引起问题。 1.算法错误:在给定条件下没能给出正确或准确的结果。
2.语法错误:对于编译性语言程序,编译器可以发现这类问题;但对于解释性语言程序,只能在测试运行时发现。
3.计算和精度问题:计算的结果没有满足所需要的精度。
4.系统结构不合理、算法选择不科学,造成系统性能低下。
5.接口参数传递不匹配,导致模块集成出现问题。 1.缺乏质量文化,不重视质量计划,对质量、资源、任务、成本等的平衡性把握不好,容易挤掉需求分析、评审、测试、等时间,遗留的缺陷会比较多。
2.系统分析时对客户的需求不是十分清楚,或者和用户的沟通存在一些困难。
3.开发周期短,需求分析、设计、编程、测试等各项工作不能完全按照定义好的流程来进行,工作不够充分,结果也就不完整、不准确,错误较多;周期短,还给各类开发人员造成太大的压力,引起一些人为的错误。
4.开发流程不够完善,存在太多的随机性和缺乏严谨的内审或评审机制,容易产生问题。
5.文档不完善,风险估计不足等。
一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
1.和BUG对应的软件版本
2.开发的借口人员,测试人员
3.BUG的优先级
4.BUG的严重程度
5.BUG可能属于的模块
6.BUG的标题
7.BUG的描述
8.BUG的截图
9.BUG的状态
10.BUG的错误类型(数据,界面。。。。)
软件缺陷分类的标准
软件缺陷(software defect)分类标准缺陷属性属性名称 描述 缺陷标识(Identifier) 缺陷标识是标记某个缺陷的一组符号。每个缺陷必须有一个唯一的标识 缺陷类型 (Type) 缺陷类型是根据缺陷的自然属性划分的缺陷种类。 缺陷严重程度 (Severity) 缺陷严重程度是指因缺陷引起的故障对软件产品的影响程度。 缺陷优先级(Priority) 缺陷的优先级指缺陷必须被修复的紧急程度。 缺陷状态(Status) 缺陷状态指缺陷通过一个跟踪修复过程的进展情况。 缺陷起源(Origin) 缺陷来源指缺陷引起的故障或事件第一次被检测到的阶段。 缺陷来源(Source) 缺陷来源指引起缺陷的起因。 缺陷根源(Root Cause) 缺陷根源指发生错误的根本因素。缺陷类型(Type)缺陷类型编号 缺陷类型 描述 10 F- Function 影响了重要的特性、用户界面、产品接口、硬件结构接口和全局数据结构。并且设计文档需要正式的变更。如逻辑,指针,循环,递归,功能等缺陷。 20 A- Assignment 需要修改少量代码,如初始化或控制块。如声明、重复命名,范围、限定等缺陷。 30 I- Interface 与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表相互影响的缺陷。 40 C- Checking 提示的错误信息,不适当的数据验证等缺陷。 50 B Build/package/merge 由于配置库、变更管理或版本控制引起的错误。 60 D- Documentation 影响发布和维护,包括注释。 70 G- Algorithm 算法错误。 80 U-User Interface 人机交互特性:屏幕格式,确认用户输入,功能有效性,页面排版等方面的缺陷。 90 P-Performance 不满足系统可测量的属性值,如:执行时间,事务处理速率等。 100 N-Norms 不符合各种标准的要求,如编码标准、设计符号等。缺陷严重程度(Severity)1.3.1 软件测试错误严重程度 # 缺陷严重等级 描述 1 Critical 不能执行正常工作功能或重要功能。或者危及人身安全。 2 Major 严重地影响系统要求或基本功能的实现,且没有办法更正。(重新安装或重新启动该软件不属于更正办法) 3 Minor 严重地影响系统要求或基本功能的实现,但存在合理的更正办法。(重新安装或重新启动该软件不属于更正办法) 4 Cosmetic 使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。 5 Other 其它错误。1.3.2 同行评审错误严重程度 # 缺陷严重等级 描述 Major 主要的,较大的缺陷 Minor 次要的,小的缺陷缺陷优先级(Priority)# 缺陷优先级 描述 1 Resolve Immediately 缺陷必须被立即解决。 2 Normal Queue 缺陷需要正常排队等待修复或列入软件发布清单。 3 Not Urgent 缺陷可以在方便时被纠正。缺陷状态(Status)缺陷状态 描述 Submitted 已提交的缺陷 Open 确认“提交的缺陷”,等待处理 Rejected 拒绝“提交的缺陷”,不需要修复或不是缺陷 Resolved 缺陷被修复 Closed 确认被修复的缺陷,将其关闭缺陷起源(Origin)缺陷起源 描述 Requirement 在需求阶段发现的缺陷 Architecture 在构架阶段发现的缺陷 Design 在设计阶段发现的缺陷 Code 在编码阶段发现的缺陷 Test 在测试阶段发现的缺陷缺陷来源(Source)缺陷来源 描述Requirement: 由于需求的问题引起的缺陷 Architecture: 由于构架的问题引起的缺陷Design: 由于设计的问题引起的缺陷 Code: 由于编码的问题引起的缺陷Test: 由于测试的问题引起的缺陷 Integration: 由于集成的问题引起的缺陷
参考资料:http://baike.baidu.com/view/107502.htm#2
软件错误与软件缺陷区别
软件错误:软件生存期内的人为错误,导致软件缺陷产生。
是人为过程,相对于软件本身是外部行为。
软件缺陷:存在于软件(文档、数据、程序)中的偏差,导致软件在某个特定条件下出现故障,这时称软件缺陷被激活。
软件故障:软件运行过程中出现的不希望或不可接收的内部状态。是动态行为。
软件失效:软件运行时产生的不希望或不可接受的外部行为结果。
综上:软件错误是一种人为错误。一个软件错误必定产生一个或多个软件缺陷。当一个软件缺陷被激活时,便产生一个软件故障;同一个软件缺陷在不同条件下被激活,可能产生不同的软件故障。软件故障如果没有集市的容错措施加以处理,便不可避免地导致软件失效;同一个软件故障在不同条件下可能产生不同的软件失效。
转载请注明出处51数据库 » 软件文档缺陷 软件缺陷包括哪些内容
来碗蛋炒饭不加蛋

