软件测试基础 完整版本_第1页
软件测试基础 完整版本_第2页
软件测试基础 完整版本_第3页
软件测试基础 完整版本_第4页
软件测试基础 完整版本_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

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、执行路径,)多态和动态绑定增加了系统运行中可能的执行路径,而且而且给面向对象软件带来了严重的不确定性,给测试覆盖率的活给面向对象软件带来了严重的不确定性,给测试覆盖率的活动带来新的困难。动带来新的困难。 面向对象的软件测试与传统软件测试面向对象的软件测试与传统软件测试华东交通大学软件学院华东交通大学软件学院编辑课件l 1 数据成员是否满足数据封装的要求数据成员是否满足数据封装的要求 数据封装是数据封装是数据和数据有关的操作数据和数据有关的操作的集合。的集合。 检查数据成员是否满足数据封装的要求,基本原则是数据成员是检查数据成员是否满足数据封装的要求,基本原则是数据成员是否被外界(数据成员所属的

9、类或子类以外的调用)直接调用。否被外界(数据成员所属的类或子类以外的调用)直接调用。 当改变数据成员的结构时,是否影响了类的对外接口,是否会导当改变数据成员的结构时,是否影响了类的对外接口,是否会导致相应外界必须改动。致相应外界必须改动。 值得注意值得注意,有时强制的类型转换会破坏数据的封装特性。,有时强制的类型转换会破坏数据的封装特性。华东交通大学软件学院华东交通大学软件学院编辑课件8.2 类测试类测试 l 例如:例如:class Hidenprivate:int a=1;char *p= hiden;class Visiblepublic:int b=2;char *s= visible;

10、.Hiden pp;Visible *qq=(Visible *)&pp;在上面的程序段中,在上面的程序段中,pp的数据成员可以通过的数据成员可以通过qq被随意访问。被随意访问。 华东交通大学软件学院华东交通大学软件学院编辑课件l 1. 继承的成员函数是否都不需要测试?继承的成员函数是否都不需要测试? 对父类中已经测试过的成员函数,两种情况需要在子类中重对父类中已经测试过的成员函数,两种情况需要在子类中重新测试:新测试:a)继承的成员函数在子类中做了改动;)继承的成员函数在子类中做了改动;b)成员函)成员函数调用了改动过的成员函数的部分。数调用了改动过的成员函数的部分。 Derived

