计算机软件技术基础:第四讲-软件工程_第1页
计算机软件技术基础:第四讲-软件工程_第2页
计算机软件技术基础:第四讲-软件工程_第3页
计算机软件技术基础:第四讲-软件工程_第4页
计算机软件技术基础:第四讲-软件工程_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、 计算机软件技术基础 教案 PAGE 21 PAGE PAGE 21第四章 软件工程基础4.1 软件工程基本概念软件工程是一门研究软件开发与维护的普遍原理和技术的工程学科。软件工程研究范围非常广泛,包括软件开发的技术方法、软件开发的工具、软件开发过程中的管理及软件的维护等许多方面。1. 软件定义与软件特点 计算机软件(Software)是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。软件在开发、生产、维护和使用方面与计算机硬件相比存在明显的差异。深入理解软件的定义需要了解软件的如下特点:软件是逻辑实体,而不是物理实体,具有抽象性;软件生产与硬件不同,它没有明显的制

2、作过程;软件在运行、使用期间不存在磨损、老化问题;软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植问题;软件复杂性高、成本昂贵;软件开发涉及诸多的社会因素。软件按功能可以分为:应用软件、系统软件、支撑软件。应用软件:是为解决特定领域的应用而开发的软件,如事务处理软件、人工智能软件等;系统软件:是计算机管理自身资源、提高计算机使用效率并为计算机用户提供各种服务的软件,如操作系统、编译程序、汇编程序、网络软件等;支撑软件:是介于系统软件与应用软件之间,协助用户开发软件的工具性软件。2 软件危机与软件工程1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会义,讨论

3、软件危机问题,在这次会议上正式提出并使用了“软件工程”这个名词,从此诞生了“软件工程”学科。软件危机软件危机是指在计算机软件开发和维护过程中所遇到的一系列严重问题,例如:如何开发软件、如何满足对软件日益增长的需求、如何维护已有的软件等。软件危机主要有如下表现:软件需求的增长得不到满足,用户对系统不满意的情况经常发生;软件开发成本和进度无法控制,开发成本超出预算,开发周期大大超过规定日期的情况经常发生;软件质量难以保证;软件不可维护或维护程度非常低;软件成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。 总之,可以将软件危机归结为成本、质量、生产率等问题。产生软件危机的原因管理

4、和控制软件开发过程相当困难。软件是计算机中的逻辑部件,写出程序代码上机试运行之前,软件开发过程进展控制和软件开发的质量评价很难。软件不同于程序,它规模庞大,是众人合作的结果。要将每个人的工作合在一起构成一个高质量的软件系统是一个极端复杂的问题,不仅涉及到分析方法、设计方法、形式说明方法及版本控制等协调一致的技术问题,还要有严格的科学管理。软件维护通常意味着改正或修改原来的设计,由于在开发时期采用了错误的方法和技术,带来软件维护的困难。对用户要求没有完整准确的认识就勿忙着手编写程序,是许多软件开发工程失败的主要原因之一。只有用户才真正了解自己的需要,但许多用户开始并不能准确具体的叙述他们的需要,

5、软件开发人员需要做大量深入细致的调查研究工作。如对用户没有正确认识就编写程序,就像不打好地基就盖楼一样。为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程的途径,便形成了软件工程学。软件工程就是用工程、科学和数学的原理和方法研制、维护计算机软件的有关技术及管理方法。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发各个环节上的控制和管理。软件工程的核心思想是把软件看作一个工程产品来处理。把需求计划、可行性研究、工程审核、质量监督等工程化的概念引入到软件生产中,以期达到工程项目的三个

