文档介绍:第八章 面向对象软件测试
一、面向对象测试概述
一. 传统的软件开发存在的问题
[一]软件重用性差
[二]软件可维护性差
[三]开发出的软件不易满足用户需求
一、面向对象测试概述
二、面向对象技术
基本概念
个对象应有哪些属性和服务
[四]对象间应有怎样的联系
三、面向对象分析和设计的测试
面向对象设计[OOD]采用“造型的观点”,以OOA为基础归纳出类,并建立类结构或进一步构造成类库, 归纳的类,可以是对象简单的延续,,OOD不是在OOA上的另一思维方式的大动干戈,而是OOA的进一步细化和更高层的抽象.
面向对象设计[OOD]是以OOA归纳出的类为基础,建立类结构甚至进一步构造成类库,实现分析结果对问题空间的抽象.
三、面向对象分析和设计的测试
对认定的对象的测试
OOA[面向对象分析]中认定的对象是对问题空间中的结构、其他系统、设备、被记忆的事件、:
认定的对象是否全面,其名称应该尽量准确、适用,是否问题空间中所涉及到的实例都反映在认定的抽象对象中.
对认定为同一对象的实例是否有共同的、区别于其他实例的共同属性,是否提供或需要相同的服务
如果系统没有必要始终保持对象代表的实例信息,提供或者得到关于它的服务,认定的对象也无必要.
三、面向对象分析和设计的测试
对认定的结构的测试
认定的结构指的是多种对象的组织方式,:
处于高层的对象,是否在问题空间中含有不同于下一层对象的特殊可能性,即是否能派生出下一层对象.
处于同一低层的对象,是否能抽象出在现实中有意义的更一般的上层对象.
对所有认定的对象,是否能在问题空间内向上层抽象出在现实中有意义的对象.
高层的对象的特性是否完全体现下层的共性,低层的对象是否有高层特性基础上的特殊性.
三、面向对象分析和设计的测试
对构造的类层次结构的测试
为了能充分发挥面向对象继承共享特性,OOD[面向对象设计]的类层次结构通常基于OOA中产生的分类结构的原则来组织,,:
类层次结构是否涵盖了所有定义的类;
是否能体现OOA中所定义的实例关联、消息关联;
子类是否具有父类没有的新特性;
子类间的共同特性是否完全在父类中得以体现.
五、面向对象编程的测试
典型的面向对象程序具有继承、封装和多态的新特性,,外界只能通过被提供的操作来访问或修改数据,这样降低了数据被任意修改和读写的可能性,,继承使得代码的重用率提高,同时也使错误传播的概率提高.
五、面向对象编程的测试
继承使得传统测试遇见了这样一个难题:对继承的代码究竟应该怎样测试?多态使得面向对象程序对外呈现出强大的处理能力,但同时却使得程序内“同一”函数的行为复杂化,测试时不得不考虑不同类型具体执行的代码和产生的行为.
,,,在面向对象编程[OOP]阶段,忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格,主要体现为以下两个方面[假设编程使用C++语言]: ☆ 数据成员是否满足数据封装的要求 ☆ 类是否实现了要求的功能
六 、面向对象的单元测试
传统的单元测试是针对程序的函数、,,因果图法,边值分析法,逻辑覆盖法,路径分析法,等等,单元测试一般建议由程序员完成.
六 、面向对象的单元测试
面向对象的单元测试的对象是软件设计的最小单位—类.
单元测试的依据是详细设计,单元测试应对类中所有重要的属性和方法设计测试用例,以发现类内部的错误.
单元测试多采用白盒测试技术,,,如等价类划分、边界值分