ch8-面向对象软件测试stmt_第1页
ch8-面向对象软件测试stmt_第2页
ch8-面向对象软件测试stmt_第3页
ch8-面向对象软件测试stmt_第4页
ch8-面向对象软件测试stmt_第5页
免费预览已结束,剩余32页可下载查看

下载本文档

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

文档简介

测试方法和技术第2版第8章面

的测试Mobile:1第七章回顾2①验收测试过程②产品规格说明书的验证③用户界面和可用性测试④兼容性测试⑤可安装性和可恢复性测试⑥文档测试第八章:面象的测试8.1面8.2面8.3面象

测试概述象的单元测试象的集成测试8.4

基于客户角度的Java

测试8.5基于程序角度的Java测试3开篇引言——测试那些事儿测试员的效率平均每个工作日发现3-5个Bug平均每修正3个Bug,会引进1个新的Bug平均75%的Bug会在单元测试阶段解决掉平均20%的Bug会在集成测试和系统测试阶段解决掉平均5%的Bug会被交付给用户普通大型民用

平均错误率5个/10,000LOC电信/银行/操作系统等

平均错误率5个/100,000LOC48.1概述一个对象的世界里,每个对象有一定的属性,把属性相同的对象进行归纳就形成类,如家具就可以看作类,其主要的属性有价格、尺寸、重量、位置和颜色等,无论 谈论桌子、椅子还是沙发、衣橱,这些属性总是可用的,因为它们都是家具而继承了为类定义的所有属性。实际上,计算机

所创建的面 象思想同样来源于生活。除了属性之外,每个对象可以被一系列不同的方式操纵,它可以被 、移动、修改(如漆上不同的颜色)。这些操作或方法将改变对象的一个或多个属性。这样所有对类的合法操作可以和对象的定义联系在一起,并且被类的所有实例继承。5面

象(object-oriented)面象(object-oriented)=对象+分类+继承+通信6面象测试的问题面象技术开发出的程序无需进试?面象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进试的方法已成为不可能。7面

象 测试的单元是什么?面

象 的特征对测试的影响封装继承多态迭代的开发过程面象测试的问题8面

象过程结合面测试是根据面 象的 开发象的特点 。它包括:分析与设计模型测试技术类测试技术(单元测试)对象交互测试技术(集成测试)类层次结构测试技术(集成测试)面

象系统测试技术面象测试的问题9面

象测试模型OOA

Test:面OOD

Test:面OOP

Test:面象分析的测试象设计的测试象编程的测试OOUnit

Test:面OOIntegrate

Test:面OOSystem

Test:面象单元测试象集成测试象系统测试10面象测试模型面象的开发模型突破了传统的瀑布模型,将开发分为面象分析(OOA),面象设计(OOD),和面

象编程(OOP)三个阶段。分析阶段产生整个问题空间的抽象描述,在此基础上,进一步归纳出适用于面象编程语言的类和类结构,最后形成代码。11面象测试模型对分析结果的测试对设计结果的测试OOOOOOSSystemystemSystemTestTestTestOOOOOOInInInttegrateegratetegrateTTTestestestOOOOOOUUUnitnitnitTestTestTestOOAOOAOOA

OODOODOODTestTestTest

TestTestTest

OOPOOPOOPTTTesesestttOOOOOOAA

A

OOOOOODDD

OOOOOOPPP对编程风格和程序代码的测试单 能模块的测试OOAOODOOPOOATestOODTestOOP

TestOO

Unit

TestOO

Integrate

TestOO

System

Test对服务交互进试最后阶段的测试,需借鉴OOA和OOD测试的结果12类与子类的测试假设类D是类C的子类,类C已进行了充分的测试13类之间的继承关系:class_A类两个实例方法:

operation1()和operation2()class_B类继承了class_A类并且实现了新的实例方法:

operation3(),class_C类继承了class_B类,覆盖了class_B类的两个实例方法:

