软件测试基础课件5_第1页
软件测试基础课件5_第2页
软件测试基础课件5_第3页
软件测试基础课件5_第4页
软件测试基础课件5_第5页
已阅读5页,还剩62页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、2021/3/101 软件测试技术基础软件测试技术基础 PartPart 软件测试方法软件测试方法 华东交通大学软件学院华东交通大学软件学院 华东交通大学软件学院华东交通大学软件学院 2021/3/102 第第5 5章章 面向对象软件的测试面向对象软件的测试 l本章重点本章重点 面向对象软件的特点面向对象软件的特点 什么是面向对象的单元?什么是面向对象的单元? 如何利用如何利用JUnit进行单元测试?进行单元测试? 华东交通大学软件学院华东交通大学软件学院 2021/3/103 5.1 5.1 概述概述 l 对象对象 定义定义对象是一个可操作的实体,它既包含了对象是一个可操作的实体,它既包含了

2、特定特定 的数据的数据,又包含了操作这些数据的代码,即,又包含了操作这些数据的代码,即方法方法。 针对对象的测试针对对象的测试 l对象的封装对象的封装信息隐藏对测试的影响信息隐藏对测试的影响 l对象的状态对象的状态对象状态的转化对象状态的转化 l对象的生命周期对象的生命周期状态与生命期是否相符状态与生命期是否相符 l对象的交互对象的交互消息的发送和接受消息的发送和接受 华东交通大学软件学院华东交通大学软件学院 2021/3/104 5.1 5.1 概述概述 l 类类 定义定义是通过抽象数据类型的方法实现的一种数据是通过抽象数据类型的方法实现的一种数据 类型,是具有共性的对象集合。类型,是具有共

3、性的对象集合。 对类的测试对类的测试 l构造函数构造函数不同的构造函数以及是否调用其他对象不同的构造函数以及是否调用其他对象 l析构函数(可选)析构函数(可选)数据空间及时释放数据空间及时释放 l方法方法关注前置条件和后置条件关注前置条件和后置条件 l符合设计符合设计 华东交通大学软件学院华东交通大学软件学院 2021/3/105 5.1 5.1 概述概述 l封装封装 定义:定义:是将数据以及操作数据的方法关联起来,是将数据以及操作数据的方法关联起来, 构成的一个具有类类型的对象的描述。构成的一个具有类类型的对象的描述。 封装要求类高度内聚,且耦合很松。封装要求类高度内聚,且耦合很松。 测试的

4、难点测试的难点 l封装使得内部的实现细节隐藏起来,外界无法访问封装使得内部的实现细节隐藏起来,外界无法访问 l封装后对象的独立性加重集成测试的负担封装后对象的独立性加重集成测试的负担 华东交通大学软件学院华东交通大学软件学院 2021/3/106 5.1 5.1 概述概述 l 继承继承 定义定义是类之间的一种联系,通过从某个类(称父是类之间的一种联系,通过从某个类(称父 类)派生可以得到一个新的类(称子类或派生类),类)派生可以得到一个新的类(称子类或派生类), 该类具有父类的特点和功能,同时还具有新的特点和该类具有父类的特点和功能,同时还具有新的特点和 功能。功能。 给测试带来的挑战给测试带

5、来的挑战 l缺陷传播缺陷传播 l重复测试重复测试 华东交通大学软件学院华东交通大学软件学院 2021/3/107 5.1 5.1 概述概述 l多态多态 定义:定义:一个对外接口,多个内在实现方一个对外接口,多个内在实现方 法。法。 分为参数多态和包含多态。分为参数多态和包含多态。 一般通过动态测试来检查。一般通过动态测试来检查。 华东交通大学软件学院华东交通大学软件学院 2021/3/108 5.1 5.1 概述概述 l消息消息 对象之间通过消息的传递产生相互作用,通对象之间通过消息的传递产生相互作用,通 过消息来请求执行某个操作。过消息来请求执行某个操作。 测试时应考虑测试时应考虑 l消息的

