面向对象软件工程4面向对象测试

合集下载

软件工程思考题答案

软件工程思考题答案

第一章根本概念1.软件的特点是什么?软件的定义:软件=程序+数据+文档软件的特点:1)软件是逻辑实体;具有抽象性;软件的形态不可见;--必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。

2〕软件是人脑思维的产物,其生产过程与硬件不同。

--开发过程的质量控制及软件产品保护问题。

3〕软件的开发和运行受计算机系统限制。

--软件移植问题。

4〕软件的开发技术落后,手工开发方式仍占统治地位。

--开发效率低。

2.2006年发布的国家分类标准是什么?1〕按功能:系统软件、支撑软件、应用软件2〕按规模:微型软件、小型软件、大型软件、甚大型软件、极大型软件3〕按工作方式:实时处理软件、分时软件、交互式软件、批处理软件4〕按效劳对象:工程软件、产品软件5〕按使用频度:使用频度低、使用频度高6〕按失效影响:不良影响、严重影响3.软件危机的表现有哪些?1)软件开发进度难以预测2)软件开发本钱难以控制3)用户对产品功能难以满足4)软件产品质量无法保证5)软件产品难以维护4.产生软件危机的原因?1)用户需求不明确2)缺乏正确的理论指导3)软件开发规模越来越大4)软件开发复杂度越来越高5.什么是软件工程三要素?软件工程的三要素:方法、工具和过程。

6.软件工程的根本目标是什么?①付出较低的开发本钱②到达要求的软件功能③取得较好的软件性能④开发的软件易于移植⑤需要较低的维护费用⑥能按时完成开发工作,及时交付使用7软件工程的根本原那么是什么?①抽象:采用分层次抽象,自顶向下、逐层细化的方法控制软件开发过程的复杂性。

②信息隐蔽:将模块设计成“黑箱〞,实现的细节隐藏在模块内部,不让模块的使用者直接。

这就是信息封装,使用与实现别离的原那么。

③模块化:如C语言程序中的函数过程,C++ 语言程序中的类。

模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。

④局部化:要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。

软件工程导论第10章面向对象分析

软件工程导论第10章面向对象分析

易于理解,同时减少了代码冗余和重复,提高了开发效率和代码质量。
03
提高软件的可重用性
面向对象分析鼓励使用抽象和封装技术,使得软件组件更加模块化和可
重用,减少了重复开发的工作量,提高了软件开发的效率。
02
面向对象分析的主要步骤
问题识别
总结词
明确问题的本质和范围
详细描述
在面向对象分析中,问题识别是首要步骤,它要求对问题进行深入理解和明确, 包括确定问题的范围、目标、限制条件等,以便为后续的分析和设计工作提供 清晰的方向。
面向对象分析的优势与不足
过度抽象
面向对象分析有时会过度抽象,导致 系统过于复杂,难以理解和实现。
缺乏对系统流程的关注
面向对象分析更关注静态结构,可能 忽略系统流程和动态行为。
面向对象分析与传统分析方法的结合使用
在实际软件开发中,可以结合 面向对象分析和传统分析方法, 取长补短,提高软件开发的效
率和成功率。
05
面向对象分析与传统分析方法的 比较
传统分析方法的问题与挑战
缺乏对系统整体结构的考虑
传统分析方法往往只关注单个功能或模块,忽略了系统整体的结 构和关系。
难以处理复杂系统
对于复杂系统,传统分析方法难以有效地进行抽象和建模。
难以维护和扩展
由于缺乏整体结构和面向对象的思维,传统分析方法构建的系统往 往难以维护和扩展。
对象是指系统中具有明确边界和状态 的结构,它可以包含数据和操作,并 且具有封装性、继承性和多态性等特 征。
面向对象的基本特征
封装
封装是将对象的属性和操作封装 在一起,形成一个独立的实体, 对外隐藏内部实现细节,只通过 接口与外界交互。
继承
继承是指子类可以继承父类的属 性和方法,并且可以扩展或修改 它们,从而实现代码的重用和扩 展。