operation3()operation2().class_A+operation1()+operation2()class_B+operation3()class_C+operation2()+operation3()根据这三个类之间的区别,可以确定继承的测试用例中是否需要产生新的子类测试用例,哪些测试用例适用于测试子类,哪些测试用例在测试子类中不必执行,如下表所示:类继承类类方法是否改变是否增加测试用例class_Aoperation1()operation2()operation1()FalseFalseclass_Bclass_Aoperation2()FalseFalseoperation3()TrueTrueclass_Cclass_Boperation1()operation2()operation3()FalseTrueTrueFalseTrueTrue16继承层次结构中类测试的测试用例可以采用如下增补原则:如果子类新增了一个或者多个新的操作,就需要增加相应的测试用例。如果子类定义的同名方法覆盖了父类的方法,就需要增加相应的测试用例。在具体构建类测试用例时可以采用如下图所示的结构。对于基类

要全部测试,底层的测试类可以对其父类的测试方法回归。继承层次结构中类的测试类测试用例的构建class

A+operation1()+operation2()class

B+operation3()class

C+operation2()+operation3()class

A

TestCase+testoperation1()+testoperation2()class BTestCase+testoperation3()class CTestCase+testoperation2()+testoperation3()18对类进 试时需要构建可执行的类实例,而接口不存在任何构造方法无法被实现。由于接口一定会在某个类中实现,因此就使用一个实现接口的类来做测试。遵循以下原则:如果接口没有被任何类实现就无需进

试。如果已被别的类实现,那么就针对实现该接口的类进

试。接口类测试InterFace接口测试类图Class_C+Class_C+a_Method()+b_Method()+c_Method()Class_C_TestCase+Class_C_TestCase()+a_Method()+b_Method()+c_Method()+newObject()+testA_Method()+testB_Method()+testC_Method()Interface_A+a_method()+b_method()分层与增量派生类D是C的子类,那么所有的用于C的基于规范的测试用例也都适用于D。引入术语“继承的测试用例”来代表从父类测试用例中选取出来的、用于子类的测试用例。可以通过增量变化分析来确定继承的测试用例中哪些在测试子类时必须执行、哪些可以不执行。合理的分析,有利于找出更有价值的测试用例。20分层与增量

-测试用例选择D的接口中添加新的操作,并且有可能是D中的一个新方法实现的新操作。新操作引入了新的功能/代码,这些都需要测试。在D中改变那些在C中

的操作规范,需要为操作添加新的基于规范的测试用例。附加的测试用例提供了符合其前置条件的新输入,并且对由任何加强了的后置条件导致的新的期望结果进行检查。在D中覆盖那些在C中实现了某个操作并且被D继承了的方法,可以复用于该方法的所有继承来的基于规范的测试用例。在D中添加新的实例变量来实现

的状态和/或属性,最有可能与新的操作和/或重载方法中代码有关,而且关系到对测试的处理。在D中改变类常量。类常量累计成每个测试用例的附加的后置条件。21面

象层次结构测试重点对认定类的测试OOA(面

象分析)中认定的类是对问题空间中的结构、其他系统、设备、被

的事件、系统涉及的

等实际实例的抽象。对它的测试可以从如下方面考虑:认定的类是否全面,其名称应该尽量准确、适用,是否问题空间中所涉及到的实例都反映在认定的类中。认定的类是否具有多个属性。只有一个属性的类通常应看作其他类的属性,而不是抽象为独立的类。对认定为同一对象的类是否有共同的、区别于其他类对象的共同属

性,是否提供或需要相同的服务,如果服务随着不同的对象而变化,认定的对象就需要分解或利用继承性来分类表示。如果系统没有必要始终保持类所代表的对象信息,提供或者得到关于它的服务,认定的类也无必要存在。22面

象层次结构测试重点对认定的结构的测试认定的结构指的是多种对象的组织方式,用来反映问题空间中的复杂实例和复杂关系。认定的结构分为两种:泛化结构和复合结构。泛化结构体现了问题领域中对象的一般和特殊关系。复合结构体现了问题领域中对象的整体和局部的关系。泛化结构的测试可从如下方面着手:对于结构中的一个类,尤其是处于

