软件测试技术韩永国 第九章面向对象测试ppt课件.ppt

上传人:牧羊曲112 文档编号:1421344 上传时间:2022-11-22 格式:PPT 页数:35 大小:209.50KB
返回 下载 相关 举报
软件测试技术韩永国 第九章面向对象测试ppt课件.ppt_第1页
第1页 / 共35页
软件测试技术韩永国 第九章面向对象测试ppt课件.ppt_第2页
第2页 / 共35页
软件测试技术韩永国 第九章面向对象测试ppt课件.ppt_第3页
第3页 / 共35页
软件测试技术韩永国 第九章面向对象测试ppt课件.ppt_第4页
第4页 / 共35页
软件测试技术韩永国 第九章面向对象测试ppt课件.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《软件测试技术韩永国 第九章面向对象测试ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件测试技术韩永国 第九章面向对象测试ppt课件.ppt(35页珍藏版)》请在三一办公上搜索。

1、面向对象测试,软件测试课程组西南科技大学计算机学院,9.1 面向对象基础,1对象对象是要研究的任何事物。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。2类类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。,3消息消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。4封装性封装是一种信息隐蔽技术。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很

2、强的模块,使得用户只能见到对象的外特性,而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。,5继承性继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。6多态性对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定。,面向对象程序的组成,面向对象程序通常由一系列类组

3、成在类中封装了数据和作用在数据上的操作(即方法)类和类之间按继承关系组成一个无环路有向图单继承(Java)多继承(C+)对象是类的实例,面向对象的新特性,继承封装(信息隐蔽)多态(动态绑定),新特性对测试的影响,信息隐蔽(封装)对测试的影响 类的重要作用之一是信息隐蔽;信息隐蔽避免类中有关实现细节的信息被错误地使用;隐蔽机制给测试带来了困难。,新特性对测试的影响,继承对测试的影响若一个类得到了充分的测试,当其被子类继承后,继承的方法在子类的环境中的行为特征需要重新测试。,新特性对测试的影响,多态性对测试的影响传统软件测试中经常使用静态分析技术对代码进行分析;面向对象软件中,由于动态绑定和多态性

4、的存在所带来的不确定性,给测试覆盖率的满足增大了难度。,面向对象测试的类型,面向对象分析的测试(OOA Test)面向对象设计的测试(OOD Test)面向对象编程的测试(OOP Test)面向对象单元测试(OO Unit Test)面向对象集成测试(OO Integration Test)面向对象系统测试(OO System Test),在传统软件中,确定单元的指导方针是:1、能够自身编译的最小程序块;2、单一过程/函数(独立);3、由一个人完成的小规模工作。面向对象软件测试与传统方法的区别:指导方针中没有明确说明是把类还是方法作为单元。,9.2 面向对象测试的层次,面向对象测试的层次,面向

5、对象测试的层次,取决于单元的构成,一般采用三层或四层方式。如果把单个操作或方法看作单元,则有四层测试,即方法、类、集成和系统测试。 如果把类看作单元,则有三层测试:类测试,集成测试,系统测试。面向对象测试的主要问题是集成测试,即在通过测试的类之间的交互测试。,9.2 类测试(面向对象单元测试),类测试概念:验证类的实现是否和该类的说明完全一致。 类测试的方法:通过代码检查或执行测试用例的方法来有效地进行类测试。(后者优于前者)。,类测试过程为类创建实例创造适当的环境运行测试用例(向一个实例发送一个或多个消息)通过参数来检查测试运行的结果清除执行测试用例所需的测试环境。,面向对象软件的单元测试观

6、点,面向对象软件的单元测试观点 以方法为单元 以类为单元,以方法为单元,这种方法可以将面向对象单元测试归结为传统的(过程)单元测试。可以使用所有传统功能性测试和结构性测试手段。如果把方法看作是面向对象的单元,必须提供能够实例化的桩类,以及起驱动器作用的“主程序”类以提供和分析测试用例。,以类为单元,类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存在。不再孤立地测试单个操作,而是将操作作为类的一部分。把类作为单元,可以解决类内集成问题,但是会产生其它问题。,类测试的扩展,继承层次结构中类的测试接口类测试 抽象类测试重载和覆盖测试异常测试,9.3 面向对象的集成测试,集成测试的UM

7、L支持协同图(合作图)序列图(顺序图),协作图,o-oCalendar程序的协作图:Page 282 图18-1协作图(协同图)非常类似在“集成测试”中曾经使用过的单元调用图。,顺序图,顺序图跟踪通过协作图的执行时间路径在UML中序列图有两级,即系统/用例级和类交互级Page283 图18-2给出的是打印新日期的部分o-oCalendar应用程序的顺序图粗竖线表示类或类的实例,箭头标号表示类的实例按时间顺序发送的消息,面向对象软件的MM-路径,在传统软件的MM-路径中,用“消息”表示个体单元(模块)之间的调用,采用模块执行路径取代完整的模块MM-路径表示由消息分开的各种方法执行序列,即方法/消

