公共基础--软件工程基础_第1页
公共基础--软件工程基础_第2页
公共基础--软件工程基础_第3页
公共基础--软件工程基础_第4页
公共基础--软件工程基础_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.1 3.1 软件工程概述软件工程概述3.2 3.2 结构化分析方法结构化分析方法3.3 3.3 结构化设计方法结构化设计方法3.4 3.4 软件测试软件测试3.5 3.5 程序调试程序调试3.1软件工程概述软件工程概述 3.1.1软件定义与软件的特点软件定义与软件的特点 计算机软件计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合程序、数据及相关文档的完整集合。软件的特点:软件的特点: 软件是一种逻辑实体,而不是物理实体,具有抽象性; 软件的生产与硬件不同,它没有明显的制作过程。一旦研制成功,可以多次拷贝; 软件在运行、使用期间不存在磨损、老化问题; 软

2、件的开发、运行对计算机系统具有依赖性,受计算机系统的限制; 软件复杂性高,成本昂贵; 软件开发涉及许多的社会因素。 软件按功能可以分为:应用软件、系统软件、支应用软件、系统软件、支撑软件(工具软件)撑软件(工具软件)。 3.1.2软件危机与软件工程软件危机与软件工程 软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。实际上,几乎所有的软件都不同程度地存在这些问题。 为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径,逐步形成了软件工程的概念,开辟了工程学的新兴领域-软件工程学。软件工程就是试软件

3、工程就是试图用工程、科学和数学的原理与方法研制、维护计图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法算机软件的有关技术及管理方法。 关于软件工程的定义软件工程的定义,国标(GB)中指出,软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。 软件工程包括软件工程包括3 3个要素个要素,即方法、工具和过程方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。 软件工程的核心思想软件工程的核心思想是把软件产品(就像其他工业产品一样)看作是一个工程产品来处理。把需求计划

4、、可行性研究、工程审核、质量监督等工程化的概念引入到软件生产当中,以期达到工程项目的工程项目的三个基本要素:进度、经费和质量的目标三个基本要素:进度、经费和质量的目标。 3.1.3软件工程过程与软件生命周期软件工程过程与软件生命周期 1.1.软件工程过程软件工程过程 软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。基于这个方面, 软件工程过程通常包括:软件规格说明、软件开发、软件确认、软件演进4种基本活动。 2.软件生命周期软件生命周期 软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期软件生命周期。如图16-1所示,从该图中,还可以看到软

5、件生命周期,也可以分为软件定义软件定义、软件开软件开发及软件运行维护发及软件运行维护三个阶段。通常,软件生命周期的主要六个活动阶段是:可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。 图16-1 软件生命周期3.1.4软件工程的目标与原则软件工程的目标与原则 1. 软件工程的目标软件工程的目标 指在给定成本、进度的前提下,开发出具有有效性、具有有效性、可靠性、可理解性、可维护性、可重用性、可适应可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户性、可移植性、可追踪性和可互操作性且满足用户需求的产品需求的产品。 基于软件工程的目标,

6、软件工程的理论和技术性研究的内容主要包括:软件开发技术软件开发技术和软件工程管理软件工程管理。 2.软件工程的原则软件工程的原则 为了达到软件工程目标,在软件开发过程中,必须遵循的基本原则基本原则是:抽象、信息隐蔽、模块化、抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性及可验证性局部化、确定性、一致性、完备性及可验证性。 3.1.5软件开发工具与软件开发环境软件开发工具与软件开发环境 1. 软件开发工具软件开发工具 软件开发工具的发展是从单项工具的开发逐步向集单项工具的开发逐步向集成工具发展成工具发展的,软件开发工具为软件工程方法提供了自动的或半自动的软件支撑环境。同时,软件开发的有效

