软件工程
面向对象测试
面向对象测试
1.面向对象程序的特点对软件测试的影响
•面向对象程序设计 面向对象程序的特点 ,
语言的出现不仅改变 带来了新的问题。
了程序设计的风格 , p继承
而且还影响了软件开 p 封装
发的全过程。 p 多态
p测试层次划分
面向对象测试
(1 )类和对象
•类和对象将方法和属性封装在一块。类和对象的方法由
接口说明和内部实现两个部分组成 ,接口说明只一个 ,
而内部实现往往不止一个。
•显然 ,在面向对象系统中 .系统的最小可测试单元不再
是函数或过程 .而是类和对象。类和对象封装了很多方
法和属性 ,在很大程度上增加了系统聚合度 ,降低耦合
度 ,提高了系统整体的可维护性 ;但却牺牲了单元测试
容易性 ,增加了复杂性。
面向对象测试
(2 )继承
•继承是面向对象软件系统的主要特征 ,在一定程度上实
现了软件代码的重用 ,使得多个类能够共享相同的属性
和方法。
•面向对象程序设计语言提供这种机制给了程序员一定的
灵活性。但给软件测试带来一定的影响 ,即父类中的方
法在子类环境下是否需要重新测试 ?
面向对象测试
•A
(2 )继承 •m
•X()
•Y()
•B vA中有两个方法 :X(),Y() ;X()和Y()都访问
了成员变量m
•m
vB是A的子类 ,B重载了Y()方法 ,并直接继
承了X()
•Y()
v则在测试B的过程中 ,不仅要测试Y() ,也
要测试X()
面向对象测试
(3 )封装
•封装是将类和对象的接口和实现分离 ,屏蔽类和对象的内部
实现细节。封装大多数的情况下是通过信息隐蔽实现的。
•通过封装和信息隐蔽 ,类和对象的使用者就无法随便读取
和修改类和对象的内部信息 ,在很大程度上防止错误的发生 ,
提高程序的可维护性。
•然而在另一方面却给测试带来了因难。因为封装和信息隐蔽 ,
无法直接考察对象调用的内部实现 ,从而无法确认操作的正
确性。
面向对象测试
(3 )封装
v对象list中有add、delete等方法。如果我们通过方法
add增加一个表项 ,那么我们如何知道该表项确实加入到
表中呢?如果表是有序的 ,那么我们又如何知道该表项所
插入的位置正确呢?
面向对象测试
(4 )多态