6、基本要素:进度、经费和质量的目标。3 软件工程过程与软件生命周期软件工程过程ISO 9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。软件工程包括两方面内涵:内涵一:软件工程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程的活动。基于这个方法,软件工程过程通常包括4种基本活动:P(Plan)软件规格说明,规定软件的功能及运行时间限制;D(Do)软件开发,产生满足规格说明的软件;C(Check)软件确认,确认软件能够满足用户的要求;A(Action)软件演进,为满足客户要求,软件必须在使用过程中演进。 内涵二:从软件开发的观点看,它就是使用适当的资源(包

7、括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入转化为输出。 软件生命周期一个软件从提出、实现、使用维护到停止使用退役的过程称为软件的生命周期。软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。表6-1 软件生命周期表序号周期名称主要任务1可行性研究与计划制定确定软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。2需求分析对待开发软件提出的需求进行分析并给出详细定义,编写软件规格说明书及初步的用户手册,提

8、交评审。3软件设计系统设计人员和程序设计人员应该在反复理解软件需求的基础上给出软件结构、模块划分、功能的分配以及处理流程;在系统比较复杂时,设计阶段可分解成概要设计阶段(总体设计)和详细设计阶段;编写概要设计说明书、详细设计说明书和测试计划初稿,提交评审。4软件实现把软件设计转换为计算机可以接受的程序代码,即完成程序编码;编写用户手册、操作手册等面向用户的文档;编写单元测试计划。5软件测试在设计测试用例的基础上,检验软件的各个组成部分,编写测试分析报告。6运行和维护将交付的软件投入运行,并在运行中不断维护,根据新提出的需求进行必要的扩充和删改。4 软件工程的目标与原则软件工程的目标软件工程的目

9、标是:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。软件工程需要达到的目标应是:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发,及时交付使用。基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术:软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主要内容是软件开发方法学。软件开发方法学是根据不同的软件类型,按不同观点和原则,对软件开发中应遵循的策略、原则、步骤和

10、必须产生的文档资料都做出规定,从而使软件的开发能够进入规范化和工程化的阶段,以克服早期的手工方法生产中的随意性和非规范性做法。软件工程管理:软件工程管理包括:软件管理学、软件工程经济学、软件心理学等。软件工程管理是软件按工程化生产时的重要环节,它要求按照预先制定的计划、进度和预算执行,以实现预期的经济效益和社会效益。软件工程经济学是研究软件开发中成本的估算、成本效益分析的方法和技术,用经济学的基本原理研究软件工程开发中的经济效益问题。软件心理学是从个体心理、人类行为、组织行为和企业文化等角度研究软件管理和软件工程。软件工程的原则为了达到软件工程目标,在软件开发过程中,必须遵循软件工程的基本原则

11、,包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。这些原则适用于所有的软件项目。抽象:抽象事物最基本的特点和行为,忽略非本质细节。采用分层抽象、自顶向下、逐层细化的办法控制软件开发过程。信息隐蔽:采用填充包装技术,将程序模块的实现细节隐藏起来,使模块尽量简单。模块化:模块是程序中相对独立的成分,一个独立的编程单位,应有良好的接口定义。局部化:在程序模块中,每个计算机资源要合在一起,并在模块内有较强的内聚性。确定性:软件开发过程中所有概念的表达应是确定的、无歧义且规范的。一致性:包括程序、数据和文档的整个软件系统的各个模块应使用书面的概念、符号和术语,程序内外接口保持一致,

12、系统规格说明与系统行为保持一致。完备性:软件系统不丢失任何重要部分,完全实现系统所需功能。可验证性:系统自顶向下、逐层分解,应遵循容易检查、测评、评审的原则,以确保系统的正确性。5 软件开发工具与软件开发环境软件开发工具和环境是软件工程方法得以实施的重要保证。软件开发工具早期的软件开发由于缺少工具的支持,使编程工作量大,质量和进度难以保证。软件开发工具的完善和发展可促进软件开发方法的进步和完善,保障软件开发的高速度和高质量。软件开发工具为软件工程方法提供了半自动或自动的软件支撑环境。软件开发环境软件开发环境,或称软件工程环境,是全面支持软件开发全过程的软件工具集合。这些软件工具按照一定方法或模

13、式组合起来,支持软件生命周期内的各个阶段和各项任务的完成。4.2 结构化分析方法 软件开发方法是软件开发过程所遵循的方法和步骤,其目的在于有效地得到一些工作产品,即程序和文档,并满足质量要求。软件开发方法包括分析方法、设计方法和程序设计方法。 结构方法经过30多年发展,已成为系统、成熟的软件开发方法之一。结构化方法包括结构化分析方法、结构化设计方法和结构化编程方法,其核心和基础是结构化程序设计理论。1. 需求分析与需求分析方法 需求分析 需求分析是指用户对目标系统的功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。需求分析将创建所需数据模型、功能模型

14、和控制模型。需求分析定义: 1997年IEEE软件工程标准对需求分析定义如下:1) 用户解决问题或达到目标所需的条件或权能;2) 系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能; 3) 一种反映前面所述的条件或权能的文档说明。需求分析阶段的工作: 需求分析阶段包括四个方面:1)需求获取:确定对目标系统的各方面需求。2)需求分析:对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。3)编写需求规格说明书:说明书作为需求分析的阶段成果,可为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。4