7、应用也必须得到相应工具的支持,否则方法将难以有效的实施。 2.软件开发环境软件开发环境 该环境是全面支持软件开发全过程的软件工具集合全面支持软件开发全过程的软件工具集合。这些软件工具按照一定的方法或模式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。计算计算机辅助软件工程机辅助软件工程是当前软件开发环境的发展方向。 3.2结构化分析方法结构化分析方法 结构化方法包括已经形成了配套的结构化分析方法、结构化设计方法和结构化编程方法。结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。3.2.13.2.1需求分析与需求分析方法需求分析与需求分析方法 1. 需求分析需求分析 软件需求是

8、指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。需求分析将创建所需的数据模型、功能模型和控制模型。 1 1)需求分析的定义)需求分析的定义 IEEE软件工程标准词汇表对需求分析定义对需求分析定义如下: 用户解决问题或达到目标所需的条件或权能; 系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能; 一种反映 或所描述的条件或权能的文档说明 2 2)需求分析阶段的工作)需求分析阶段的工作 需求分析阶段的工作,可以概括为四个方面:需求需求获取、需求分析、编写需求规格说明书获取、需求分析、编写需求规格说明书 、

9、需求评审、需求评审。 2. 需求分析方法需求分析方法 常见的需求分析方法有结构化分析结构化分析方法方法和面向对面向对象的分析方法象的分析方法两种。 1 1)结构化分析方法)结构化分析方法 该方法主要包括的内容内容如下:面向数据流的结构面向数据流的结构化分析方法;面向数据结构的化分析方法;面向数据结构的JacksonJackson方法;面向方法;面向数据结构的结构化数据系统开发方法数据结构的结构化数据系统开发方法。 2 2)面向对象的分析方法)面向对象的分析方法 该方法正处于发展之中,目前尚不大成熟与完善。 16.2.216.2.2结构化分析方法结构化分析方法 1. 结构化分析方法综述结构化分析

10、方法综述 结构化分析方法是20世纪70年代中期倡导的基于功能分解的分析方法,其目的是帮助弄清用户对软件的需求。 结构化分析方法的实质实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。结构化分析的步骤:(1)通过对用户调查,又软件的需求为线索,获得当前系统的具体模型(2)去年具体模型中非本质因素,抽象出逻辑模型(3)根据特点分析当前与目标系统的差距,建立目标系统的逻辑模型(4)完善目标系统并之补充细节,写出目标系统的软件需求规格说明(5)评审直到确认完全符合用户对软件的需求 2. 结构化分析的常用工具结构化分析的常用工具 1 1)数据

11、流图)数据流图 数据流图是描述数据处理过程的工具,是需求的逻辑模型的图形表示,它从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。直接支持系统的功能建模。 数据流图中的主要图形元素如图16-2所示。图16-2 数据流图中的主要元素 建立数据流图的步骤如下: 1) 由外向里;先画系统的输入输出,然后画系统的内部。 2) 自顶向下;顺序完成顶层、中间层、底层数据流图。 3) 逐层分解。例如例如,某银行取款业务的数据流图,如图16-3所示。 图16-3 银行取款业务的数据流图 2 2)数据字典)数据字典 数据字典是对所有与系统相关的数据元素的一个有组织的列表,并包含对数据元素精确的、严

12、格的定义,使用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。数据字典把不同的需求文档和分析模型紧密地结合在一起,与各模型的图形表示配合,能清楚地表达数据处理的要求。 在数据字典的编制过程中,常使用定义式方式描述数据结构。常用的定义式符号= 表示“等于”,“定义为”,“由什么构成”| 表示“或”+ 表示“与”,“和” 例如,例如,银行取款业务的数据流图中,存储文件“存折”的数据字典定义如下:存折=户名+所号+账户+开户日+性质+(印密)+1存取行50 存折由六数据项组成存折由六数据项组成, ,密印可选,存取密印可选,存取1 1至至5050处处户名=2字母24 户名由户名由2

