- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LOGO 5.2面向对象的单元测试 在面向对象软件的设计和开发中,说到底就是对类的设计和开发。因为面向对象软件的功能的实现,是由类通过消息传递来完成的。因此,面向对象的单元测试,实际就是对类的测试。通过前面的测试策略介绍,类测试内容包括:基于服务的测试、基于状态的测试、基于响应状态的测试,本文将着重介绍前两种类测试技术。 Kung等人提出的块分支图(Block Branch Diagram,BBD)是一种比较好的类的服务测试模型,如图5-1所示。 BBD五元组可写为f=(Du,Dd,P,Fe,G),其中:Du={di| di∈f 引用的全局数据或类数据};Dd={di| di∈f修改了全局数据或类数据};P={Xlθl,X2θ2,…,Xnθn,Xn+1θn+1∈f的参数表和函数返回值,θi为↓(表示输入)、↑(表示输出)、↓↑(表示输入/输出),若Xn+1缺省,则无返回值};Fe={Fi| Fi∈被f 调用的其他服务};G是一个有向图,叫块体,它是按照控制流图的思想修改f的程序流程图而来的,表示f的控制结构,f中的复合条件判断被分解,每个判断框只有单个的条件。 5.2.1 基于服务的类测试技术 ? 基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作。它可以采用传统的白盒测试方法,如:基路径法、插桩法、边界值法、排错法、等价类法等。但由于受面向对象软件测试技术发展水平等方面因素的限制,测试人员在选择测试用例时往往都是根据直觉和经验来进行,给测试带来很大的盲目性;同时由于测试人员的个性及倾向性也使得选择的测试用例仅能测试出其所熟悉的某一方面的错误,许多隐含的其他错误不能被检测出来,这在无形中降低了软件的可靠性。为克服软件测试的盲目性和局限性,保证测试的质量,提高软件的可靠性,我们提出采用Kung提出的块分支图法。 1.基于服务的类测试策略 BBD的获得方法通常可由源程序画出的流程图构造出来,或者在软件的分析设计阶段构造出。整个模型支持路径测试、等价类划分和边界值的测试方法,可以帮助测试人员全面地、有针对性地构造测试用例,我们可以将源程序的流程进行抽象,代码如下: 由此得到的BBD图如图5-2所示,借助BBD即可对类进行测试。 2.测试实例一 下面用JAVA设计一个类Rectangle,要求如下。 (1)类中的私有变量存放Rectangle的长和宽,并且设置它们的默认值为1; (2)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内; (3)求周长Perimeter。 其程序如下: 对于以上类Rectangle中Set服务的BBD图如图5-3所示 1.对象 对象是一个可操作的实体,是由保存对象属性的特定的数据和操作这些数据的操作封装在一起构成的整体。对象是一个基本的可计算的实体,对象之间通过消息机制相互发生作用。 对象是测试的最直接目标,对象是否符合需求说明、对象与对象之间是否能进行协同工作,是我们测试的焦点。程序运行时,每个对象都将历经创建、访问、修改和删除4个过程,这4个过程称为对象的生命周期。针对对象进行测试,应从多方面测试对象的状态是否与其生命周期相符。 5.1.1 面向对象的基本概念 2.类 类是具有相同或相似性质的对象抽象的集合。因此,对象的抽象就是类,类的具体化就是对象,也可以说类的实例是对象。类通过构造函数来创造新的对象,并对新的对象进行初始化,因此在对类进行测试时,需要考虑对象初始化过程是否正确。 3.封装 封装就是把对象的属性和方法结合成一个整体,尽可能掩盖其内部的细节。封装后的对象,只能知道输入和输出,无法了解内部的操作过程,也无法真正了解内部数据的真实状态。这一特征简化了对对象的使用,同时也给测试带来了难度。 4.继承 继承是类之间的一种联系,类可以通过派生生成新类,派生出的新类称为子类。通过继承机制,子类可以继承父类的特点和功能,同时还可以具有自己独有的特点和功能。这一特征为缺陷的扩散提供了途径,如果父类带有缺陷,派生出的子类也会带有缺陷,这会对后面的开发带来隐患。 5.多态 多态提供了将对象堪称是一种或多种类型的能力。多态包含几种不同的形式,参数多态、包含多态和过载多态。参数多态是能够根据一个或多个参数来定义一种类型的能力;包含多态是同一个类具有不同表现形式的一种现象,这一特征使得参数具有对象替换的能力。多态性增强了软件的灵活性和重用性,同时也使得测试的工作量成倍增加。 6.消息 消息是对象的操作将要执行的请求,是对象之间产生相互作用的方式。消息包含一些参数,在程序执行时,参数值可以由消息的发送者
文档评论(0)