软件工程和开发技术第14章 面向对象测试基础ppt课件_第1页
软件工程和开发技术第14章 面向对象测试基础ppt课件_第2页
软件工程和开发技术第14章 面向对象测试基础ppt课件_第3页
软件工程和开发技术第14章 面向对象测试基础ppt课件_第4页
软件工程和开发技术第14章 面向对象测试基础ppt课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、第14章 面向对象测试基础 第第14章章 面向对象测试基础面向对象测试基础 14.1 面向对象的单元测试面向对象的单元测试 14.2 面向对象的集成测试面向对象的集成测试 14.3 面向对象的确认测试与系统测试面向对象的确认测试与系统测试 14.4 设计测试用例设计测试用例 14.5小结小结 第14章 面向对象测试基础 14.1 面向对象的单元测试面向对象的单元测试在面向对象的软件开发中,在面向对象的软件开发中,“封装导封装导致了类和对象的定义特点,这意味着类和类致了类和对象的定义特点,这意味着类和类的实例的实例(对象对象)包装了属性包装了属性(数据数据)和处理这些数和处理这些数据的操作据的操

2、作(也称为方法或服务也称为方法或服务)。软件的核心。软件的核心是是“对象对象”,不像传统软件开发中的,不像传统软件开发中的“单元单元”(或或者说单元的概念改变了者说单元的概念改变了)。也就是说,封装起。也就是说,封装起来的类和对象是最小的可测试单元。一个类来的类和对象是最小的可测试单元。一个类可以包含一组不同的操作,而一个特定的操可以包含一组不同的操作,而一个特定的操作也可能定义在一组不同的类中。因此,面作也可能定义在一组不同的类中。因此,面向对象的软件单元测试与传统测试方法不一向对象的软件单元测试与传统测试方法不一样,它的含义发生了很大变化。样,它的含义发生了很大变化。 第14章 面向对象测

3、试基础 面向对象软件的单元测试不是独立地测试单个操作,而是把所有操作都看成类的一部分,全面地测试类和对象所封装的属性和操纵这些属性的操作整体。具体地说,在面向对象的单元测试中不仅要发现类的所有操作中存在的问题,还要考查一个类与其他的类协同工作时可能出现的错误。现以实例说明:在一个类层次中,操作A在超类中定义并被一组子类继承,每个子类都可使用操作A,但是A要调用子类中定义的操作并处理子类的私有属性。由于在不同的子类中使用操作A的环境有所不同,因此有必要在每个子类的语境中测试操作A。这就是说,当测试面向对象软件时,传统的单元测试方法是不完备的,我们不能再独立地对操作A进行测试。 第14章 面向对象

4、测试基础 14.2 面向对象的集成测试面向对象的集成测试 1基于线程的测试基于线程的测试(Thread_based Testing)基于线程的测试把响应系统的一个输入基于线程的测试把响应系统的一个输入或一个事件所需要的一组类集成起来进行测或一个事件所需要的一组类集成起来进行测试。应当分别集成并测试每个线程,同时为试。应当分别集成并测试每个线程,同时为了避免产生副作用再进行回归测试。该测试了避免产生副作用再进行回归测试。该测试需要基于系统的动态模型。需要基于系统的动态模型。 第14章 面向对象测试基础 2基于使用的测试基于使用的测试(Use_based Testing)基于使用的测试首先测试几乎

5、不使用服务器类的那些类基于使用的测试首先测试几乎不使用服务器类的那些类(称称为独立类为独立类);接着测试使用独立类的最下层的类;接着测试使用独立类的最下层的类(称为依赖类称为依赖类);然;然后,对根据依赖类的使用关系,从下到上一个层次一个层次地持后,对根据依赖类的使用关系,从下到上一个层次一个层次地持续进行测试,直至把整个软件系统测试完为止。续进行测试,直至把整个软件系统测试完为止。除了上述两种测试方法,还有一种集群测试法,是面向对象除了上述两种测试方法,还有一种集群测试法,是面向对象软件集成测试的一个步骤。为了检查一群相互协作的类,用精心软件集成测试的一个步骤。为了检查一群相互协作的类,用精

6、心设计的测试用例,力图发现协作错误,即集群测试。通过研究对设计的测试用例,力图发现协作错误,即集群测试。通过研究对象模型可以确定协作类。象模型可以确定协作类。为减少测试工作的工作量,在进行集成测试时,可参考类关为减少测试工作的工作量,在进行集成测试时,可参考类关系图或实体关系图,确定不需要被重复测试的部分,从而优化测系图或实体关系图,确定不需要被重复测试的部分,从而优化测试用例,使测试能够达到一定的标准。试用例,使测试能够达到一定的标准。 第14章 面向对象测试基础 14.3 面向对象的确认测试与系统测试面向对象的确认测试与系统测试通过对软件的单元测试和集成测试,仅通过对软件的单元测试和集成测