13、2至至2424个字母组成个字母组成所号=“001”.“999” 所号可为所号可为“001001”、“002002”、“999999”nm 表示“重复”,即括号中的项要重复若干次,n,m是重复次数的上下限() 表示“可选”,即括号中的项可以没有* 表示“注释”. 连接符账号=“00000001”.“99999999”开户日=年 + 月 + 日 开户日由年月日构成开户日由年月日构成性质=“1” .“6” 有六类储户,如有六类储户,如1 1示普通户、示普通户、5 5示工资户示工资户印密=“0” 印密在存折上不显示印密在存折上不显示存取行=日期+(摘要)+支出+存入+余额+操作+复核日期=年+月+日年

14、=“00”.“99”月=“01”.“12”日=“01”.“31” 摘要=1字母4支出=金额 金额=“0000000.01”.“9999999.99”操作=“00001”.“99999” 3)判定树)判定树 使用判定树进行描述时,应先从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。 例如例如,某货物托运管理系统中,对发货情况的处理要依赖检查发货单,检查发货单受货物托运金额、欠款等条件的约束,可以使用类似分段函数的形式来描述这些约束和处理。对这种约束条件的描述,如果使用自然语言,表达易出现不准确

15、和不清晰。如果使用如图使用如图16-416-4所示例子中的判定树来描述所示例子中的判定树来描述,则简捷清晰。 图16-4 “检查发货单”判定树 4 4)判定表)判定表 判定表与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,使用判定表描述比较适宜。 判定表由四部分组成,如图16-5所示。 图16-5 判定表组成 图16-6为“检查发货单”判定表,其中“”表示满足对应条件项时执行的操作。 图中的基本条件项基本条件项,列出了各种可能的条件;条条件项件项,列出了各种可能的条件组合;基本动作项基本动作项,它列出了所有的操作;动作项动作项,它列出在对应的条件组合下所选的操作。 1234条件 发

16、货单金额 $500 $500 $500 $500 赊欠情况 60天 60天 60天60天 操作不发出批准书 发出批准书 发出发货单 发出赊欠报告 图16-6 “检查发货单”判定表 判定表或判定树是以图形式形式清晰描述数据流图的加工逻辑。利用它们便于直接映射到程序代码。 16.2.3 软件需求规格说明书软件需求规格说明书 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。1.软件需求规格说明书的作用软件需求规格说明书的作用 软件需求规格说明书的作用是: 便于用户、开发人员进行理解和交流。 反映出用户问题的结构,可以作为软件开发工作的基础和依据。 作为确认测试和验收的依据。2

17、.软件需求规格说明书的内容软件需求规格说明书的内容软件需求规格说明书所包括的内容和书写框架如下: 一、概述二、数据描述 . 数据流图 . 数据字典 . 数据接口说明 . 内部接口三、功能描述 . 功能 . 处理说明 . 设计的限制 四、 性能描述 . 性能参数 . 测试种类 . 预期的软件响应 . 应考虑的特殊问题五、参考文献目录 六、附录其中,概述是从系统的角度描述软件的目标和任务。 3.3 结构化设计方法结构化设计方法 3.3.1软件设计的基本概念软件设计的基本概念 1. 软件设计的基础软件设计的基础 软件设计是一个把软件需求转换为软件表示的过程。其基本目标是用比较抽象概括的方式确定目标系

18、统如何完成预定的任务。 从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。 软件设计的一般过程是:软件设计是一个迭代的过程;先进行高层次的结构设计;后进行低层次的过程设计;穿插进行数据设计和接口设计。 2. 软件设计的基本原理软件设计的基本原理 软件设计遵循软件工程的基本目标和原则,在软件设计中应遵循以下原则: 1 1)抽象抽象:把事物本质的共同特性提取出来而不考虑其他细节。 2 2)模块化模块化:指把一个待开发的软件分解成若干小的简单的部分。如VBA中的子过程、函数过程等。 3 3)信息隐蔽信息隐蔽:指在一个模块内包含的信息,对于不需要这些信息的其他模块来说是不能访问的

