版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象的软件测试本章重点:掌握面向对象的软件测试基本概念掌握面向对象软件测试内容熟悉面向对象软件测试方法面向对象的软件测试本章重点:掌握面向对象的软件测试基本概念掌握面向对象软件测试内容熟悉面向对象软件测试方法面向对象方法是一种把面向对象的思想应用于软件开放过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。面向对象方法作为一种新型的独具优越性的新方法正在逐渐代替被广泛使用的面向过程开发方法,被看成是解决软件危机的新兴技术。面向对象技术产生更好的系统结构,更规范的编程风格,极大的优化了数据使用的安全性,提高了程序代码的重用,一些人就此认为面向对象技术开发出的程序无需进行测试。面向对象的软件测试一、面向对象的软件测试基本概念面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已成为不可能。而且,面向对象软件抛弃了传统的开发模式,对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。因此,传统的测试模型对面向对象软件已经不再适用。针对面向对象软件的开发特点,应该有一种新的测试模型。面向对象的软件测试传统测试模式与面向对象的测试模式的最主要的区别在于,面向对象的测试更关注对象而不是完成输入/输出的单一功能,这样的话测试可以在分析与设计阶段就先行介入,便得测试更好的配合软件生产过程并为之服务。与传统测试模式相比,面向对象测试的优点在于:更早地定义出测试用例;早期介入可以降低成本;尽早的编写系统测试用例以便于开发人员与测试人员对系统需求的理解保持一致;面向对象的测试模式更注重于软件的实质。面向对象的软件测试——区别具体有如下不同:1、测试的对象不同:传统软件测试的对象是面向过程的软件,一般用结构化方法构建;面向对象测试的对象是面向对象软件,采用面向对象的概念和原则,用面向对象的方法构建。2、测试的基本单位不同:前者是模块;面向对象测试的基本单元是类和对象。3、测试的方法和策略不同:传统软件测试采用白盒测试,黑盒测试,路径覆盖等方法;面向对象测试不仅吸纳了传统测试方法,也采用各种类测试等方法,而且集成测试和系统测试的方法和策略也很不相同。面向对象的软件测试——区别
广义的软件测试实际是由确认、验证、测试三个方面组成。确认:是评估将要开发的软件产品是否是正确无误、可行和有价值的。验证:是检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软件开发各阶段的要求或期望的结果相一致。验证意味着确保软件是会正确无误的实现软件的需求,开发过程是沿着正确的方向在进行。测试:与狭隘的测试概念统一。通常是经过单元测试、集成测试、系统测试三个环节。事实上,确认、验证、测试是相辅相成的。确认无疑会产生验证和测试的标准,而验证和测试通常又会帮助完成一些确认,特别是在系统测试阶段。面向对象的软件测试面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(OOA),面向对象设计(OOD),和面向对象编程(OOP)三个阶段。分析阶段产生整个问题空间的抽象描述,在此基础上,进一步归纳出适用于面向对象编程语言的类和类结构,最后形成代码。由于面向对象的特点,采用这种开发模型能有效的将分析设计的文本或图表代码化,不断适应用户需求的变动。针对这种开发模型,结合传统的测试步骤的划分,本文建议一种整个软件开发过程中不断测试的测试模型,使开发阶段的测试与编码完成后的单元测试、集成测试、系统测试成为一个整体。面向对象的软件测试OOATest和OODTest是对分析结果和设计结果的测试,主要是对分析设计产生的文本进行,是软件开发前期的关键性测试。OOPTest主要针对编程风格和程序代码实现进行测试,其主要的测试内容在面向对象单元测试和面向对象集成测试中体现。面向对象的软件测试——测试模型二、面向对象软件测试内容及方法1、面向对象分析的测试(OOATest)是"把E-R图和语义网络模型,即信息造型中的概念,与面向对象程序设计语言中的重要概念结合在一起而形成的分析方法",最后通常是得到问题空间的图表的形式描述。OOA直接映射问题空间,全面的将问题空间中实现功能的现实抽象化。OOA阶段的测试划分为以下五个方面:对认定的对象的测试对认定的结构的测试对认定的主题的测试对定义的属性和实例关联的测试对定义的服务和消息关联的测试二、面向对象软件测试内容及方法OOA中认定的对象是对问题空间中的结构,其他系统,设备,被记忆的事件,系统涉及的人员等实际实例的抽象。对它的测试可以从如下方面考虑:1、认定的对象是否全面,是否问题空间中所有涉及到的实例都反映在认定的抽象对象中。2、认定的对象是否具有多个属性。只有一个属性的对象通常应看成其他对象的属性,而不是抽象为独立的对象。3、对认定为同一对象的实例是否有共同的,区别于其他实例的共同属性。二、面向对象软件测试内容及方法4、对认定为同一对象的实例是否提供或需要相同的服务,如果服务随着不同的实例而变化,认定的对象就需要分解或利用继承性来分类表示。5、如果系统没有必要始终保持对象代表的实例的信息,提供或者得到关于它的服务,认定的对象也无必要。6、认定的对象的名称应该尽量准确,适用。二、面向对象软件测试内容及方法(2)对认定的结构的测试对认定的分类结构的测试可从如下方面着手:对于结构中的一种对象,尤其是处于高层的对象,是否在问题空间中含有不同于下一层对象的特殊可能性,即是否能派生出下一层对象。对于结构中的一种对象,尤其是处于同一低层的对象,是否能抽象出在现实中有意义的更一般的上层对象。对所有认定的对象,是否能在问题空间内向上层抽象出在现实中有意义的对象高层的对象的特性是否完全体现下层的共性低层的对象是否有高层特性基础上的特殊性二、面向对象软件测试内容及方法对认定的组装结构的测试从如下方面入手:整体(对象)和部件(对象)的组装关系是否符合现实的关系。整体(对象)的部件(对象)是否在考虑的问题空间中有实际应用。整体(对象)中是否遗漏了反映在问题空间中有用的部件(对象)。部件(对象)是否能够在问题空间中组装新的有现实意义的整体(对象)。二、面向对象软件测试内容及方法对主题层的测试应该考虑以下方面:贯彻GeorgeMiller的"7+2"原则,如果主题个数超过7个,就要求对有较密切属性和服务的主题进行归并。主题所反映的一组对象和结构是否具有相同和相近的属性和服务。认定的主题是否是对象和结构更高层的抽象,是否便于理解OOA结果的概貌(尤其是对非技术人员的OOA结果读者)。主题间的消息联系(抽象)是否代表了主题所反映的对象和结构之间的所有关联。二、面向对象软件测试内容及方法对定义的属性和实例关联的测试对属性和实例关联的测试从如下方面考虑:定义的属性是否对相应的对象和分类结构的每个现实实例都适用。定义的属性在现实世界是否与这种实例关系密切。定义的属性在问题空间是否与这种实例关系密切。定义的属性是否能够不依赖于其他属性被独立理解。定义的属性在分类结构中的位置是否恰当,低层对象的共有属性是否在上层对象属性体现。二、面向对象软件测试内容及方法对定义的属性和实例关联的测试在问题空间中每个对象的属性是否定义完整。定义的实例关联是否符合现实。在问题空间中实例关联是否定义完整,特别需要注意1-多和多-多的实例关联。二、面向对象软件测试内容及方法对定义的服务和消息关联的测试对定义的服务和消息关联的测试从如下方面进行:对象和结构在问题空间的不同状态是否定义了相应的服务。对象或结构所需要的服务是否都定义了相应的消息关联。定义的消息关联所指引的服务提供是否正确。沿着消息关联执行的线程是否合理,是否符合现实过程。定义的服务是否重复,是否定义了能够得到的服务。二、面向对象软件测试内容及方法三、面向对象设计的测试(OODTest)面向对象设计(OOD)
采用"造型的观点",以OOA为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象。OOD确定类和类结构不仅是满足当前需求分析的要求,更重要的是通过重新组合或加以适当的补充,能方便实现功能的重用和扩增,以不断适应用户的要求。因此,对OOD的测试,本文建议针对功能的实现和重用以及对OOA结果的拓展,从如下三方面考虑:二、面向对象设计的测试(OODTest)从如下三方面考虑:对认定的类的测试对构造的类层次结构的测试对类库的支持的测试(1)对认定的类的测试OOD认定的类可以是OOA中认定的对象,也可以是对象所需要的服务的抽象,对象所具有的属性的抽象。认定的类原则上应该尽量基础性,这样才便于维护和重用。参考中所提出的一些准则,测试认定的类:1、是否含盖了OOA中所有认定的对象。2、是否能体现OOA中定义的属性。3、是否能实现OOA中定义的服务。4、是否对应着一个含义明确的数据抽象。5、是否尽可能少的依赖其他类。6、类中的方法(C++:类的成员函数)是否单用途。(2)对构造的类层次结构的测试为能充分发挥面向对象的继承共享特性,OOD的类层次结构,通常基于OOA中产生的分类结构的原则来组织,着重体现父类和子类间一般性和特殊性。在当前的问题空间,对类层次结构的主要要求是能在解空间构造实现全部功能的结构框架。为此,测试如下方面:1、类层次结构是否含盖了所有定义的类。2、是否能体现OOA中所定义的实例关联。3、是否能实现OOA中所定义的消息关联。4、子类是否具有父类没有的新特性。5、子类间的共同特性是否完全在父类中得以体现。(3)对类库支持的测试对类库的支持虽然也属于类层次结构的组织问题,但其强调的重点是再次软件开发的重用。由于它并不直接影响当前软件的开发和功能实现,因此,将其单独提出来测试,也可作为对高质量类层次结构的评估。提出的准则,拟订测试点如下:1、一组子类中关于某种含义相同或基本相同的操作,是否有相同的接口(包括名字和参数表)。2、类中方法(C++:类的成员函数)功能是否较单纯,相应的代码行是否较少([5]中建议为不超过30行)。3、类的层次结构是否是深度大,宽度小。四、面向对象编程的测试(OOPTest)典型的面向对象程序具有继承、封装和多态的新特性,这使得传统的测试策略必须有所改变。封装是对数据的隐藏,外界只能通过被提供的操作来访问或修改数据,这样降低了数据被任意修改和读写的可能性,降低了传统程序中对数据非法操作的测试。继承是面向对象程序的重要特点,继承使得代码的重用率提高,同时也使错误传播的概率提高。多态使得面向对象程序对外呈现出强大的处理能力,但同时却使得程序内"同一"函数的行为复杂化,测试时不得不考虑不同类型具体执行的代码和产生的行为。面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通过消息传递来协同实现设计要求的功能。正是这种面向对象程序风格,将出现的错误能精确的确定在某一具体的类。因此,在面向对象编程(OOP)阶段,忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格,主要体现为以下两个方面(假设编程使用C++语言)。数据成员是否满足数据封装的要求类是否实现了要求的功能1、数据成员是否满足数据封装的要求数据封装是数据和数据有关的操作的集合。检查数据成员是否满足数据封装的要求,基本原则是数据成员是否被外界(数据成员所属的类或子类以外的调用)直接调用。更直观的说,当改编数据成员的结构时,是否影响了类的对外接口,是否会导致相应外界必须改动。2、类是否实现了要求的功能类所实现的功能,都是通过类的成员函数执行。在测试类的功能实现时,应该首先保证类成员函数的正确性。单独的看待类的成员函数,与面向过程程序中的函数或过程没有本质的区别,几乎所有传统的单元测试中所使用的方法,都可在面向对象的单元测试中使用五、面向对象的单元测试(OOUnitTest)传统的单元测试是针对程序的函数、过程或完成某一定功能的程序块。单元测试一般建议由程序员完成。在面向对象程序中,类成员函数通常都很小,功能单一,函数的间调用频繁,容易出现一些不宜发现的错误。六、面向对象的集成测试(OOIntegrateTest)传统的集成测试,是由底向上通过集成完成的功能模块进行测试,一般可以在部分程序编译完成的情况下进行。而对于面向对象程序,相互调用的功能是散布在程序的不同类中,类通过消息相互作用申请和提供服务。类的行为与它的状态密切相关,状态不仅仅是体现在类数据成员的值,也许还包括其他类中的状态信息。由此可见,类相互依赖极其紧密,根本无法在编译不完全的程序上对类进行测试。所以,面向对象的集成测试通常需要在整个程序编译完成后进行。此外,面向对象程序具有动态特性,程序的控制流往往无法确定,因此也只能对整个编译后的程序做基于黑盒子的集成测试。 面向对象的集成测试可以分成两步进行:先进行静态测试,再进行动态测试。静态测试主要针对程序的结构进行,检测程序结构是否符合设计要求。动态测试设计测试用例时,通常需要上述的功能调用结构图、类关系图或者实体关系图为参考,确定不需要被重复测试的部分,从而优化测试用例,减少测试工作量,使得进行的测试能够达到一定覆盖标准。七、面向对象的系统测试(OOSystemTest)系统测试应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段。系统测试时,应该参考OOA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保管部工作制度
- 再就业工作制度
- 依恋工作制度
- 养车工作制度
- 六查工作制度
- 乡精准工作制度
- 保洁人工作制度
- 保密柜工作制度
- 协管员工作制度
- 制衣厂工作制度
- 2026年浙江省衢州市六校联谊初三百日冲刺考试英语试题含解析
- 一次性使用止血套环产品技术要求北京中诺恒康生物
- 政法单位联席会议制度
- 休克诊疗规范课件
- 2026年陕西航空职业技术学院单招职业倾向性考试题库及一套答案详解
- (甘肃一模)2026年甘肃省高三年级第一次模拟考试英语试题(含答案)+听力音频+听力原文
- 第五版-FMEA-新版FMEA【第五版】
- GB/T 12144-2009氧化铽
- GA/T 1004-2012校车标志灯
- 移动变电站修理工艺规程
- 数学中考《四点共圆型考题》专题复习课件
评论
0/150
提交评论