7、试,仅能确认软件开发的功能是正确的,不能确认能确认软件开发的功能是正确的,不能确认在实际运行时,它是否满足用户要求,是否在实际运行时,它是否满足用户要求,是否大量存在与实际使用条件下的各种应用相矛大量存在与实际使用条件下的各种应用相矛盾的错误。为此在完成上述测试活动后,还盾的错误。为此在完成上述测试活动后,还必须经过规范的确认测试和系统测试。必须经过规范的确认测试和系统测试。面向对象软件的确认测试或系统测试与面向对象软件的确认测试或系统测试与传统的确认测试一样,通过设计测试用例,传统的确认测试一样,通过设计测试用例,主要检查用户界面和用户可识别的输出,不主要检查用户界面和用户可识别的输出,不再

8、考虑类之间相互连接的细节。测试人员应再考虑类之间相互连接的细节。测试人员应该认真研究动态模型和描述系统行为的脚本,该认真研究动态模型和描述系统行为的脚本,为系统的输入信息设计出错处理的通路,模为系统的输入信息设计出错处理的通路,模拟错误的数据和软件界面可能发生的错误,拟错误的数据和软件界面可能发生的错误,设计出合理的测试用例。设计出合理的测试用例。 第14章 面向对象测试基础 14.4 设计测试用例设计测试用例14.4.1 测试用例概述测试用例概述类似于用例类似于用例(Use Case)的定义,测试用的定义,测试用例例(Test Case)是为实现某个特殊目标是为实现某个特殊目标(验证或验证或

9、者找错者找错)而执行系统的过程。它包括精心设计而执行系统的过程。它包括精心设计的一组测试输入、执行条件以及预期结果,的一组测试输入、执行条件以及预期结果,以便测试某个程序功能或者路径是否满足特以便测试某个程序功能或者路径是否满足特定需求。定需求。测试用例包括对特定的软件产品进行测测试用例包括对特定的软件产品进行测试的任务描述,体现测试方案、方法、技术试的任务描述,体现测试方案、方法、技术和策略,其内容包括测试目标、测试环境、和策略,其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本输入数据、测试步骤、预期结果、测试脚本等,并形成文档。等,并形成文档。 第14章 面向对象测试基

10、础 测试用例是针对软件产品的功能、业务规则和业务处理所设计的测试方案。对软件的每个特定功能或运行操作路径的测试构成了一个个测试用例。不同类别的软件,测试用例的策略、方法和侧重点都是不同的。例如,企业信息管理类软件,其需求不确定或者变化较为频繁,通常的策略是把测试数据和测试脚本从测试用例中划分出来,以供重用。目前,面向对象软件的测试用例的设计方法还处于研究、发展阶段。1993年,Berard提出了指导面向对象的软件测试用例设计的方法,要点如下: 第14章 面向对象测试基础 (1) 每一个测试用例都要有一个唯一的标识,并与被测试的一个或几个类相关联起来。(2) 每个测试用例都要陈述测试目的。(3)

11、 对每个测试用例要有相应的测试步骤,包括被测对象的特定状态、所使用的消息和操作、可能产生的错误及测试需要的外部环境。(4) 与传统软件测试(测试用例的设计由软件的输入处置输出或单个模块的算法细节驱动)不同,面向对象测试关注于设计适当的操作序列以检查类的状态。 第14章 面向对象测试基础 测试用例分为基于黑盒的测试用例和基于白盒的测试用例。前者也叫做基于系统外部需求的测试用例,主要根据需求分析阶段的用例规格描述和其他需求进行设计,只观察系统的外观表现是否满足预期要求;后者又称为基于系统内部结构的测试用例,主要依据分析设计阶段的逻辑和物理模型,如类图和顺序图以及代码设计测试用例,旨在测试软件功能执

12、行过程中对象的交互过程,包括消息、响应以及各个程序路径等。 第14章 面向对象测试基础 14.4.2 面向对象概念对测试用例设计的影响面向对象概念对测试用例设计的影响封装性和继承性是类的重要特性,这为面向对象的软封装性和继承性是类的重要特性,这为面向对象的软件开发带来很多好处,同时它又为面向对象的软件测试带件开发带来很多好处,同时它又为面向对象的软件测试带来负面影响。来负面影响。类的属性和操作是被封装的,而测试需要了解对象的类的属性和操作是被封装的,而测试需要了解对象的详细状态。同时,当改变数据成员的结构时,要测试是否详细状态。同时,当改变数据成员的结构时,要测试是否影响了类的对外接口,是否导