19、。 4 4)模块独立性模块独立性:指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少、接口简单。 模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。 内聚性:内聚性:内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。一个模块的内聚性越强则该模块的独立性越强。 耦合性:耦合性:耦合性是模块间互相连接的紧密程度的度量。取决于各个模块之间接口的复杂度等。一个模块与其他模块的耦合性越强,则其模块独立性就越弱 3.3.结构化设计方法结构化设计方法 结构化设计方法的基本思想是将软件设计成由相对独立、单一功能的模块组成的结构。 3.3.

20、2 概要设计概要设计 1.1.概要设计的任务概要设计的任务 软件概要设计的基本任务是:设计软件系统结构、数据结构及数据设计、编写概要设计文档和概要设计文档评审。 1 1)设计软件系统结构)设计软件系统结构 在需求分析阶段,已经把系统分解成层次结构,而在概要设计阶段,需要进一步分解,划分为模块以及模块的层次结构。 2 2)数据结构及数据设计)数据结构及数据设计 数据设计是实现需求定义和规格说明过程中提出的数据对象的逻辑表示。 3)编写概要设计文档)编写概要设计文档 在概要设计阶段,需要编写的文档有:概要设计说明书、数据设计说明书、集成测试计划等。 4)概要设计文档评审)概要设计文档评审 在概要设

21、计中,对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性、各部分之间的一致性等都要进行评审,以免在以后的设计中出现大的问题而返工。 常用的软件结构设计工具是结构图,也称程序结构图。结构图的基本图符如图16-7所示。根据结构化设计思想,结构图构成的基本形式如图16-8所示。 一般模块一般模块 数据信息数据信息 控制信息控制信息图图 16-7 结构图基本符号结构图基本符号 基本形式 顺序形式 重复形式 选择形式 图 16-8 结构图构成的基本形式 A A B B C D A B A B C 2. 面向数据流的设计方法面向数据流的设计方

22、法 面向数据流的设计方法定义了一些不同的映射方法, 利用这些映射方法可以把数据流图变换成结构图表示的软件结构。下面先了解数据流图表示的数据处理的类型,然后针对不同类型分别进行分析处理。 1 1)数据流类型)数据流类型 典型的数据流类型有两种: 变换型和事务型变换型和事务型。 变换型:变换型:变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。变换型数据处理问题的工作过程大致分为三步,如图16-9所示。变换型数据流图映射的结构图如图16-10所示。 输入 中心变换 输出 图 16-9 变换型数据流结构的

23、组成取得数据变换数据输出数据 B C B C 图16-10 变换型数据流系统结构图主控模块输入数据变换中心输出数据事务型:事务型:在很多软件应用中,存在某种作业数据流, 它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。事务型数据流如图16-11 所示。在一个事务型数据流中,事务中心接收数据,分析每个事务以确定它的类型,根据事务类型选取一条活动通路。事务型数据流图映射的机构图如图16-12所示。 输入流 图16-11 事务型数据流结构事 务 处 理 中心事务n事务1事务2 图16-12 事务型数据流系统结构图 事务中心 事务调度 输出结果 读入分析输入流 事务1

24、 事务2 事务n 2 2)面向数据流设计方法的设计过程)面向数据流设计方法的设计过程 第第1步:步:分析、确认数据流图的类型,区分是事务型还是变换型。 第第2 2步:步:说明数据流的边界。 第第3步:步:把数据流图映射为程序结构。对于事务流区分事务中心和数据接收通路,将它映射成事务结构,对于变换流,区分输出和输入分支,并将其映射成变换结构。 第第4 4步:步:根据设计准则对产生的结构进行细化和求精 3.3.3 详细设计详细设计 详细设计的任务,是为系统结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。常见工具有:图形工具:图形工具:程序流程图、N-S