15、)需求评审:需求分析最后一关,对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。需求分析方法: 结构化分析方法: 包括面向数据流的结构化分析方法,面向数据结构的Jackson方法,面向数据结构的结构化数据系统开发方法。面向对象的分析方法: 从需求分析建立的模型的特性来分,需求分析方法又分为静态分析方法和动态分析方法。2. 结构化分析方法 关于结构化分析方法结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。结构化分析的步骤如下:通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型;去掉

16、具体模型中非本质因素,抽象出当前系统的逻辑模型;根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型;完善目标系统并补充细节,写出目标系统的软件需求规格说明;评审直到确认完全符合用户对软件的需求。结构化分析的常用工具 数据流图(DFD-Data Flow Diagram)数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图中主要图形元素如表4-4所示。表4-6 数据流图所用主要图形元素符号意义加工(转换)数据流存储文件源(潭)建立数据流图步骤如下:1) 由外向内:先画系统的输入和输出,然后画系统的内部;2) 自顶向下:顺序完成顶层

17、、中间层、底层数据流图;3) 逐层分解。为保证构造的数据流图表达完整、准确、规范,应遵循以下数据流图的构造规则和注意事项:1) 对加工处理建立唯一、层次性的编号,且每个加工处理通常要求既有输入又有输出;2) 数据存储之间不应该有数据流。3) 数据流图的一致性;4) 父图、子图关系与平衡规则。数据字典(DD-Data Dictionary)数据词典是结构化分析方法核心。数据字典是对所有与系统相关的数据元素的一个有组织的列表,有精确的、严格的定义,使用户和系统分析员对输入、输出、存储和中间结果有共同的理解。数据字典的作用是对数据流图(DFD)中出现的被命名的图形元素进行确切解释。通常数据词典包含的

18、信息有:名称、别名、何处使用/如何使用、内容描述、补充信息等。判定树使用判定树进行描述时,应先从问题定义的文字描述中分清哪些是判定条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,并根据它们构造判定树。判定表判定表与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。判定表由四部分组成:(1)基本条件 (2)条件项 (3)基本动作 (4)动作项3. 软件需求规格说明书软件需求规格说明书是需求分析阶段的最后成果,是软件开发中重要文档之一。软件需求规格说明书的作用便于

19、用户、开发人员进行理解和交流;反映出用户问题的结构,可以作为软件开发工作的基础和依据;作为确认测试和验收的依据。软件需求规格说明书的内容 软件需求规格说明书是作为需求分析的一部分而制定的可交付文档。把在软件需求中确定的软件范围加以展开,制定出完整的数据描述、详细功能说明、恰当的检验标准以及其它与需求有关的数据。软件需求规格说明书所包括的内容和书写框架如下:一、概述二、数据描述数据流图数据词典系统接口说明内部接口三、功能描述功能处理说明设计的限制四、性能描述性能参数测试种类预期的软件响应应考虑的特殊问题五、参考文献目录六、附录软件需求规格说明书的特点 软件需求规格说明书是确保软件质量的有力措施,

20、衡量软件需求规格说明好坏的标准、标准的优先级及标准的内涵是:正确性:体现待开发系统的真实要求; 无歧义性:对每一个需求只有一种解释,其陈述具有惟一性;完整性:包括全部有意义的需求,功能的、性能的、设计的、约束的、属性或外部接口等方面需求;可验证性:描述的每一个需求都是可以验证的;一致性:各个需求的描述不矛盾;可理解性:需求说明书必须简明易懂,尽量少包含计算机的概念和术语,以便用户和软件人员都能接受它;可修改性;可追踪性:每一个需求的来源、流向是清楚的,当产生和改变文档编制时,可以方便地引证每一个需求。4.3 结构化设计方法1 软件设计的基本概念软件设计的基础软件设计是软件工程的重要阶段,是一个

21、把软件需求转换为软件表示的过程。软件设计的重要性和地位概括为以下几点:软件开发阶段(设计、编码、测试)占据软件项目开发总成本绝大部分,是在软件开发中形成质量的关键环节;软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品的唯一途径;软件设计做出的决策最终影响软件实现的成败;软件设计是软件工程和软件维护的基础。软件设计的基本原理软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。抽象:把事物本质的共同特性抽取出来而不考虑其他细节;模块化:把一个待开发的软件分解成若干小的简单的部分;信息隐蔽:在一个模块中包含的信息(过程或数据),对

22、于不需要这些信息的其他模块来说不能访问的。模块独立性:每个模块只能完成系统某些独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性使用耦合性和内聚性进行度量。内聚性:是对一个模块内部各个元素彼此结合的紧密程度的度量。内聚性按由弱到强有这样几种:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。耦合性:是对模块间相互结合的紧密程度的度量。耦合度由高到低排列有这样几种:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。结构化设计方法结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各部分之间的内部联系的技术。2 概要设计概要设计的