软件工程复习资料

软件工程复习资料

第一章绪论什么是软件工程?软件=程序+数据+文档什么是软件危机?软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件,从而导致软件开发与维护过程中出现一系列严重问题的现象。

什么是软件工程?采用工程化的原理和方法对软件进行计划开发和维护。

软件工程三范型:1.过程式编程范型2.面向对象编程范型3.基于构件技术的编程范型软件工程的发展时期:(1)传统软件工程或者经典软件工程:开发过程:结构化分析一>结构化设计一>面向过程的编码一>软件测试(2)面向对象软件工程开发过程:OO分析与对象抽取一》对象详细设计一》面向对象编码与测试(3)基于构件的软件工程:以软件复用为目标、领域工程为基础,其开发过程一般包括包括以下阶段:领域分析和测试计划定制一一》领域设计一一》建立可复用构件库一一》按“构件集成模型,,查找与集成构件第二章生存周期什么是软件生存周期?计划阶段:需求分析,软件分析开发阶段:软件设计,编码(测试)软件测试维护阶段:运行维护模型特点和使用场合可行性研究1.经济可行性2.技术可行性3.运行可行性4.法律可行性第三章结构化分析与设计结构化程序设计的特点以及论述(1)整个程序的模块化(2)每个模块只有一个入口和出口(3)每个模块都应能单独执行,且无死循环(4)采用自顶向下,逐步细化的方法SA结构化分析设计(结构化)从内容分:1.系统结构设计2.接口设计3.数据设计4.过程设计按照步骤分:1.概要设计2.详细设计第四章OO与面向对象+UML OO的特征1.抽象2.封装3.继承4.多态为什么用面向对象1.符合人类习惯的思维方式2.提高软件系统的可复用性3.提高软件系统的可扩展性4.提高软件系统的可维护性UML相关知识静态图1.用例图:描述系统功能2.类图:描述系统的静态结构3.对象图:描述系统在某个时期的静态结构4.构件图:描述实现系统的元素的组织5.部署图:描述系统环境元素的配置动态图1.状态图:描述系统元素的状态条件和相应2.时序图:按照时间顺序描述系统元素间的交互3.协作图:按照连接关系描述系统元素间的交互4.活动图:描述系统元素的活动流程第五章需求建模需求分析的步骤1.需求获取2.需求建模3.需求描述4.需求验证面向对象需求建模1.画用例图2.写用例规约3.描述补充规约4.编写术语表第六章需求分析面向对象的需求分析1.边界类:边界类提供了对参与者或外部系统交互协议的接口。

面向对象软件工程的案例分析

面向对象软件工程的案例分析

面向对象软件工程的案例分析第一章:引言在现代软件开发中,面向对象的方法已经变得越来越流行。

面向对象软件工程(OOSE)是一种基于面向对象设计和分析原则的软件开发方法。

OOSE支持多种编程语言和开发工具,如Java和C++,是当今许多软件开发公司和个人开发者的首选。

在本文中,我们将通过对一些成功的面向对象软件工程案例的分析,探讨OOSE的优点和限制。

第二章:面向对象软件工程的基本原理面向对象编程(OOP)是一种广泛使用的程序设计范例。

它以对象为中心,将程序分解为可重用的模块,有助于提高软件的可维护性、可拓展性和可重用性。

OOSE基于OOP的原则,通过分析和设计软件系统的对象、类和关系,实现软件开发的整个过程。

面向对象软件工程的基本原理包括以下几个方面:1. 面向对象方法的思想和方法论;2. 需求分析、模型设计、实现和测试等不同阶段之间的无缝对接;3. 从对象、类和关系的角度分析和设计软件系统;4. 对象封装、继承和多态性的应用;5. 使用UML(统一建模语言)等标准的图形化表示方法。

第三章:面向对象软件工程的优点OOSE有很多优点,这使得它在许多软件开发项目中得到广泛应用。

