1、软件测试基础,第二章 软件开发过程,本章学习内容,软件及其特征 软件生命周期 软件产品构成的主要部分 软件开发模型,严格地说,软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。 通俗地说,软件工程是实现一个大型程序的一套原则方法,即按工程化的原则和方法组织软件开发工作。 软件测试是软件工程的一个重要环节,相当于工程领域中的质量检验部分,是确保软件工程质量的重要手段,软件工程与开发过程,对于软件测试与软件开发过程之间的关系,套用固定的模型不是聪明之举。 比如“程序设计”与“测试”之间的关系,习惯上总以为程序设计在先,测试在后,如图(a)所示。 而对于一些复杂的程序,将测试分为同步测试
2、与总测试更有效,如图(b)所示。,程序设计与测试的关系,软件及其特征 软件定义 软件是由能够完成预定功能和性能的一组计算机程序、能被充分操作的数据结构、描述程序设计和使用的文档三部分组成 软件=程序+数据+文档,软件特征 软件是一种逻辑实体,具有抽象性 软件的生产不同于硬件的制造 软件不会磨损 软件开发和运行对计算机系统有依赖性 软件的开发是一个复杂的过程,软件生命周期 定义 一个软件从它发生到消亡的过程 三个时期 软件定义 软件开发 软件使用与维护,问题定义,可行性研究,需求分析,概要设计,详细设计,编码,测试,维护,生命周期的八个阶段,测试步骤 测试步骤详细规定 如何设置 执行 评估特定的
3、测试用例,软件产品的组成 开发投入,客户需求,产品说明 综合描述 没有统一标准格式,可根据具体情况而定,设计文档 设计方案/计划 软件设计文档内容 架构 数据流示意图 状态变化示意图 流程图 注释代码 测试文档 开发进度表 软件产品组成部分,软件项目组成员 项目管理员 系统设计师 程序员 软件测试人员 技术制作、用户助手、用户培训员、手册编写和文件档案专员 结构管理和制作人员,软件开发模型 软件开发模型 软件开发全部过程、资源、活动和人物的结构框架,规定了完成各项任务的工作步骤 目前主要的七种软件开发模型,1大棒模式 源于能量爆发创造宇宙,万物都由能量和物质积聚而成的理论,但如果不是遵循某种正
4、确的排列和组合,形成的将不是预先期望的事物。大棒模式与上述理论一样:一大堆能量(这里指开发软件所需的人力和物力)放在一起,巨大的能量进行释放,通常的结果可能是产生了优秀的软件产品或成为一堆“废品”(不成功的软件)。,BOOM!,优点:思路简单, 通常可能是开发者的“突发奇想” 缺点:开发过程是非工程化的,随意性大 关于测试:有的较简单,有的则非常困难,2.边写边改模式采用边写边改法的软件开发通常只是有了比较粗略的想法就开始进行简单的设计、然后进行较长的反复编写、测试与修复这样一个循环的过程。在认为无法更精细的描述软件产品要求时,就发布产品。,优点:能够较为迅速的展现成果,适合需要快速制作而且用
5、完就扔的小项目,如示范程序、演示程序等。 缺点:其编码和测试可能将是长期的循环往复的过程。,3.瀑布模式瀑布过程模型反映了人们早期对软件工程的认识水平,是人们所熟悉的一种线性思维的体现。瀑布过程模型强调阶段的划分及其顺序性、各阶段工作及其文档的完备性,是一种严格线性的、按阶段顺序的、逐步细化的开发模式。,图1-4 瀑布过程模型,优点:易于理解;调研开发的阶段性;强调早期计划及需求调查;确定何时能够交付产品及何时进行评审与测试。,缺点:需求调查分析只进行一次,不能适应需求变化;顺序的开发流程,使得开发中的经验教训不能反馈到该项目的开发中去;不能反映出软件开发过程的反复与迭代性;没有包含任何类型的
6、风险评估;开发中出现的问题直到开发后期才能够显露,因此失去及早纠正的机会。,Tom Gilb: “假如你不积极地解决你项目中存在的风险,它们就会积极地解决掉你”瀑布方法会掩饰项目中真正的风险,当你太晚发现它们时已无济于事。,4.快速原型开发模式根据客户需求在较短的时间内解决用户最迫切解决的问题,完成可演示的产品。这个产品只实现最重要功能,在得到用户的更加明确的需求之后,原型将丢弃。,需求分析,原型开发,原型评价,最终设计,系统实现,用户反馈,图1-5 快速原型开发模式示意图,5.螺旋模式螺旋模式是瀑布模式与边写边改演化模式相结合,并加入风险评估所建立的软件开发模式。 主要思想是在开始时不必详细
7、定义所有细节,而是从小开始,定义重要功能,尽量实现,接受客户反馈,进入下一阶段,并重复上述过程,直到获得最终产品。,每一螺旋(开发阶段)包括5个步骤: 确定目标,选择方案和限制条件 对方案风险进行评估,并能解决风险 进行本阶段的开发和测试 计划下一阶段 确定进入下阶段的方法,优点:严格的全过程风险管理;强调各开发阶段的质量;提供机会评估项目是否有价值继续下去。 引入严格的风险识别、分析和控制,要求风险管理技术水平很高,并需要较多的人员、资金和时间上的投入,图 软件开发的螺旋模式,6.V模式V模式是在20世纪80年代后期Paul Rook提出的。V模型更强调软件测试过程与分析、设计等开发过程的关
8、联。,7.喷泉模式喷泉模式是B.H.Sollers和J.M.Edwards在1990年提出的一种新的软件开发模型,它以用户需求为动力、以对象为驱动,主要用于支持面向对象的软件开发过程。,图 软件测试与软件开发的关系,软件开发与软件测试的关系,测试与开发各阶段的关系,测试在开发阶段的作用 项目规划阶段 负责从单元测试到系统测试的整个测试阶段的监控 需求分析阶段 确定测试需求分析、系统测试计划的制定、评审后成为管理项目 详细设计和概要设计阶段 确保集成测试计划和单元测试计划完成,编码阶段 由开发人员进行自己负责部分的测试代码。在项目较大时,由专人进行编码阶段的测试任务 测试阶段(单元、集成、系统测试) 依据测试代码进行测试,并提交相应的测试状态报告和测试结束报告,小结,什么是软件 软件的特征 软件生命周期 软件产品构成的主要部分 软件开发模型,