第六章面向对象测试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四、面向对象编程的测试(OOP Test)
典型的面向对象程序具有继承、封装和多态的新 特性,这使得传统的测试策略必须有所改变。封装 是对数据的隐藏,外界只能通过被提供的操作来访 问或修改数据,这样降低了数据被任意修改和读写 的可能性,降低了传统程序中对数据非法操作的测 试。继承是面向对象程序的重要特点,继承使得代 码的重用率提高,同时也使错误传播的概率提高。 多态使得面向对象程序对外呈现出强大的处理能力, 但同时却使得程序内"同一"函数的行为复杂化,测试 时不得不考虑不同类型具体执行的代码和产生的行 为。
二、面向对象设计的测试(OOD Test)
从如下三方面考虑:
对认定的类的测试 对构造的类层次结构的测试 对类库的支持的测试
(1) 对认定的类的测试
OOD认定的类可以是OOA中认定的对象,也可以是对象所 需要的服务的抽象,对象所具有的属性的抽象。认定的类原 则上应该尽量基础性,这样才便于维护和重用。参考中所提 出的一些准则,测试认定的类: 1、是否含盖了OOA中所有认定的对象。 2、是否能体现OOA中定义的属性。 3、是否能实现OOA中定义的服务。 4、是否对应着一个含义明确的数据抽象。 5、是否尽可能少的依赖其他类。 6、类中的方法(C++:类的成员函数)是否单用途。
二、面向对象软件测试内容及方法
对主题层的测试应该考虑以下方面: 贯彻George Miller 的"7+2"原则,如果主题个数超过7 个,就要求对有较密切属性和服务的主题进行归并。 主题所反映的一组对象和结构是否具有相同和相近 的属性和服务。 认定的主题是否是对象和结构更高层的抽象,是否 便于理解OOA结果的概貌(尤其是对非技术人员的 OOA 结果读者)。 主题间的消息联系(抽象)是否代表了主题所反映 的对象和结构之间的所有关联。
面向对象的软件测试

面向对象的开发模型突破了传统的瀑布模型,将开 发分为面向对象分析(OOA),面向对象设计 (OOD),和面向对象编程(OOP)三个阶段。分析 阶段产生整个问题空间的抽象描述,在此基础上, 进一步归纳出适用于面向对象编程语言的类和类结 构,最后形成代码。由于面向对象的特点,采用这 种开发模型能有效的将分析设计的文本或图表代码 化,不断适应用户需求的变动。针对这种开发模型, 结合传统的测试步骤的划分,本文建议一种整个软 件开发过程中不断测试的测试模型,使开发阶段的 测试与编码完成后的单元测试、集成测试、系统测 试成为一个整体。
面向对象的软件测试——区别 传统测试模式与面向对象的测试模式的最 主要的区别在于,面向对象的测试更关注对象 而不是完成输入/输出的单一功能,这样的话 测试可以在分析与设计阶段就先行介入,便得 测试更好的配合软件生产过程并为之服务。与 传统测试模式相比,面向对象测试的优点在于: 更早地定义出测试用例;早期介入可以降低成 本;尽早的编写系统测试用例以便于开发人员 与测试人员对系统需求的理解保持一致;面向 对象的测试模式更注重于软件的实质。
二、面向对象软件测试内容及方法
对认定的组装结构的测试从如下方面入手: 整体(对象)和部件(对象)的组装关系是否符合 现实的关系。 整体(对象)的部件(对象)是否在考虑的问题空 间中有实际应用。 整体(对象)中是否遗漏了反映在问题空间中有用 的部件(对象)。 部件(对象)是否能够在问题空间中组装新的有现 实意义的整体(对象)。
(3) 对类库支持的测试
对类库的支持虽然也属于类层次结构的组织问 题,但其强调的重点是再次软件开发的重用。由于 它并不直接影响当前软件的开发和功能实现,因此, 将其单独提出来测试,也可作为对高质量类层次结 构的评估。提出的准则,拟订测试点如下:



