当前课程知识点:软件理论与工程 >  第5章 软件测试 >  5.3 测试面向对象的应用系统 >  5.3 测试面向对象的应用系统

返回《软件理论与工程》慕课在线视频课程列表

5.3 测试面向对象的应用系统在线视频

下一节:5.4 测试web应用系统

返回《软件理论与工程》慕课在线视频列表

5.3 测试面向对象的应用系统课程教案、知识点、字幕

大家好

这一章我们来分享一下

测试面向对象的应用系统

在这一章中 我们会一起看一下

如何测试面向对象分析

面向对象设计模型

面向对象的软件系统的测试策略

面向对象应用系统的测试方法

然后会更进一步的看一下

类级的可用测试方法

包括面向对象的随机测试

和类级的划分测试

再会看一下

面向对象的类间的可用的测试方法

包括多类测试

和从行为模型导出的测试

我们首先看一下

测试面向对象分析和面向对象设计模型

面向对象的测试

为了充分的测试面向对象的系统

必须要做三件事情

首先

对测试的定义我们要进行扩展

使测试包含面向对象分析模型

和设计模型的测试

也就是要发现在分析模型和设计模型中

存在的错误

然后

再进行运行的软件的测试

另外

单元测试和集成测试的策略

也需要进行彻底的改变

另外

测试用例设计必须考虑面向对象软件的

独特的特征和独特的性质

我们首先看一下测试面向对象的模型

我们测试面向对象的分析模型

和设计模型的评审

是非常有用的

因为对于面向对象的开发方法

在分析和设计还有代码级别

所表现出来的语义结构

也就是所包含的类

属性

操作

和消息

是相同的

也就是说

在分析模型中我们设计了有什么类

在设计模型中同样有这些类

在最终的代码级别上

同样有这些类

而且这些类

延续了相同的属性

相同的操作

和相同的消息

那么 如果我们对于分析模型和设计模型中

就发现的对于面向对象的这些类的错误

我们就可以提前把它找出来

而不用对可运行的

面向对象的类的代码

进行测试的时候

才去把它发现出来

因此

在类属性定义中的一个问题是

如果在分析阶段发现

就会规避副作用

否则 要直到设计

甚至是到代码阶段才能发现

这样的测试的代价就会比较大

在分析和设计阶段

基于模型与真实世界的问题域的一致性

我们对语义的正确性来进行评估

如果模型准确的反映了现实世界

那么我们对于模型

就认为它是语义上正确的

实际上 为了确定模型是否

反映了真实世界的需求

应该将其介绍给问题领域的专家

由问题领域的专家

检查类的定义

和层次中是否遗漏和不清楚的定义的地方

然后对于类的关系

比如说(实例连接)进行评估

确定这个关系

是否准确的反映了

现实世界中的对象之间的连接关系

那么通过这样几个方面

我们就可以分析面向对象模型的正确性

另外 我们还要检查类模型的一致性

我们通过检查CRC卡

也就是

Class-Resposibility

和Collaborator

对象

责任

关系模型

和对象关系模型

我们可以通过检查这个

来检查类模型的一致性

我们检查每一张CRC索引卡片中描述

以确定委托责任

是协作者的定义当中的一部分

也就是说

比如a类委托b类实现了一部分功能

那么 你要确定b类当中的定义

有这一部分被委托的功能的实现

那么b就是a的协作者

另外 反转连接

确保每个提供服务的协作者

都从合理的地方收到了请求

使用上面的步骤中的反转后的连接

确定是否真正需要其他类

或者是责任

在类之间的组织是否合适

确定是否可以将广泛的请求的多个责任组合为

一个责任

这样可以减少责任的复杂性

那么我们下面看一下面向对象的测试策略

面向对象的测试策略

跟传统的软件测试策略有些许的差别

首先 我们看一下单元测试

单元变更的概念

最小的可测试单元是封装的类

单个操作

不再被独立的测试了

在传统观点中的单元测试

可能是单个操作

而在类的面向对象的软件的测试当中

最小的单元测试

应该是类

那么单个操作作为类的一部分

被进行测试

那我们再看一下集成测试

基于线程的测试

将响应系统的一个输入

或者是事件的所需要的一组类

集成在一起

来做集成测试

另外 我们可以基于使用的集成测试

也就是

