当前位置:文档之家› 第六章面向对象测试

第六章面向对象测试


面向对象的软件测试——区别 传统测试模式与面向对象的测试模式的最 主要的区别在于,面向对象的测试更关注对象 而不是完成输入/输出的单一功能,这样的话 测试可以在分析与设计阶段就先行介入,便得 测试更好的配合软件生产过程并为之服务。与 传统测试模式相比,面向对象测试的优点在于: 更早地定义出测试用例;早期介入可以降低成 本;尽早的编写系统测试用例以便于开发人员 与测试人员对系统需求的理解保持一致;面向 对象的测试模式更注重于软件的实质。
(3) 对类库支持的测试
对类库的支持虽然也属于类层次结构的组织问 题,但其强调的重点是再次软件开发的重用。由于 它并不直接影响当前软件的开发和功能实现,因此, 将其单独提出来测试,也可作为对高质量类层次结 构的评估。提出的准则,拟订测试点如下:


Байду номын сангаас

1、一组子类中关于某种含义相同或基本相同的操作,是 否有相同的接口(包括名字和参数表)。 2、类中方法(C++:类的成员函数)功能是否较单纯, 相应的代码行是否较少([5]中建议为不超过30行)。 3、类的层次结构是否是深度大,宽度小。
四、面向对象编程的测试(OOP Test)
典型的面向对象程序具有继承、封装和多态的新 特性,这使得传统的测试策略必须有所改变。封装 是对数据的隐藏,外界只能通过被提供的操作来访 问或修改数据,这样降低了数据被任意修改和读写 的可能性,降低了传统程序中对数据非法操作的测 试。继承是面向对象程序的重要特点,继承使得代 码的重用率提高,同时也使错误传播的概率提高。 多态使得面向对象程序对外呈现出强大的处理能力, 但同时却使得程序内"同一"函数的行为复杂化,测试 时不得不考虑不同类型具体执行的代码和产生的行 为。
面向对象的软件测试
一、面向对象的软件测试基本概念
面向对象程序的结构不再是传统的功能模 块结构,作为一个整体,原有集成测试所要求 的逐步将开发的模块搭建在一起进行测试的方 法已成为不可能。而且,面向对象软件抛弃了 传统的开发模式,对每个开发阶段都有不同以 往的要求和结果,已经不可能用功能细化的观 点来检测面向对象分析和设计的结果。因此, 传统的测试模型对面向对象软件已经不再适用。 针对面向对象软件的开发特点,应该有一种新 的测试模型。
面向对象的软件测试——测试模型
OOA Test和OOD Test 是对分析结果和设计结果的测 试,主要是对分析设计产生的文本进行,是软件开发前期 的关键性测试。OOP Test主要针对编程风格和程序代码实 现进行测试,其主要的测试内容在面向对象单元测试和面 向对象集成测试中体现。
二、面向对象软件测试内容及方法

面向对象的软件测试 广义的软件测试实际是由确认、验证、 测试三个方面组成。




确认:是评估将要开发的软件产品是否是正确无误、可行和 有价值的。 验证:是检测软件开发的每个阶段、每个步骤的结果是否正 确无误,是否与软件开发各阶段的要求或期望的结果相一致。 验证意味着确保软件是会正确无误的实现软件的需求,开发 过程是沿着正确的方向在进行。 测试:与狭隘的测试概念统一。通常是经过单元测试、集成 测试、系统测试三个环节。 事实上,确认、验证、测试是相辅相成的。确认无疑会 产生验证和测试的标准,而验证和测试通常又会帮助完成一 些确认,特别是在系统测试阶段。
面向对象的软件测试

面向对象的开发模型突破了传统的瀑布模型,将开 发分为面向对象分析(OOA),面向对象设计 (OOD),和面向对象编程(OOP)三个阶段。分析 阶段产生整个问题空间的抽象描述,在此基础上, 进一步归纳出适用于面向对象编程语言的类和类结 构,最后形成代码。由于面向对象的特点,采用这 种开发模型能有效的将分析设计的文本或图表代码 化,不断适应用户需求的变动。针对这种开发模型, 结合传统的测试步骤的划分,本文建议一种整个软 件开发过程中不断测试的测试模型,使开发阶段的 测试与编码完成后的单元测试、集成测试、系统测 试成为一个整体。
(2) 对构造的类层次结构的测试
为能充分发挥面向对象的继承共享特性,OOD的类层次 结构,通常基于OOA中产生的分类结构的原则来组织,着重 体现父类和子类间一般性和特殊性。在当前的问题空间,对 类层次结构的主要要求是能在解空间构造实现全部功能的结 构框架。为此,测试如下方面: 1、类层次结构是否含盖了所有定义的类。 2、是否能体现OOA中所定义的实例关联。 3、是否能实现OOA中所定义的消息关联。 4、子类是否具有父类没有的新特性。 5、子类间的共同特性是否完全在父类中得以体现。