25、、PAD、HIPO;表格工具:表格工具:判定表;语言工具:语言工具:PDL(伪码)。 下面讨论其中几种主要的工具: 1.1.程序流程图程序流程图 程序流程图是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图。 构成程序流程图的最基本图符及含义如图16-13 所示;5种控制结构(顺序、选择、先判断循环、后判断循环、多分支选择结构)见图16-14。 或 控制流 加工步骤 逻辑条件 图 16-13 程序流程图的基本图符 通过把程序流程图的5种基本控制结构相互组合或嵌套,可以构成任何复杂的程序流图。 F =1 T F T T =n F 顺序结构 选择结构 先判断重复 后判断重复 多分支选

26、择 图16-14 程序流程图构成的5种控制结构 2. N-S图图 N-SN-S图的基本图符及表示的图的基本图符及表示的5 5种基本控制结构如图种基本控制结构如图16-1516-15所示。所示。 例如,例如,下面是简单托运货物运费计算的问题。 设货物重量x,客户信息y,输入x,y后,计算运费的具体要求是:如果0 x15,则用公式1计算,循环3次完成同样的“记帐” 和“输出”操作。然后程序结束; 如果015,则用公式2计算后,循环3次完成同样的“记帐”和 “输出”操作。然后程序结束。 该问题程序的程序N-S图描述如图16-16所示。 3. PAD图图 PAD图是问题分析图的英文缩写。PAD图的基本

27、图符及表示的5 种基本控制结构,如图16-17所示。上述托运货物运费计算问题程序的PAD图如图16-18所示。 4. 过程设计语言(过程设计语言(PDL) PDL 也称为结构化的英语和伪码,它是一种混合语言,采用英语的词汇和结构化程序设计语言。 用PDL表示的基本控制结构中常用词汇如下: 顺序:顺序: 条件:条件:IF/THEN/ELSE/ENDIF 循环:循环:DO WHILE/ENDDO 循环:循环:REPEAT UNTIL/ENDREPEAT 分支:分支:CASE_OF/WHEN/SELECT/WHEN/ SELECT/ENDCASE 例如,例如,上述托运货物运费计算问题的程序描述如下,

28、它是类似C语言的PDL。 count( );/* 计算运费计算运费 */ 输入x;输入y;if (0 x15) 公式2计算;call sub;sub( ); for ( i=1,3,i+) do 记账;输出;3.4 软件测试软件测试 软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试,验证软件是否合格、能否交付用户使用等。 3.4.1软件测试的目的软件测试的目的 软件测试的目的如下: 软件测试是为了发现错误而执行程序的过程; 一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例; 一

29、个成功的测试是发现了至今尚未发现的错误的测试。 显然,测试要以查找错误为中心,而不是为了演示软件的正确功能。 3.4.2 软件测试的准则软件测试的准则 软件测试要设计出有效的测试方案和好的测试用例,软件测试人员要充分理解和运用如下软件测试准则: 1 1)所有测试都应追溯到需求; 2 2)严格执行测试计划,排除测试的随意性; 3 3)充分注意测试中的群集现象(指错误群集的程序); 4 4)程序员应避免检查自己的程序; 5 5)穷举测试(指把程序所有可能的执行路径都进行检查的测试)不可能; 6 6)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。 3.4.3 软件测试技术与方法

30、综述软件测试技术与方法综述 软件测试的方法和技术是多种多样的。若从是否需要执行被测软件的角度,可以分为静态测试和动态测试方法。若按照功能划分可以分为白盒测试和黑盒测试方法。 1. 1.静态测试静态测试 静态测试包括代码检查、静态结构分析、代码质量度量等。静态测试可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。经验表明,使用人工测试能够有效地发现30% 到70% 的逻辑设计和编码错误。 2.2.动态测试动态测试 动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。或者说,是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些用例去运行程序,

31、以发现程序错误的过程。 测试用例的格式为:测试用例的格式为:(输入值集输入值集),(),(输出值集输出值集) 2.2.白盒测试方法与测试用例设计白盒测试方法与测试用例设计 该方法是根据软件产品的内部工作过程检查内部根据软件产品的内部工作过程检查内部成分,以确认每种内部操作符合设计规格要求成分,以确认每种内部操作符合设计规格要求。白盒测试把测试对象看作一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。 白盒测试的主要方法有逻辑覆盖、基本路径测试逻辑覆盖、基本路径测试等。 1 1)逻辑覆盖测试)逻辑覆盖测试 逻辑覆盖是泛指一系列以程序内

