1、第一章第一章 概述概述软件软件项目软件缺陷软件 软件是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。一般认为,软件包括如下内容:1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。2.程序能够满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操作和使用所要求的文档。软件组成1.客户需求-Customer Requirements2.市场需求文档-MRD(Marketing Requirement Document)3.软件规格说明书-Specifications4.技术设计文档 Technical De
2、sign Docs5.测试文档 Test Documents6.在线帮助-Online help7.产品发布注释-Release Notes/Read Me8.产品软件包-Release packages软件产品的其他内容 帮助文件 Help files 示例 Samples and examples to illustrate points 产品支持文档 Product support information 错误信息 Error messages 安装手册 Setup and installation instructions 用户手册 User manual(s)产品标签 Label a
3、nd stickers 产品广告或宣传材料 Ads and marketing material 软件发展史 从20世纪50年代初期至60年代中期,作为软件发展的第一阶段,又称为程序设计阶段。此时硬件已经通用化,而软件的生产却是个体化。软件产品为专用软件,规模较小,功能单一,开发者即使用者,软件只有程序,无文档。软件设计在人们的头脑中完成,形成了“软件等于程序”的错误观念.第二阶段从20世纪60年代中期至70年代末期,称为程序系统阶段。此时多道程序设计技术、多用户系统、人机交互式技术、实时系统和第一代数据库管理系统的出现,出现了专门从事软件开发的“软件作坊”,软件广泛应用,但软件技术和管理水平
4、相对落后,导致“软件危机”出现。软件危机的概念软件危机的典型表现第三阶段称为软件工程阶段,从20世纪70年代中期至80年代中期,由于微处理器的出现、分布式系统广泛应用,使得计算机真正成为大众化的东西。以软件的产品化、系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。1968年,北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,正式提出并使用“软件工程”概念,标志软件工程诞生。软件工程的概念软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技
5、术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。软件工程的目标是在给定成本、进度的前提下,开发出满足用户或市场需要的高质量的软件产品。第四阶段是从20世纪80年代中期至今,客户端/服务器(C/S)体系结构、Web技术,CORBA、EJB、COM/DCOM等三大分布式的对象模型技术相继出现。2006年,面向服务架构(Service-Oriented Architecture,简称SOA)作为下一代软件架构,作为“抽象、松散耦合和粗粒度”的软件架构,根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用,主要用于解决传统对象模型中无
6、法解决的异构和耦合问题。软件项目 项目具有明确的目标。项目具有临时性。项目具有独特性。项目是逐步完善。项目使用的资源是受到限制的。项目具有一定程度的不确定性。软件项目 知识密集型,技术含量高。涉及多个专业领域,多种技术综合应用。项目范围和目标的灵活性。风险大,收益大。客户化程度高。过程管理的重要性。软件的生命周期 3个时期、8个阶段软件定义问题定义、可行性研究、需求分析软件开发总体设计、详细设计、编码和单元测试、综合测试软件维护运行和维护软件三要素方法传统方法学、面向对象方法学工具软件定义、开发和维护阶段用到的工具过程为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步
7、骤。软件过程模型瀑布模型快速原型模型增量模型螺旋模型RUP敏捷过程瀑布模型快速原型模型增量模型螺旋模型测试与开发的关系瀑布模型与软件测试的关系螺旋模型与软件测试的关系软件缺陷案例 1963年,由于用FORTRAN程序设计语言编写的飞行控制软件中的循环语句DO 5 I=1,3误写为DO 5 I=1.3,DO语句少了一个逗号,结果导致美国首次金星探测飞行失败,造成价值约1000多万美元的损失。临近2000年时,计算机业界一片恐慌,这就是著名的“千年虫”问题。软件缺陷案例 2008年,我国举行了首次奥运会。10月30日上午9时北京奥运会门票面向境内公众销售第二阶段正式启动,系统访问流量猛增,官方票务
8、网站流量瞬时达到每小时800万次,超过了系统设计每小时100万次的承受量,奥运门票系统访问量超计划8倍,造成网络拥堵。Bug在软件项目过程中的产生比重?问题在哪里?l 没有足够测试l 缺乏测试平台l 不正确的测试环境l 缺少集成测试l 缺少性能测试l 缺少强度测试l 缺少可靠性测试l 产生软件缺陷的原因软件开发过程自身的特点 1)软件的逻辑性 2)复杂抽象性软件项目管理的问题团队工作的问题IEEE国际标准729给出了软件缺陷的定义软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,不能满足或不能全部满足用户的需求。符合下面4个规则之一就是软件缺陷。软件未达到软件规格说明
9、书中规定的功能软件出现了产品说明书中指明不会出现的错误;软件功能超出了产品说明书中指明的范围软件测试人员认为软件难于理解,不易使用,运行速度慢,或者最终用户认为软件使用效果不好缺陷分析对于缺陷分析,常用的主要缺陷参数有四个:状态:缺陷的当前状态(打开的、正在修复或关闭的等)。优先级:必须处理和解决缺陷的相对重要性。严重性:缺陷的相关影响。对最终用户、组织或第三方的影响等等。起源:导致缺陷的起源故障及其位置,或排除该缺陷需要修复的构件。缺陷报告缺陷分布(密度)报告显示缺陷在不同模块,业务单元中的分布情况。缺陷龄期报告是一种特殊类型的缺陷分布报告。缺陷龄期报告显示缺陷处于特定状态下的时间长短,如“
10、提出的”。在龄期类别中,缺陷还可以按其他属性分类,如“拥有者”。缺陷趋势报告按状态(新的、已打开的或关闭的)将缺陷计数作为时间的函数显示。趋势报告可以是累计的,也可以是非累计的。软件缺陷类型列表缺陷类型描述功能影响了各种系统功能、逻辑的缺陷用户界面影响了用户界面、人机交互特性,包括屏幕格式、用户输入灵活性、结果输出格式等方面的缺陷文档影响发布和维护,包括注释,用户手册,设计文档软件包由于软件配置库、变更管理或版本控制引起的错误性能不满足系统可测量的属性值,如执行时间,事务处理速率等。系统/模块接口与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表等不匹配、冲突。软件缺陷严重等级列表缺陷
11、严重等级描述致命 系统任何一个主要功能完全丧失、用户数据受到破坏、系统崩溃、悬挂、死机,或者危及人身安全严重 系统的主要功能部分丧失、数据不能保存,系统的次要功能完全丧失,系统所提供的功能或服务受到明显的影响一般系统的次要功能没有完全实现,但不影响用户的正常使用。例如:提示信息不太准确;或用户界面差、操作时间长等一些问题。较小使操作者不方便或遇到麻烦,但它不影响功能的操作和执行,如个别的不影响产品理解的错别字、文字排列不对齐等一些小问题。缺陷产生可能性列表缺陷产生可能性描述总是总是产生这个软件缺陷,其产生的概率是100%通常通常情况下会产生这个软件缺陷,其产生的概率大概是80-90%有时 有的
12、时候产生这个软件缺陷,其产生的概率大概是30-50%很少很少产生这个软件缺陷,其产生的概率大概是1-5%软件缺陷优先级列表缺陷优先级描述立即解决缺陷导致系统几乎不能使用或测试不能继续,需立即修复高优先级缺陷严重,影响测试,需要优先考虑正常排队缺陷需要正常排队等待修复低优先级缺陷可以在开发人员有时间的时候被纠正。软件缺陷状态列表缺陷状态描述激活或打开问题还没有解决,存在源代码中,确认“提交的缺陷”,等待处理,如新报的缺陷。已修正或修复已被开发人员检查、修复过的缺陷,通过单元测试,认为已解决但还没有被测试人员验证 关闭或非激活测试人员验证后,确认缺陷不存在之后的状态。重新打开测试人员验证后,还依然
13、存在的缺陷,等待开发人员进一步修复推迟这个软件缺陷可以在下一个版本中解决保留由于技术原因或第三者软件的缺陷,开发人员不能修复的缺陷不能重现开发不能复现这个软件缺陷,需要测试人员检查缺陷复现的步骤。软件缺陷来源列表缺陷来源描述需求说明书需求说明书的错误、或不清楚引起的问题设计文档设计文档描述不准确、和需求说明书不一致的问题系统集成接口系统各模块参数不匹配、开发组之间缺乏协调引起的缺陷数据流(库)由于数据字典、数据库中的错误引起的缺陷程序代码纯粹在编码中的问题所引起的缺陷软件缺陷根源列表缺陷根源描述测试策略错误的测试范围,误解了测试目标,超越测试能力等过程,工具和方法无效的需求收集过程,过时的风险
14、管理过程,不适用的项目管理方法,没有估算规程,无效的变更控制过程等。团队项目团队职责交叉,缺乏培训,没有经验等。组织和通讯缺乏用户参与,职责不明确,管理失败等。硬件硬件配置不对、缺乏,或处理器缺陷导致算术精度丢失,内存溢出等软件软件设置不对、缺乏,或操作系统错误导致无法释放资源,工具软件的错误,编译器的错误,2000 千年虫问题等。工作环境组织机构调整,预算改变,工作环境恶劣,如噪音过大。和软件生命周期一样,一个缺陷从它产生到终结的过程,称之为缺陷生命周期。每个缺陷都具有8种生命状态,即缺陷初始状态、缺陷分配状态、缺陷重新分配状态、缺陷修复状态,缺陷验证状态、缺陷重新打开状态、缺陷关闭状态。小结 软件测试作为软件工程课程体系的一个重要组成部分,本章介绍了此课与之前课程的相关性。重点介绍了软件缺陷。就软件缺陷的表现形式、产生原因、分类等方面进行了较为全面的讲解。