通过测试那些很少使用服务器

类的那些独立类

开始我们系统的构造

测试完了独立类之后

我们再去测试那些

使用独立类的下一层的类

也就是我们称为依赖类

也就是

先测试独立类

因为独立类

较少的使用其他的服务器类

然后再测试

去 调用我们这些独立类

依赖我们这些独立类的那些类

我们称为依赖类

好 第三个集成测试是簇测试

簇测试是面向对象软件集成测试中的一个步骤

通过设计

试图发现协作的错误的测试用例

对一簇协作类

通过检查CRC和对象关系的模型

来确定这一簇协作类

来进行这一簇协作类的测试

这个就是集成测试

那么下面我们看一下确认测试

类连接的细节消失了

面向对象的软件确认测试

关注用户可见的动作

和用户可以辨认的

来自系统的输出

也就是在确认测试当中

我们不去测试类连接之间的

细节

而是关注用户可见的动作

和用户可以辨认出来的来自系统的输出

来进行确认测试

拟定出测试用例

用例是需求模型的一部分

提供了最有可能发现用户交互需求方面的

错误的场景

那么 传统的黑盒测试方法

同样可以用于驱动确认测试

在面向对象的软件测试当中

可以用于驱动

面向对象的软件的确认测试

我们再看一下面向对象的测试方法

面向对象的测试方法

首先

每个测试用例都应该被唯一地标识出来

并明确地与

被测试的类之间相关联

然后叙述测试的目的

另外

再下一步应该为每一个测试开发测试步骤

包括

将要测试的类的指定的状态列表

作为测试结果要进行检查的

消息和操作的列表

对内进行测试时

可能发生的异常的异常列表

外部条件的列表

也就是外部软件的

变更

为了正确的进行测试

这种外部软件的环境是存在的

软件环境的变更也是存在的

我们要考虑软件环境的变更

另外

对于有助于理解和实现软件测试的补充信息

我们也

应该把它纳入到面向对象的测试的

范畴当中

我们的测试方法有

基于故障的测试方法

和基于场景的测试方法

测试人员查找似然故障

也就是

系统实现有可能产生错误的地方

为了确定这些故障是否存在

需要设计测试用例

以检查设计或者是代码

基于场景的测试关心用户做什么

而不是产品做什么

所以基于场景的测试用例的重点

我们要注意

它是关心

以用户为出发的用户做什么

这意味着我们通过用例要捕获

用户必须完成的任务

然后在测试时

使它们及其变体都被测试到

再有我们要关心类测试

和类的层次

我们类有一个特点是继承

继承并不意味着所有的派生类

一起测试的需要

事实上

继承使得测试过程变得更加的复杂了

因为每个新的

继承出来的派生类 它的使用环境

会发生变化

在新的环境下 我们都需要进行新的测试

从超类派生出来的每个子类的实例

用于相同的问题域

测试子类的时候

使用超类中

生成的测试用例集

是可能的

那么刚才我们看了类的测试

下面我们看一下类级测试

可用的测试方法

在类级

也就是在类的这个级别内

和类的内部进行测试的时候

我们可以用到的方法包括

随机测试

随机测试就是标识出可应用于类的操作

定义其使用的限制

标识最小的测试序列

我们定义类

或者是对象的最小生命周期

的操作序列

检查其他

或者更为复杂的类的实例的生命历史

另外类级测试我们还可以使用划分测试方法

与传统的等价类划分是基本相似的

划分测试

减小测试特定类所需要的测试用例的数量

而进行选择

每一个等价类里面

选择少量数量的测试用例

那么等价类划分的面向对象的划分测试

我们可以基于什么来划分呢

我们可以基于状态来划分

基于属性来划分

和基于类别来划分

基于状态的划分是

根据它们改变类的状态的能力

对类的操作进行划分

基于属性的划分是

根据它们所使用的属性

对类的操作来进行划分

基于类别的划分是

根据每个操作所完成的

一般功能

对类的操作来进行划分

在看完了类级别的测试之后

我们再看下类和类之间进行测试

可以使用的方法

类和类之间进行测试的方法

叫做多类测试

那么我们看一下类间测试

有哪些要考虑的问题

对每个客户类使用类操作列表来生成

一系列随机的测试序列

这些操作将向其他的服务类发送消息

对生成的每个消息

