面向对象软件测试

上传人:xx****x 文档编号:242914510 上传时间:2024-09-11 格式:PPT 页数:20 大小:169KB
返回 下载 相关 举报
面向对象软件测试_第1页
第1页 / 共20页
面向对象软件测试_第2页
第2页 / 共20页
面向对象软件测试_第3页
第3页 / 共20页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,20,/20,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,14,讲,面向对象软件测试,1,结构化测试,自底向上的测试策略,从“小型测试”开始,逐步走向“大型测试”,从单元测试开始,然后逐步进入集成测试,最后是有效性和系统测试,在传统应用中,单元测试集中在最小的可编译程序单位,子程序,(,如,模块、子例程、进程,),一旦这些单元均被独立测试后,它被集成在程序结构中,这时要进行一系列的回归测试以发现由于模块的接口所带来的错误和新单元加入所导致的副作用,系统被作为一个整体测试以保证发现在需求中的错误,2,面向对象软件特点,面向对象程序结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能,面向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果,传统的测试模型对面向对象软件已经不再适用,3,面向对象测试模型,面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(,OOA,),面向对象设计(,OOD,),和面向对象编程(,OOP,)三个阶段,针对这种开发模型,结合传统的测试步骤的划分,把面向对象的软件测试分为:,面向对象分析的测试,面向对象设计的测试,面向对象编程的测试,面向对象单元测试,面向对象集成测试,面向对象系统测试,面向对象的回归测试,4,面向对象分析的测试,面向对象分析,(OOA):E-R,图和语义网络模型,信息造型中的概念,与面向对象程序设计语言中的重要概念结合在一起而形成的分析方法,最后通常是得到问题空间的图表的形式描述,5,面向对象分析的测试(续),OOA,直接映射问题空间,全面的将问题空间中实现功能的现实抽象化,将问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂实例和复杂关系,用属性和操作表示实例的特性和行为,对一个系统而言,与传统分析方法产生的结果相反,行为是相对稳定的,结构是相对不稳定的,这更充分反映了现实的特性,OOA,的结果是为后面阶段类的选定和实现,类层次结构的组织和实现提供平台。因此,对,OOA,的测试,应从以下方面考虑:,对认定的对象的测试,对认定的结构的测试,对认定的主题的测试,对定义的属性和实例关联的测试,对定义的服务和消息关联的测试,6,面向对象设计的测试,面向对象设计(,OOD,)采用造型的观点,以,OOA,为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象,OOD,是,OOA,的进一步细化和更高层的抽象,OOD,确定类和类结构不仅是满足当前需求分析的要求,更重要的是通过重新组合或加以适当的补充,能方便实现功能的重用和扩增,以不断适应用户的要求,对,OOD,的测试,应从如下三方面考虑:,对认定的类的测试,对构造的类层次结构的测试,对类库的支持的测试,7,面向对象编程的测试,典型的面向对象程序具有继承、封装和多态的新特性,这使得传统的测试策略必须有所改变,封装是对数据的隐藏,外界只能通过被提供的操作来访问或修改数据,这样降低了数据被任意修改和读写的可能性,降低了传统程序中对数据非法操作的测试,继承是面向对象程序的重要特点,继承使得代码的重用率提高,同时也使错误传播的概率提高,多态使得面向对象程序对外呈现出强大的处理能力,但同时却使得程序内同一函数的行为复杂化,测试时必须考虑不同类型具体执行的代码和产生的行为,8,面向对象编程的测试(续),面向对象程序是把功能的实现分布在类中,能正确实现功能的类,通过消息传递来协同实现设计要求的功能,因此,在面向对象编程,(OOP),阶段,忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格,主要体现为以下两个方面,数据成员是否满足数据封装的要求,类是否实现了要求的功能,9,面向对象的单元测试,类测试,传统的单元测试的对象是软件设计的最小单位,模块,单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误,单元测试多采用白盒测试技术,系统内多个模块可并行地进行测试,当考虑面向对象软件时,单元的概念发生了变化,封装驱动了类和对象的定义,这意味着每个类和类的实例,(,对象,),包装了属性,(,数据,),和操纵这些数据的操作,而不是个体的模块,最小的可测试单位是封装的类或对象,类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存在,一个对象有它自己的状态和依赖于状态的行为,对象操作既与对象的状态有关,但也可能改变对象的状态。,单元测试的意义发生了较大变化,我们不再孤立地测试单个操作,而是将操作作为类的一部分,10,面向对象的单元测试,类测试,(续),类的测试按顺序分为三个部分,:,基于服务的测试,:,测试类中的每一个方法,;,基于状态的测试,:,考察类的实例在其生命周期各个状态下的情况,;,基于响应状态的测试,:,从类和对象的责任出发,以外界向对象发送特定的消息序列的方法来测试对象的各个响应状态,11,面向对象的集成测试,传统的集成测试,有两种方式通过集成完成的功能模块进行测,自顶向下集成:自顶向下集成是构造程序结构的一种增量式方式,它从主控模块开始,按照软件的控制层次结构,以深度优先或广度优先的策略,逐步把各个模块集成在一起,自底向上集成:自底向上测试是从,“,原子,”,模块(即软件结构最低层的模块)开始组装测试,12,面向对象的集成测试(续),因为面向对象软件没有层次的控制结构,传统的自顶向下和自底向上集成策略就没有意义,此外,一次集成一个操作到类中,(,传统的增量集成方法,),经常是不可能的,这是由于“构成类的成分的直接和间接的交互”,对,OO,软件的集成测试有两种不同策略,基于线程的测试,集成对回应系统的一个输入或事件所需的一组类,每个线程被集成并分别测试,应用回归测试以保证没有产生副作用,基于使用的测试,通过测试那些几乎不使用服务器类的类,(,称为独立类,),而开始构造系统,在独立类测试完成后,下一层的使用独立类的类,称为依赖类,被测试。这个依赖类层次的测试序列一直持续到构造完整个系统,13,面向对象的系统测试,通过单元测试和集成测试,仅能保证软件开发的功能得以实现。但不能确认在实际运行时,它是否满足用户的需要。为此,对完成开发的软件必须经过规范的系统测试,系统测试应尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段,系统测试时,应该参考,OOA,分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全再现问题空间,系统测试不仅是检测软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认,14,面向对象的系统测试(续),类簇(是一组相互合作的类),类簇测试主要考察一组协同操作的类之间的相互作用,是系统集成测试的一个子阶段,在单个类分别进行测试后,根据系统中类的层次关系图,将相互有影响的类作为一个整体,检查各相关类之间消息连接的合法性、子类的继承性与父类的一致性、动态绑定执行的正确性、类簇协同完成系统功能的正确性等,测试用例可由多种方案结合生成,如根据类的继承关系图来纵向检查类,根据对象之间方法的相互作用来横向检查类的关系图,15,面向对象的系统测试(续),系统测试,:,系统测试是对所有类和主程序构成的整个系统进行整体测试,以验证软件系统的正确性和性能指标等满足需求规格说明书和任务书所指定的要求,它与传统的系统测试一样,包括功能测试、性能测试、余量测试等,可套用传统的系统测试方法,测试用例可从对象,行为模型和,作为面向对象分析的事件流图中导出,16,面向对象软件回归测试,面向对象软件中的回归测试不再作为测试的一个独立的阶段,而是以增量方式进行的,对象系统中的交互,既发生在类内的方法间又发生在多个类之间,类,A,与类,B,的交互是通过,:,(1) B,的实例变量作为参数传给类,A,的某方法,这时,类,B,的改变必然导致对类,A,的方法的回归测试,如果类,A,的方法又与其它方法发生交互,这些方法及其类必须都进行回归测试,(2),类,A,的实例是类,B,表示的一部分,这时,B,的所有对类,A,中变量进行引用的方法必须进行回归测试,在这两种情况下,测试依赖集可用来确定情况,(1),中所有与方法,A,的交互集,;,对象的数据依赖集可用来确定情况,(1),和,(2),中所有必须重新测试的类和方法,对面向对象软件的修改主要有,:,不修改对象属性,只对方法进行修改,该对象以及系统中所有与该对象发生交互的对象都要进行完全新的测试。通常,这种测试代价是很高的, 修改对象属性,17,面向对象软件测试总结,面向对象测试的整体目标,以最小的工作量发现最多的错误,和传统软件测试的目标是一致的,但是,OO,测试的策略和战术有很大不同,测试的视角扩大到包括复审分析和设计模型,此外,测试的焦点从过程构件,(,模块,),移向了类,不论是传统的测试方法还是面向对象的测试方法,都应该遵循下列的原则:,应当把“尽早和不断地测试”作为开发者的座右铭,程序员应该避免检查自己的程序,测试工作应由独立的专业的软件测试机构来完成,设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况,一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大关系,对测试错误结果一定要有一个确认的过程。一般有,A,测试出来的错误,一定要有一个,B,来确认,严重的错误可以召开评审会进行讨论和分析,制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试,回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见,妥善保存一切测试过程文档,意义是不言而喻的,,测试的重现性往往要靠测试文档,18,面向对象的度量方法,Chidamber,和,Kemerer(C&K),提出了六个新的基于理论概念的,OO,度量:,每个类的加权方法数,继承的深度,孩子的个数,对象类之间的耦合,类的响应,方法之间的聚合缺乏,用于使用面向对象编程语言开发的软件。概括一下,有关的度量有:,每个类的加权方法数,继承树的深度,孩子数,每个类的响应,消息传递偶合,数据抽象偶合,方法数,19,作业,面向对象测试要考虑那些属性,?,怎样进行面向对象测试,?,20,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!