以下是它的几个主要优点:1. 可维护性:OOSE有一个明确的、易于维护的软件结构,它通过对象、类和关系的组织,将代码分解为可重用的模块。

这种结构的特点是松耦合,这意味着不同的模块可以相对独立地修改和调试。

2. 可拓展性:OOSE使软件开发者更容易添加新的功能或扩展现有的系统。

这是因为添加新功能只涉及修改现有的模块或增加新的模块。

3. 可重用性:OOSE提供了一种模块化和抽象化的方法,它允许软件开发者利用已有的模块来开发新的应用程序。

这种重用减少了开发时间和成本。

4. 面向对象的工具支持:近年来,许多流行的编程语言和开发工具已经支持面向对象编程模型。

这些工具提供了图形化用户界面和可视化的开发模式,使得软件开发者更容易设计、开发和调试软件。

软件工程面向对象软件开发方法

软件工程面向对象软件开发方法

软件工程面向对象软件开发方法引言在当前的软件开发领域中,面向对象编程(Object-oriented programming,简称OOP)是一种主要的软件开发方法。

面向对象软件开发方法基于面向对象的程序设计理念,通过将问题分解为对象,并通过对象之间的交互来解决问题。

本文将介绍面向对象软件开发的概念、特性以及在软件工程中的重要性。

面向对象软件开发概述面向对象软件开发是一种以对象为核心的软件开发方法,其中一个对象可以是一个类的实例或一个类本身。

对象在面向对象软件开发中被视为具有状态、行为和标识的实体。

该方法通过将问题分解为对象,并定义对象之间的关系和交互来解决问题。

面向对象软件开发方法有以下几个基本特征:1.封装(Encapsulation):通过封装将数据和相关操作组合在一起,只暴露必要的接口给外部使用。

封装可以使得对象的内部实现对外部不可见,提高了代码的可维护性和安全性。

2.继承(Inheritance):通过继承,在已有类的基础上创建新的类。

继承可以促使代码重用和层次化设计。

3.多态(Polymorphism):多态允许同一操作作用于不同类型的对象上,并产生不同的结果。

这种特性增加了代码的灵活性和可扩展性。

面向对象软件开发方法的优势包括:•提高开发效率:通过封装和抽象的机制,可以更好地管理和组织大型项目的代码,减少开发时间和维护成本。

•提高代码复用性:通过继承和多态的机制,可以避免重复编写相似的代码,提高了代码的复用性和可维护性。

•提高软件的可扩展性:面向对象软件开发方法的灵活性使得系统易于进行修改和扩展,能够快速适应变化的需求和技术。

面向对象软件开发流程面向对象软件开发方法通常包括以下几个主要步骤:在需求分析阶段,软件工程师与客户交流,确保准确理解客户的需求和问题。

通过讨论和分析,确定系统的功能需求、非功能需求和约束条件。

领域建模领域建模是通过抽象和建模来描述问题领域的过程。

通过识别实体、属性和关系,构建领域模型,这些模型将在后续的设计和实现阶段中使用。

软件工程面向对象

软件工程面向对象

面向对象软件工程面向对象方法学的提出•结构化软件工程方法学•面向过程、以算法为核心、把数据和过程作为相对独立的部分•对早期只重视编程、不重视用户需求和开发过程,只重视代码、不重视文档来说,是一个巨大的进步•给软件产业带来了巨大的进步,部分缓解了软件危机•在许多中小型软件项目中获得了很大的成功•但是,它存在着明显的缺点•当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功面向对象方法学概述•面向对象方法学的出发点和原则•尽可能模仿人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程•面向对象方法的特点•与人类习惯的思维方法一致:按照人们习惯的思维方式建立模型,模拟客观世界•稳定性好:实体是相对稳定的,以对象为中心构建的软件系统必然是相对稳定的•可重用性好:对象类提供了比较理想的模块化机制和可重用机制•易于开发大型软件:把大型产品看作一系列本质上相互独立的小产品来处理•可维护性好:容易理解、容易修改、易于测试四个要点:对象+类+继承+通信•面向对象软件是由对象组成•软件中的任何元素都是对象•对象是把静态属性的数据和动态属性的操作封装在一起而形成的统一体•复杂对象由简单对象组成•把所有对象都划分成若干类•每个类都定义了一组数据和方法(即施加于对象的操作);•按照子类与父类的关系,把若干个对象类组成一个层次结构的系统(即继承);•对象彼此之间仅能通过传递消息相互联系(对象的私有信息都被封装在对象类中)。