23、任务: 设计软件系统结构在概要设计阶段,需要进一步分解、划分模块,划分的具体过程是:采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。数据库结构及数据库设计 数据设计是实现需求定义和规格说明过程中提出的数据对象的逻辑表示。数据设计的具体任务是:确定输入、输出文件的详细数据结构;结合算法设计,确定算法所必须的逻辑操作;结合算法设计,确定算法的逻辑数据结构及其操作;确定对逻辑结构所必须的那些操作的程序模块,限制和确定各个数据设计决策的影响范围;需要与操作系统或调度程序接口所必须的控制表进行数

24、据交换时,确定其详细的数据结构和使用规则;数据的保护性设计;防卫性、一致性、冗余性设计。 数据设计中应该注意掌握以下设计原则:用于功能和行为的系统分析原则也应用于数据;应该标识所有的数据结构以及其上的操作;应当建立数据字典,并用于数据设计和程序设计;低层的设计决策应该推迟到设计过程的后期;只有那些需要直接使用数据结构、内部数据的模块才能看到数据的表示;应该开发一个由有用的数据结构和应用于其上的操作组成的库;软件设计和程序设计语言应该支持抽象数据类型的规格说明和实现。编写设计文档 在概要设计阶段,需要编写的文档有:概要设计说明书、数据库设计说明书、集成测试计划等。概要设计文档评审要评审的内容包括

25、:在概要设计中,设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键性处理及内部接口定义的正确性、有效性,各部分的一致性等,以免在以后的设计中出现问题而返工。面向数据流的设计方法在需求分析阶段,主要是分析信息在系统中加工和流动的情况。面向数据流的设计方法定义了一些不同的映射方法,利用这些映射方法可以把数据流变换成结构图表示的软件结构。常用的软件结构设计工具是结构图(SC)。结构图是描述软件结构的图形工具。基本图符如: 模块 数据信息 控制信息数据流类型:数据流分为变换型和事务型。变换型:变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变

26、换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。变换型数据处理问题的工作过程可分为三步,即取得数据、变换数据和输出数据,见图4-32。图4-32变换型数据流结构事务型:在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成作业要求的功能,这种数据流叫做事务。事务型数据流的特点是接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元(事务处理中心),然后给出结果。见下图。图4-33事务型数据流结构面向数据流设计方法的实施要点与设计过程:第一步:分析、确认数据流的类型,区分是事务型还是变换型;第二步:说明数据流的边界;第三步:把数据流映射为程序结

27、构;第四步:根据设计准则对产生的结构进行细化和求精。设计的准则: 提高模块独立性模块规模适中深度、宽度、扇出和扇入适当使模块的作用域在该模块的控制域内应减少模块的接口和界面的复杂性设计成单入口、单出口的模块设计功能可预测的模块3 详细设计详细设计的任务是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。常见的过程设计工具有:图形工具:程序流程图(一般流程图),N-S, PAD,HIPO表格工具:判定表语言工具:PDL(伪码)程序流程图程序流程图是一种传统的、应用广泛的软件过程设计表示,表示通常也称程序框图。构成程序流程图的最基本图符有:控制流(

28、或)、加工步骤()、逻辑条件()按照结构化程序设计要求,程序流程图构成的任何程序可用5种控制结构来描述。这5种结构是:顺序型:几个连续的加工步骤依次排列构成;选择型:由某个逻辑判断式的取值决定选择两个加工中的一个;先判断重复型:先判断循环控制条件是否成立,成立则执行循环体语句;后判断重复型:重复执行某些特定的加工,直到控制条件成立;多分支选择型:列举多种加工情况,根据控制变量的取值,选择执行其中之一。顺序结构选择结构选判断重复型后判断重复型多分支选择型图4-34 五种结构的程序流程图N-S图顺序结构选择结构当型重复型直到型重复型多分支选择型图4-35 五种结构的N-S图N-S输送有以下特征:每

29、个构件具有明确的功能域控制转移必须遵守结构化要求易于确定局部数据和全局数据的作用域易于表达嵌套关系和模块的层次结构PAD图顺序结构选择结构当型重复型直到型重复型多分支选择型图4-36 五种结构的PAD图PAD图有以下特征:结构清晰,结构化程度高易于阅读最左端的纵线是程序的主干线,每增加一层PAD图向右扩展一条纵线,程序的纵线是程序层次数程序执行,从PAD图最左主干线端结点开始、自上而下、自左向右依次执行,程序终止于最左主干线。4.4 软件测试软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命周期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统