确定协作类

和服务对象中的相应操作

对服务对象中的每个操作

我们根据消息的传递关系

比如已被来自客户对象的消息调用

然后来确定它传送的消息

对于每个消息

我们还要确定

下一层被调用的操作

将其引入到测试的序列当中

所以类间测试我们是

针对每个客户类

使用类操作列表

来生成一系列随机测试的序列

这些序列会产生一系列的消息

根据消息的发送的先后关系

我们来确定协作类 服务类

分别对这些类进行测试

另外一个类间测试方法叫做行为测试

行为测试是

我们设计的 测试用例

应该获取到

这个类的所有的状态的覆盖

即操作的序列

应该使得一个类中的状态的

变化全部都经历一遍

状态图可以表示类的动态的行为模型

可以辅助生成检查类

以及与该类的协作类的动态行为的测试序列

比如右面这张图

这张图上

我们可以通过操作序列

来使得账号这个类

在所有的可能的状态之间

全部的进行转换一遍

我们设计一个测试用例的操作序列

完成账号这个类在

所有可能的状态之间

全部的经过一遍

这种就叫做行为测试

那我们测试面向对象的应用系统

这一个部分里面

我们考虑了需要测试

面向对象的分析模型

面向对象的设计模型

还考虑了面向对象的测试策略

也就是针对面向对象

与传统的软件系统的不同

那么

在面向对象下的单元测试

集成测试和确认测试

分别又变成了什么样子

另外我们要考虑了面向对象的测试方法

包括类级的可用的测试方法

面向对象的随机测试

和类级的等价类划分测试方法

以及类和类之间的

类间的可用的测试方法

包括多类测试方法

和从行为模型

导出测试用例的测试方法

关于面向对象的应用系统的测试

我们今天就分享到这里

谢谢大家

软件理论与工程课程列表:

课程概述

-课程概述

第1章 软件与软件工程

-1.1 软件的本质

--1.1 软件的本质

-1.2 软件工程

--1.2 软件工程

-1.3 软件过程结构

--1.3 软件过程结构

-1.4 过程模型

--1.4 过程模型

-1.5 敏捷开发方法

--1.5 敏捷开发方法

-第1章 习题

--第1章 习题

第2章 需求分析

-2.1 需求工程过程

--2.1 需求工程过程

-2.2 需求获取

--2.2 需求获取

-2.3 需求分析

--2.3 需求分析

-2.4 过程建模

--2.4 过程建模

-2.5 面向对象建模

--2.5 面向对象建模

-第2章 习题

--第2章 习题

第3章 软件设计

-3.1 设计概述

--3.1 设计概述

-3.2 设计的概念

--3.2 设计的概念

-3.3 设计模型元素

--3.3 设计模型元素

-3.4 体系结构概述

--3.4 体系结构概述

-3.5 体系结构风格

--3.5 体系结构风格

-3.6 构件级设计

--3.6 构件级设计

-3.7 UI设计

--3.7 UI设计

-3.8 基于模式的设计

--3.8 基于模式的设计

-第3章 习题

--第3章 习题

第4章 UML方法

-4.1 UML概述

--4.1 UML概述

-4.2 UML 及UML中的事物

--4.2 UML 及UML中的事物

-4.3 UML关系和图

--4.3 UML关系和图

-4.4 UML 图细节(上)

--4.4 UML 图细节(上)

-4.4 UML 图细节(下)

--4.4 UML 图细节(下)

-第4章 习题

--第4章 习题

第5章 软件测试

-5.1 软件测试策略

--5.1 软件测试策略(上)

--5.1 软件测试策略(下)

-5.2 测试传统的应用系统

--5.2 测试传统的应用系统

-5.3 测试面向对象的应用系统

--5.3 测试面向对象的应用系统

-5.4 测试web应用系统

--5.4 测试web应用系统

-5.5 测试移动应用系统

--5.5 测试移动应用系统

-第5章 习题

--第5章 习题

第6章 项目管理

-6.1 软件项目估算

--6.1 软件项目估算

-6.2 软件过程管理

--6.2 软件过程管理

-6.3 软件配置管理

--6.3 软件配置管理

-6.4 项目版本控制及调试

--6.4 项目版本控制及调试

-第6章 习题

--第6章 习题

5.3 测试面向对象的应用系统笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。