13、致相应的外界必须改动。例影响了类的对外接口,是否导致相应的外界必须改动。例如,强制的类型转换会破坏数据的封装性。请看下面的这如,强制的类型转换会破坏数据的封装性。请看下面的这段程序:段程序: 第14章 面向对象测试基础 class Hd int a=1; char *h=“Hd”;class Vb public:int b=2; char *v=Vb;Hd p;Vb *q=(Vb *)&p;这样,p的私有数据成员a可以通过q被随意访问,破坏了类Vb的封装性。 第14章 面向对象测试基础 此外,继承不会减少对子类的测试,相反,会使测试过程更加复杂化。因此,继承也给测试用例的设计带来负面影

14、响。当父类与子类的环境不同时,父类的测试用例对子类没有什么使用价值,必须为子类设计新的测试用例。在设计面向对象的测试用例时应注意以下三点:(1) 继承的成员函数需要测试。对于在父类中已经测试过的成员函数,根据具体情况仍需在子类中重新测试。一般在下述两种情况下要对成员函数重新进行测试: 继承的成员函数在子类中有所改动。 成员函数调用了改动过的成员函数。 第14章 面向对象测试基础 (2) 子类的测试用例可以参照父类。例如,有两个不同的成员函数的定义如下:father:B()中定义为if (value0) message(less);else if (value=0) message(equal)

15、;else message(more);son:B()中定义为if (value 账户余额 在步骤 2 处重新加入基本流 TC y 场景4 步骤 2 - 提款金额 账户余额 不执行备选流 3,执行基本流 TC z 场景4 步骤 2 - 提款金额 = 账户余额 不执行备选流 3,执行基本流 第14章 面向对象测试基础 2基于白盒技术的单元测试的测试用例设计基于白盒技术的单元测试的测试用例设计从理论上来讲,白盒测试应该测试程序每一条可能的从理论上来讲,白盒测试应该测试程序每一条可能的路径。在所有简单的单元内实现这样的目标是不切实际的。路径。在所有简单的单元内实现这样的目标是不切实际的。作为最基本的

16、测试,应将每个决策作为最基本的测试,应将每个决策(Decision)到决策路径到决策路径(DD 途径途径)测试至少一次,这样可确保将所有语句至少执行测试至少一次,这样可确保将所有语句至少执行一次。决策通常是指一次。决策通常是指 if 语句,而语句,而 DD 路径是两个决策之间路径是两个决策之间的路径。的路径。 第14章 面向对象测试基础 要达到这种程度的测试覆盖,测试用例应确保:(1) 每个if语言的布尔表达式的求值结果为true和false。例如,表达式(a4)的求值结果为true/false 的四种组合,即满足条件覆盖。(2) 每一个循环至少要执行零次、一次和一次以上。 (3) 可使用代码

17、覆盖工具来确定白盒测试未测试到的代码,另外在进行白盒测试的同时应进行可靠性测试。例如,假设对类SetofPrime中的isPrime函数执行结构测试。该函数检查集合是否包含了某个指定的整数。isPrime函数的代码和相应的流程图如图14.2所示。 第14章 面向对象测试基础 图14.2 基于白盒技术的测试用例设计 第14章 面向对象测试基础 理论上,测试用例应遍历代码内路径的所有组合情况。在 isPrime函数的for循环中存在两个可选择的路径。测试用例可以一次、多次遍历该循环,或是根本就不遍历。如果测试用例根本就没有遍历循环,则在代码中只能找到一条路径。如果遍历一次,将有三条路径;如果遍历两

18、次,将存在六条路径。如此类推。因此路径组合总数根本无法完全测试,必须选择所有这些路径的子集。本例中,可以采用三个测试用例来执行所有的语句,测试数据m分别为2、3、4,这和基于黑盒的等价类划分方法得到的结果是一致的。第14章 面向对象测试基础 14.5 小小 结结面向对象测试和传统测试方法有很多类似的地方,面向对象测试和传统测试方法有很多类似的地方,主要区别在于面向对象测试中的单元测试是以类作为主要区别在于面向对象测试中的单元测试是以类作为基本单元的,必须针对类单元设计单元测试用例。除基本单元的,必须针对类单元设计单元测试用例。除了类单元测试之外,还有类协作测试。面向对象方法了类单元测试之外,还有类协作测试。面向对象方法在软件测试中的应用之一就是测试用例或

温馨提示

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

评论

0/150

提交评论