30、测试,验证软件是否合格、能否交付用户使用等。1软件测试的目的软件测试是为了发现错误而执行程序的过程。使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是否弄清预期结果与实际结果之间的差别。2软件测试的准则要做好软件测试,设计出有效的测试方案和好的测试用例,软件测试人员需要充分理解和运用软件测试的一些基本准则:测试的根本目的是满足用户需求最严重的错误是导致程序无法满足用户需求的错误。严格执行测试计划,排除随意性软件测试应当制定明确的测试计划并按照计划执行。测试计划应包括:所测试软件的功能、输入和输出、测试内容、各项测试的目的和进度安排、测试资料、测试工具、测试用例

31、的选择、资源要求、测试的控制方式和过程等。充分注意测试中的群集现象 为了提高测试效率,测试人员应该集中对付那些错误群集的程序。 程序员避免检查自己的程序为了达到好的测试效果,应该由独立的第三方来构造测试。 穷举测试不可能 穷举测试是指对程序所有可能的执行路径都进行检查测试。 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。 3 软件测试技术与方法综述 软件测试的方法和技术是多种多样的。从是否需要执行角度分为静态测试和动态测试方法;从功能划分可分为白盒测试和黑盒测试方法。静态测试与动态测试静态测试静态测试包括代码检查、静态结构分析、代码质量度量等。代码检查:主要检查代码和设计

32、的一致性,包括代码的逻辑表达的正确性,代码结构的合理性等方面。代码检查包括:代码审查:小组集体阅读、讨论检查代码;代码走查:小组成员通过用“脑”仔细研究、执行程序来检查代码;桌面检查:由程序员自己检查自己编写的程序。静态分析:是对代码的机械性、程序化的特性分析方法。包括控制流分析、接口分析、表达式分析。动态测试 静态测试不实际运行软件,主要通过人工进行。动态测试是基于计算机的测试,是为了发现错误而执行程序的过程。可通过实用例子去运行程序,以发现错误。白盒测试方法与测试用例设计白盒测试方法也称结构测试或逻辑驱动测试,它是根据软件产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规格要求

33、。白盒测试的基本原则是:保证所测试模块中每一独立路径至少执行一次;保证所测试模块所有判断的每一分支至少执行一次;保证所测试模块每一循环都在边界条件和一般条件各执行一次;验证所有内部数据结构的有效性。白盒测试的主要方法有逻辑覆盖、基本路径测试等。逻辑覆盖测试 逻辑覆盖是泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术。程序中的逻辑表示有判断、分支、条件等几种表示方式。 语句覆盖:选择足够的测试用例,使程序中每个语句至少都能被执行一次。路径覆盖:执行足够的测试用例,使程序中所有可能的路径都至少经历一次。判定覆盖:使设计的测试用例保证程序中每个取值分支至少经历一次。条件覆盖:设计的测试用例保证

34、程序中每个判断的每个条件的可能取值至少执行一次。判断-条件覆盖:设计足够的测试用例,使判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能取值分支至少执行一次。基本路径测试基本路径测试的思想和步骤是:根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对每一条独立执行的路径进行测试。黑盒测试方法与测试用例设计 黑盒测试方法也称功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试完全不考虑程序内部的逻辑结构和内部特征,只依据程序的需求和功能规格说明,检查程序功能是否符合它的功能说明。黑盒测试主要

35、诊断:功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始和终止条件错。黑盒测试方法有:等价类划分法、边界分析法、错误推测法、因果图等。等价类划分法等价类划分是一种典型的黑盒测试方法。它是将程序的所有可能的输入数据划分成若干部分,然后从每个等价类中选取数据作为测试用例。使用等价类划分设计测试方案,得到划分输入集合的等价类,等价类包括:有效等价类:合理、有意义的输入数据构成的集合。无效等价类:不合理、无意义的输入数据构成的集合。边界值分析法边界值分析法是对各种输入、输出范围的边界情况设计测试用例的方法。使用边界值分析方法设计测试用例,确定边界情况应考虑选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,这样发现程序中错误的概率较大。错误推测法 人们可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。错误推测法的基本思想是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。错误推测法针对性强,可以直接切入可能的错误,直接定位,是一种非常实用、有效的方法。4 软件测试的实施 软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是该过程规定的程序,目的是使软件测试工作系统化。软件测试一般按4步进行:单元测试、集成测试、验收测试(确认测试)和系统测试。单元测试 单元测试是对软件设计的最

温馨提示

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

评论

0/150

提交评论