Coad和Yourdon给出了一个定义:面向对象=对象+类+继承+通信基本概念(1)•类(Class)•是对具有相同属性和行为的一(多)个对象的描述•是一个支持继承的抽象数据类型•实例(Instance)•就是由某个特定的类所描述的一个具体的对象•消息(Message)•是要求某个对象执行类中所定义的某个操作的规格说明•其组成为:接收消息的对象、消息名和变元•方法(Method)•就是对象所能执行的操作(类中定义的服务)•属性(Attribute)•就是类中所定义的数据,是对客观世界实体所具有的性质的抽象基本概念(2)•封装•是把数据和实现操作的代码集中起来放在对象内部,不能从外部进行访问和修改。

软件工程的开发模型和方法

软件工程的开发模型和方法

软件工程的开发模型和方法在软件开发过程中,开发模型和开发方法是最为重要的两个方面。

开发模型可以指导开发过程中的活动顺序和活动内容,而开发方法则是指定这些活动所需的规程和技术。

本文将介绍几种常见的软件开发模型和方法,并讨论它们的优缺点。

一、瀑布模型瀑布模型是最常用的软件开发模型之一。

它将软件开发划分为一系列连续的阶段,每个阶段只能在前一个阶段完成后才能开始。

瀑布模型包含以下几个阶段:需求分析阶段:确定用户需求和开发目标。

设计阶段:基于需求分析结果,设计软件系统。

编码阶段:根据设计文档编写代码。

测试阶段:在单元测试、集成测试和系统测试等不同层次上对程序进行测试。

维护阶段:在发布软件后,修复所有错误并保持软件正常运行。

瀑布模型的优点在于它使得开发流程清晰明了,并可以确保每个阶段的顺利进行。

但瀑布模型也有缺点,如需求不完整和变化过多等问课导致开发周期和成本不断增加。

二、原型模型原型模型是一种将软件开发过程划分为两个主要阶段的模型。

第一个阶段将制定基础设施和需求规范,第二个阶段则基于第一个阶段的结果创建原型并进行测试。

原型模型的优点是很容易理解和操作,另一个优点是由于早期原型的创建和测试,开发团队可以很早地发现和解决缺陷。

但是,由于原型的形成和测试,这种模型需要更多的开发时间和资源。

三、迭代模型迭代模型是软件开发过程中比较灵活的一种方法。

它将整个开发过程划分为多个较小的迭代版本,每个迭代版本都包含完整的软件开发周期。

迭代模型包含以下几个阶段:计划阶段:确定软件开发目标和计划。

迭代开发阶段:分阶段迭代地开发软件。

评估阶段:在每个迭代的末尾对软件进行评估。

完成阶段:成功完成迭代过程并发布软件。

迭代模型的优点在于它可以快速响应用户的反馈和变化,同时也减轻了客户需求课程进一步增加的风险。

但是,由于分阶段迭代,该模型可能需要更多的人力和费用资源。

四、面向对象方法面向对象方法是一种以对象为核心的软件开发技术。

在面向对象方法中,软件被视为一组相互作用的对象,每个对象都具有属性和方法。

软件工程的基本原理

软件工程的基本原理

软件工程的基本原理软件工程是一门关于开发、维护和管理软件项目的学科,它涉及多个方面,包括需求分析、软件设计、编码、测试以及软件项目管理等。

在软件工程中,有一些基本原理被广泛应用,下面将对这些原理进行详细介绍。

