软件测试基础PPT课件.ppt
《软件测试基础PPT课件.ppt》由会员分享,可在线阅读,更多相关《软件测试基础PPT课件.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1软件测试技术基础软件测试技术基础PartPart 软件测试方法软件测试方法华东交通大学软件学院华东交通大学软件学院华东交通大学软件学院华东交通大学软件学院2第第5 5章章 面向对象软件的测试面向对象软件的测试l本章重点本章重点面向对象软件的特点面向对象软件的特点什么是面向对象的单元?什么是面向对象的单元?如何利用如何利用JUnit进行单元测试?进行单元测试?华东交通大学软件学院华东交通大学软件学院5.1 5.1 概述概述l对象对象定定义义对对象象是是一一个个可可操操作作的的实实体体,它它既既包包含含了了特特定定的数据的数据,又包含了操作这些数据的代码,即,又包含了操作这些数据的代码,即方法方
2、法。针对对象的测试针对对象的测试l对象的封装对象的封装信息隐藏对测试的影响信息隐藏对测试的影响l对象的状态对象的状态对象状态的转化对象状态的转化l对象的生命周期对象的生命周期状态与生命期是否相符状态与生命期是否相符l对象的交互对象的交互消息的发送和接受消息的发送和接受华东交通大学软件学院华东交通大学软件学院45.1 5.1 概述概述l类类定义定义是通过抽象数据类型的方法实现的一种数据是通过抽象数据类型的方法实现的一种数据类型,是具有共性的对象集合。类型,是具有共性的对象集合。对类的测试对类的测试l构造函数构造函数不同的构造函数以及是否调用其他对象不同的构造函数以及是否调用其他对象l析构函数(可
3、选)析构函数(可选)数据空间及时释放数据空间及时释放l方法方法关注前置条件和后置条件关注前置条件和后置条件l符合设计符合设计华东交通大学软件学院华东交通大学软件学院55.1 5.1 概述概述l封装封装定义:定义:是将数据以及操作数据的方法关联起来,是将数据以及操作数据的方法关联起来,构成的一个具有类类型的对象的描述。构成的一个具有类类型的对象的描述。封装要求类高度内聚,且耦合很松。封装要求类高度内聚,且耦合很松。测试的难点测试的难点l封装使得内部的实现细节隐藏起来,外界无法访问封装使得内部的实现细节隐藏起来,外界无法访问l封装后对象的独立性加重集成测试的负担封装后对象的独立性加重集成测试的负担
4、华东交通大学软件学院华东交通大学软件学院65.1 5.1 概述概述l继承继承定义定义是类之间的一种联系,通过从某个类(称父是类之间的一种联系,通过从某个类(称父类)派生可以得到一个新的类(称子类或派生类),类)派生可以得到一个新的类(称子类或派生类),该类具有父类的特点和功能,同时还具有新的特点和该类具有父类的特点和功能,同时还具有新的特点和功能。功能。给测试带来的挑战给测试带来的挑战l缺陷传播缺陷传播l重复测试重复测试华东交通大学软件学院华东交通大学软件学院75.1 5.1 概述概述l多态多态定义:定义:一个对外接口,多个内在实现方一个对外接口,多个内在实现方法。法。分为参数多态和包含多态。
5、分为参数多态和包含多态。一般通过动态测试来检查。一般通过动态测试来检查。华东交通大学软件学院华东交通大学软件学院85.1 5.1 概述概述l消息消息对象之间通过消息的传递产生相互作用,通对象之间通过消息的传递产生相互作用,通过消息来请求执行某个操作。过消息来请求执行某个操作。测试时应考虑测试时应考虑l消息的发送者消息的发送者l消息的接收者消息的接收者l消息所包含的参数消息所包含的参数 华东交通大学软件学院华东交通大学软件学院95.1 5.1 概述概述l接口接口用于描述一系列规范的行为用于描述一系列规范的行为对接口的测试应注意对接口的测试应注意l接口包含的行为应与对应类的行为相符;接口包含的行为
6、应与对应类的行为相符;l接口往往与其他接口或类具有关系,应测试到所有接口往往与其他接口或类具有关系,应测试到所有可能的作用方式。可能的作用方式。华东交通大学软件学院华东交通大学软件学院l面向对象技术面向对象技术的特点给测试带来的新问题具体表现为:的特点给测试带来的新问题具体表现为:(1)封装把数据及对数据的操作封装在一起封装把数据及对数据的操作封装在一起,限制了对象属性,限制了对象属性对外的透明性和外界对它的操作权限,在某种程度上避免了对外的透明性和外界对它的操作权限,在某种程度上避免了对数据的非法操作,有效防止了故障的扩散。但同时,封装对数据的非法操作,有效防止了故障的扩散。但同时,封装机制
7、也给测试数据的生成、测试路径的选取以及测试结构的机制也给测试数据的生成、测试路径的选取以及测试结构的分析带来了困难。分析带来了困难。(2)继承实现了共享父类中定义的数据和操作,继承实现了共享父类中定义的数据和操作,同时也可定义同时也可定义新的特征。子类是在新的环境中存在,所以父类的正确性不新的特征。子类是在新的环境中存在,所以父类的正确性不能保证子类的正确性。继承使代码的重用率得到了提高,但能保证子类的正确性。继承使代码的重用率得到了提高,但同时也使故障的传播几率增加。同时也使故障的传播几率增加。(3)多态和动态绑定增加了系统运行中可能的执行路径,)多态和动态绑定增加了系统运行中可能的执行路径
8、,而且而且给面向对象软件带来了严重的不确定性,给测试覆盖率的活给面向对象软件带来了严重的不确定性,给测试覆盖率的活动带来新的困难。动带来新的困难。面向对象的软件测试与传统软件测试面向对象的软件测试与传统软件测试华东交通大学软件学院华东交通大学软件学院l1 数据成员是否满足数据封装的要求数据成员是否满足数据封装的要求 数据封装是数据封装是数据和数据有关的操作数据和数据有关的操作的集合。的集合。检查数据成员是否满足数据封装的要求,基本原则是数据成员是检查数据成员是否满足数据封装的要求,基本原则是数据成员是否被外界(数据成员所属的类或子类以外的调用)直接调用。否被外界(数据成员所属的类或子类以外的调
9、用)直接调用。当改变数据成员的结构时,是否影响了类的对外接口,是否会导当改变数据成员的结构时,是否影响了类的对外接口,是否会导致相应外界必须改动。致相应外界必须改动。值得注意值得注意,有时强制的类型转换会破坏数据的封装特性。,有时强制的类型转换会破坏数据的封装特性。华东交通大学软件学院华东交通大学软件学院8.2 类测试类测试 l例如:例如:class Hidenprivate:int a=1;char*p=hiden;class Visiblepublic:int b=2;char*s=visible;.Hiden pp;Visible*qq=(Visible*)&pp;在上面的程序段中,在上
10、面的程序段中,pp的数据成员可以通过的数据成员可以通过qq被随意访问。被随意访问。华东交通大学软件学院华东交通大学软件学院l1.继承的成员函数是否都不需要测试?继承的成员函数是否都不需要测试?对父类中已经测试过的成员函数,两种情况需要在子类中重对父类中已经测试过的成员函数,两种情况需要在子类中重新测试:新测试:a)继承的成员函数在子类中做了改动;)继承的成员函数在子类中做了改动;b)成员函)成员函数调用了改动过的成员函数的部分。数调用了改动过的成员函数的部分。Derived:Redefined()显然需要重新测试。对于显然需要重新测试。对于Derived:Inherited(),如果它有调用,
11、如果它有调用Redefined()的语句的语句(x=x/Redefined(),就需要重新测试,就需要重新测试,反之,无此必要。反之,无此必要。华东交通大学软件学院华东交通大学软件学院l2.对父类的测试是否能照搬到子类?对父类的测试是否能照搬到子类?延用上面的假设,延用上面的假设,Base:Redefined()和和Derived:Redefined()已经已经是不同的成员函数,它们有不同的服务说明和执行。是不同的成员函数,它们有不同的服务说明和执行。应该对应该对 Derived:Redefined()重新测试分析,设计测试用例。但由重新测试分析,设计测试用例。但由于面向对象的继承使得两个函数
12、有相似,故只需在于面向对象的继承使得两个函数有相似,故只需在 Base:Redefined()的测试要求和测试用例上添加对的测试要求和测试用例上添加对Derived:Redfined()新的测试要新的测试要求和增补相应的测试用例。求和增补相应的测试用例。华东交通大学软件学院华东交通大学软件学院l例如:例如:Base:Redefined()含有如下语句含有如下语句if(value0)message(less);else if(value=0)message(equal);else message(more);Derived:Redfined()中定义为中定义为if(value0)message(
13、less);else if(value=0)message(It is equal);elsemessage(more);if(value=88)message(luck);在原有的测试上,对在原有的测试上,对Derived:Redfined()的测试只需做如下改动:的测试只需做如下改动:将将value=0的测试结果期望改动;增加的测试结果期望改动;增加value=88的测试。的测试。华东交通大学软件学院华东交通大学软件学院165.2 5.2 面向对象的软件测试模型面向对象的软件测试模型l面向对象的软件开发面向对象的软件开发面向对象的分析(面向对象的分析(OOA)面向对象的设计(面向对象的设计
14、(OOD)面向对象的编程(面向对象的编程(OOP)华东交通大学软件学院华东交通大学软件学院175.2 5.2 面向对象的软件测试模型面向对象的软件测试模型l面向对象的软件测试面向对象的软件测试面向对象分析的测试面向对象分析的测试面向对象设计的测试面向对象设计的测试面向对象编程的测试面向对象编程的测试l面向对象的单元测试面向对象的单元测试l面向对象的集成测试面向对象的集成测试l面向对象的系统测试面向对象的系统测试对分析和设计得到的文档对分析和设计得到的文档进行测试进行测试对编程风格和代码进行测对编程风格和代码进行测试试华东交通大学软件学院华东交通大学软件学院面向对象软件测试模型面向对象软件测试模
15、型OO System TestOO Integrate TestOOAOODOOPOOA TestOOD TestOOP TestOO Unit Test面向对象面向对象 分分析的测试析的测试面向对象面向对象 设设计的测试计的测试面向对象面向对象 编编程的测试程的测试面向对象面向对象系统测试系统测试面向对象面向对象单元测试单元测试面向对象面向对象集成测试集成测试华东交通大学软件学院华东交通大学软件学院面向对象测试的模型面向对象测试的模型l面向对象分析面向对象分析OOA的的 测试测试OOA直接映射问题空间,全面的将问题空间中实现功能的现直接映射问题空间,全面的将问题空间中实现功能的现实抽象化。实
16、抽象化。将问题空间中的实例抽象为对象,用对象的结构反映问题空将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和服务表示实例的特性和间的复杂实例和复杂关系,用属性和服务表示实例的特性和行为。行为。OOA对问题空间分析抽象的不完整,最终会影响软件的功能对问题空间分析抽象的不完整,最终会影响软件的功能实现,导致软件开发后期产生大量原本可避免的修补工作;实现,导致软件开发后期产生大量原本可避免的修补工作;冗余的对象或结构会影响类的选定、程序的整体结构或增加冗余的对象或结构会影响类的选定、程序的整体结构或增加程序员不必要的工作量。程序员不必要的工作量。华东交通大学软件学
17、院华东交通大学软件学院l面向对象设计面向对象设计OOD的测试的测试OOD确定类和类的结构不仅满足满足当前需求分析的需求,确定类和类的结构不仅满足满足当前需求分析的需求,更重要的是通过重新组合或加以适当的补充,能方便实现功更重要的是通过重新组合或加以适当的补充,能方便实现功能的重用和扩增。能的重用和扩增。对对OOD的测试针对功能的实现和重用以及对的测试针对功能的实现和重用以及对OOA结果的拓展。结果的拓展。对认定的类测试对认定的类测试(是否涵盖了OOA中所有认定的对象;是否能体现OOA中定义的属性;是否能实现OOA中定义的服务;是否对应着一个含义明确的数据抽象;是否尽可能少的依赖其他类;类中的方
18、法是否单用途)对构造的类层次结构的测试对构造的类层次结构的测试(类层次结构是否涵盖了所有定义的类;是否能体现OOA中定义的实例关联;是否能实现OOA中定义的消息关联;子类是否具有父类没有的新特性;子类间的共同特性是否完全在父类中得以体现)对类库的支持的测试对类库的支持的测试面向对象测试的模型面向对象测试的模型华东交通大学软件学院华东交通大学软件学院面向对象测试的模型面向对象测试的模型l面向对象程序是把功能的实现分布在类中。面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通能正确实现功能的类,通过消息传递来协同实现设计要求的功能。这种程序架构能将出现的错过消息传递来协同实现设计要求的功
19、能。这种程序架构能将出现的错误精确的确定在某一具体的类。误精确的确定在某一具体的类。l对对OOP的测试重点集中在类功能的实现和相应的面向对象程序架构,的测试重点集中在类功能的实现和相应的面向对象程序架构,主要体现为以下两个方面:主要体现为以下两个方面:(1)数据成员是否满足数据封装的要求)数据成员是否满足数据封装的要求基本原则是数据成员是否被基本原则是数据成员是否被外界(数据成员所属的类或子类以外的调用)直接调用。外界(数据成员所属的类或子类以外的调用)直接调用。(2)类是否实现了要求的功能)类是否实现了要求的功能测试类的功能,不能仅满足于代码能测试类的功能,不能仅满足于代码能无错运行或被测试
20、的类能提供的功能正确,应以所做的无错运行或被测试的类能提供的功能正确,应以所做的OOD结果为依结果为依据,检测类提供的功能是否满足了设计的要求,是否有缺陷。据,检测类提供的功能是否满足了设计的要求,是否有缺陷。华东交通大学软件学院华东交通大学软件学院225.3 5.3 面向对象的单元测试面向对象的单元测试l与传统单元测试的区别与传统单元测试的区别从单元的划分看从单元的划分看从测试方法看从测试方法看从测试对象看从测试对象看华东交通大学软件学院华东交通大学软件学院235.3 5.3 面向对象的单元测试面向对象的单元测试l从单元划分看从单元划分看面向过程:以面向过程:以过程或功能过程或功能作为单元划
21、分作为单元划分的依据。的依据。面向对象:以面向对象:以类类作为单元作为单元l是否需要测试所有的类是否需要测试所有的类l无法实例化的类如何测试无法实例化的类如何测试l继承的类如何测试继承的类如何测试华东交通大学软件学院华东交通大学软件学院245.3 5.3 面向对象的单元测试面向对象的单元测试l与传统单元测试的区别与传统单元测试的区别从单元的划分看从单元的划分看从测试方法看从测试方法看从测试对象看从测试对象看华东交通大学软件学院华东交通大学软件学院255.3 5.3 面向对象的单元测试面向对象的单元测试l从测试方法看从测试方法看传统的单元测试:传统的单元测试:静态测试静态测试+动态测试动态测试面
22、向对象的单元测试:更强调面向对象的单元测试:更强调自动化自动化,不强调代码检查不强调代码检查l如何设计测试用例如何设计测试用例l如何构造测试驱动程序,并避免巨大的工如何构造测试驱动程序,并避免巨大的工作量作量l如何最大可能实现自动化的单元测试如何最大可能实现自动化的单元测试华东交通大学软件学院华东交通大学软件学院265.3 5.3 面向对象的单元测试面向对象的单元测试l与传统单元测试的区别与传统单元测试的区别从单元的划分看从单元的划分看从测试方法看从测试方法看从测试对象看从测试对象看华东交通大学软件学院华东交通大学软件学院275.3 5.3 面向对象的单元测试面向对象的单元测试l从测试对象看从
23、测试对象看传统的单元测试主要关注传统的单元测试主要关注l函数实现的功能函数实现的功能l如何通过接口传递数据或消息如何通过接口传递数据或消息l函数内部的逻辑和效率函数内部的逻辑和效率面向对象的单元测试主要关注面向对象的单元测试主要关注l类的方法类的方法l类的状态类的状态华东交通大学软件学院华东交通大学软件学院285.3 5.3 面向对象的单元测试面向对象的单元测试l从测试对象看从测试对象看面向对象的单元测试应解决面向对象的单元测试应解决l如何测试私有方法或受到保护的方法如何测试私有方法或受到保护的方法l是否需要测试类中的所有方法是否需要测试类中的所有方法华东交通大学软件学院华东交通大学软件学院2
24、95.3 5.3 面向对象的单元测试面向对象的单元测试l实施的基本步骤实施的基本步骤划分类的优先级划分类的优先级根据优先级的大小确定需根据优先级的大小确定需要执行单元测试的类。要执行单元测试的类。静态测试静态测试去除低级错误,评估类的质量去除低级错误,评估类的质量对需要执行单元测试的类设计测试用例对需要执行单元测试的类设计测试用例开发测试驱动开发测试驱动 自动化的脚本组织测试用例自动化的脚本组织测试用例执行测试,对测试结果进行总结执行测试,对测试结果进行总结 华东交通大学软件学院华东交通大学软件学院305.3 5.3 面向对象的单元测试面向对象的单元测试l测试用例的设计测试用例的设计案例说明案
25、例说明根据代码设计测试用例根据代码设计测试用例根据前置条件和后置条件设计测试用例根据前置条件和后置条件设计测试用例根据状态转换设计测试用例根据状态转换设计测试用例根据方法特性设计测试用例根据方法特性设计测试用例华东交通大学软件学院华东交通大学软件学院315.3 5.3 面向对象的单元测试面向对象的单元测试l案例说明案例说明MyPointMyShapeMyLineMyTriangleScaleneIsosceles华东交通大学软件学院华东交通大学软件学院325.3 5.3 面向对象的单元测试面向对象的单元测试l测试用例的设计测试用例的设计案例说明案例说明根据代码设计测试用例根据代码设计测试用例根
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 基础 PPT 课件
限制150内