11、:Redefined()显然需要重新测试。对于显然需要重新测试。对于Derived:Inherited(),如果它有调用,如果它有调用Redefined()的语句的语句(x=x/Redefined(),就需要重新测试,反之,无此必要。就需要重新测试,反之,无此必要。 华东交通大学软件学院华东交通大学软件学院编辑课件l 2. 对父类的测试是否能照搬到子类?对父类的测试是否能照搬到子类? 延用上面的假设,延用上面的假设,Base:Redefined()和和Derived:Redefined()已经已经是不同的成员函数,它们有不同的服务说明和执行。是不同的成员函数,它们有不同的服务说明和执行。 应该

12、对应该对 Derived:Redefined()重新测试分析,设计测试用例。但由重新测试分析,设计测试用例。但由于面向对象的继承使得两个函数有相似,故只需在于面向对象的继承使得两个函数有相似,故只需在 Base:Redefined()的测试要求和测试用例上添加对的测试要求和测试用例上添加对Derived:Redfined()新的测试要求和增补相应的测试用例。新的测试要求和增补相应的测试用例。 华东交通大学软件学院华东交通大学软件学院编辑课件l 例如:例如:Base:Redefined()含有如下语句含有如下语句if (value0) message (less);else if (value=

13、0) message (equal);else message (more);Derived:Redfined()中定义为中定义为if (value0) message (less);else if (value=0) message (It is equal);elsemessage (more);if (value=88)message(luck);在原有的测试上,对在原有的测试上,对Derived:Redfined()的测试只需做如下改动:的测试只需做如下改动:将将value=0的测试结果期望改动;增加的测试结果期望改动;增加value=88的测试。的测试。 华东交通大学软件学院华东交通

14、大学软件学院编辑课件165.2 5.2 面向对象的软件测试模型面向对象的软件测试模型l面向对象的软件开发面向对象的软件开发面向对象的分析(面向对象的分析(OOA)面向对象的设计(面向对象的设计(OOD)面向对象的编程(面向对象的编程(OOP)华东交通大学软件学院华东交通大学软件学院编辑课件175.2 5.2 面向对象的软件测试模型面向对象的软件测试模型l面向对象的软件测试面向对象的软件测试面向对象分析的测试面向对象分析的测试面向对象设计的测试面向对象设计的测试面向对象编程的测试面向对象编程的测试l面向对象的单元测试面向对象的单元测试l面向对象的集成测试面向对象的集成测试l面向对象的系统测试面向

15、对象的系统测试对分析和设计得到的文档对分析和设计得到的文档进行测试进行测试对编程风格和代码进行测对编程风格和代码进行测试试华东交通大学软件学院华东交通大学软件学院编辑课件面向对象软件测试模型面向对象软件测试模型OO System TestOO Integrate TestOOAOODOOPOOA TestOOD TestOOP TestOO Unit Test面向对象面向对象 分析的测试分析的测试面向对象面向对象 设计的测试设计的测试面向对象面向对象 编程的测试编程的测试面向对象面向对象系统测试系统测试面向对象面向对象单元测试单元测试面向对象面向对象集成测试集成测试华东交通大学软件学院华东交通

16、大学软件学院编辑课件面向对象测试的模型面向对象测试的模型l 面向对象分析面向对象分析OOA的的 测试测试 OOA直接映射问题空间,全面的将问题空间中实现功能的现直接映射问题空间,全面的将问题空间中实现功能的现实抽象化。实抽象化。 将问题空间中的实例抽象为对象,用对象的结构反映问题空将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和服务表示实例的特性和间的复杂实例和复杂关系,用属性和服务表示实例的特性和行为。行为。 OOA对问题空间分析抽象的不完整,最终会影响软件的功能对问题空间分析抽象的不完整,最终会影响软件的功能实现,导致软件开发后期产生大量原本可避免的修补

17、工作;实现,导致软件开发后期产生大量原本可避免的修补工作; 冗余的对象或结构会影响类的选定、程序的整体结构或增加冗余的对象或结构会影响类的选定、程序的整体结构或增加程序员不必要的工作量。程序员不必要的工作量。华东交通大学软件学院华东交通大学软件学院编辑课件l 面向对象设计面向对象设计OOD的测试的测试OOD确定类和类的结构不仅满足满足当前需求分析的需求,确定类和类的结构不仅满足满足当前需求分析的需求,更重要的是通过重新组合或加以适当的补充,能方便实现功更重要的是通过重新组合或加以适当的补充,能方便实现功能的重用和扩增。能的重用和扩增。对对OOD的测试针对功能的实现和重用以及对的测试针对功能的实

18、现和重用以及对OOA结果的拓展结果的拓展。对认定的类测试对认定的类测试(是否涵盖了OOA中所有认定的对象;是否能体现OOA中定义的属性;是否能实现OOA中定义的服务;是否对应着一个含义明确的数据抽象;是否尽可能少的依赖其他类;类中的方法是否单用途)对构造的类层次结构的测试对构造的类层次结构的测试(类层次结构是否涵盖了所有定义的类;是否能体现OOA中定义的实例关联;是否能实现OOA中定义的消息关联;子类是否具有父类没有的新特性;子类间的共同特性是否完全在父类中得以体现)对类库的支持的测试对类库的支持的测试面向对象测试的模型面向对象测试的模型华东交通大学软件学院华东交通大学软件学院编辑课件面向对象

19、测试的模型面向对象测试的模型l 面向对象程序是把功能的实现分布在类中。面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通能正确实现功能的类,通过消息传递来协同实现设计要求的功能。这种程序架构能将出现的错过消息传递来协同实现设计要求的功能。这种程序架构能将出现的错误精确的确定在某一具体的类。误精确的确定在某一具体的类。 l 对对OOP的测试重点集中在类功能的实现和相应的面向对象程序架构,的测试重点集中在类功能的实现和相应的面向对象程序架构,主要体现为以下两个方面:主要体现为以下两个方面:(1)数据成员是否满足数据封装的要求)数据成员是否满足数据封装的要求基本原则是数据成员是否被基本原则

20、是数据成员是否被外界(数据成员所属的类或子类以外的调用)直接调用。外界(数据成员所属的类或子类以外的调用)直接调用。(2)类是否实现了要求的功能)类是否实现了要求的功能测试类的功能,不能仅满足于代码能测试类的功能,不能仅满足于代码能无错运行或被测试的类能提供的功能正确,应以所做的无错运行或被测试的类能提供的功能正确,应以所做的OOD结果为依结果为依据,检测类提供的功能是否满足了设计的要求,是否有缺陷。据,检测类提供的功能是否满足了设计的要求,是否有缺陷。华东交通大学软件学院华东交通大学软件学院编辑课件225.3 5.3 面向对象的单元测试面向对象的单元测试l与传统单元测试的区别与传统单元测试的

21、区别从单元的划分看从单元的划分看从测试方法看从测试方法看从测试对象看从测试对象看华东交通大学软件学院华东交通大学软件学院编辑课件235.3 5.3 面向对象的单元测试面向对象的单元测试l从单元划分看从单元划分看面向过程:以面向过程:以过程或功能过程或功能作为单元划分作为单元划分的依据。的依据。面向对象:以面向对象:以类类作为单元作为单元l是否需要测试所有的类是否需要测试所有的类l无法实例化的类如何测试无法实例化的类如何测试l继承的类如何测试继承的类如何测试华东交通大学软件学院华东交通大学软件学院编辑课件245.3 5.3 面向对象的单元测试面向对象的单元测试l与传统单元测试的区别与传统单元测试

22、的区别从单元的划分看从单元的划分看从测试方法看从测试方法看从测试对象看从测试对象看华东交通大学软件学院华东交通大学软件学院编辑课件255.3 5.3 面向对象的单元测试面向对象的单元测试l从测试方法看从测试方法看传统的单元测试:传统的单元测试:静态测试静态测试+动态测试动态测试面向对象的单元测试:更强调面向对象的单元测试:更强调自动化自动化,不强调代码检查不强调代码检查l如何设计测试用例如何设计测试用例l如何构造测试驱动程序,并避免巨大的工如何构造测试驱动程序,并避免巨大的工作量作量l如何最大可能实现自动化的单元测试如何最大可能实现自动化的单元测试华东交通大学软件学院华东交通大学软件学院编辑课

23、件265.3 5.3 面向对象的单元测试面向对象的单元测试l与传统单元测试的区别与传统单元测试的区别从单元的划分看从单元的划分看从测试方法看从测试方法看从测试对象看从测试对象看华东交通大学软件学院华东交通大学软件学院编辑课件275.3 5.3 面向对象的单元测试面向对象的单元测试l从测试对象看从测试对象看传统的单元测试主要关注传统的单元测试主要关注l函数实现的功能函数实现的功能l如何通过接口传递数据或消息如何通过接口传递数据或消息l函数内部的逻辑和效率函数内部的逻辑和效率面向对象的单元测试主要关注面向对象的单元测试主要关注l类的方法类的方法l类的状态类的状态华东交通大学软件学院华东交通大学软件

24、学院编辑课件285.3 5.3 面向对象的单元测试面向对象的单元测试l从测试对象看从测试对象看面向对象的单元测试应解决面向对象的单元测试应解决l如何测试私有方法或受到保护的方法如何测试私有方法或受到保护的方法l是否需要测试类中的所有方法是否需要测试类中的所有方法华东交通大学软件学院华东交通大学软件学院编辑课件295.3 5.3 面向对象的单元测试面向对象的单元测试l实施的基本步骤实施的基本步骤划分类的优先级划分类的优先级根据优先级的大小确定需根据优先级的大小确定需要执行单元测试的类。要执行单元测试的类。静态测试静态测试去除低级错误,评估类的质量去除低级错误,评估类的质量对需要执行单元测试的类设

25、计测试用例对需要执行单元测试的类设计测试用例开发测试驱动开发测试驱动 自动化的脚本组织测试用例自动化的脚本组织测试用例执行测试,对测试结果进行总结执行测试,对测试结果进行总结 华东交通大学软件学院华东交通大学软件学院编辑课件305.3 5.3 面向对象的单元测试面向对象的单元测试l测试用例的设计测试用例的设计案例说明案例说明根据代码设计测试用例根据代码设计测试用例根据前置条件和后置条件设计测试用例根据前置条件和后置条件设计测试用例根据状态转换设计测试用例根据状态转换设计测试用例根据方法特性设计测试用例根据方法特性设计测试用例华东交通大学软件学院华东交通大学软件学院编辑课件315.3 5.3 面

26、向对象的单元测试面向对象的单元测试l案例说明案例说明MyPointMyShapeMyLineMyTriangleScaleneIsosceles华东交通大学软件学院华东交通大学软件学院编辑课件325.3 5.3 面向对象的单元测试面向对象的单元测试l测试用例的设计测试用例的设计案例说明案例说明根据代码设计测试用例根据代码设计测试用例根据前置条件和后置条件设计测试用例根据前置条件和后置条件设计测试用例根据状态转换设计测试用例根据状态转换设计测试用例根据方法特性设计测试用例根据方法特性设计测试用例华东交通大学软件学院华东交通大学软件学院编辑课件335.3 5.3 面向对象的单元测试面向对象的单元测

27、试l根据代码设计测试用例根据代码设计测试用例公有方法公有方法保护方法保护方法私有方法私有方法l直接修改被测代码直接修改被测代码l在被测类中加入公有方法在被测类中加入公有方法l利用内类机制利用内类机制华东交通大学软件学院华东交通大学软件学院编辑课件345.3 5.3 面向对象的单元测试面向对象的单元测试l测试用例的设计测试用例的设计案例说明案例说明根据代码设计测试用例根据代码设计测试用例根据前置条件和后置条件设计测试用例根据前置条件和后置条件设计测试用例根据状态转换设计测试用例根据状态转换设计测试用例根据方法特性设计测试用例根据方法特性设计测试用例华东交通大学软件学院华东交通大学软件学院编辑课件

28、355.3 5.3 面向对象的单元测试面向对象的单元测试l根据前置和后置条件设计测试用例根据前置和后置条件设计测试用例l定义定义前置条件前置条件是方法被执行之前应该满足的是方法被执行之前应该满足的条件;条件;后置条件后置条件是当方法执行结束之后应满足是当方法执行结束之后应满足的条件。的条件。华东交通大学软件学院华东交通大学软件学院编辑课件365.3 5.3 面向对象的单元测试面向对象的单元测试l测试用例的设计测试用例的设计案例说明案例说明根据代码设计测试用例根据代码设计测试用例根据前置条件和后置条件设计测试用例根据前置条件和后置条件设计测试用例根据状态转换设计测试用例根据状态转换设计测试用例根

29、据方法特性设计测试用例根据方法特性设计测试用例华东交通大学软件学院华东交通大学软件学院编辑课件375.3 5.3 面向对象的单元测试面向对象的单元测试l根据状态转换设计测试用例根据状态转换设计测试用例l状态转换图中清晰地列出了类可能处于的状态转换图中清晰地列出了类可能处于的所有状态,每一对状态转换都涉及一个触所有状态,每一对状态转换都涉及一个触发事件。发事件。 华东交通大学软件学院华东交通大学软件学院编辑课件385.3 5.3 面向对象的单元测试面向对象的单元测试l测试用例的设计测试用例的设计案例说明案例说明根据代码设计测试用例根据代码设计测试用例根据前置条件和后置条件设计测试用例根据前置条件

30、和后置条件设计测试用例根据状态转换设计测试用例根据状态转换设计测试用例根据方法特性设计测试用例根据方法特性设计测试用例华东交通大学软件学院华东交通大学软件学院编辑课件395.3 5.3 面向对象的单元测试面向对象的单元测试l根据方法特性设计测试用例根据方法特性设计测试用例构造函数构造函数检测被测类在各种情况下检测被测类在各种情况下所创建的对象能否正常初始化所创建的对象能否正常初始化功能函数功能函数结合边界值、等价类检验结合边界值、等价类检验每种功能是否能正确完成每种功能是否能正确完成接口函数接口函数检验类能否在各种状态之检验类能否在各种状态之间成功转化间成功转化华东交通大学软件学院华东交通大学

31、软件学院编辑课件405.3 5.3 面向对象的单元测试面向对象的单元测试l 综合策略综合策略根据方法特性划分:根据方法特性划分:构造函数、功能函数和接口函数。构造函数、功能函数和接口函数。针对构造函数,针对构造函数,根据前置和后置条件设计用例。根据前置和后置条件设计用例。针对功能函数针对功能函数l 公有方法:基于前置条件和后置条件设计测试用例。公有方法:基于前置条件和后置条件设计测试用例。l 受保护的方法:严格区分有访问权限和无访问权限的前置条件和后置受保护的方法:严格区分有访问权限和无访问权限的前置条件和后置条件,设计测试用例。条件,设计测试用例。l 私有方法:根据实际情况选用适当的策略进行

32、测试。私有方法:根据实际情况选用适当的策略进行测试。针对接口函数,针对接口函数,根据状态转换设计测试用例。根据状态转换设计测试用例。对于以上每种情况,都应结合边界值、等价类等测试方法来对于以上每种情况,都应结合边界值、等价类等测试方法来选择测试数据。选择测试数据。华东交通大学软件学院华东交通大学软件学院编辑课件415.3 5.3 面向对象的单元测试面向对象的单元测试l测试驱动的实现方式测试驱动的实现方式利用利用main方法方法嵌入静态方法嵌入静态方法独立的测试类独立的测试类华东交通大学软件学院华东交通大学软件学院编辑课件425.3 5.3 面向对象的单元测试面向对象的单元测试l测试代码的组织测

33、试代码的组织与产品代码放在一起与产品代码放在一起在产品代码目录下在产品代码目录下与产品代码并行与产品代码并行与产品代码的副本放在一起与产品代码的副本放在一起华东交通大学软件学院华东交通大学软件学院编辑课件435.3 5.3 面向对象的单元测试面向对象的单元测试l测试驱动框架测试驱动框架设计目标设计目标l自动自动l简单简单l灵活灵活设计思想设计思想lTestCaselTestResult华东交通大学软件学院华东交通大学软件学院编辑课件445.3 5.3 面向对象的单元测试面向对象的单元测试l测试驱动框架:测试驱动框架:TestCasel4类操作类操作构建和执行测试用例构建和执行测试用例 创建和操

34、作被测类的创建和操作被测类的Object实例实例 分析测试用例结果分析测试用例结果 将测试过程记录到日志文件将测试过程记录到日志文件 华东交通大学软件学院华东交通大学软件学院编辑课件455.3 5.3 面向对象的单元测试面向对象的单元测试l案例实践一:案例实践一:类类MyPoint的第一次测试尝的第一次测试尝试试 华东交通大学软件学院华东交通大学软件学院编辑课件465.4 JUnit5.4 JUnit测试测试l面临的问题面临的问题提高软件的质量需要撰写测试程序;提高软件的质量需要撰写测试程序;经良好设计和规划的测试类的代码不需经良好设计和规划的测试类的代码不需要那么繁琐和冗长;要那么繁琐和冗长

35、;通过借助于测试类的编写规范可以得到通过借助于测试类的编写规范可以得到易于操作的测试,且不随时间变化。易于操作的测试,且不随时间变化。华东交通大学软件学院华东交通大学软件学院编辑课件475.4 JUnit5.4 JUnit测试测试l JUnit的概念的概念用于编写和运行可重复的测试,专门针对用于编写和运行可重复的测试,专门针对Java代码的代码的单元测试,主要用于白盒测试盒回归测试。单元测试,主要用于白盒测试盒回归测试。l 3个设计目标个设计目标自动化测试框架自动化测试框架确保代码持久有效确保代码持久有效支持测试代码的重用支持测试代码的重用华东交通大学软件学院华东交通大学软件学院编辑课件485

36、.4 JUnit5.4 JUnit测试测试l JUnit特性及优点特性及优点l 特性特性利用利用断言断言assert*来测试实际执行结果是否符合预期结来测试实际执行结果是否符合预期结果;果;利用利用测试用例测试用例TestCase和和测试包测试包TestSuite方便地组织方便地组织和运行测试;和运行测试;通过通过文本运行器文本运行器textui、图形运行器、图形运行器awtui和和swingui提供灵活的交互模式。提供灵活的交互模式。华东交通大学软件学院华东交通大学软件学院编辑课件495.4 JUnit5.4 JUnit测试测试lJUnit特性及优点特性及优点l 在支持测试方面,在支持测试方

37、面,JUnit的优点的优点将测试代码与产品代码分开,提高了软件的将测试代码与产品代码分开,提高了软件的可维护性可维护性;针对某个类的测试代码经少量改动之后即可应用于另一针对某个类的测试代码经少量改动之后即可应用于另一个类的测试,简化了测试代码的撰写,提高了测试代码个类的测试,简化了测试代码的撰写,提高了测试代码的的复用程度复用程度;公开源代码,便于进行公开源代码,便于进行二次开发二次开发,且,且便于扩展便于扩展。华东交通大学软件学院华东交通大学软件学院编辑课件505.4 JUnit5.4 JUnit测试测试lJUnit特性及优点特性及优点l就对软件开发与过程的支持而言,就对软件开发与过程的支持

38、而言,JUnit有有助于助于加快开发速度;加快开发速度;提高软件代码质量;提高软件代码质量;提升系统的可信赖度。提升系统的可信赖度。华东交通大学软件学院华东交通大学软件学院编辑课件515.4 JUnit5.4 JUnit测试测试lJUnit下载与安装下载与安装华东交通大学软件学院华东交通大学软件学院编辑课件525.4 JUnit5.4 JUnit测试测试lJUnit3.8.x测试思想测试思想华东交通大学软件学院华东交通大学软件学院编辑课件5.4 JUnit5.4 JUnit测试测试l Test类类接口类,建立接口类,建立TestCase与与TestSuite类之间的类之间的关联关联l Test

39、Case类类由由TestCase类派生测试驱动类,包含若类派生测试驱动类,包含若干测试用例干测试用例l TestSuite类类将多个测试组合成一个测试包,在一个将多个测试组合成一个测试包,在一个测试过程完成对被测类的所有测试测试过程完成对被测类的所有测试l TestResult类类搜集所有测试用例的执行结果。搜集所有测试用例的执行结果。l Assert类类将实际值与预期值进行比较。将实际值与预期值进行比较。华东交通大学软件学院华东交通大学软件学院编辑课件545.4 JUnit5.4 JUnit测试测试l 基于类的单元测试的基本步骤基于类的单元测试的基本步骤创建测试驱动类;创建测试驱动类;创建被

40、测类的对象;创建被测类的对象;设计测试用例和对应的测试程序,从方法、状态等方面展开测设计测试用例和对应的测试程序,从方法、状态等方面展开测试;试;测试完毕释放已经分配的永久性资源;测试完毕释放已经分配的永久性资源;将多个测试用例组织成测试包,必要时需设定测试用例执行的将多个测试用例组织成测试包,必要时需设定测试用例执行的顺序;顺序;执行测试;执行测试;检验并统计测试结果。检验并统计测试结果。华东交通大学软件学院华东交通大学软件学院编辑课件555.4 JUnit5.4 JUnit测试测试l案例实践二:类案例实践二:类MyPoint的第二次测的第二次测试尝试试尝试华东交通大学软件学院华东交通大学软

41、件学院编辑课件565.4 JUnit5.4 JUnit测试测试l JUnit使用经验使用经验l 基本步骤基本步骤继承继承junit.framework.TestCase类;类;填写填写setUp()和和tearDown()方法;方法;撰写撰写test*测试方法,并用测试方法,并用assert*验证用例的执行情验证用例的执行情况;况;重写重写suite()方法,利用方法,利用addTest加入自己的加入自己的test*测试测试方法;方法;以图形或文本方式执行测试。以图形或文本方式执行测试。华东交通大学软件学院华东交通大学软件学院编辑课件575.4 JUnit5.4 JUnit测试测试l特殊类的测

42、试特殊类的测试接口类接口类对实现的类展开测试而进而对实现的类展开测试而进而测试到接口类。测试到接口类。抽象类抽象类利用内类实现(利用内类实现(JUnit3.x)。)。继承类继承类分别设计测试驱动类,用一分别设计测试驱动类,用一个组合测试类来将父类和子类的测试加个组合测试类来将父类和子类的测试加入一个包中。入一个包中。华东交通大学软件学院华东交通大学软件学院编辑课件585.4 JUnit5.4 JUnit测试测试l案例实践三:案例实践三:MyPoint系列的测试系列的测试华东交通大学软件学院华东交通大学软件学院编辑课件595.4 JUnit5.4 JUnit测试测试lJUnit4功能增强功能增强

43、TestBefore, AfterBeforeClass, AfterClass华东交通大学软件学院华东交通大学软件学院编辑课件5.5 5.5 面向对象的集成测试和系统测试面向对象的集成测试和系统测试l 面向对象设计(面向对象设计(OOD)采用)采用“造型的观点造型的观点”,以,以OOA为基础归纳出为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象。抽象。l OOD 归纳的类,可以是对象简单的延续,可以是不同对象的相同或归纳的类,可以是对象简单的延续,可以是不同对象的相同或相似的服务。相似的服务。l OOD不

44、是在不是在OOA上的另一思维方式的大动干戈,而是上的另一思维方式的大动干戈,而是OOA的进一步的进一步细化和更高层的抽象。细化和更高层的抽象。 华东交通大学软件学院华东交通大学软件学院编辑课件5.5 5.5 面向对象的集成测试和系统测试面向对象的集成测试和系统测试l 与传统的集成测试的区别与传统的集成测试的区别传统的集成测试是由底向上通过集成完成的功能模块进行测试,传统的集成测试是由底向上通过集成完成的功能模块进行测试,一般可以一般可以在部分程序编译完成的情况下进行在部分程序编译完成的情况下进行。面向对象程序,相互调用的功能是散布在程序的不同类中,类通面向对象程序,相互调用的功能是散布在程序的

45、不同类中,类通过消息相互作用申请和提供服务。类的行为与它的状态密切相关,过消息相互作用申请和提供服务。类的行为与它的状态密切相关,状态不仅仅是体现在类数据成员的值,也许还包括其他类中的状状态不仅仅是体现在类数据成员的值,也许还包括其他类中的状态信息。态信息。类相互依赖极其紧密,根本无法在编译不完全的程序上对类进行类相互依赖极其紧密,根本无法在编译不完全的程序上对类进行测试。测试。面向对象的集成测试通常需要在整个程序编译完成后进行。面向对象的集成测试通常需要在整个程序编译完成后进行。华东交通大学软件学院华东交通大学软件学院编辑课件5.5 5.5 面向对象的集成测试和系统测试面向对象的集成测试和系

46、统测试l 面向对象的集成测试,能够检测出相对独立的、单元测试无法检测出面向对象的集成测试,能够检测出相对独立的、单元测试无法检测出的、类相互作用时才会产生的错误。的、类相互作用时才会产生的错误。l 基于单元测试对成员函数行为正确性的保证,集成测试只关注于基于单元测试对成员函数行为正确性的保证,集成测试只关注于系统系统的结构和内部的相互作用的结构和内部的相互作用。l 面向对象的集成测试可以分成两步进行:面向对象的集成测试可以分成两步进行:先进行静态测试,再进行动先进行静态测试,再进行动态测试态测试。 华东交通大学软件学院华东交通大学软件学院编辑课件5.5 5.5 面向对象的集成测试和系统测试面向对象的集成测试和系统测试l 静态测试静态测试 主要针对主要针对程序的结构程序的结构进行,检测程序结构是否符合设计要求。进行,检测程序结构是否符合设计要求。现在流行的一些测试软件都能提供一种称为现在流行的一些测试软件都能提供一种

温馨提示

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

评论

0/150

提交评论