6、发送者消息的发送者 l消息的接收者消息的接收者 l消息所包含的参数消息所包含的参数 华东交通大学软件学院华东交通大学软件学院 2021/3/109 5.1 5.1 概述概述 l接口接口 用于描述一系列规范的行为用于描述一系列规范的行为 对接口的测试应注意对接口的测试应注意 l接口包含的行为应与对应类的行为相符;接口包含的行为应与对应类的行为相符; l接口往往与其他接口或类具有关系,应测试到所有接口往往与其他接口或类具有关系,应测试到所有 可能的作用方式。可能的作用方式。 华东交通大学软件学院华东交通大学软件学院 2021/3/1010 l 面向对象技术面向对象技术的特点给测试带来的新问题具体表

7、现为:的特点给测试带来的新问题具体表现为: (1)封装把数据及对数据的操作封装在一起封装把数据及对数据的操作封装在一起,限制了对象属性,限制了对象属性 对外的透明性和外界对它的操作权限,在某种程度上避免了对外的透明性和外界对它的操作权限,在某种程度上避免了 对数据的非法操作,有效防止了故障的扩散。但同时,封装对数据的非法操作,有效防止了故障的扩散。但同时,封装 机制也给测试数据的生成、测试路径的选取以及测试结构的机制也给测试数据的生成、测试路径的选取以及测试结构的 分析带来了困难。分析带来了困难。 (2)继承实现了共享父类中定义的数据和操作,继承实现了共享父类中定义的数据和操作,同时也可定义同

8、时也可定义 新的特征。子类是在新的环境中存在,所以父类的正确性不新的特征。子类是在新的环境中存在,所以父类的正确性不 能保证子类的正确性。继承使代码的重用率得到了提高,但能保证子类的正确性。继承使代码的重用率得到了提高,但 同时也使故障的传播几率增加。同时也使故障的传播几率增加。 (3)多态和动态绑定增加了系统运行中可能的执行路径,)多态和动态绑定增加了系统运行中可能的执行路径,而且而且 给面向对象软件带来了严重的不确定性,给测试覆盖率的活给面向对象软件带来了严重的不确定性,给测试覆盖率的活 动带来新的困难。动带来新的困难。 面向对象的软件测试与传统软件测试面向对象的软件测试与传统软件测试 华

9、东交通大学软件学院华东交通大学软件学院 2021/3/1011 l 1 数据成员是否满足数据封装的要求数据成员是否满足数据封装的要求 数据封装是数据封装是数据和数据有关的操作数据和数据有关的操作的集合。的集合。 检查数据成员是否满足数据封装的要求,基本原则是数据成员是检查数据成员是否满足数据封装的要求,基本原则是数据成员是 否被外界(数据成员所属的类或子类以外的调用)直接调用。否被外界(数据成员所属的类或子类以外的调用)直接调用。 当改变数据成员的结构时,是否影响了类的对外接口,是否会导当改变数据成员的结构时,是否影响了类的对外接口,是否会导 致相应外界必须改动。致相应外界必须改动。 值得注意

10、值得注意,有时强制的类型转换会破坏数据的封装特性。,有时强制的类型转换会破坏数据的封装特性。 华东交通大学软件学院华东交通大学软件学院 2021/3/1012 8.2 类测试类测试 l 例如:例如: class Hiden private: int a=1; char *p= hiden; class Visible public: int b=2; char *s= visible; . . Hiden pp; Visible *qq=(Visible *) 在上面的程序段中,在上面的程序段中,pp的数据成员可以通过的数据成员可以通过qq被随意访问。被随意访问。 华东交通大学软件学院华东交通