1、一组子类中关于某种含义相同或基本相同的操作,是 否有相同的接口(包括名字和参数表)。 2、类中方法(C++:类的成员函数)功能是否较单纯, 相应的代码行是否较少([5]中建议为不超过30行)。 3、类的层次结构是否是深度大,宽度小。
面向对象的软件测试——区别 具体有如下不同: 1、测试的对象不同:传统软件测试的对象是 面向过程的软件,一般用结构化方法构建;面 向对象测试的对象是面向对象软件,采用面向 对象的概念和原则,用面向对象的方法构建。 2、测试的基本单位不同:前者是模块;面向 对象测试的基本单元是类和对象。 3、测试的方法和策略不同:传统软件测试采 用白盒测试,黑盒测试,路径覆盖等方法;面 向对象测试不仅吸纳了传统测试方法,也采用 各种类测试等方法,而且集成测试和系统测试 的方法和策略也很不相同。
OOA阶段的测试划分为以下五个方面: 对认定的对象的测试 对认定的结构的测试 对认定的主题的测试 对定义的属性和实例关联的测试 对定义的服务和消息关联的测试
二、面向对象软件测试内容及方法
OOA中认定的对象是对问题空间中的结构,其他 系统,设备,被记忆的事件,系统涉及的人员等实 际实例的抽象。对它的测试可以从如下方面考虑: 1、认定的对象是否全面,是否问题空间中所有涉及 到的实例都反映在认定的抽象对象中。 2、认定的对象是否具有多个属性。只有一个属性的 对象通常应看成其他对象的属性,而不是抽象为独 立的对象。 3、对认定为同一对象的实例是否有共同的,区别于 其他实例的共同属性。
二、面向对象软件测试内容及方法
对定义的属性和实例关联的测试
在问题空间中每个对象的属性是否定义完整。
定义的实例关联是否符合现实。 在问题空间中实例关联是否定义完整,特别需要注意
1-多和多-多的实例关联。
二、面向对象软件测试内容及方法
对定义的服务和消息关联的测试





对定义的服务和消息关联的测试从如下方面进行: 对象和结构在问题空间的不同状态是否定义了相应 的服务。 对象或结构所需要的服务是否都定义了相应的消息 关联。 定义的消息关联所指引的服务提供是否正确。 沿着消息关联执行的线程是否合理,是否符合现实 过程。 定义的服务是否重复,是否定义了能够得到的服务。
二、面向对象软件测试内容及方法
对定义的属性和实例关联的测试
ห้องสมุดไป่ตู้

对属性和实例关联的测试从如下方面考虑: 定义的属性是否对相应的对象和分类结构的每个现 实实例都适用。 定义的属性在现实世界是否与这种实例关系密切。 定义的属性在问题空间是否与这种实例关系密切。 定义的属性是否能够不依赖于其他属性被独立理解。 定义的属性在分类结构中的位置是否恰当,低层对 象的共有属性是否在上层对象属性体现。



二、面向对象软件测试内容及方法
4、对认定为同一对象的实例是否提供或需要相同的
服务,如果服务随着不同的实例而变化,认定的对象 就需要分解或利用继承性来分类表示。 5、如果系统没有必要始终保持对象代表的实例的信 息,提供或者得到关于它的服务,认定的对象也无必 要。 6、认定的对象的名称应该尽量准确,适用。
1、面向对象分析的测试(OOA Test) 是"把E-R图和语义网络模型,即信息造型 中的概念,与面向对象程序设计语言中的重要 概念结合在一起而形成的分析方法",最后通 常是得到问题空间的图表的形式描述。 OOA直接映射问题空间,全面的将问题空 间中实现功能的现实抽象化。
二、面向对象软件测试内容及方法

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