1. 模块化原则在软件工程中,一个重要的原理是模块化。

模块化是指将一个软件系统分解成若干个相互独立的模块,每个模块具有清晰的功能和责任,并且可以独立地进行开发、测试和维护。

通过模块化的设计思想,可以提高软件的可维护性、可扩展性和重用性,从而提高软件开发的效率和质量。

2. 面向对象原则面向对象是软件工程中另一个重要的原则。

面向对象是一种软件设计范式,它将程序中的数据和操作进行封装,以对象的形式进行表示。

面向对象的设计思想提供了一种结构化的方法,可以使得软件开发更加灵活、可扩展和可维护。

通过面向对象的编程,可以提高代码的复用性,并且降低代码的复杂度。

3. 可靠性原则软件的可靠性是指软件在特定条件下的正确性和稳定性。

在软件工程中,为了提高软件的可靠性,需要进行合理的需求分析、严格的代码编写和全面的测试。

此外,软件的可靠性还需要考虑系统的安全性和兼容性等方面的需求。

通过遵循可靠性原则,可以有效地降低软件系统出现错误的概率,提高软件的质量和可信度。

4. 可维护性原则软件的可维护性是指在软件开发完成后,能够方便地进行软件的修改、调试和维护。

为了提高软件的可维护性,需要遵循一些原则和最佳实践。

比如,使用清晰易懂的命名规范、编写易于阅读的代码、进行良好的文档记录等。

通过提高可维护性,可以减少软件维护过程中的时间和成本。

5. 迭代开发原则迭代开发是一种软件开发的方法论,它将软件开发过程分为若干个迭代周期,在每个迭代周期中,完成一部分功能的开发、测试和交付。

通过迭代开发的方式,可以快速响应用户的需求变化,并且及时进行产品的修正和优化。

迭代开发的原则也包括持续集成、持续交付和持续测试等,它们都旨在提高软件开发的效率和质量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1 扩大测试的视角
面向对象软件的构造是从分析和设计模型的创建开始。在每个阶 段测试模型, 以尽早地发现错误防止错误的传播。面向对象分析和设 计模型的复审是非常有用的。因为相同的语义结构出现在分析、设 计和代码阶段, 因此, 在分析阶段发现的类属性定义中的问题将遏止 当问题直至设计或编码阶段才被发现所带来的副作用。 在面向对象系统开发的后面阶段, 面向对象分析和设计模型提供 了关于系统的结构和行为的实质性信息, 为此, 这些模型应该在生成 代码前经受严格的复审。所有面向对象模型应该被测试, 以保证在模 型的语法、语义和语用的语境内的正确性、完整性和一致性。
4.5 在类级别上可用的测试方法
对OO类的随机测试 例如一个银行信用卡的应用,其中有一个类:计算(account)。该 account的操作有:open,setup,deposit,withdraw,balance, summarize,creditlimit和close。 这些操作中的每一项都可用于计算,但open,close必须在其他计 算的任何一个操作前后执行, 即使open和close有这种限制.这些操 作仍有多种排列。所以一个不同变化的操作序列可由于应用不同而 随机产生.如一个account实例的最小行为生存史可包括以下操作: open+setup+deposit+[deposit|withdrawIbalanceIsummarizelcredit limit]+withdraw+close。 从此可见。尽管这个操作序列是最小测试序列,但在这个序列内 仍可以发生许多其他的行为。
4.4 OO软件的测试用例设计
基于场景的测试设计
基于场景的测试关心用户做什么而不是产品做什么。它意味着捕 获用户必须完成的任务,然后应用它们或它们的变体作为测试。 场景揭示错误,为了达到这一目标,测试用例必须比基于故障的 测试更复杂和更现实。基于场景的测试往往在单个测试中处理多个 子系统。
4.4 OO软件的测试用例设计
4.4 OO软件的测试用例设计
OO软件测试用例设计的主要原则包括: 1.每个测试用例应当给予特殊的标识,并且还应当与测试的类有明 确的联系。 2.测试目的应当明确。 3.应当为每个测试用例开发一个测试步骤列表。这个列表应包含以 下一些内容: a.列出所要测试对象的专门说明。 b.列出将要作为测试结果运行的消息和操作。 c.列出测试对象可能发生的例外情况。 d.列出外部条件(即为了正确对软件进行测试所必须有的外部环 境的变化)。 e.列出为了帮助理解和实现测试所需要的附加信息。
4.3 面向对象的测试策略
在OO语境中的有效性测试 有效性测试是在系统层进行测试,因此类间的联系细节消失了。 OO有效性集中在用户可见的动作和用户可识别的系统输出。 传统的黑盒测试方法也可以用于有效性测试。使用用例成为确认 测试的主要驱动器。
4.4 OO软件的测试用例设计
传统软件测试用例设计是从软件的各个模块的算法细节得出的, 而OO软件测试用例则着眼于适当的操作序列,以实现对类的说明。 黑盒子测试不仅适用于传统软件,也适用OO软件测试。白盒子测 试也用于OO软件类的操作定义。但OO软件中许多类的操作结构简 明,所以有人认为在类层上测试可能要比传统软件中的白盒子测试 方便。 OO测试用例设计包含OO概念,在OO度量中所讲的五个特性:局域 性、封装性、信息隐藏、继承性和对象的抽象,肯定会对用例设计 带来额外的麻烦和困难。
第4章 面向对象测试
章节安排

