软件测试第5章面向对象软件的测试课件

上传人:阳*** 文档编号:100735131 上传时间:2022-06-03 格式:PPT 页数:56 大小:1.23MB
返回 下载 相关 举报
软件测试第5章面向对象软件的测试课件_第1页
第1页 / 共56页
软件测试第5章面向对象软件的测试课件_第2页
第2页 / 共56页
软件测试第5章面向对象软件的测试课件_第3页
第3页 / 共56页
点击查看更多>>
资源描述
面向对象的测试概述面向对象的测试概述面向面向对对象的象的单单元元测试测试面向面向对对象的集成象的集成测试测试和系和系统测试统测试1对象对象 对象是一个可操作的实体,是由特定的数据(属性)和操对象是一个可操作的实体,是由特定的数据(属性)和操作封装在一起的整体,对象之间通过消息机制相互发生作用。作封装在一起的整体,对象之间通过消息机制相互发生作用。 对象是测试的最直接目标,对象是否符合需求说明、对象对象是测试的最直接目标,对象是否符合需求说明、对象与对象之间是否能进行协同工作,是我们与对象之间是否能进行协同工作,是我们测试的焦点测试的焦点。 程序运行时,每个对象都将历经创建、访问、修改和删除程序运行时,每个对象都将历经创建、访问、修改和删除4个过程,这个过程,这4个过程称为对象的生命周期。针对对象进行测个过程称为对象的生命周期。针对对象进行测试,应从多方面试,应从多方面测试对象的状态是否与其生命周期相符测试对象的状态是否与其生命周期相符。5.1.1 面向对象的基本概念面向对象的基本概念学生学生姓名姓名年龄年龄研究生研究生导师导师研究方向研究方向本科生本科生班级班级专业专业人员人员姓名姓名年龄年龄研究生研究生导师导师研究方向研究方向职工职工部门部门职务职务在职研究生在职研究生运输工具运输工具轮船轮船车辆车辆飞机飞机卡车卡车轿车轿车继承:继承:多继承:多继承:继承层次:继承层次:软件测试第5章面向对象软件的测试 面向对象的软件开发可分为面向对象的分析面向对象的软件开发可分为面向对象的分析(Object Oriented Analysis,OOA)、面)、面向对象的设计(向对象的设计(Object Oriented Design,OOD)和面向对象的编程()和面向对象的编程(Object Oriented Progamming,OOP)三部分,后)三部分,后面将对这些分析和设计、模型进行讨论。面将对这些分析和设计、模型进行讨论。 1面向对象的分析面向对象的分析 面向对象的分析是采用面向对象思路进行需求分析建面向对象的分析是采用面向对象思路进行需求分析建模的工程,也就是以需求分析为基础,来模的工程,也就是以需求分析为基础,来选择对象和类选择对象和类的过的过程。分析的步骤包括以下几点:程。分析的步骤包括以下几点:(1)获取功能需求)获取功能需求(2)根据功能需求确定系统的类和对象)根据功能需求确定系统的类和对象(3)确定类的结构层次、属性和方法)确定类的结构层次、属性和方法(4)建造对象模型:为对象建立联系)建造对象模型:为对象建立联系 总的来说,面向对象分析的关键是识别出系统功能中的总的来说,面向对象分析的关键是识别出系统功能中的对象,并分析它们之间的关系,最终建立起简洁、精确、可对象,并分析它们之间的关系,最终建立起简洁、精确、可理解的正确模型。理解的正确模型。图 描绘教材结构的聚集树图 一家公司的对象模型图 与上图对应的ER图白方黑方将死僵持僵持将死黑方胜平局白方胜白方走黑方走开始用户用户读入读入输入输入账目账目完成完成服务服务现金卡现金卡卡号及密码卡号及密码产生产生输出输出 这三种模型分别从三个不同的方面对所要开发的系统这三种模型分别从三个不同的方面对所要开发的系统进行了描述,功能模型指明了系统应该进行了描述,功能模型指明了系统应该“做什么做什么”;动态;动态模型明确规定了什么时候(即在何种状态下)接受了什么模型明确规定了什么时候(即在何种状态下)接受了什么事件的触发;对象模型则定义了做事情的实体。因此在面事件的触发;对象模型则定义了做事情的实体。因此在面向对象方法学中,对象模型是最基本最重要的,它为其他向对象方法学中,对象模型是最基本最重要的,它为其他两种模型奠定了基础。我们依靠对象模型完成三种模型的两种模型奠定了基础。我们依靠对象模型完成三种模型的集成。集成。 5.1.5 面向对象软件的测试策略面向对象软件的测试策略5.2.1 基于服务的类测试技术基于服务的类测试技术 基于服务的类测试主要考察封装在类中的一个方法对数基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作。它可以采用传统的据进行的操作。它可以采用传统的黑黑白盒测试方法,如:基白盒测试方法,如:基路径法、插桩法、边界值法、排错法、等价类法等。但为克路径法、插桩法、边界值法、排错法、等价类法等。但为克服软件测试的盲目性和局限性,保证测试的质量,提高软件服软件测试的盲目性和局限性,保证测试的质量,提高软件的可靠性,我们提出采用的可靠性,我们提出采用Kung提出的提出的块分支图法块分支图法。 1基于服务的类测试策略基于服务的类测试策略Class 类名 结果类型 服务(参数1,参数2,参数3,参数4,参数n) if(条件1) return 结果1; if(条件2) return 结果2; . . . else if(条件n) return 结果n; else return 结果n+1; 2测试实例一测试实例一设计一个类设计一个类Rectangle,要求如下,要求如下:(1)类中的私有变量存放)类中的私有变量存放Rectangle的长和宽,并且的长和宽,并且设置它们的默认值为设置它们的默认值为1;(2)通过成员函数设置其长和宽,并确保长和宽都在)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内;)范围之内;(3)求周长)求周长Perimeter。class Rectangle public: Rectangle(float w=1, float h=1) Set(w,h); void Set(float w, float h) if(w0&w0&h50) height=h; else width=1; float perimeter() return (2*(width+height); private: float width,height;(1)绘制服务的控制流图)绘制服务的控制流图基本路径集要确保程序中每个可执行语句至少执行一次。基本路径集要确保程序中每个可执行语句至少执行一次。一组独立的路径是:一组独立的路径是:path1:-;path2:-;path3:-。根据判断给出的条件,选择适当的数据以保证每一条基本根据判断给出的条件,选择适当的数据以保证每一条基本路径均被测试到。只要设计出的测试用例能够保证这些路路径均被测试到。只要设计出的测试用例能够保证这些路径的执行,就可以使得程序中的每个可执行语句至少执行径的执行,就可以使得程序中的每个可执行语句至少执行一次,每个条件的分支也能得到测试。一次,每个条件的分支也能得到测试。5.2.2 基于状态的类测试技术基于状态的类测试技术 0SD(0bject State Diagram)模型即对象状态图模型,)模型即对象状态图模型,是用于是用于测试对象状态行为测试对象状态行为的测试模型,描述了对象在其生命的测试模型,描述了对象在其生命周期中的所有状态及其状态之间的相互转移。周期中的所有状态及其状态之间的相互转移。OSD模型由若模型由若干个干个AOSD模型组成,模型组成,AOSD为一个四元组:为一个四元组:AOSD=(S,d,S,So),其中),其中S表示一个对象的状态集合;表示一个对象的状态集合;d表示字符集表示字符集:S表示由对象状态可能产生的转移集;表示由对象状态可能产生的转移集;So表示起始状态。表示起始状态。对象的一个状态是对象的数据属性的一个确定取值范围,相对象的一个状态是对象的数据属性的一个确定取值范围,相对此范围数据成员取真或假;转移表示状态的改变,每一个对此范围数据成员取真或假;转移表示状态的改变,每一个转移对应对象成员函数的执行。转移有条件转移、无条件转转移对应对象成员函数的执行。转移有条件转移、无条件转移和交叉转移。对象的每一个数据成员对应一个移和交叉转移。对象的每一个数据成员对应一个AOSD,每,每个个AOSD可有多个起始状态。构造可有多个起始状态。构造OSD模型的方法包括以下模型的方法包括以下几个步骤。几个步骤。 执行分析表中的一行就表示对象中执行分析表中的一行就表示对象中一个成员方法的一个成员方法的一条执行路径一条执行路径,其中包括该路径执行所需的条件以及执,其中包括该路径执行所需的条件以及执行后的结果表达式。由于一个方法某一执行路径的结果行后的结果表达式。由于一个方法某一执行路径的结果表达式可能有多个,全部列出的意义不大,仅列出引起表达式可能有多个,全部列出的意义不大,仅列出引起对象状态改变的表达式。如果没有该类表达式,则置为对象状态改变的表达式。如果没有该类表达式,则置为空。当遇到在某一执行条件下无任何语句执行的情况,空。当遇到在某一执行条件下无任何语句执行的情况,则分析表的结果表达式项注明则分析表的结果表达式项注明“不执行不执行”。借助每个成。借助每个成员方法已有的员方法已有的BBD模型能很容易地完成该步骤。模型能很容易地完成该步骤。(2)确定对象状态)确定对象状态分析执行分析表,列出状态变量的分析执行分析表,列出状态变量的所有可能的状态及取值所有可能的状态及取值。(3)构造状态转移)构造状态转移规定规定Si为一个状态,它代表一个确定的取值范围,为一个状态,它代表一个确定的取值范围,Si(z)表示状态变量表示状态变量z在此取值范围内,在此取值范围内,PC表示一条表示一条路径执行的条件通过下面的步骤构造转移。路径执行的条件通过下面的步骤构造转移。(4)构造测试消息序列)构造测试消息序列通过对通过对0SD模型进行遍历,就能得到一个测试消息序列。模型进行遍历,就能得到一个测试消息序列。(5)生成测试用例)生成测试用例(1)扫描源程序得出带执行条件的执行分析表)扫描源程序得出带执行条件的执行分析表2测试实例二测试实例二设计一个类设计一个类adviceDelete,实现建议的删除功能,实现建议的删除功能。(3)构造转移)构造转移图图5-5所示为类所示为类adviceDelete构造的构造的OSD模型。模型。根据每条测试消息序列,选择相应的数据进行测试。根据每条测试消息序列,选择相应的数据进行测试。5.2.3 测试驱动的实现和代码的组织测试驱动的实现和代码的组织1测试驱动的实现方式测试驱动的实现方式 有了测试用例,还需要设计测试驱动程序,让测试用有了测试用例,还需要设计测试驱动程序,让测试用例例自动自动地执行。测试驱动的设计本质是通过地执行。测试驱动的设计本质是通过创建被测类的创建被测类的实例和测试这些实例的行为实例和测试这些实例的行为来测试类,常见的测试驱动的来测试类,常见的测试驱动的设计方法有以下几种设计方法有以下几种:(1)利用)利用main函数函数 利用利用main函数方法实现测试驱动是一个最为简单的方函数方法实现测试驱动是一个最为简单的方式,直接将每个测试用例写入式,直接将每个测试用例写入main函数,测试结果直接输函数,测试结果直接输入屏幕。以入屏幕。以5.2.1的测试实例一为例,对类的测试实例一为例,对类Rectangle的测试的测试,实际就是对该类,实际就是对该类set服务的测试服务的测试。(2)嵌入静态方法)嵌入静态方法 在被测类中嵌入静态方法,在静态方法内部在被测类中嵌入静态方法,在静态方法内部实现测试用例的执行,然后调用该静态方法,将实现测试用例的执行,然后调用该静态方法,将测试结果输出到屏幕,仍以测试结果输出到屏幕,仍以5.2.1的测试实例一的测试实例一为例为例。(3)设计独立测试类)设计独立测试类 将测试代码从开发代码中完全独立出来,通将测试代码从开发代码中完全独立出来,通过过独立的测试类独立的测试类处理被测类的实例化和方法,并处理被测类的实例化和方法,并对结果进行统计。以对结果进行统计。以5.2.1的测试实例一为例,的测试实例一为例,对类对类Rectangle中的中的set服务展开测试服务展开测试。5.3 面向对象的集成测试面向对象的集成测试和系统测试和系统测试1面向对象软件的集成测试策略面向对象软件的集成测试策略(1)基于线程的测试)基于线程的测试 集成对响应系统的一个输入或事件所需的一组类,每个集成对响应系统的一个输入或事件所需的一组类,每个线程分别进行集成和测试,应用回归测试以保证没有产生副线程分别进行集成和测试,应用回归测试以保证没有产生副作用。作用。(2)基于使用的测试)基于使用的测试 按分层来组装系统,可先进行独立类的测试,然后用测按分层来组装系统,可先进行独立类的测试,然后用测试过的独立类对从属类进行测试,直到整个系统构造完成。试过的独立类对从属类进行测试,直到整个系统构造完成。(1)静态测试)静态测试:检测程序结构是否符合设计要求。检测程序结构是否符合设计要求。(2)动态测试)动态测试:设计测试用例,达到一定的测试覆盖标准。设计测试用例,达到一定的测试覆盖标准。(1)选定检测的类,参考)选定检测的类,参考OOD分析结果,确定出类的状态分析结果,确定出类的状态和相应的行为;和相应的行为;(2)确定覆盖标准,利用结构关系图确定待测类的所有关联)确定覆盖标准,利用结构关系图确定待测类的所有关联(3)根据程序中类的对象构造测试用例,确认使用什么输入)根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态,使用类的服务和期望产生什么行为等,还要激发类的状态,使用类的服务和期望产生什么行为等,还要设计一些类禁止的例子,确认类是否有不合法的行为产生。设计一些类禁止的例子,确认类是否有不合法的行为产生。5.3.2 面向对象软件的系统测试面向对象软件的系统测试(1)功能测试)功能测试以软件分析文档为标准,测试系统的功能是否达到要求,是否满足用户的需求。(2)强度测试)强度测试测试系统的负载情况和功能实现情况,比如信息系统能容纳多少人同时在线操作。(3)性能测试)性能测试与强度测试相结合,测试软件系统的运行性能。在测试前,用户一般会对软件系统的性能提出相应的指标,比如响应时限、传输速度、计算精度、出错率等。根据这些指标,对系统进行测试。(4)安全测试)安全测试验证安装在系统内的保护机构确实能够对系统进行保护。(5)恢复测试)恢复测试采用人工干扰使软件出错,中断使用,检测系统的恢复能力。(6)可用性测试)可用性测试测试用户是否能够满意使用,主要是指操作是否简便,操作界面是否符合使用习惯。(7)安装)安装/卸载测试卸载测试测试用户是否能方便地安装和卸载。总的来说,面向对象的集成测试和系统测试都是基于面向对象的分析和设计进行的,在分析阶段总结出的用例图、状态图、顺序图、协作图和活动图都可以作为集成测试和系统测试的依据。 面向对象开发技术的出现,对软件测试带来前所未有的冲击。面向对象独有的特点,使得传统的测试技术不再适用。本章主要讨论面向对象开发的相关概念,面向对象测试的相关概念,并着重介绍了类测试技术和测试驱动的实现。 3基于服务的类测试技术的测试流程是什么?基于服务的类测试技术的测试流程是什么? 4基于状态的类测试技术的测试流程是什么?基于状态的类测试技术的测试流程是什么? 6测试驱动的实现方式有哪些?测试驱动的实现方式有哪些?
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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