首页 第11章软件开发与软件维护

第11章软件开发与软件维护

举报
开通vip

第11章软件开发与软件维护null软件技术基础软件技术基础自动化系:黄巧莉 Email:qlhuang@swu.edu.cn第十一章 软件开发与软件维护第十一章 软件开发与软件维护11.1 软件工程概述 11.2 软件生存周期 11.3 软件需求 11.4 软件设计 11.5 软件构造 11.6 软件测试 11.7 软件维护11.1 软件工程概述11.1 软件工程概述11.1.1 程序开发与软件工程 11.1.2 软件工程概述11.1.1 程序开发和软件工程11.1.1 程序开发和软件工程程序开发是软件开发的核心,建立计算模型、设计程序、编...

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