32、部的逻辑结构为泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术。通常基础的测试用例设计技术。通常逻辑覆盖有5种。 语句覆盖:语句覆盖:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。例例16-1 16-1 按照语句覆盖的测试要求,对图16-19的程序流程图对应的程序,设计测试用例1和测试用例2。 语句覆盖是逻辑覆盖中基本的覆盖,尤其对单元测试来说。但是语句覆盖往往没有关注判断中的条件有可能隐含的错误。 begin 输入i,j i j x=j x=i 输出i,j,xend测试用例1: 输入 输出(i,j) (i,j,x)(8,8) (8,8,8)测试用例2: 输入 输出(i,j)

33、 (i,j,x)(8,16) (8, 16,16)图图16-1916-19 例16-1的程序流程图与测试用例 判断判断- -条件覆盖:条件覆盖:设计足够的测试用例,使判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能取值分支至少执行一次。 路径覆盖:路径覆盖:执行足够的测试用例,使程序中所有可能的路径都至少经历一次。 判断覆盖:判断覆盖:使设计的测试用例,保证程序中每个判断的每个取值分支(T或F)至少经历一次。 条件覆盖:条件覆盖:设计的测试用例保证程序中每个判断的每个条件的可能取值至少执行一次。 2 2)基本路径测试)基本路径测试 基本路径测试根据软件过程性描述中的控制流程确定

34、程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对每一条独立执行路径进行测试。例例3-53-5设有如图 16-23所示的程序流程图表示的程序。 a T c F T b F d e f 图 16-23 程序流程图A 1B =0输出A输出B输出A与Bend 对图16-23 确定程序的环路复杂度为3。方法是:环路复杂度=程序流程图中的判断框个数+1 。这里环路复杂度的值即为设计测试用例的基本路径数,表 16-3列出的一组测试用例,覆盖的基本路径是: abf, acef, acdf。 测试用例 通过路径 (A=-3, B=0), (输出略) ( abf) ( A=4, B=0),

35、 (输出略) (acef) ( A=4, B=4), (输出略) (acdf) 表 16-3 例16-5的测试用例 3. 黑盒测试方法与测试用例设计黑盒测试方法与测试用例设计 黑盒测试是对软件已经实现的功能是否满足需求黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证进行测试和验证。黑盒测试完全不考虑程序内部的逻辑结构和内部特征,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。 黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法等,主要用于软件确认测试。 1 1)等价类划分法)等价类划分法 等价类划分法是将程序的所有可能的输入数据划分成若干部分(若干等价类),然

36、后从每个等价类中选取数据作为测试用例。使用该方法,需要划分输入集合的等价类。等价类包括: 有效等价类:有效等价类:合理、有意义的输入数据构成的集合。可以检验程序中符合规定的功能、性能。 无效等价类:无效等价类:不合理、无意义的输入数据构成的集合。可以检验程序中不符合规定的功能、性能 为此,需要研究程序的功能说明,从而确定输入数据的有效等价类和无效等价类,进而选取适当的测试用例。如,P249例16-6。 2 2)边界值分析法)边界值分析法 边界值分析法是对各种输入、输出范围的边界情况设计测试用例的方法。 经验表明,程序错误最容易出现在输入或输出范围的边界处,而不是在输入范围的内部。因此针对各种边

37、界情况设计测试用例,可以查出更多的错误。 3 3)错误推测法)错误推测法 我们可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子,这就是错误推测法。16.4.416.4.4软件测试的实施软件测试的实施 软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。通过这些步骤的实施来验收是否合格,能否交付用户使用。 1. 1.单元测试单元测试 单元测试是对软件设计的最小单位-模块(程序单元),进行正确性检验的测试。单元测试的目的是发现各模块内部可能存在的各种错误。 单元测试是针对某个模块的,这样的模块通常并不是一个独立的程序,因此模块不能