11、大学软件学院 2021/3/1013 l 1. 继承的成员函数是否都不需要测试?继承的成员函数是否都不需要测试? 对父类中已经测试过的成员函数,两种情况需要在子类中重对父类中已经测试过的成员函数,两种情况需要在子类中重 新测试:新测试:a)继承的成员函数在子类中做了改动;)继承的成员函数在子类中做了改动;b)成员函)成员函 数调用了改动过的成员函数的部分。数调用了改动过的成员函数的部分。 Derived:Redefined() 显然需要重新测试。对于显然需要重新测试。对于 Derived:Inherited(),如果它有调用,如果它有调用 Redefined()的语句的语句(x=x/Redef

12、ined(), 就需要重新测试,反之,无此必要。就需要重新测试,反之,无此必要。 华东交通大学软件学院华东交通大学软件学院 2021/3/1014 l 2. 对父类的测试是否能照搬到子类?对父类的测试是否能照搬到子类? 延用上面的假设,延用上面的假设,Base:Redefined()和和Derived:Redefined()已经已经 是不同的成员函数,它们有不同的服务说明和执行。是不同的成员函数,它们有不同的服务说明和执行。 应该对应该对 Derived:Redefined()重新测试分析,设计测试用例。但由重新测试分析,设计测试用例。但由 于面向对象的继承使得两个函数有相似,故只需在于面向对

13、象的继承使得两个函数有相似,故只需在 Base:Redefined()的测试要求和测试用例上添加对的测试要求和测试用例上添加对 Derived:Redfined()新的测试要求和增补相应的测试用例。新的测试要求和增补相应的测试用例。 华东交通大学软件学院华东交通大学软件学院 2021/3/1015 l 例如:例如: Base:Redefined()含有如下语句含有如下语句 if (value0) message (less); else if (value=0) message (equal); else message (more); Derived:Redfined()中定义为中定义为 i

14、f (value0) message (less); else if (value=0) message (It is equal); else message (more); if (value=88)message(luck); 在原有的测试上,对在原有的测试上,对Derived:Redfined()的测试只需做如下改动:的测试只需做如下改动: 将将value=0的测试结果期望改动;增加的测试结果期望改动;增加value=88的测试。的测试。 华东交通大学软件学院华东交通大学软件学院 2021/3/1016 5.2 5.2 面向对象的软件测试模型面向对象的软件测试模型 l面向对象的软件开发

15、面向对象的软件开发 面向对象的分析(面向对象的分析(OOA) 面向对象的设计(面向对象的设计(OOD) 面向对象的编程(面向对象的编程(OOP) 华东交通大学软件学院华东交通大学软件学院 2021/3/1017 5.2 5.2 面向对象的软件测试模型面向对象的软件测试模型 l面向对象的软件测试面向对象的软件测试 面向对象分析的测试面向对象分析的测试 面向对象设计的测试面向对象设计的测试 面向对象编程的测试面向对象编程的测试 l面向对象的单元测试面向对象的单元测试 l面向对象的集成测试面向对象的集成测试 l面向对象的系统测试面向对象的系统测试 对分析和设计得到的文档对分析和设计得到的文档 进行测

16、试进行测试 对编程风格和代码进行测对编程风格和代码进行测 试试 华东交通大学软件学院华东交通大学软件学院 2021/3/1018 面向对象软件测试模型面向对象软件测试模型 OO System Test OO Integrate Test OOAOODOOP OOA Test OOD Test OOP Test OO Unit Test 面向对象面向对象 分析的测试分析的测试 面向对象面向对象 设计的测试设计的测试 面向对象面向对象 编程的测试编程的测试 面向对象面向对象 系统测试系统测试 面向对象面向对象 单元测试单元测试 面向对象面向对象 集成测试集成测试 华东交通大学软件学院华东交通大学软

17、件学院 2021/3/1019 面向对象测试的模型面向对象测试的模型 l 面向对象分析面向对象分析OOA的的 测试测试 OOA直接映射问题空间,全面的将问题空间中实现功能的现直接映射问题空间,全面的将问题空间中实现功能的现 实抽象化。实抽象化。 将问题空间中的实例抽象为对象,用对象的结构反映问题空将问题空间中的实例抽象为对象,用对象的结构反映问题空 间的复杂实例和复杂关系,用属性和服务表示实例的特性和间的复杂实例和复杂关系,用属性和服务表示实例的特性和 行为。行为。 OOA对问题空间分析抽象的不完整,最终会影响软件的功能对问题空间分析抽象的不完整,最终会影响软件的功能 实现,导致软件开发后期产

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

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

20、向对象测试的模型 华东交通大学软件学院华东交通大学软件学院 2021/3/1021 面向对象测试的模型面向对象测试的模型 l 面向对象程序是把功能的实现分布在类中。面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通能正确实现功能的类,通 过消息传递来协同实现设计要求的功能。这种程序架构能将出现的错过消息传递来协同实现设计要求的功能。这种程序架构能将出现的错 误精确的确定在某一具体的类。误精确的确定在某一具体的类。 l 对对OOP的测试重点集中在类功能的实现和相应的面向对象程序架构,的测试重点集中在类功能的实现和相应的面向对象程序架构, 主要体现为以下两个方面:主要体现为以下两个方面:

21、 (1)数据成员是否满足数据封装的要求)数据成员是否满足数据封装的要求基本原则是数据成员是否被基本原则是数据成员是否被 外界(数据成员所属的类或子类以外的调用)直接调用。外界(数据成员所属的类或子类以外的调用)直接调用。 (2)类是否实现了要求的功能)类是否实现了要求的功能测试类的功能,不能仅满足于代码能测试类的功能,不能仅满足于代码能 无错运行或被测试的类能提供的功能正确,应以所做的无错运行或被测试的类能提供的功能正确,应以所做的OOD结果为依结果为依 据,检测类提供的功能是否满足了设计的要求,是否有缺陷。据,检测类提供的功能是否满足了设计的要求,是否有缺陷。 华东交通大学软件学院华东交通大

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

23、如何测试继承的类如何测试 华东交通大学软件学院华东交通大学软件学院 2021/3/1024 5.3 5.3 面向对象的单元测试面向对象的单元测试 l与传统单元测试的区别与传统单元测试的区别 从单元的划分看从单元的划分看 从测试方法看从测试方法看 从测试对象看从测试对象看 华东交通大学软件学院华东交通大学软件学院 2021/3/1025 5.3 5.3 面向对象的单元测试面向对象的单元测试 l从测试方法看从测试方法看 传统的单元测试:传统的单元测试:静态测试静态测试+动态测试动态测试 面向对象的单元测试:更强调面向对象的单元测试:更强调自动化自动化, 不强调代码检查不强调代码检查 l如何设计测试

24、用例如何设计测试用例 l如何构造测试驱动程序,并避免巨大的工如何构造测试驱动程序,并避免巨大的工 作量作量 l如何最大可能实现自动化的单元测试如何最大可能实现自动化的单元测试 华东交通大学软件学院华东交通大学软件学院 2021/3/1026 5.3 5.3 面向对象的单元测试面向对象的单元测试 l与传统单元测试的区别与传统单元测试的区别 从单元的划分看从单元的划分看 从测试方法看从测试方法看 从测试对象看从测试对象看 华东交通大学软件学院华东交通大学软件学院 2021/3/1027 5.3 5.3 面向对象的单元测试面向对象的单元测试 l从测试对象看从测试对象看 传统的单元测试主要关注传统的单

25、元测试主要关注 l函数实现的功能函数实现的功能 l如何通过接口传递数据或消息如何通过接口传递数据或消息 l函数内部的逻辑和效率函数内部的逻辑和效率 面向对象的单元测试主要关注面向对象的单元测试主要关注 l类的方法类的方法 l类的状态类的状态 华东交通大学软件学院华东交通大学软件学院 2021/3/1028 5.3 5.3 面向对象的单元测试面向对象的单元测试 l从测试对象看从测试对象看 面向对象的单元测试应解决面向对象的单元测试应解决 l如何测试私有方法或受到保护的方法如何测试私有方法或受到保护的方法 l是否需要测试类中的所有方法是否需要测试类中的所有方法 华东交通大学软件学院华东交通大学软件

26、学院 2021/3/1029 5.3 5.3 面向对象的单元测试面向对象的单元测试 l实施的基本步骤实施的基本步骤 划分类的优先级划分类的优先级根据优先级的大小确定需根据优先级的大小确定需 要执行单元测试的类。要执行单元测试的类。 静态测试静态测试去除低级错误,评估类的质量去除低级错误,评估类的质量 对需要执行单元测试的类设计测试用例对需要执行单元测试的类设计测试用例 开发测试驱动开发测试驱动 自动化的脚本组织测试用例自动化的脚本组织测试用例 执行测试,对测试结果进行总结执行测试,对测试结果进行总结 华东交通大学软件学院华东交通大学软件学院 2021/3/1030 5.3 5.3 面向对象的单

27、元测试面向对象的单元测试 l测试用例的设计测试用例的设计 案例说明案例说明 根据代码设计测试用例根据代码设计测试用例 根据前置条件和后置条件设计测试用例根据前置条件和后置条件设计测试用例 根据状态转换设计测试用例根据状态转换设计测试用例 根据方法特性设计测试用例根据方法特性设计测试用例 华东交通大学软件学院华东交通大学软件学院 2021/3/1031 5.3 5.3 面向对象的单元测试面向对象的单元测试 l案例说明案例说明 MyPoint MyShape MyLine MyTriangle Scalene Isosceles 华东交通大学软件学院华东交通大学软件学院 2021/3/1032 5

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

29、中加入公有方法 l利用内类机制利用内类机制 华东交通大学软件学院华东交通大学软件学院 2021/3/1034 5.3 5.3 面向对象的单元测试面向对象的单元测试 l测试用例的设计测试用例的设计 案例说明案例说明 根据代码设计测试用例根据代码设计测试用例 根据前置条件和后置条件设计测试用例根据前置条件和后置条件设计测试用例 根据状态转换设计测试用例根据状态转换设计测试用例 根据方法特性设计测试用例根据方法特性设计测试用例 华东交通大学软件学院华东交通大学软件学院 2021/3/1035 5.3 5.3 面向对象的单元测试面向对象的单元测试 l根据前置和后置条件设计测试用例根据前置和后置条件设计

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

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

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

33、东交通大学软件学院 2021/3/1040 5.3 5.3 面向对象的单元测试面向对象的单元测试 l 综合策略综合策略 根据方法特性划分:根据方法特性划分:构造函数、功能函数和接口函数。构造函数、功能函数和接口函数。 针对构造函数,针对构造函数,根据前置和后置条件设计用例。根据前置和后置条件设计用例。 针对功能函数针对功能函数 l 公有方法:基于前置条件和后置条件设计测试用例。公有方法:基于前置条件和后置条件设计测试用例。 l 受保护的方法:严格区分有访问权限和无访问权限的前置条件和后置受保护的方法:严格区分有访问权限和无访问权限的前置条件和后置 条件,设计测试用例。条件,设计测试用例。 l

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

35、/3/1042 5.3 5.3 面向对象的单元测试面向对象的单元测试 l测试代码的组织测试代码的组织 与产品代码放在一起与产品代码放在一起 在产品代码目录下在产品代码目录下 与产品代码并行与产品代码并行 与产品代码的副本放在一起与产品代码的副本放在一起 华东交通大学软件学院华东交通大学软件学院 2021/3/1043 5.3 5.3 面向对象的单元测试面向对象的单元测试 l测试驱动框架测试驱动框架 设计目标设计目标 l自动自动 l简单简单 l灵活灵活 设计思想设计思想 lTestCase lTestResult 华东交通大学软件学院华东交通大学软件学院 2021/3/1044 5.3 5.3

36、面向对象的单元测试面向对象的单元测试 l测试驱动框架:测试驱动框架:TestCase l4类操作类操作 构建和执行测试用例构建和执行测试用例 创建和操作被测类的创建和操作被测类的Object实例实例 分析测试用例结果分析测试用例结果 将测试过程记录到日志文件将测试过程记录到日志文件 华东交通大学软件学院华东交通大学软件学院 2021/3/1045 5.3 5.3 面向对象的单元测试面向对象的单元测试 l案例实践一:案例实践一:类类MyPoint的第一次测试尝的第一次测试尝 试试 华东交通大学软件学院华东交通大学软件学院 2021/3/1046 5.4 JUnit5.4 JUnit测试测试 l面

37、临的问题面临的问题 提高软件的质量需要撰写测试程序;提高软件的质量需要撰写测试程序; 经良好设计和规划的测试类的代码不需经良好设计和规划的测试类的代码不需 要那么繁琐和冗长;要那么繁琐和冗长; 通过借助于测试类的编写规范可以得到通过借助于测试类的编写规范可以得到 易于操作的测试,且不随时间变化。易于操作的测试,且不随时间变化。 华东交通大学软件学院华东交通大学软件学院 2021/3/1047 5.4 JUnit5.4 JUnit测试测试 l JUnit的概念的概念 用于编写和运行可重复的测试,专门针对用于编写和运行可重复的测试,专门针对Java代码的代码的 单元测试,主要用于白盒测试盒回归测试

38、。单元测试,主要用于白盒测试盒回归测试。 l 3个设计目标个设计目标 自动化测试框架自动化测试框架 确保代码持久有效确保代码持久有效 支持测试代码的重用支持测试代码的重用 华东交通大学软件学院华东交通大学软件学院 2021/3/1048 5.4 JUnit5.4 JUnit测试测试 l JUnit特性及优点特性及优点 l 特性特性 利用利用断言断言assert*来测试实际执行结果是否符合预期结来测试实际执行结果是否符合预期结 果;果; 利用利用测试用例测试用例TestCase和和测试包测试包TestSuite方便地组织方便地组织 和运行测试;和运行测试; 通过通过文本运行器文本运行器textu

39、i、图形运行器、图形运行器awtui和和swingui 提供灵活的交互模式。提供灵活的交互模式。 华东交通大学软件学院华东交通大学软件学院 2021/3/1049 5.4 JUnit5.4 JUnit测试测试 lJUnit特性及优点特性及优点 l 在支持测试方面,在支持测试方面,JUnit的优点的优点 将测试代码与产品代码分开,提高了软件的将测试代码与产品代码分开,提高了软件的可维护性可维护性; 针对某个类的测试代码经少量改动之后即可应用于另一针对某个类的测试代码经少量改动之后即可应用于另一 个类的测试,简化了测试代码的撰写,提高了测试代码个类的测试,简化了测试代码的撰写,提高了测试代码 的的

40、复用程度复用程度; 公开源代码,便于进行公开源代码,便于进行二次开发二次开发,且,且便于扩展便于扩展。 华东交通大学软件学院华东交通大学软件学院 2021/3/1050 5.4 JUnit5.4 JUnit测试测试 lJUnit特性及优点特性及优点 l就对软件开发与过程的支持而言,就对软件开发与过程的支持而言,JUnit有有 助于助于 加快开发速度;加快开发速度; 提高软件代码质量;提高软件代码质量; 提升系统的可信赖度。提升系统的可信赖度。 华东交通大学软件学院华东交通大学软件学院 2021/3/1051 5.4 JUnit5.4 JUnit测试测试 lJUnit下载与安装下载与安装 华东交

41、通大学软件学院华东交通大学软件学院 2021/3/1052 5.4 JUnit5.4 JUnit测试测试 lJUnit3.8.x测试思想测试思想 华东交通大学软件学院华东交通大学软件学院 2021/3/1053 5.4 JUnit5.4 JUnit测试测试 l Test类类接口类,建立接口类,建立TestCase与与TestSuite类之间的类之间的 关联关联 l TestCase类类由由TestCase类派生测试驱动类,包含若类派生测试驱动类,包含若 干测试用例干测试用例 l TestSuite类类将多个测试组合成一个测试包,在一个将多个测试组合成一个测试包,在一个 测试过程完成对被测类的所

42、有测试测试过程完成对被测类的所有测试 l TestResult类类搜集所有测试用例的执行结果。搜集所有测试用例的执行结果。 l Assert类类将实际值与预期值进行比较。将实际值与预期值进行比较。 华东交通大学软件学院华东交通大学软件学院 2021/3/1054 5.4 JUnit5.4 JUnit测试测试 l 基于类的单元测试的基本步骤基于类的单元测试的基本步骤 创建测试驱动类;创建测试驱动类; 创建被测类的对象;创建被测类的对象; 设计测试用例和对应的测试程序,从方法、状态等方面展开测设计测试用例和对应的测试程序,从方法、状态等方面展开测 试;试; 测试完毕释放已经分配的永久性资源;测试完

43、毕释放已经分配的永久性资源; 将多个测试用例组织成测试包,必要时需设定测试用例执行的将多个测试用例组织成测试包,必要时需设定测试用例执行的 顺序;顺序; 执行测试;执行测试; 检验并统计测试结果。检验并统计测试结果。 华东交通大学软件学院华东交通大学软件学院 2021/3/1055 5.4 JUnit5.4 JUnit测试测试 l案例实践二:类案例实践二:类MyPoint的第二次测的第二次测 试尝试试尝试 华东交通大学软件学院华东交通大学软件学院 2021/3/1056 5.4 JUnit5.4 JUnit测试测试 l JUnit使用经验使用经验 l 基本步骤基本步骤 继承继承junit.fr

44、amework.TestCase类;类; 填写填写setUp()和和tearDown()方法;方法; 撰写撰写test*测试方法,并用测试方法,并用assert*验证用例的执行情验证用例的执行情 况;况; 重写重写suite()方法,利用方法,利用addTest加入自己的加入自己的test*测试测试 方法;方法; 以图形或文本方式执行测试。以图形或文本方式执行测试。 华东交通大学软件学院华东交通大学软件学院 2021/3/1057 5.4 JUnit5.4 JUnit测试测试 l特殊类的测试特殊类的测试 接口类接口类对实现的类展开测试而进而对实现的类展开测试而进而 测试到接口类。测试到接口类。

45、 抽象类抽象类利用内类实现(利用内类实现(JUnit3.x)。)。 继承类继承类分别设计测试驱动类,用一分别设计测试驱动类,用一 个组合测试类来将父类和子类的测试加个组合测试类来将父类和子类的测试加 入一个包中。入一个包中。 华东交通大学软件学院华东交通大学软件学院 2021/3/1058 5.4 JUnit5.4 JUnit测试测试 l案例实践三:案例实践三:MyPoint系列的测试系列的测试 华东交通大学软件学院华东交通大学软件学院 2021/3/1059 5.4 JUnit5.4 JUnit测试测试 lJUnit4功能增强功能增强 Test Before, After BeforeCla

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

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

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

49、成测试和系统测试面向对象的集成测试和系统测试 l 面向对象的集成测试,能够检测出相对独立的、单元测试无法检测出面向对象的集成测试,能够检测出相对独立的、单元测试无法检测出 的、类相互作用时才会产生的错误。的、类相互作用时才会产生的错误。 l 基于单元测试对成员函数行为正确性的保证,集成测试只关注于基于单元测试对成员函数行为正确性的保证,集成测试只关注于系统系统 的结构和内部的相互作用的结构和内部的相互作用。 l 面向对象的集成测试可以分成两步进行:面向对象的集成测试可以分成两步进行:先进行静态测试,再进行动先进行静态测试,再进行动 态测试态测试。 华东交通大学软件学院华东交通大学软件学院 2021/3/1063 5.5 5.5 面向对象的集成测试和系统测试面向对象的集成测试和系统测试 l 静态测试静态测试 主要针

温馨提示

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

评论

0/150

提交评论