《软件开发与软件维护.ppt》由会员分享,可在线阅读,更多相关《软件开发与软件维护.ppt(110页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件技术基础软件技术基础自动化系:黄巧莉自动化系:黄巧莉Email:软件技术基础第十一章 软件开发与软件维护11.1 软件工程概述11.2 软件生存周期11.3 软件需求11.4 软件设计11.5 软件构造11.6 软件测试11.7 软件维护西南大学计信院自动化系软件技术基础11.1 软件工程概述11.1.1 程序开发与软件工程11.1.2 软件工程概述西南大学计信院自动化系软件技术基础11.1.1 11.1.1 程序开发和软件工程程序开发是软件开发的核心,建立计算模型、设计程序、编写代码、测试程序四个步骤统称程序设计,简称编程。“软件危机”的产生。软件工程思想,以系统工程的方法高效、快速地生
2、产大量合格的软件。西南大学计信院自动化系软件技术基础 Windows95有1000万行代码 Windows2000有5000万行代码例:Exchange2000和 Windows2000开发人员结构Exchange2000Windows2000项目经理项目经理25人人约约250人人开发人员开发人员140人人约约1700人人测试人员测试人员350人人约约3200人人西南大学计信院自动化系软件技术基础软件危机的主要特征软件开发周期大大超过规定日期;软件开发成本严重超标;软件质量难于保证。西南大学计信院自动化系软件技术基础软件工程的产生1968年由NATO(北大西洋公约组织)在德国的学术会议上,首先
3、提出了“软件工程”概念。“任何软件都应当和其它产业的产品一样,由专业人员制作(软件中是系统分析员、高级程序员、程序员),以系统的、工程的方法开发制作,并提供全方位的售后服务管理(不能因开发者离开、调走而无人管理)。”西南大学计信院自动化系软件技术基础软件工程的定义 IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”西南大学计信院自动化系软件技术基础系统方法是任何产品都有其创意、开发、生产、调试、使用、维护、退役的全过程,而不是只考虑其中的一部分。如果按照系统的规范和标准进行开发,就可能大幅度提高软件生
4、产力,就如同工业生产取代手工作坊。西南大学计信院自动化系软件技术基础工程方法指要有工程规范和工程管理。工程产品不要求绝对完善,只要求在给定时间、给定的经费和当前技术条件下符合规范的要求的最佳。工程管理要考虑到可行性、计划性、投入/产出、费用/效益。西南大学计信院自动化系软件技术基础软件工程以系统工程的方法制作软件产品软件的系统(生存期)模型与此模型相对应的各种规范和标准为达到这些规范、标准的方法和工具软件生产、交付、使用、维护的全面管理西南大学计信院自动化系软件技术基础软件开发方法学软件开发方法学的研究是软件技术发展最活跃的因素。所谓的方法学,是一组规范了的方法,按这组方法执行,可以得到较为理
5、想的结果。把这组方法标准化就是软件开发标准。西南大学计信院自动化系软件技术基础软件工程技术的两个特点 强调规范化 强调文档化西南大学计信院自动化系软件技术基础软件的工业化生产过程应具备的特点:F明确的工作步骤F详细具体的规范化文档F明确的质量评价标准 “一个好的工业,应有一套良好的标准来配套”西南大学计信院自动化系软件技术基础软件产品的标准化软件开发过程的标准化西南大学计信院自动化系软件技术基础软件工程与编程软件工程是一门学科,一种科学理论来指导软件系统开发,标准化,自动化的过程考虑如何分解一个系统,以便各人分工开发;考虑如何说明每个部分的规格要求;怎样才能易于维护单纯的代码编写是软件工程发展
6、的前身是软件工程中占据很少时间和空间的一部分西南大学计信院自动化系软件技术基础软件工作的范围只考虑编写程序 涉及整个软件生存周期扩展到扩展到西南大学计信院自动化系软件技术基础开发软件不仅仅是编程西南大学计信院自动化系软件技术基础11.1.2 软件工程概述软件工程是一门交叉学科软件工程与一般工程的差异软件工程知识结构软件工程教学课程目标西南大学计信院自动化系软件技术基础软件工程是一门交叉学科软件开发技术:软件开发方法学 软件开发过程 软件工具和软件工程环境 软件工程管理:软件管理学 软件经济学 软件心理学 软件工程所包含的内容不是一成不变的,随着人们对软软件工程所包含的内容不是一成不变的,随着人
7、们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。件系统的研制开发和生产的理解。应用发展的眼光看待它。西南大学计信院自动化系软件技术基础软件工程与一般工程的差异软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运行环境以及对它的操作软件设计的复杂性软件特征:功能的多样性 实现的多样性 能见度低 软件结构合理性差智力密集及知识产权保护西南大学计信院自动化系软件技术基础软件工程知识结构软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量西南大学计信院自动化系软件技术基础“软件工程”课程与其它软件专业课的区别(1)立足于系统的整体。(2
8、)讲授系统分析、系统设计、测试及维护的理论和方法。(3)构筑一个软件系统,实践软件开发全过程。西南大学计信院自动化系软件技术基础“软件工程”课程教学的目标 转变对软件的认识:上升 程序 系统 转变思维定式:上升程序员 系统工程师(系统分析员)西南大学计信院自动化系软件技术基础 软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型、软件生存周期模型、软件工程范型。11.1.3 软件开发模型西南大学计信院自动化系软件技术基础可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段1
9、 瀑布模型(Waterfall Model)西南大学计信院自动化系软件技术基础早期的瀑布模型即为线性顺序模型。它一次走完分析、设计、编码测试这些框架活动质量保证、文档制作、正式技术评审、配置管理等伞形活动穿插其中特点是严格把关、错误尽早发现并消灭在前一阶段西南大学计信院自动化系软件技术基础2 原型模型(快速原型模型)原型范型用户测试运行原型建造/修改 原型 听取用 户意见西南大学计信院自动化系软件技术基础基本思想是尽早拿出样板让用户试用,修改或补充了需求再接着开发它基本上按瀑布模型划分阶段:分析 设计 编码 测试 交付,设计注重上层,找一个或几个最有代表性的子系统快速编码测试,所以也叫快速原型
10、(rapid prototyping)原型增加了开发的工作量,增加了管理上的困难。特别是原型过程步骤事先难于计划,不知道应反复几次,从哪里开始反复,预算进度均难于控制。但它具有切合实际,成功率较高的优点,故至今仍在使用。西南大学计信院自动化系软件技术基础采用原型模型的软件生存周期分析定义系统需求生成生成原型原型系统设计程序设计编码测试运行和维护原型化含原型化的软件生存期西南大学计信院自动化系软件技术基础3 螺旋模型西南大学计信院自动化系软件技术基础把软件过程描绘为用户通信计划风险分析做工程(原型)构造与发布用户评审六种活动。对大型新产品特别有效,从概念开发最初产品开发产品增强开发产品维护改进。
11、西南大学计信院自动化系软件技术基础4 构件组装模型这类软件的开发过程也采用螺旋模型,只是把作工程和构造及发布合成一个步骤。风险分析后,转入客户评价。步骤如下:(1)先标识本项目需要什么构件;(2)库中查找构件或相似的构件;(3)如果可用转4 否则自行开发或修改,确认后入库;(4)构造为新系统作第m次迭代;(5)测试、确认。西南大学计信院自动化系软件技术基础5 快速应用开发模型RAD有以下步骤:(1)业务模型:以什么信息驱动业务过程运作?要生成什么信息?谁生成它?信息流的去向?由谁处理?可以辅之以数据流图(2)数据模型:为支持业务过程的数据流,找数据对象集合,定义数据对象属性,与其它数据对象的关
12、系构成数据模型,可辅之以E-R图。(3)做处理模型:如何使数据对象在信息流中完成各业务功能。描述数据对象的增加、修改、删除、查找。即细化数据流图中的处理框。西南大学计信院自动化系软件技术基础(4)应用程序生成:利用第四代语言(4GL)写出处理程序,重用已有构件或创建新的可重用构件,利用环境提供的工具,自动生成,构造出整个的应用系统。(5)测试与交付,由于大量重用,一般只作总体测试,但新创建的构件还是要测试的西南大学计信院自动化系软件技术基础6 其它模型除了上述五种模型而外,还有并发开发模型和形式方法模型,分别针对并发程序系统和需要作数学验证或函数式,逻辑式程序系统而设的。西南大学计信院自动化系
13、软件技术基础11.2 软件生存周期西南大学计信院自动化系软件技术基础11.3 软件需求11.3.1 需求工程11.3.2 导出需求11.3.3 分析模型西南大学计信院自动化系软件技术基础(维护报告)开发时期运行时期计划时期(目标与范围说明书)(可行性论证论告)(测试报告)(程序)(设计文档)(需求说明书)软件需求分析是软件生命期中重要的一步,也是决定性的一步。软件需求分析是软件生命期中重要的一步,也是决定性的一步。西南大学计信院自动化系软件技术基础11.3.1 需求工程 对系统应该提供的服务和所受到的约束进行理解、分析、建立文档、检验的过程需求工程。需求工程过程定义:过程模型(按什么步骤得到需
14、求文档)、过程执行者、过程支持和管理(需要的设备条件、资金、计划)、过程质量和改进(本过程的质量目标,改进措施)。西南大学计信院自动化系软件技术基础导出需求:需求来源、导出技术。需求分析:需求分类、概念建模、体系结构的初步设计、需求分配(按设想的体系机构为子系统,大模块写出需求,把总的需求分配到各个子部分)、需求磋商。对于风险较大的新技术要做关键机制的原型开发。写出需求规格说明。数据需求、功能需求、质量需求、管理需求、交付物需求。需求确认。模型确认、原型确认、需求确认。需求管理:需求追踪、需求变更管理。西南大学计信院自动化系软件技术基础需求工程过程西南大学计信院自动化系软件技术基础11.3.2
15、 导出需求(1)问题识别(2)分析与综合(3)编制需求分析文档(4)需求分析评审西南大学计信院自动化系软件技术基础需求分析流程需求分析流程需求分析流程需求分析流程西南大学计信院自动化系软件技术基础(1)问题识别从系统的角度来理解软件并评审软件范围是否恰当确定对目标系统的综合要求,即软件的需求提出这些需求实现条件,以及需求应达到的标准西南大学计信院自动化系软件技术基础软件的需求包括:功能需求性能需求环境需求可靠性需求安全保密要求用户界面需求资源使用需求成本消耗需求开发进度需求预先估计以后系统可能达到的目标西南大学计信院自动化系软件技术基础问题识别的另一项工作是建立分析所需要的通信途径,以保证能顺
16、利地对问题进行分析。西南大学计信院自动化系软件技术基础(2)分析与综合从信息流和信息结构出发,逐步细化所有的软件功能,找出系统各元素之间的联系、接口特性和设计上的约束,分析它们是否满足功能要求,是否合理。剔除其不合理的部分,增加其需要部分。最终综合成系统的解决方案,给出目标系统的详细逻辑模型。西南大学计信院自动化系软件技术基础(3)编制需求分析阶段的文档软件需求说明书数据要求说明书初步的用户手册修改、完善与确定软件开发实施计划西南大学计信院自动化系软件技术基础西南大学计信院自动化系软件技术基础西南大学计信院自动化系软件技术基础(4)需求分析评审系统定义的目标是否与用户的要求一致;系统需求分析阶
17、段提供的文档资料是否齐全;文档中的所有描述是否完整、清晰、准确反映用户要求;与所有其它系统成分的重要接口是否都已经描述;被开发项目的数据流与数据结构是否足够,确定;所有图表是否清楚,在不补充说明时能否理解;主要功能是否已包括在规定的软件范围之内,是否都已充分说明;设计的约束条件或限制条件是否符合实际;开发的技术风险是什么;是否考虑过软件需求的其它方案;是否考虑过将来可能会提出的软件需求;是否详细制定了检验标准,它们能否对系统定义是否成功进行确认。西南大学计信院自动化系软件技术基础11.3.3 分析模型分析阶段最重要的工作就是建模。系统模型的建立是对现实世界中存在的有关实体和活动的抽象和精化,包
18、括观察分析、模型表示和模型检查三个阶段。西南大学计信院自动化系软件技术基础11.4 软件设计软件设计分为两部分:1、顶层(总体、概要)设计 确定系统的整体体系结构、模块结构 2、详细设计 给出软件模块结构中各模块的内部过程描述(算法)西南大学计信院自动化系软件技术基础11.4.1 软件设计的基本原则抽象:类是实例的抽象,过程是程序的抽象,类型是变量的抽象。求精:为抽象增加具体的细节。分解/模块化:将系统分解为相对独立的模块化。数据隐藏:接口中数据传递越少越好,不是必须的数据尽量放在模块内部。西南大学计信院自动化系软件技术基础模块化模块化:就是把系统划分为若干个模块,从而获得满足问题需要的一个解
19、的过程。模块:是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。西南大学计信院自动化系软件技术基础11.4.2 设计模型 系统设计的四方面内容:体系结构设计、模块设计、数据结构与算法设计、用户界面设计。如果将软件系统比喻为人体,那么:(1)体系结构就如同人的骨架。(2)模块就如同人的器官,具有特定的功能。(3)数据结构与算法就如同人的血脉和神经,它让器官具有生命并能发挥功能。数据结构与算法分布在体系结构和模块中,它
20、将协调系统的各个功能。(4)用户界面就如同人的外表。西南大学计信院自动化系软件技术基础体系结构是软件系统中最本质的东西:(1)体系结构是对复杂事物的一种抽象。良好的体系结构是普遍适用的,它可以高效地处理多种多样的个体需求。(2)体系结构在一定的时间内保持稳定。良好的体系结构意味着普适、高效和稳定。西南大学计信院自动化系软件技术基础模块设计 在设计好软件的体系结构后,就已经在宏观上明确了各个模块应具有什么功能,应放在体系结构的哪个位置。习惯地从功能上划分模块,保持“功能独立”是模块化设计的基本原则。因为,“功能独立”的模块可以降低开发、测试、维护等阶段的代价。但是“功能独立”并不意味着模块之间保
21、持绝对的孤立。一个系统要完成某项任务,需要各个模块相互配合才能实现,此时模块之间就要进行信息交流。西南大学计信院自动化系软件技术基础界面设计管理输入设备(鼠标、键盘);确认用户输入;处理错误和显示错误消息;提供输入反馈(如输入自动回声);提供提示和帮助开发(开发者只要规定符号和提供帮助内容);窗口、域的显示,重叠和内容滚展;提供和应用程序的接口;界面管理功能和应用程序隔离;允许用户定制界面。西南大学计信院自动化系软件技术基础数据结构与算法设计(过程设计)完成数据、体系结构、界面设计之后,就按处理规格说明,或控制规格说明,或状态转移图,一一写出过程程序,也就是详细设计。选定或设计相应的算法作出设
22、计。此时并非用某种程序设计语言,而是类_xxx语言、PDL、细化图形(设计详细的结构化流程图)西南大学计信院自动化系软件技术基础详细设计详细设计的任务为软件结构图中的每一个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出清晰的描述。经过整个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把整个描述直接翻译成用某种程序设计语言书写的程序。详细设计的描述工具程序流程图方框图(N-S图)问题分析图(PDA)伪码(PDL语言)西南大学计信院自动化系软件技术基础程序流程图也称为程序框图,独立于任何一种程序设计语言,比较直观、清晰、易于掌握。任何复杂的程序流程图都可以由以下不同类
23、型的基本结构组合或嵌套而成:顺序结构选择结构(IF-THEN-ELSE)多分支选择结构(CASE)先判定循环结构(WHILE)后判定循环结构(UNTIL)西南大学计信院自动化系软件技术基础程序流程图程序流程图中常用的符号 西南大学计信院自动化系软件技术基础方框图(N-S图)图形描述工具。限制了随意的控制转移。N-S图的基本符号 西南大学计信院自动化系软件技术基础11.5 软件构造软件构造是将设计的结果转变为真实软件(代码块集合或源程序)的过程。早期构造软件只能编码(写源程序),叫软件编码阶段。当今软件大量重用,对于简单应用,利用配置语言写几条命令,把库中模块/对象调出、连接就完成了构造。西南大
24、学计信院自动化系软件技术基础软件构造与设计的关系软件设计把复杂的解分解为一个程序员能完全处理的块,原则上设计重点在于“可能”实现该产品的“功能、性能”,构造重点在于“必须可执行”。西南大学计信院自动化系软件技术基础工具的作用软件构造工具分两类。一类是软件构造过程中所用的工具,如编译器、代码生成器、文档编写器等。另一类是自动构造工具。专用工具箱(辅助Java开发的JDK)以解决与OS、数据库连接的细节问题,使用户集中构造应用逻辑的实现。高层的体系结构规范工具有利于快速构造复杂系统的体系结构。西南大学计信院自动化系软件技术基础标准的作用设计时常常是参照标准,构造则必须按照标准实施才能成为产品。严格
25、遵守标准所支持的资源才能使用。语言、数据库、平台采用什么标准是需求定义时定义的,此时要严格执行。西南大学计信院自动化系软件技术基础构造语言配置语言:从预定义选项中选出部件,定制安装成新的应用。工具箱语言:将专用的可重用件放在工具箱中,以工具箱界面上的一组命令调用。专用域语言编程语言西南大学计信院自动化系软件技术基础结构化编码方法对源程序的编码要求:最基本要求是源程序的正确性,同时还要考虑其可读性、可理解性、可测试性和可维护性。写程序的风格:一个好的源程序意味着源程序代码逻辑简明清晰,易读易懂。西南大学计信院自动化系软件技术基础编码原则程序内部文档应选取含义鲜明的名字,注解正确,程序清单层次清晰
26、,布局合理。数据说明和次序应该标准化,个别复杂的数据结构应加注释。每个语句应该简单直接,不能为提高效率而使程序变得过份复杂。对输入数据应进行合法性检查;对输出数据要加输出数据的标志。在程序编码阶段以不影响程序的清晰度和可读性为前提,尽可能提高效率。西南大学计信院自动化系软件技术基础11.6 软件测试1 基本概念软件测试定义:软件测试是为了发现错误而执行程序的过程。软件测试分为:单元测试和综合测试。软件测试在软件生存周期中横跨了两个阶段:通常在编写出第一个模块之后就对它做必要的测试(称作单元测试)。编码与单元测试属于软件生存周期中的同一阶段。在结束这个阶段之后,对软件系统还要进行各种综合测试,这
27、是软件生存周期的另一个独立的阶段,即测试阶段。西南大学计信院自动化系软件技术基础2 软件测试的目标和原则测试的目的是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量。好的测试方案是尽可能地发现至今尚未发现的错误的测试方案。西南大学计信院自动化系软件技术基础测试的目的想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。实施测试收集到的测试结果数据为可靠性分析提供了依据。测试不能表明软件中不存在错误。西南大学计信院自动化系软件技术基础软件测试的原则1
28、.应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。2.测试用例应由测试输入数据和对应的预期输出结果这两部分组成。3.程序员应避免检查自己的程序。4.在设计测试用例时,应包括合理的输入条件和不合理的输入条件。5.充分注意测试中的群集现象。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。6.严格执行测试计划,排除测试的随意性。7.应当对每一个测试结果做全面检查。8.妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。西南大学计信院自动化系软件技术基础11.6.1 软件测试策略测试过程是按单元测试、组装测试、确认测试和系统测试四个步骤进行的。单元测试
29、单元测试单元测试组装测试确认测试系统测试被测模块被测模块被测模块已测试的模块设计信息软件要求系统其它元素已集成的软件已确认的软件可交付的软件西南大学计信院自动化系软件技术基础软件测试与软件开发过程的关系需求分析设计编程单元测试集成测试有效性测试需求分析说明书总体设计说明书详细设计说明书源程序代码单元测试集成测试确认测试西南大学计信院自动化系软件技术基础1)单元测试(模块测试Unit Testing)单元测试又称模块测试,是针对软件设计的最小单位 程序模块,进行正确性检验的测试工作。目的:是发现模块的子程序或过程的实际功能与该模块的功能和接口描述是否相符,以及是否有编码错误存在。主要内容:模块接
30、口测试;局部数据结构测试;重要路径测试;出错处理能力测试;边界条件测试。西南大学计信院自动化系软件技术基础2)组装测试(Integrated Testing)组装测试(集成测试或联合测试)目的:为了发现程序结构的错误。西南大学计信院自动化系软件技术基础3)确认测试(Validation Testing)确认测试(有效性测试)又称有效性测试。组装测试结束后,得到的是一个完整的软件系统。这时需要进行最后的测试,即有效性测试。西南大学计信院自动化系软件技术基础确认测试的步骤选择测试人员构造测试用例实际运行测试软件计划用户文档开发文档源程序文本支持环境有效有效性测试性测试软件配软件配置审查置审查管理机
31、管理机构裁决构裁决专家鉴专家鉴定会定会测试报告软件配置交用户运行维护西南大学计信院自动化系软件技术基础4)系统测试(System Testing)系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。西南大学计信院自动化系软件技术基础11.6.2.测试技术选择测试用例是软件测试员最重要的一项工作。测试用例的属性:属性 描述name 测试用例的名称 location 可执行的完全路径名 input 输入数据或命令oracle 与测试输入相比较的期待测试
32、结果log 测试生产的输出西南大学计信院自动化系软件技术基础动态黑盒测试 闭着眼睛测试软件 不深入代码细节的测试方法称为动态黑盒测试。软件测试员充当客户来使用它。软件输入输出西南大学计信院自动化系软件技术基础动态白盒测试 带上X光眼镜测试?3581322.293419985680302829734315250*(1+0.015)*(1+0.015)360-1)/0.015 250*(1+0.015)*(1+0.015)360-1)/0.015 假如知道一个盒子包含一台计算机,而另一个盒子是人用纸笔计算,就会选择不同的测试用例。了解软件的运作方式会影响测试手段西南大学计信院自动化系软件技术基础黑
33、盒测试黑盒测试又称功能测试或数据驱动测试。在这种测试方法中,程序对测试者是完全透明的。测试者不考虑程序的内部结构和特性,就好像把程序看作一个不能打开的盒子,只根据程序的需求规格说明中的程序功能或程序的外部特性来设计测试用例。黑盒测试的方法包括:等价分类法、边缘值分析法。一般来讲,通常用黑盒法设计基本的测试方案,再利用白盒法做必要的补充。西南大学计信院自动化系软件技术基础 例:某报表处理系统要求用户输入处理报表的日期,日期限制在2001年1月至2005年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两
34、位代表月。如何用等价类划分法设计测试用例,来测试程序的日期检查功能?西南大学计信院自动化系软件技术基础用等价类划分法设计测试用例步骤(1)形成等价类表,每一等价类规定一个唯一的编号;(2)设计一测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖;(3)设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖;西南大学计信院自动化系软件技术基础第一步:等价类划分 输入等价类 有效等价类 无效等价类 报表日期的类型及长度6个数字字符(1)有非数字字符 (4)少于6个数字字符(5)多于6个数字字符(6)年份范围在200120
35、05之间(2)小于2001(7)大于2005(8)月份范围在112之间(3)“报表日期”输入条件的等价类表小于1(9)大于12(10)西南大学计信院自动化系软件技术基础第二步:为有效等价类设计测试用例对表中编号为1,2,3的3个有效等价类 用一个测试用例覆盖:测试数据 期望结果 覆盖范围200105等价类(1)(2)(3)输入有效西南大学计信院自动化系软件技术基础 测试数据 期望结果 覆盖范围001MAY等价类(4)输入无效20015等价类(5)输入无效2001005等价类(6)输入无效200005等价类(7)输入无效200805等价类(8)输入无效200100等价类(9)输入无效200113
36、等价类(10)输入无效不能出现相同不能出现相同的测试用例的测试用例本例的本例的1010个等价类至个等价类至少需要少需要8 8个测试用例个测试用例第三步:为每一个无效等价类设至少设计一个测试用例西南大学计信院自动化系软件技术基础白盒测试白盒测试又称结构测试或逻辑驱动测试。所谓“白盒”是指将对象看作一个打开的盒子,测试人员可利用程序内部的逻辑结构及有关的信息来设计或选择测试用例。白盒测试主要考虑的是测试用例对程序内部逻辑的覆盖程度,而不考虑程序的功能。对程序模块的所有独立的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;在循环的边界和运行界限内执行循环体;测试内
37、部数据结构的有效性,等。西南大学计信院自动化系软件技术基础2.白盒测试的测试用例设计逻辑覆盖法(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖 需要说明的是,上述各种覆盖准则的侧重点不同,覆盖程度也不同。但它们共同的是:任何一种覆盖都不能做到完全测试。西南大学计信院自动化系软件技术基础举例:例:PROCEDURE SAMPAL (A,B,X:REAL);BEGIN IF(A1)AND(B=0)THEN X=X/A IF(A=2)OR(X1)THEN X=X+1 END;西南大学计信院自动化系软件技术基础开始开始(A1)AND(B=0)(A=2)OR(X1)返回返
38、回X=X/AX=X+1FFTTabdce西南大学计信院自动化系软件技术基础(1)语句覆盖使程序中每个语句至少执行一次开始开始(A1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce只需设计一个测试用例:输入数据:A=2,B=0,X=4即达到了语句覆盖;语句覆盖是最弱的逻辑覆盖西南大学计信院自动化系软件技术基础(2)判定覆盖(分支覆盖)使每个判定的真假分支都至少执行一次开始开始(A1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce例:可设计两组测试用例:A=3,B=0,X=3 可覆盖c、d分支 A=2,B=1,X=2 可覆
39、盖b、e分支判定覆盖仍是弱的逻辑覆盖西南大学计信院自动化系软件技术基础(3)条件覆盖使每个判定的每个条件的可能取值至少执行一次。测试用例 通过路径 满足条件 覆盖分支A B X2 0 4 ace A1,B=0,A=2,X1 c,e1 1 1 abd A=1,B!=0,A!=2,X1,B=0,A=2,X=1 c,e1 1 2 abe A1 b,e两个测试用例覆盖了四个条件八种可能取值。未覆盖d分支,不满足判定覆盖的要求.条件覆盖不一定包含判定覆盖判定覆盖也不一定包含条件覆盖西南大学计信院自动化系软件技术基础(4)判定/条件覆盖 选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,
40、同时每个判断本身的所有可能判断结果至少执行一次。西南大学计信院自动化系软件技术基础(5)条件组合覆盖 所有可能的条件取值组合至少执行一次 A1,B=0 A1,B0 A1,B=0 A1,B0 A=2,X1 A=2,X1 A2,X1 A2,X1西南大学计信院自动化系软件技术基础测试用例 通过路径 满足条件 覆盖分支A B X2 0 4 ace A1,B=0,A=2,X1 c,e2 1 1 abd A1,B!=0,A=2,X=1 b,d1 0 2 abd A1 b,d1 1 1 abd A=1,B!=0,A!=2,X=1 b,d西南大学计信院自动化系软件技术基础黑盒测试与白盒测试比较 黑盒测试是从用
41、户观点,按规格说明书要求的输入数据与输出数据的对应关系设计测试用例,是根据程序外部特征进行测试。白盒测试是根据程序内部逻辑结构进行测试。西南大学计信院自动化系软件技术基础黑盒测试与白盒测试 不论黑盒还是白盒测试都不能进行穷尽测试,所以软件测试不可能发现程序中存在的所有错误,因此需精心设计测试方案,力争尽可能少的次数,测出尽可能多的错误。西南大学计信院自动化系软件技术基础11.7 软件维护软件维护是使软件处于良好运作状态的活动。(1)纠错性维护(2)适应性维护(3)完善性维护(4)预防性维护西南大学计信院自动化系软件技术基础维护模型日常维护 正确性维护和简单的适配性维护,直接修改代码。定期维护 把某段时间间隔的所有故障(无论已改正或尚未改的)和用户反馈的意见和要求收集起来。通过讨论会,对产品做全面分析,决定重构目标。西南大学计信院自动化系软件技术基础定义阶段流程图西南大学计信院自动化系软件技术基础开发阶段流程图西南大学计信院自动化系软件技术基础检验、交付与维护阶段流程图西南大学计信院自动化系
限制150内