8、息路径。与传统软件一样,方法也可能有多条内部执行路径MM-路径从某个方法开始,当到达某个自己不发送任何消息的方法时结束,这就是消息静止点,面向对象的集成测试,在面向对象程序中,相互调用的功能是散布在程序的不同类中,类通过消息相互作用申请和提供服务。类的行为与它的状态密切相关,状态不仅仅是体现在类数据成员的值,也许还包括其他类中的状态信息。由此可见,类相互依赖极其紧密,根本无法在编译不完全的程序上对类进行测试。所以,面向对象的集成测试通常需要在整个程序编译完成后进行。此外,面向对象程序具有动态特性,程序的控制流往往无法确定,因此也只能对整个编译后的程序做基于黑盒子的集成测试。,面向对象的集成测试

9、,把一组相互有影响的类看作一个整体称为类簇。类簇测试主要根据系统中相关类的层次关系,检查类之间的相互作用的正确性,即检查各相关类之间消息连接的合法性、子类的继承性与父类的一致性、动态绑定执行的正确性、类簇协同完成系统功能的正确性等等。其测试有两种不同策略。,面向对象的集成测试,1.基于类间协作关系的横向测试。由系统的一个输入事件作为激励,对其触发的一组类进行测试,执行相应的操作/消息处理路径,最后终止于某一输出事件。应用回归测试对已测试过的类集再重新执行一次,以保证加入新类时不会产生意外的结果。,面向对象的集成测试,2.基于类间继承关系的纵向测试。首先通过测试独立类(是系统中已经测试正确的某类

10、)来开始构造系统,在独立类测试完成后,下一层继承独立类的类(称为依赖类) 被测试,这个依赖类层次的测试序列一直循环执行到构造完整个系统。,面向对象的集成测试能够检测出相对独立的单元测试无法检测出的那些类相互作用时才会产生的错误。基于单元测试对成员函数行为正确性的保证,集成测试只关注于系统的结构和内部的相互作用。面向对象的集成测试可以分成两步进行:先进行静态测试,再进行动态测试。,静态测试,静态测试主要针对程序的结构进行,检测程序结构是否符合设计要求。现在流行的一些测试软件都能提供一种称为“可逆性工程”的功能,即通过原程序得到类关系图和函数功能调用关系图。如、Rational公司的Rose C+

11、 Analyzer等,将“可逆性工程”得到的结果与OOD的结果相比较,检测程序结构和实现上是否有缺陷。通过这种方法检测OOP是否达到了设计要求。,动态测试,动态测试设计测试用例时,通常需要上述的功能调用结构图、类关系图或者实体关系图为参考,确定不需要被重复测试的部分,从而优化测试用例,减少测试工作量,使得进行的测试能够达到一定覆盖标准。测试所要达到的覆盖标准可以是:达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率等。同时也可以考虑使用现有的一些测试工具来得到程序代码执行的覆盖率。,动态测试,具体设计测试用例,可参考下列

12、步骤:(1)先选定检测的类,参考OOD分析结果,分析出类的状态和相应的行为,类或成员函数间传递的消息,输入或输出的界定等。(2)确定覆盖标准。(3)利用结构关系图确定待测类的所有关联。(4)根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态、使用类的服务和期望产生什么行为等。,9.4 面向对象的系统测试,通过单元测试和集成测试,仅能保证软件开发的功能得以实现。但不能确认在实际运行时,它是否满足用户的需要。为此,对完成开发的软件必须经过规范的系统测试。系统测试应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段。系统测试

13、时,应该参考OOA分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全再现问题空间。,面向对象的系统测试,1.功能测试2.强度测试测试系统的能力最高实际限度,即软件在一些超负荷的情况,功能实现情况。如要求软件某一行为的大量重复、输入大量的数据或大数值数据、对数据库大量复杂的查询等。3.性能测试4.安全测试,5.恢复测试采用人工的干扰使软件出错,中断使用,检测系统的恢复能力,特别是通讯系统。恢复测试时,应该参考性能测试的相关测试指标。6.安装/卸载测试7.可用性测试:测试用户是否能够满意使用。8.基于UML的系统测试,9.基于状态图的系统测试状态图是系统测试的很好的基础。问题是,UML将状态图规定为类级的。合成多个类的状态图得到一个系统级的状态图是很难的。一种可行的方法是,将每个类级的状态图转换成一组EDPN(事件驱动的Petri网),然后合成EDPN。,课后练习,教材256页1,2,3,4题。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号