面向对象的方法(Object-oriented method, OO)是软件工程方法的一次飞跃。对象是一个具有一组状态的实体,并封装了附加于这些状态的操作。状态描述了对象的属性或特征,操作描述了对象改变其状态的方法以及该对象为其他对象所提供的服务。面向对象方法认为,人类生活在一个由对象组成的世界中。对象可以被归类、描述、组织、组合、创建和操纵。面向对象方法是一种模型化世界的抽象方法,结构上具有良好的高内聚低耦合特性。采用面向对象技术设计和开发的软件系统更易于维护,在对系统进行修改时,能够产生较少的副作用。同时,面向对象技术提出了类、继承、接口等概念,从而为对象的复用提供了良好的支持机制。因而采用面向对象技术对软件产品进行设计与开发,能够有效地提高软件组织的开发效率。
随着面向对象分析和面向对象设计技术的日渐成熟,面向对象的软件开发技术得到了软件界的普遍认可。但是,由于面向对象的程序设计语言提供了数据抽象、继承、多态和动态绑定等机制,传统的软件测试方法以及测试工具已不能为面向对象的软件提供良好的支持。
面向对象的程序中,对象是封装了描述其属性的数据及可以施加在这些数据上的操作的封装体。属性表示对象的状态,操作表示对象的行为,消息描述了对象执行操作的规格说明。对象之间通过发送消息启动相应的操作,通过修改对象的状态,实现系统状态间的相互转换。类是对具有相同属性和行为的一组相似对象的描述,它描述了该类对象所具有的共同特征。面向对象软件的测试与传统的软件测试有所不同。从面向对象单元测试开始,要考虑类间的继承测试。可以根据类间继承关系的层次特性对类进行增量测试,即通过复用和增量更新父类的测试信息去指导子类的测试。有人根据类是抽象数据类型的实现这一原理,引入了一种和面向对象语言语法相似的代数规范描述语言LOBAS,作为类的测试模型。通过分析软件的需求和功能规范来选择和产生测试数据,重点测试一个作用于被测类对象的消息序列能否使该对象处于正确的状态。也可以采用黑盒测试和白盒测试相结合的方法,用黑盒测试法选取测试用例,用白盒测试来检测程序执行一个测试用例产生的两个对象是否观测等价(即处于相同的抽象状态),并补充一些测试用例,对类进行测试。 [Page]
对传统软件,测试人员普遍认为可以分为四个级别的测试:单元测试、集成测试、确认测试和系统测试。面向对象的程序测试应当分为几个级别,目前尚未达成共识。一种意见认为,从面向对象程序的结构出发,面向对象的程序测试应当分为四个级别:
1). 行为级:测试类中定义的每个操作;
2). 类级:测试封装在一个类中的操作和数据之间的相互作用;