38、自己运行,而要靠辅助其他模块调用或驱动。也就是说,单元测试要考虑它和外界的联系,必须在一定的环境下运行。 在进行单元测试之前需要编写驱动模块和桩模块(支持模块),驱动模块的作用是模拟系统调用测试模块,相当于被测试模块的主程序,它接收测试数据,并传给被测模块,输出实际测试结果。桩模块的作用是模拟模块调用的其他模块,是一个模拟子程序,如图16-24所示。 驱动模块被测单元桩模块A桩模块B桩模块C图16-24 单元测试的测试环境 2. 集成测试集成测试 单元测试之后,应按要求把模块组装起来,进行集成测试。集成测试又称组装测试或联合测试。 集成测试时,将模块组装成程序通常采用的非增量方式组装与增量方式

39、组装。 增量方式包括:自顶向下、自底向上、自顶向下与自底向上相结合的混合增量方法。 1)自顶向下的增量方式)自顶向下的增量方式 将模块按系统程序结构,从主控模块(主程序)开始,沿控制层次自顶向下地逐个把模块连接起来。该方式在测试过程中能较早地验证主要的控制和判断点。 2)自底向上的增量方式)自底向上的增量方式 自底向上集成测试方法是从软件结构中最底层软件单元开始进行集成和测试。在模块的测试过程中,需要从子模块得到的信息可以直接运行子模块得到。由于在逐步向上组装过程中,下层模块总是存在的,因此不在需要桩模块,但需要调用这些模块的驱动模块。 自顶向下和自底向上测试各有优缺点,有时可以将两者结合起来

40、进行测试。 3.3.确认测试确认测试 集成测试结束后,得到的是一个完整的软件系统,这时,需要进行确认测试。确认测试(即有效性测试)的任务是验证软件的功能、性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。 4.4.系统测试系统测试 系统测试是将通过测试确认的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他系统元素组合在一起,在实际运行环境下对计算机系统进行一系列的集成测试和确认测试。 系统测试的目的是在真实的系统工作环境下,检验软件是否能与系统正确连接,发现软件与系统需求不一致的地方。 3.5 程序调试程序调试 3.5.1

41、基本概念基本概念 在对程序进行成功测试之后,将进入程序调试(通常称Debug, 即排错)。程序调试的任务是诊断和改正程序中的错误。 程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置;其二是对程序进行修改,排除这个错误。 1. 1.程序调试的基本步骤程序调试的基本步骤 1 1)错误定位 2 2)修改设计和代码,以排除错误 3 3)进行回归测试,防止引进新的错误 2.2.程序调试的原则程序调试的原则 因为调试活动由对程序中错误的定性、定位和排错两部分组成,因此调试原则从以下两个方面考虑: 1 1)确定错误的性质和位置时的注意事项; 2 2)修改错误的原则。 16.

42、5.2 软件调试方法软件调试方法 调试的关键在于推断程序内部的错误位置及原因。从是否跟踪和执行程序的角度来看,软件调试可以分为静态调试和动态调试。 主要的调试方法有强行排错法、回溯法和原因排除法。主要的调试方法有强行排错法、回溯法和原因排除法。 1. 1.强行排错法强行排错法 其过程可概括为,设置断点、程序暂停、观察程序状态、继续运行程序。这是目前使用较多、效率较低的调试方法。涉及的调试技术主要是设置断点和监视表达式。例如: 通过内存全部打印来排错; 在程序特定部位设置打印语句(即断点法); 自动调试工具。 2. 2.回溯法回溯法 该方法适合于小规模程序的排错。即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。然后,从发现“症状”的地方开始,沿程序的控制流程,逆向跟踪源程序代码,直到找到错误根源或确定错误产生的范围。 3. 3.原因排除法原因排除

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论