的类,看是否能在问题领域中派生出其下一层的类。对于结构中的一个类,尤其是处于同一低层的类,看是否能抽象出在现实世界中有意义的更一般的上层的类。的类的属性和服务是否完全体现下层的共性。低层的类是否基于上层类的属性和服务并具有自己的特殊属性23面

象层次结构测试重点对认定的结构的测试符合结构的测试可从如下方面着手:整体类和局部类的复合(聚合)关系是否复合现实的关系。整体类的局部类是否在问题领域中有实际应用。整体类中是否遗漏了在问题领域中有用的局部类。局部类是否能够在问题领域中组合出新的有现实意义的整体类。24面

象层次结构测试重点对构造的类层次结构的测试为了能充分发挥面 象继承共享特性,OOD(面

象设计)的类层次结构通常基于OOA中产生的分类结构的原则来组织,着重体现父类和子类间的一般性和特殊性。为此测试要注意如下几个方面:类层次结构是否涵盖了所有定义的类;是否能体现OOA中所定义的实例关联、消息关联;子类是否具有父类没有的新特性;子类间的共同特性是否完全在父类中得以体现。258.2面

象的单元测试类测试的方法通过代码检查或执试用例能有效地测试一个类的代码。面

象的单元测试类测试的组成部分作为每个类,决定是将其作为一个单元进行独立测试,还是以某种方式将其作为系统某个较大部分的一个组件进行独立测试,需要基于以下因素进行决策:这个类在系统中的作用,尤其是与之相关联的风险程度。这个类的复杂性(根据状态个数、操作个数以及关联其他类的程度等进行衡量)开发这个类测试驱动程序所需的工作量。27面

象的单元测试构建测试用例从类说明中确定测试用例→根据类实现引进的边界值来扩充附加的测试用例。根据前置/后置条件来构建测试用例的总体思想是:为所有可能出现的组合情况确定测试用例需求。创建测试用例来表达这些需求、包括特定输入值(包括常见值和边界值),并确定它们的正确输出。增加测试用例来阐述 前置条件所发生的情况。28面

象的单元测试类测试系列的充分性三个常用标准是:

基于状态的覆盖率,测试覆盖了多少个状态转换为依据。输入状态、生成事件序列、输出状态基于约束的覆盖率,有多少对前置/后置条件被覆盖来表示充分性。基于代码的覆盖率。当所有的测试用例都执行结束时,确定实现一个类的每一行代码或代码通过的每一条路径至少执行了一次29面

象的单元测试构建测试的驱动程序测试驱动程序是一个运试用例并收集运行结果的程序,必须是严谨的、结构清晰、简单,易于,并且对所测试的类说明变化具有很强的适应能力,应该能够复用已存在的驱动程序的代码。因为 很少有时间和资源来对驱动程序 进行基于执行的测试(否则会进入一个程序测试递归的、无穷的),而是依赖代码检查来检测测试驱动程序。308.3面

象的集成测试主要是两个方面:类的线性测试,交互测试。类的独立性测试(跨平台)方面测试。面 象的程序是由若干对象组成的,这些对象互相协作以解决某些问题。对象的协作方式决定了程序能做什么,从而决定了这个程序执行的正确性。因此,一个程序中对象的正确协作----即交互----对于程序的正确性是非常关键的。318.3面

象的集成测试-对象交互汇集类测试有些类在它们的说明中使用对象,但是实际上从不和这些对象中的任何一个进行协作,即从来不请求这些对象的任以下的一个或多个行为:(或指针)——对象之间一对多的何服务。相反,它们会存放这些对象的关系创建、删除这些对象的实例测试方法:使用原始类的方法进试:驱动程序创建实例,该实例作为消息中的参数传递给一个正在测试的集合。测试目的是保证这些实例被正确的从集合中移出。328.3面

象的集成测试-对象交互协作类测试该类的一个或多个操作中使用其它的对象并将其作为它们的实现中不可缺少的一部分。当类接口中的一个操作的某个后置条件了一具对象的实例状态,并且

温馨提示

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

最新文档

评论

0/150

提交评论