确认:是评估将要开发的软件产品是否是正确无误、可行和 有价值的。 验证:是检测软件开发的每个阶段、每个步骤的结果是否正 确无误,是否与软件开发各阶段的要求或期望的结果相一致。 验证意味着确保软件是会正确无误的实现软件的需求,开发 过程是沿着正确的方向在进行。 测试:与狭隘的测试概念统一。通常是经过单元测试、集成 测试、系统测试三个环节。 事实上,确认、验证、测试是相辅相成的。确认无疑会 产生验证和测试的标准,而验证和测试通常又会帮助完成一 些确认,特别是在系统测试阶段。
面向对象的软件测试
一、面向对象的软件测试基本概念
面向对象程序的结构不再是传统的功能模 块结构,作为一个整体,原有集成测试所要求 的逐步将开发的模块搭建在一起进行测试的方 法已成为不可能。而且,面向对象软件抛弃了 传统的开发模式,对每个开发阶段都有不同以 往的要求和结果,已经不可能用功能细化的观 点来检测面向对象分析和设计的结果。因此, 传统的测试模型对面向对象软件已经不再适用。 针对面向对象软件的开发特点,应该有一种新 的测试模型。
(2) 对构造的类层次结构的测试
为能充分发挥面向对象的继承共享特性,OOD的类层次 结构,通常基于OOA中产生的分类结构的原则来组织,着重 体现父类和子类间一般性和特殊性。在当前的问题空间,对 类层次结构的主要要求是能在解空间构造实现全部功能的结 构框架。为此,测试如下方面: 1、类层次结构是否含盖了所有定义的类。 2、是否能体现OOA中所定义的实例关联。 3、是否能实现OOA中所定义的消息关联。 4、子类是否具有父类没有的新特性。 5、子类间的共同特性是否完全在父类中得以体现。
面向对象的软件测试——测试模型
OOA Test和OOD Test 是对分析结果和设计结果的测 试,主要是对分析设计产生的文本进行,是软件开发前期 的关键性测试。OOP Test主要针对编程风格和程序代码实 现进行测试,其主要的测试内容在面向对象单元测试和面 向对象集成测试中体现。
二、面向对象软件测试内容及方法
三、面向对象设计的测试(OOD Test)
面向对象设计(OOD) 采用"造型的观点",以OOA为基础归纳出类,并 建立类结构或进一步构造成类库,实现分析结果对 问题空间的抽象。 OOD确定类和类结构不仅是满足当前需求分析的 要求,更重要的是通过重新组合或加以适当的补充, 能方便实现功能的重用和扩增,以不断适应用户的 要求。因此,对OOD的测试,本文建议针对功能的实 现和重用以及对OOA结果的拓展,从如下三方面考虑:


面向对象程序是把功能的实现分布在类中。能正确 实现功能的类,通过消息传递来协同实现设计要求 的功能。正是这种面向对象程序风格,将出现的错 误能精确的确定在某一具体的类。因此,在面向对 象编程(OOP)阶段,忽略类功能实现的细则,将测 试的目光集中在类功能的实现和相应的面向对象程 序风格,主要体现为以下两个方面(假设编程使用 C++语言)。 数据成员是否满足数据封装的要求 类是否实现了要求的功能
二、面向对象软件测试内容及方法
(2) 对认定的结构的测试
对认定的分类结构的测试可从如下方面着手: 对于结构中的一种对象,尤其是处于高层的对象,是 否在问题空间中含有不同于下一层对象的特殊可能性, 即是否能派生出下一层对象。 对于结构中的一种对象,尤其是处于同一低层的对象, 是否能抽象出在现实中有意义的更一般的上层对象。 对所有认定的对象,是否能在问题空间内向上层抽象 出在现实中有意义的对象 高层的对象的特性是否完全体现下层的共性 低层的对象是否有高层特性基础上的特殊性
1、数据成员是否满足数据封装的要求
数据封装是数据和数据有关的操作的集合。检
面向对象的软件测试
本章重点: 掌握面向对象的软件测试基本概念 掌握面向对象软件测试内容 熟悉面向对象软件测试方法
面向对象的软件测试
本章重点: 掌握面向对象的软件测试基本概念 掌握面向对象软件测试内容 熟悉面向对象软件测试方法
面向对象的软件测试
面向对象方法是一种把面向对象的思想应用 于软件开放过程中,指导开发活动的系统方法, 是建立在“对象”概念基础上的方法学。 面 向对象方法作为一种新型的独具优越性的新方 法正在逐渐代替被广泛使用的面向过程开发方 法,被看成是解决软件危机的新兴技术。面向 对象技术产生更好的系统结构,更规范的编程 风格,极大的优化了数据使用的安全性,提高 了程序代码的重用,一些人就此认为面向对象 技术开发出的程序无需进行测试。
相关文档
最新文档