扩大测试的视角 测试OOA和OOD模型 面向对象的测试策略 OO软件的测试用例设计 在级别上可用的测试方法 类间测试用例设计
为了充分地测试OO系统,必须做好三件事: 1.测试的定义必须扩大包括用于OOA和OOD模型的错误发现技术。 2.单元和集成测试策略必须有很大的改变。 3.测试用例的设计必须考虑OO软件的独特特征。
4.3 面向对象的测试策略
在OO语境中的单元测试
OOP完成以后,就可以进行单元测试了。与传统的单元(模块) 不同,OO中的单元是类。每个类都封装了属性(数据)和管理这些 数据的操作(也被称做方法或服务)。一个类可以包含许多不同的 操作,一个特殊的操作可以出现在许多不同的类中。 传统的单元测试只能测试一个操作(功能)。而在OO单元测试 中,一个操作功能只能作为一个类的一部分,类中有多个操作(功 能),就要进行多个操作的测试。
4.4 OO软件的测试用例设计
OO编程对测试的影响 面向对象编程可能对测试有几种方式的影响,依赖与OOP方法: 1.某些类型的故障变得不可能(不值得去测试) 2.某些类型的故障变得更加可能(值得测试) 3.出现某些新的故障类型 例如: 在传统的面向过程程序中,对于函数 y=Function(x); 你只需要考虑一个函数( Function() )的行为特点,而在面向对 象程序中,你不得不同时考虑基类函数( Base::Function() )的行 为和继承类函数( Derived::Function() )的行为。
4.6 类间测试用例设计
多个类测试 可以采用下面的步骤序列以生成多个类随机测试用例: 1.对每个客户类,使用类操作符表来生成一系列随机测试序列,操 作符将发送消息给其他服务器对象。 2.对所生成的每个消息,确定在服务器对象中的协作者类和对应的 操作符。 3.对在服务器对象中的每个操作符确定传递消息。 4.对每个消息,确定下一层调用的操作符并结合这些操作符到测试 序列中去。
4.1 扩大测试的视角
在复审时删除一个类的无关属性,在分析过程中可以避免下面的 问题: 1.涉及不必要的子类的创建工作可以避免。 2.类定义的错误解释可能导致不正确的或无关的类关系。 3.系统或它的类行为可能被不适当地刻画以适应该无关的属性。 如果问题未在分析过程中被发现并进一步传播,在设计中可能产 生如下问题: 1.在系统设计阶段可能将类不合适的分配到子系统或任务中。 2.可能花费不必要的工作去创建针对无关属性的操作。 3.消息模型将是不正确的。
4.2 测试OOA和OOD模型
OOA和OOD模型的正确性 用于表示分析和设计模型的符号体系及语法是与项目选定的特定 分析和设计方法相联系。因此,不仅考虑语法正确性和符号体系是否 合适使用,而且对每个模型复审以保证保持合适的建模约定。
4.2 测试OOA和OOD模型
OOA和OOD模型的一致性 对OOA和OOD模型的一致性可以通过考虑模型中实体间的关系来 判断,不一致的模型在某一部分有表示,但未在模型的其他部分正确地 反映。
4.6 类间测试用例设计
由行为模型导出的测试 状态转换图可以用来帮助导出类的动态行为的测试序列。以及这 些类与之合作类的动态行为测试序列。 为了说明问题。仍用前面讨论过的account类。开始由empty acct状态转换为setup acct状态。类实例的大多数行为发生在 working acct状态中。而最后,取款和关闭分别使account类转换到 non-working acct和dead acct状态。这样,设计的测试用例应当是 完成所有的状态转换。换句话说,操作序列应当能导致account类所 有允许的状态进行转换。 测试用例:open + setupAcct + deposit(initial) + withdraw + (final)+close。 还可导出更多的测试用例。以保证该类所有行为被充分检查。
4.6 类间测试用例设计
多个类测试 多个类测试主要根据系统中相关类的层次关系,检查类之间的相 互作用的正确性,即检查各相关类之间消息连接的合法性、子类的 继承性与父类的一致性、动态绑定执行的正确性、多个类协同完成 系统功能的正确性等等。其测试有两种不同策略:(1)基于类间协作 关系的横向测试。(2)基于类间继承关系的纵向测试。
测试表层结构和深层结构 表层结构指OO程序外部可观察的结构,即,对终端用户立即可见 的结构。 深层结构指OO程序的内部技术细节,即,通过检查设计和代码而 理解结构。分析和设计模型被用作深层结构测试的基础。
4.5 在类级别上可用的测试方法
对OO类的随机测试
如果一个类有多个操作(功能),这些操作(功能)序列有多种排列。 而这种不变化的操作序列可随机产生,用这种可随机排列的序列来 检查不同类实例的生存史,就叫随机测试。
4.3 面向对象的测试策略
在OO语境中的集成测试 传统软件的层次模块间存在着控制关系,而OO软件没有层次控制 结构。所以传统的自顶向下和自底向上的集成策略在OO软件组装测 试中就没有意义了。 对OO软件的集成测试有两种不同的策略: 1.基于线程测试(thread-based-testing): 是用响应系统的一个输入或一个事件的请求来组装类的集合。对 每个线程都要分别进行集成和测试。 2.基于使用测试(use-based-testing) 基于使用的测试就是按分层来集成系统,可以先进行独立类的测 试。在独立类测试之后,下一个类的层次叫从属类。从属类用独立 类进行测试。这种从属类层的顺序测试直到整个系统被构造完成。
4.4 OO软件的测试用例设计
基于故障的测试
在面向对象的软件中,基于故障的测试具有较高的发现可能故障 的能力。由于系统必须满足用户的需求,因此,基于故障的测试要 从分析模型开始,考察可能发生的故障。为了确定这些故障是否存 在,可设计用例去执行设计或代码。
4.4 OO软件的测试用例设计
基于故障的传统的软件测试一样,即用最 小的量的投入来最大限度地发现软件存在的错误。 一旦已经完成OOP,可对每个类进行单元测试。 集成测试可以使用基于线程或基于使用的策略来完成。 OO系统有效性测试是面向黑盒的并可以通过应用对传统软件讨论 的相同的黑盒方法来完成。 要做好面向对象软件的测试一定要记住“测试的目的不是证明软 件 的正确性,而是发现软件中存在的错误”
4.3 面向对象的测试策略
在OO语境中的单元测试
相关文档
最新文档