二、面向对象软件测试内容及方法
4、对认定为同一对象的实例是否提供或需要相同的
服务,如果服务随着不同的实例而变化,认定的对象 就需要分解或利用继承性来分类表示。 5、如果系统没有必要始终保持对象代表的实例的信 息,提供或者得到关于它的服务,认定的对象也无必 要。 6、认定的对象的名称应该尽量准确,适用。
二、面向对象软件测试内容及方法
对认定的组装结构的测试从如下方面入手: 整体(对象)和部件(对象)的组装关系是否符合 现实的关系。 整体(对象)的部件(对象)是否在考虑的问题空 间中有实际应用。 整体(对象)中是否遗漏了反映在问题空间中有用 的部件(对象)。 部件(对象)是否能够在问题空间中组装新的有现 实意义的整体(对象)。
面向对象的软件测试
本章重点: 掌握面向对象的软件测试基本概念 掌握面向对象软件测试内容 熟悉面向对象软件测试方法
面向对象的软件测试
本章重点: 掌握面向对象的软件测试基本概念 掌握面向对象软件测试内容 熟悉面向对象软件测试方法
面向对象的软件测试
面向对象方法是一种把面向对象的思想应用 于软件开放过程中,指导开发活动的系统方法, 是建立在“对象”概念基础上的方法学。 面 向对象方法作为一种新型的独具优越性的新方 法正在逐渐代替被广泛使用的面向过程开发方 法,被看成是解决软件危机的新兴技术。面向 对象技术产生更好的系统结构,更规范的编程 风格,极大的优化了数据使用的安全性,提高 了程序代码的重用,一些人就此认为面向对象 技术开发出的程序无需进行测试。
面向对象的软件测试——区别 具体有如下不同: 1、测试的对象不同:传统软件测试的对象是 面向过程的软件,一般用结构化方法构建;面 向对象测试的对象是面向对象软件,采用面向 对象的概念和原则,用面向对象的方法构建。 2、测试的基本单位不同:前者是模块;面向 对象测试的基本单元是类和对象。 3、测试的方法和策略不同:传统软件测试采 用白盒测试,黑盒测试,路径覆盖等方法;面 向对象测试不仅吸纳了传统测试方法,也采用 各种类测试等方法,而且集成测试和系统测试 的方法和策略也很不相同。
三、面向对象设计的测试(OOD Test)
面向对象设计(OOD) 采用"造型的观点",以OOA为基础归纳出类,并 建立类结构或进一步构造成类库,实现分析结果对 问题空间的抽象。 OOD确定类和类结构不仅是满足当前需求分析的 要求,更重要的是通过重新组合或加以适当的补充, 能方便实现功能的重用和扩增,以不断适应用户的 要求。因此,对OOD的测试,本文建议针对功能的实 现和重用以及对OOA结果的拓展,从如下三方面考虑:
二、面向对象软件测试内容及方法
对定义的属性和实例关联的测试
在问题空间中每个对象的属性是否定义完整。
定义的实例关联是否符合现实。 在问题空间中实例关联是否定义完整,特别需要注意
1-多和多-多的实例关联。
二、面向对象软件测试内容及方法
对定义的服务和消息关联的测试





对定义的服务和消息关联的测试从如下方面进行: 对象和结构在问题空间的不同状态是否定义了相应 的服务。 对象或结构所需要的服务是否都定义了相应的消息 关联。 定义的消息关联所指引的服务提供是否正确。 沿着消息关联执行的线程是否合理,是否符合现实 过程。 定义的服务是否重复,是否定义了能够得到的服务。
OOA阶段的测试划分为以下五个方面: 对认定的对象的测试 对认定的结构的测试 对认定的主题的测试 对定义的属性和实例关联的测试 对定义的服务和消息关联的测试
二、面向对象软件测试内容及方法
OOA中认定的对象是对问题空间中的结构,其他 系统,设备,被记忆的事件,系统涉及的人员等实 际实例的抽象。对它的测试可以从如下方面考虑: 1、认定的对象是否全面,是否问题空间中所有涉及 到的实例都反映在认定的抽象对象中。 2、认定的对象是否具有多个属性。只有一个属性的 对象通常应看成其他对象的属性,而不是抽象为独 立的对象。 3、对认定为同一对象的实例是否有共同的,区别于 其他实例的共同属性。
1、数据成员是否满足数据封装的要求
数据封装是数据和数据有关的操作的集合。检


面向对象程序是把功能的实现分布在类中。能正确 实现功能的类,通过消息传递来协同实现设计要求 的功能。正是这种面向对象程序风格,将出现的错 误能精确的确定在某一具体的类。因此,在面向对 象编程(OOP)阶段,忽略类功能实现的细则,将测 试的目光集中在类功能的实现和相应的面向对象程 序风格,主要体现为以下两个方面(假设编程使用 C++语言)。 数据成员是否满足数据封装的要求 类是否实现了要求的功能
二、面向对象软件测试内容及方法
(2) 对认定的结构的测试
对认定的分类结构的测试可从如下方面着手: 对于结构中的一种对象,尤其是处于高层的对象,是 否在问题空间中含有不同于下一层对象的特殊可能性, 即是否能派生出下一层对象。 对于结构中的一种对象,尤其是处于同一低层的对象, 是否能抽象出在现实中有意义的更一般的上层对象。 对所有认定的对象,是否能在问题空间内向上层抽象 出在现实中有意义的对象 高层的对象的特性是否完全体现下层的共性 低层的对象是否有高层特性基础上的特殊性
二、面向对象软件测试内容及方法
相关主题