1、一、面向对象测试概述一、面向对象测试概述面向对象测试面向对象测试二、面向对象模型二、面向对象模型二、面向对象模型二、面向对象模型二、面向对象模型二、面向对象模型 三、面向对象分析和设计的测试三、面向对象分析和设计的测试三、面向对象分析和设计的测试三、面向对象分析和设计的测试三、面向对象分析和设计的测试三、面向对象分析和设计的测试对认定的对象的测试对认定的对象的测试 OOA(面向对象分析)中认定的对象是对问题空间中的(面向对象分析)中认定的对象是对问题空间中的结构、其他系统、设备、被记忆的事件、系统涉及的人结构、其他系统、设备、被记忆的事件、系统涉及的人员等实际实例的抽象。对它的测试可以从如下方
2、面考虑:员等实际实例的抽象。对它的测试可以从如下方面考虑:p 认定的对象是否全面认定的对象是否全面,其名称应该尽量准确、适用,是,其名称应该尽量准确、适用,是否问题空间中所涉及到的实例都反映在认定的抽象对象否问题空间中所涉及到的实例都反映在认定的抽象对象中。中。p 认定的对象是否具有多个属性认定的对象是否具有多个属性。只有一个属性的对象通。只有一个属性的对象通常应看作其他对象的属性而不是抽象为独立的对象常应看作其他对象的属性而不是抽象为独立的对象p 对认定为同一对象的实例是否有共同的、区别于其他实对认定为同一对象的实例是否有共同的、区别于其他实例的共同属性,是否提供或需要相同的服务例的共同属性
3、,是否提供或需要相同的服务p 如果系统没有必要始终保持对象代表的如果系统没有必要始终保持对象代表的实例信息实例信息,提供,提供或者得到关于它的服务,认定的对象也无必要。或者得到关于它的服务,认定的对象也无必要。三、面向对象分析和设计的测试三、面向对象分析和设计的测试对认定的结构的测试对认定的结构的测试 认定的结构指的是多种对象的组织方式,用来反映问题空认定的结构指的是多种对象的组织方式,用来反映问题空间中的复杂实例和复杂关系。间中的复杂实例和复杂关系。认定的分类结构测试要认定的分类结构测试要点:点:p 处于高层的对象,是否在问题空间中含有不同于下一处于高层的对象,是否在问题空间中含有不同于下一
4、层对象的特殊可能性,即是否能派生出下一层对象。层对象的特殊可能性,即是否能派生出下一层对象。p 处于同一低层的对象,是否能抽象出在现实中有意义处于同一低层的对象,是否能抽象出在现实中有意义的更一般的上层对象。的更一般的上层对象。p 对所有认定的对象,是否能在问题空间内向上层抽象对所有认定的对象,是否能在问题空间内向上层抽象出在现实中有意义的对象。出在现实中有意义的对象。p 高层的对象的特性是否完全体现下层的共性,低层的高层的对象的特性是否完全体现下层的共性,低层的对象是否有高层特性基础上的特殊性。对象是否有高层特性基础上的特殊性。三、面向对象分析和设计的测试三、面向对象分析和设计的测试对构造的
5、类层次结构的测试对构造的类层次结构的测试 为了能充分发挥面向对象继承共享特性,为了能充分发挥面向对象继承共享特性,OOD(面向对象设计)(面向对象设计)的类层次结构通常基于的类层次结构通常基于OOA中产生的分类结构的原则来组织,中产生的分类结构的原则来组织,着重体现父类和子类间的一般性和特殊性。在当前的问题空间,着重体现父类和子类间的一般性和特殊性。在当前的问题空间,对类层次结构的主要要求是能在解空间构造实现全部功能的结对类层次结构的主要要求是能在解空间构造实现全部功能的结构框架。为此测试要注意如下几个方面:构框架。为此测试要注意如下几个方面:p类层次结构是否涵盖了所有定义的类;类层次结构是否
6、涵盖了所有定义的类;p是否能体现是否能体现OOA中所定义的实例关联、消息关联;中所定义的实例关联、消息关联;p子类是否具有父类没有的新特性;子类是否具有父类没有的新特性;p子类间的共同特性是否完全在父类中得以体现。子类间的共同特性是否完全在父类中得以体现。五、面向对象编程的测试五、面向对象编程的测试五、面向对象编程的测试五、面向对象编程的测试六六、面向对象的单元测试、面向对象的单元测试六六、面向对象的单元测试、面向对象的单元测试举例举例举例举例举例举例七、面向对象的集成测试七、面向对象的集成测试面向对象集成测试的测试策略面向对象集成测试的测试策略类与子类的测试类与子类的测试假设类假设类D是类是
7、类C的子类,类的子类,类C已进行了充分的测试已进行了充分的测试分层与增量分层与增量 派生类派生类D是是C的子类,那么所有的用于的子类,那么所有的用于C的基于规范的测试的基于规范的测试用例也都适用于用例也都适用于D。术语术语“继承的测试用例继承的测试用例”来代表从父类测试用例中选取出来代表从父类测试用例中选取出来的、用于子类的测试用例。来的、用于子类的测试用例。可以通过增量变化分析来确定继承的测试用例中哪些在测可以通过增量变化分析来确定继承的测试用例中哪些在测试子类时必须执行、哪些可以不执行。试子类时必须执行、哪些可以不执行。合理的分析,有利于找合理的分析,有利于找出更有价值的测试用例。出更有价值的测试用例。分层与增量分层与增量-测试用例选择测试用例选择八、面向对象的系统测试八、八、面向对象的系统测试面向对象的系统测试八、八、面向对象的系统测试面向对象的系统测试九、面向对象的其他测试九、面向对象的其他测试60 结束语结束语