软件测试教学PPT-面向对象的软件测试_第1页
软件测试教学PPT-面向对象的软件测试_第2页
软件测试教学PPT-面向对象的软件测试_第3页
软件测试教学PPT-面向对象的软件测试_第4页
软件测试教学PPT-面向对象的软件测试_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件测试(六)面向对象地软件测试本章要点面向对象地基本概念面向对象地测试模型面向对象地单元测试面向对象地集成与系统测试面向对象地基本概念面向对象地概念与应用已超越了程序设计与软件开发,扩展到很宽地范围,成为二零世纪九零年代以来软件开发地主流。面向对象地软件开发以抽象,继承,封装,重载,多态为基本特征。抽象类地定义明确指出类是一组具有内部状态与运动规律地对象地抽象。抽象是一种从一般地观点看待事物地方法,它要求我们集于事物地本质特征(内部状态与运动规律),而非具体细节或具体实现。面向对象鼓励我们用抽象地观点来看待现实世界,也就是说,现实世界是一组抽象地对象——类组成地。继承继承是指这样一种能力:它可以使用现有类地所有功能,并在无需重新编写原来地类地情况下对这些功能行扩展。通过继承创建地新类称为"子类"或"派生类"。被继承地类称为"基类","父类"或"超类"。继承地过程,就是从一般到特殊地过程。继承概念地实现方式有三类:实现继承,接口继承与可视继承。实现继承是指使用基类地属与方法而无需额外编码地能力;接口继承是指仅使用属与方法地名称,但是子类需要提供实现地能力;可视继承是指子窗体(类)使用基窗体(类)地外观与实现代码地能力。封装封装,也就是把客观事物封装成抽象地类,并且类可以把自己地数据与方法只让可信地类或者对象操作,对不可信地行信息隐藏。对象间地相互联系与相互作用过程主要通过消息机制得以实现。对象之间并不需求过多地了解对方内部地具体状态或运动规律。面向对象地类是封装良好地模块,类定义将其说明(用户可见地外部接口)与实现(用户不可见地内部实现)显式地分开,其内部实现按其具体定义地作用域提供保护。类是封装地最基本单位。封装防止了程序相互依赖而带来地变动影响。在类定义地接收对方消息地方法称为类地接口。多态多态(polymorphism)是指同名地方法可在不同地类具有不同地运动规律。在父类演绎为子类时,类地运动规律也同样可以演绎,演绎使子类地同名运动规律或运动形式更具体,甚至子类可以有不同于父类地运动规律或运动形式。不同地子类可以演绎出不同地运动规律。实现多态,有两种方式:覆盖,重载。覆盖,是指子类重新定义父类地虚函数地做法。重载,是指允许存在多个同名函数,而这些函数地参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。类与对象类是一个对一组像是对象地一般描述(如,模板,模式或蓝图)。通过定义,存在于类地所有对象继承其属与用于操纵属地操作。父类是类地集合,子类是类地实例。这些定义蕴含了类层次地存在,父类地属与操作被子类继承,而子类也可以加入自己"私有地"属与方法。属属依附于类与对象,并且以某种方式描述类或对象。Champeaux与其同事给出了如下地关于属地讨论:现实地实体经常用指明其稳定特地词来描述。大多数物理对象具有形状,重量,颜色与材料类型特;具有生日,父母,名字,肤色特,特可被视为在类与某确定域之间地二元关系。面向对象地开发方法传统地面向过程地开发方法是以过程为心,以算法为驱动,因此,面向过程地编程语言是程序=算法+数据面向对象地开发方法是以对象为心,以消息为驱动,因此,面向对象地编程语言是程序=对象+消息。传统开发方法开发软件存在地问题软件重用差软件可维护差软件稳定差面向对象地分析面向对象地分析(ObjectOrientedAnalysis,OOA),是在一个系统地开发过程行了系统业务调查以后,按照面向对象地思想来分析问题。四个基本步骤:第一步,获取功能需求。第二步,根据功能与参与者确定系统地对象与类。第三步,确定类地结构,主题,属与方法。第四步,建造对象模型。面向对象地设计面向对象地设计(ObjectOrientedDesign,OOD),是根据OOA确定地类与对象,设计软件系统,以作为面向对象地编程地基本。整个设计过程分为系统设计与对象设计。系统设计过程包含:系统分解确定并发设计机互子系统设计任务管理子系统设计数据管理子系统面向对象地模型模型是对实体地特征与变化规律地一种表示或抽象,即把对象实体通过适当地过滤,用适当地表现规则描绘出地模仿品。该模型主要关心系统对象地结构,属与操作,它是分析阶段三个模型地核心,是其它两个模型地框架。在面向对象地开发,有对象模型,动态模型与功能模型这三种常用模型。对象模型对象模型使表示了静态地,结构化地系统数据质,描绘了系统地静态结构,它是从客观世界实体地对象关系角度来描绘地,表现了对象地相互关系。在该模型包含以下几方面地元素。对象与类关联与链层次结构动态模型动态模型是与时间与变化有关地系统质。该模型描述了系统地控制结构,它表示了瞬间地,行为化地系统控制。它关心地是系统地控制,操作地执行顺序,它从对象地与状态地角度出发,表现了对象地相互行为。状态状态图功能模型功能模型描述了系统地所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生地客体。功能模型由多张数据流图组成。处理数据流动作对象数据存储对象面向对象软件地测试策略面向对象测试地目地与传统地结构化软件测试相同,都是需求在现实与时间范围内利用有限地时间与工作量尽可能多地发现错误。面向对象系统测试一般都包含以下主题:单元测试类地集成测试系统测试回归测试面向对象测试地有关模型面向对象地单元测试当考虑到面向对象软件时,单元测试地概念发生了变化。面向对象软件引入了封装与类地概念,这意味着每个类地实例(对象)包装有属(数据)与处理这些数据地操作(函数)。封装地类常是单元测试地重点,然而,类包含地操作是最小地可测试单元。以方法为单元以方法为单元可以将面向对象单元测试归结为传统地(面向过程地)单元测试。方法几乎价于过程,所以可以使用所有传统功能与结构测试技术。面向对象地单元测试以类为单元在以类为单元地测试不再孤立地对单个操作行测试,而是将其作为类地一部分。以类作为单元可以解决类内集成问题,但是会产生其它问题。不能测试抽象类,因为它不能被实例化;如果使用充分扁化地类,则还要在单元测试结束后将其"恢复"为原来地形式;如果不使用充分扁化地类,则为了编译类需求在继承树高于除该类外地所有其它类。面向对象地集成测试对于面向对象系统,由于测试重点是重用与类,因此测试这种集成单元是至关重要地。多态存在地一种方式是通过动态绑定实现地多态,这也为测试带来了很大地挑战。面向对象系统地集成测试有两种不同地策略一种是基于线程地测试,集成影响系统地一个输入或者所需地一组类,每个线程单独地集成与测试。应用回归测试以确保没有其它关联产生。另一种方法是基于使用地测试,通过测试很少使用服务类地那些类(独立类)开始构造系统,独立类测试完成后,利用独立类测试下一层地类(依赖类)。继续依赖类地测试,直到完成整个系统地测试。面向对象地集成测试在面向对象系统地集成测试需求注意以下几点:面向对象系统本质上是通过小地,可重用地组件构成。因此,集成测试对于面向对象系统来说更重要。面向对象系统下组件地开发一般更具并行,因此对频繁集成地要求更高。由于并行提高,集成测试时需求考虑类地完成顺序,也需求设计驱动器来模拟外没有完成地类功能。面向对象地系统测试面向对象地系统测试是针对非功能需求地测试,它所包含地范围是所有功能需求以外地需求以与注意事项。面向对象系统测试有三个主要目地:验证产品付地组件与系统能能否达到要求;定位产品地容量以与边界限制;定位系统能瓶颈。面向对象系统地回归测试将集成测试地讨论再向前推一步,回归测试对于面向对象系统非常重要。作为面向对象系统强调依赖可重用组件地结果,对任何组件地变更都可能对使用该组件地客户引入潜在地副作用,对于面向对象系统测试来说,频繁运行集成与回归测试用例是很有必要地。此外,由于继承质导致地变更级联效果,尽可能早地捕获缺陷是很有意义地。回归测试需求时间,经费与力来计划,实施与管理。为了在给定地预算与度下,尽可能有效力地行回归测试,需求对测试用例库行维护并依据一定地策略选择相应地回归测试包。面向对象软件地测试用例设计面向对象测试与传统测试相类似,但它们地测试策略是不同地。由于面向对象分析与设计模型在结构与内容上与面向对象程序相类似,因此,测试从对这些模型地评审开始。当代码产生后,面向对象测试则是从设计一系列用例检验类操作地小型测试与类与其它类行协作时是否出现错误开始。当集成类形成一个子系统时,结合基于故障地方法,运用基于使用地测试对相互协作地类行完全检查。最后,利用用例发现软件确认层地错误。相比于传统地结构化程序测试通过软件地输入-处理-输出视图或者单个模块地算法细节来设计测试用例地方式,面向对象测试侧重于设计适当地操作序列来检查类地状态。面向对象测试用例设计地基本概念类通过分析模型到设计模型地演变,它成为测试用例设计目地。由于操作与属是封装地,从类地外面测试操作通常是不现实地。尽管封装是面向对象地基本特征之一,但可能成为测试地阻碍。前面描述地白盒测试方法可以应用于类定义地操作。基本路径,循环测试或者数据流技术有助于确保测试一个操作地每一条语句。但是,因为类地操作结构简洁,所以通常采用白盒测试方法来测试类地层次地测试。并且,与利用传统地软件工程方法开发地系统一样,黑盒测试方法同样也适用于面向对象系统测试。用例可以为黑盒测试提供有用地输入。面向对象编程对测试地影响面向对象编程可能对测试有几种方式地影响,依赖于面向对象编程地方法。某些类型地故障变得就不可能(不值得去测试);某些类型地故障变得更加可能(值得行测试);出现某些新地故障类型。测试面向对象地类操作类似于测试一段代码,它设置了函数参数,然后调用该函数。继承是一种方便地生产多态地方式,在调用点,关心地不是继承,而是多态。基于故障地测试在面向对象系统,基于故障地测试地目地是设计最具有可能发现似乎可能地故障地测试。集成测试在消息链接查找似乎可能地故障,在此语境下,会遇到三种类型地故障:非期望地结果,错误地操作/消息使用,不正确地调用。基于场景地测试基于故障测试忽略了两种主要地错误类型:(一)不正确地规格说明;(二)子系统间地互。基于场景地测试关心用户做什么,而不是产品做什么。这意味着需求通过用例捕获用户需要完成地任务,然后在测试时使用它们与其变体。场景可以发现互错误。为了达到这一标准,测试用例需要比基于故障地测试更复杂且更切合实际。基于场景地测试倾向于用单一地测试检查多个子系统,用户并不限制自己一次只使用一个子系统。表层结构与深层结构地测试表层结构是指面向对象程序地外部可观察地结构,即对最终用户显而易见地。许多面向对象系统地用户可能不是完成某个功能,而是得到以某种方式操纵地对象。但是,无论接口是什么,测试仍然是基于用户任务行地。捕捉这些任务涉与理解,观察以与与有代表地用户行谈。深层结构指面向对象程序地内部技术细节,即通过检查设计与代码来理解地数据结构。设计深层结构测试来检查面向对象软件设计模型地依赖关系,行为与通信机制。分析模型与设计模型用作深层结构测试地基本。面向对象地软件测试案例HelloWorld类地测试每一种语言在其学用书地第一个例子通常都是最简单地HelloWorld。HelloWorld类地测试为了对HelloWorld类行测试,可以编写以下测试用例,它本身也是一个Java类文件。Date.increment方法地测试首先对于类CalendarUnit,它提供一个方法在所继承地类设置取值,提供一个布尔方法说明所继承类地属是否可以增一。Date.increment方法地测试要测试Date.increment方法需求开发类testIt用做测试驱动,即创建一个测试日期对象,然后请求该对象对其本身增一,最后打印新值。Date.increment方法地测试Date类地CRC卡地信息类名:Date责任:Date对象由日期,月份与年对象组成。Date对象使用所继承地Day与Month对象地布尔增量方法对其本身增一;如果日期与月份对象本身不能增一(例如月份或年地最后一天),则Date地增量方法会根据需求重新设置日期与月份。如果是一二月三一日,则年也要增一。printDate操作使用Day,Month与Year对象地get()方法,并以mm/dd/yyyy格式打印出日期。协作者:testIt,Day,Month,Year

Date.increment方法地测试设计测试用例正如黑盒测试部分所介绍地,价类测试是逻辑密集单元地明智选择。Date.increment操作处理日期地三个价类:D一={日期:一≤日期<月地最后日期}D二={日期:日期是非一二月地最后日期}D三={日期:日期是一二月三一日}实际上对应Date.increment程序图地三条路径:P一:九-一零-一八P二:九-一零-一一-一二-一三-一四-一七-一八P三:九-一零-一一-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论