收藏 分销(赏)

面向对象测试技术PPT.ppt

上传人:快乐****生活 文档编号:6033516 上传时间:2024-11-26 格式:PPT 页数:85 大小:1.26MB 下载积分:16 金币
下载 相关 举报
面向对象测试技术PPT.ppt_第1页
第1页 / 共85页
面向对象测试技术PPT.ppt_第2页
第2页 / 共85页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 面向对象测试技术,1,一、面向对象测试概述,1.,传统的软件开发存在的问题,(,1,)软件重用性差,(,2,)软件可维护性差,(,3,)开发出的软件不易满足用户需求,2,一、面向对象测试概述,2,、面向对象技术,基本概念,(,1,)对象,(,2,)对象的状态和行为,(,3,)类,(,4,)类的结构(类间关系),(,5,)消息和方法,3,一、面向对象测试概述,面向对象特征,(,1,)对象唯一性,(,2,)分类性,(,3,)继承性,(,4,)多态性,4,一、面向对象测试概述,面向对象要素,(,1,)抽象,(,2,)封装,(,3,)共享,5,面向对象软件开发方法与传统的软件开发方法的区别:,(,1,)调查、分析系统需求,建立一个全面、合理、统一的模型。,(,2,)对象设计。,(,3,)程序实现。,6,面向对象软件开发过程,面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象分析(,OOA,),面向对象设计(,OOD,),和面向对象编程(,OOP,)三个阶段。,针对这种开发模型,结合传统的测试步骤的划分,我们把面向对象的软件测试分为:,面向对象分析的测试,,,面向对象设计的测试,,,面向对象编程的测试,,,面向对象单元测试,,,面向对象集成测试,,,面向对象系统测试,。,7,面向对象测试,在传统的面向过程程序中,对于函数,y=Function(x);,只需要考虑一个函数(,Function(),)的行为特点,在面向对象程序中,你不得不同时考虑基类函数(,Base:Function(),)的行为和继承类函数(,Derived:Function(),)的行为。,面向对象程序的结构不再是传统的功能模块结构,作为一个整体,原有集成测试所要求的逐步将开发的模块搭建在一起进行测试的方法已不可能。,8,面向对象测试,面向对象软件测试是根据面向对象的软件开发过程结合面向对象的特点提出的。它包括,分析与设计模型测试技术,、,类测试技术,、,对象交互测试技术,、,类层次结构测试技术,、,面向对象系统测试技术,5,大部分。,9,面向对象测试,面向对象软件对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。针对面向对象软件的开发特点,应该有一种新的测试模型。,10,二、面向对象模型,OOA,OOD,OOP,OOA,Test,OOD,Test,OOP Test,OO Unit,Test,OO Integrate Test,OO System Test,11,二、面向对象模型,OOA,:将问题空间中实现的功能进行抽象,问题空间中的实例抽象为对象,用对象的结构反映问题空间的复杂关系,用属性和服务表示实例的特殊性和行为,OOD,:建立类结构或进一步构造类库,实现分析结果对问题空间的抽象。,OOP,:软件的计算机实现。,12,二、面向对象模型,OOA Test:,面向对象分析的测试,OOD Test:,面向对象设计的测试,OOP Test:,面向对象编程的测试,OO Unit Test:,面向对象单元测试,OO Integrate Test:,面向对象集成测试,OO System Test:,面向对象系统测试,13,三、面向对象分析的测试,OOA,直接映射问题空间,全面地在问题空间中实现功能的现实抽象化。,OOA,必须回答:,(,1,)为完成用户要求,系统应提供哪些功能,(,2,)系统应由哪些对象构成,(,3,)每个对象应有哪些属性和服务,(,4,)对象间应有怎样的联系,14,三、面向对象分析的测试,对,OOA,阶段的测试划分为以下五个方面:,对类和对象范围的测试 对结构范围的测试 对主题的测试 对定义的属性和实例关联的测试 对定义的服务和消息关联的测试,15,(一)对类和对象范围的测试,OOA,中认定的对象是对问题空间中的结构,其他系统,设备,被记忆的事件,系统涉及的人员等实际实例的抽象。对它的测试可以从如下方面考虑:,(,1,)抽象的对象是否全面,是否问题空间中所有涉及到的实例都反映在认定的抽象对象中。,(,2,)认定的对象是否具有多个属性。只有一个属性的对象通常应看成其他对象的属性,而不是抽象为独立的对象。,16,(,3,)对认定为同一对象的实例是否有共同的,区别于其他实例的共同属性。,(,4,)对认定为同一对象的实例是否提供或需要相同的服务,如果服务随着不同的实例而变化,认定的对象就需要分解或利用继承性来分类表示。,(,5,)认定的对象的名称应该尽量准确,适用。,17,(一),对类和对象范围的测试,如何在众多调查资料中进行确定类与对象呢?解决这一问题的方法一般包含以下几个方面,(,1,)基础素材,(,2,)潜在的对象,(,3,)确定对象,(,4,)图形表示,用图形化描述类和对象,18,(二)对结构范围的测试,结构表示问题空间的复杂程度。标识结构的目的在于管理问题域模型。在,OOA,中,结构是指,泛化,特化结构,(is a),和,整体,部分结构,(has a),两部分的总和。,19,1,、确定泛化,特化结构(分类结构),对于结构中的一种对象,尤其是处于高层的对象,是否在问题空间中含有不同于下一层对象的特殊性可能,即是否能派生出下一层对象,对于结构中的一种对象,尤其是处于同一低层的对象,是否能抽象出现实中有有意义的更一般的上层对象,对所有认定的对象,是否能在问题空间内向上层抽象出在现实中有意义的对象,高层的对象的特性是否完全体现下层的共性,低层的对象是否有高层特性基础上的特殊性,20,2,、确定整体,部分结构(组装结构),整体(对象)和部分(对象)的组装关系是否符合现实的关系,整体(对象)和部分(对象)是否在考虑的问题空间中的有实际应用,整体(对象)是否遗漏了反映在问题空间中有用的部件,部分(对象)是否能够在问题空间中组装新的有现实意义的整体(对象),21,(三)对主题的测试,主题是一种知道研究和处理大型复杂模型的机制。有助于分解系统,区分结构,避免过多的信息量同时出现所带来的麻烦。主题的确定可以帮助人们从一个更高的层次上观察和表达系统的总体模型。主题如同文章对个部分内容的概要。,22,对主题层的测试应该考虑以下方面:,依据,George Miler,的“,7+2”,原则,如果主题个数超过,7,个,就要求对有较密切属性和服务的主题进行归并。,主题所反映的一组对象和结构是否具有相同和相近的属性和服务。,认定的主题是否是对象和结构更高层的抽象,是否便于理解,OOA,结果的概括。,主题间的消息联系(抽象)是否代表了主题所反映的对象和结构之间的所有关联。,23,(四)对定义的属性和实例关联的测试,属性是用来描述对象或结构所反映的实例的特性。而实例关联是反映实例集合间的映射关系。,对属性和实例关联的测试从如下方面考虑:,定义的属性是否对相应的对象和分类结构的每个现实实例都适用。,定义的属性在现实世界是否与这种实例关系密切。,24,定义的属性在问题空间是否与这种实例关系密切。,定义的属性是否能够不依赖于其他属性被独立理解。,定义的属性在分类结构中的位置是否恰当,低层对象的共有属性是否在上层对象属性体现。,在问题空间中每个对象的属性是否定义完整。,定义的实例关联是否符合现实。,在问题空间中实例关联是否定义完整,特别需要注意,1-,多和多,-,多的实例关联。,25,具体步骤如下:,1,、确定属性的范围,2,、实例连接,3,、详细说明属性和实例连接的约束,26,(五)对定义的服务和消息关联的测试,对象接到消息后所执行的操作称为为它提供的服务。描述了系统需要执行的处理和功能。定义服务的目的在于定义对象的行为和对象间的通信(消息连接)。事实上,两个对象之间可能存在着由于通信需要而形成的关系,即消息连接。消息连接表示从一个对象发送消息到另一个对象,由那个对象完成某些处理。,27,确定服务的具体解决方法包括四个基本步骤:,1,、识别对象状态,2,、识别所要请求的服务,3,、识别消息连接,4,、定义服务,28,对定义的服务和消息关联的测试从以下方面进行:,对象和结构在问题空间的不同状态是否定义了相应的服务。,对象或结构所需要的服务是否都定义了相应的消息关联。,定义的消息关联所指引的服务提供是否正确。,沿着消息关联执行的线程是否合理,是否符合现实过程。,定义的服务是否重复,是否定义了能够得到的服务。,29,四、面向对象设计的测试,面向对象设计(,OOD,)采用“造型的观点”,以,OOA,为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象。,OOD,归纳的类,可以是对象简单的延续,可以是不同对象的相同或相似的服务。由此可见,,OOD,不是在,OOA,上的另一思维方式的大动干戈,而是,OOA,的进一步细化和更高层的抽象。,面向对象设计(,OOD,)是以,OOA,归纳出的类为基础,建立类结构甚至进一步构造成类库,实现分析结果对问题空间的抽象。,30,OOD,设计模型有四个部分和五个层次组成:,问题空间部件,PDC,人机交互部件,HIC,任务管理部件,TMC,数据管理部件,DMC,31,五个层次为主题层、类与对象层、结构层、属性层和服务层。这五个层次分别面向对象分析方法中的定义主题、确定对象、确定结构、定义属性、确定服务等行动。,问题空间部件,人机交互部件,任务管理部件,数据管理部件,主题层,类与对象层,结构层,属性层,服务层,问题空间部件,人机交互部件,任务管理部件,数据管理部件,结构层,32,从以下方面对,OOD,进行测试:,确定测试的问题域,人机交互部分设计的测试,对认定的类的测试,对构造的类层次结构的测试,对类库支持的测试,对测试结果及对模型的测试覆盖率进行评估,33,(一)确定测试的问题域,在面向对象设计中,面向对象分析(,OOA,)的结果恰好符合面向对象设计的问题空间部分,因此,OOA,的结果就是,OOD,部分模型的一个完整部分。为了解决一些特定设计所需要考虑的实际变化,要对,OOA,的结果进行一些改进和增补。根据需求的变化,对,OOA,产生的模型中的某些类与对象、结构、属性、操作进行组合与分解。根据,OOD,的附加原则,增加必要的类、属性和关系。,34,(一)确定测试的问题域,1,、复用设计,2,、把问题域相关的类关联起来,3,、加入一般化类以建立类间协议,4,、调整继承支持级别,5,、改进性嫩,6,、加入较低层的构件,35,(二)人机交互部件设计的测试,OOA,阶段给出所需的属性和操作,同时必须根据需求把交互的细节加入到用户界面的设计中,包括有效的人机交互所必须的实际显示和输入。人机交互部件的测试策略由以下几个方面构成:用户分类;描述人及任务脚本;设计命令层;设计详细的交互;继续做原型;设计,HIC,类;根据图形用户界面进行设计;,36,(二)人机交互部件设计的测试,1,、用户分类,按技能层次分类:外行,/,初学者,/,熟练者,/,专家,按组织层次分类:行政人员,/,管理人员,/,专业技术人员,/,其他办事员,按职能分类:顾客,/,职员,37,(二)人机交互部件设计的测试,2,、描述人及其任务脚本,3,、设计命令层,4,、设计详细的交互,5,、继续做原型,6,、设计,HIC,类,7,、根据,GUI,进行设计,38,(三)对任务管理部件(,TMC,)设计的测试,OOD,中,任务是指系统为了达到某一设定目标而进行的一连串数据操作(或服务),若干任务的并发执行叫做多任务。任务能简化并发行为的设计和编码,,TMC,的设计就是针对任务项,对一连串数据操作进行定义和封装,对于多任务要确定任务协调部件,以达到系统在运行中对各项任务的合理组织与管理,39,(三)对任务管理部件(,TMC,)设计的测试,1,、,TMC,设计策略,识别事件驱动任务,识别时钟驱动任务,识别优先任务和关键任务,识别协调者,审查每个任务,使任务数尽可能少,定义每个任务:包括任务名、驱动方式、触发该任务的事件、时间间隔、如何通信等,40,(三)对任务管理部件(,TMC,)设计的测试,2,、设计步骤,对类和对象进行细化,建立系统的,OOA,和,OOD,工作表格。,审查,OOA,和,OOD,工作表格。,构建新的类。,任务管理部件一般在信息系统中使用较少,在控制系统中应用较多。,41,(四)对数据管理部件(,DMC,)设计的测试,数据管理部件提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。它分离了数据管理机构所关心的事项,包括文件、关系型,DBMS,和面向对象,DBMS,等。,42,(四)对数据管理部件(,DMC,)设计的测试,1,、数据管理方法,文件管理,关系数据库管理系统,面向对象数据库管理系统,2,、数据管理部件的设计,数据存放设计,相应的操作,43,为能充分发挥面向对象的继承共享特性,,OOD,的类层次结构,通常基于,OOA,中产生的分类结构的原则来组织,着重体现父类和子类的一般性和特殊性。在当前的问题空间,对类层次结构的主要要求是能在解空间构造实现全部功能的结构框架。为此,要测试以下方面:,类层次结构是否含盖了所有定义的类。,是否能体现,OOA,中所定义的实例关联。,是否能实现,OOA,中所定义的消息关联。,子类是否具有父类没有的新特性。,子类间的共同特性是否完全在父类中得以体现。,44,(四)对数据管理部件(,DMC,)设计的测试,数据管理部件提供了在数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。它分离了数据管理机构所关心的事项,包括文件、关系型,DBMS,和面向对象,DBMS,等。,45,(四)对数据管理部件(,DMC,)设计的测试,1,、数据管理方法,文件管理,关系数据库管理系统,面向对象数据库管理系统,2,、数据管理部件的设计,数据存放设计,相应的操作,46,为能充分发挥面向对象的继承共享特性,,OOD,的类层次结构,通常基于,OOA,中产生的分类结构的原则来组织,着重体现父类和子类的一般性和特殊性。在当前的问题空间,对类层次结构的主要要求是能在解空间构造实现全部功能的结构框架。为此,要测试以下方面:,类层次结构是否含盖了所有定义的类。,是否能体现,OOA,中所定义的实例关联。,是否能实现,OOA,中所定义的消息关联。,子类是否具有父类没有的新特性。,子类间的共同特性是否完全在父类中得以体现。,47,五、面向对象编程的测试,典型的面向对象程序具有继承、封装和多态的新特性,这使得传统的测试策略必须有所改变。封装是对数据的隐藏,外界只能通过被提供的操作来访问或修改数据,这样降低了数据被任意修改和读写的可能性,降低了传统程序中对数据非法操作的测试。继承是面向对象程序的重要特点,继承使得代码的重用率提高,同时也使错误传播的概率提高。,48,五、面向对象编程的测试,继承使得传统测试遇见了这样一个难题:对继承的代码究竟应该怎样测试?多态使得面向对象程序对外呈现出强大的处理能力,但同时却使得程序内“同一”函数的行为复杂化,测试时不得不考虑不同类型具体执行的代码和产生的行为。,49,面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通过消息传递来协同实现设计要求的功能。正是这种面向对象程序风格,将出现的错误能精确的确定在某一具体的类。因此,在面向对象编程(,OOP,)阶段,忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格,主要体现为以下两个方面(假设编程使用,C+,语言):数据成员是否满足数据封装的要求 类是否实现了要求的功能,50,例,P4-2,51,六、面向对象的单元测试,传统的单元测试是针对程序的函数、过程或完成某一定功能的程序块。沿用单元测试的概念,实际测试类成员函数。一些传统的测试方法在面向对象的单元测试中都可以使用。如等价类划分法,因果图法,边值分析法,逻辑覆盖法,路径分析法,等等,单元测试一般建议由程序员完成。,52,六、面向对象的单元测试,面向对象的单元测试的对象是软件设计的最小单位,类。单元测试的依据是详细设计,单元测试应对类中所有重要的属性和方法设计测试用例,以发现类内部的错误。单元测试多采用白盒测试技术,系统内多个类快可以并行进行测试。沿用单元测试概念,实际测试类成员函数。一些传统的测试方法在面向对象的单元测试中都可以使用,如等价类划分、边界值分析、因果图、逻辑覆盖、路径分析法等。,53,1,、单元测试的内容,面向对象的单元就是类,单元测试实际测试的就是对类的测试。类测试的目的主要确保一个类的代码能够完全满足类的说明所描述的要求。,54,2,、单元测试开始的时间,单元测试开始的时间一般在完全说明了这个类,并且准备对其编码后不久。单元测试开始时要制定一个测试计划。,在反复迭代的过程中,类的实现和说明在进程中可能会发生变化,所以应该在软件的其他部件使用该类之前对类进行测试,同时还有必要执行回归测试。,55,3,、单元测试的人员,由另一个类的开发人员编写测试计划,由该类的开发人员完成测试,避免对类说明的错误理解,56,4,、单元测试方法,单元测试的方法有代码检查和执行测试用例。在某些情况下,用代码检查代替基于执行的测试方法是可行的,但是,代码检查也存在以下两个不利之处:,代码检查容易受人为因素影响,代码检查在回归测试方面明显需要更多的工作量,57,类测试按顺序分为以下三部分:,基于服务的测试,:测试类中的每个方法。,基于状态的测试,:测试类的实例在其生命周期各个状态下的情况。,基于响应状态的测试,:从类和对象的责任出发,以外界向对象发送特定消息序列的方法来测试对象的各个响应状态。,58,5,、方法的测试,在测试类的功能实现时,应该首先保证类成员函数的正确性。,测试时主要考虑封装在类中的一个方法对数据进行的操作,可以采用传统的模块测试方法,通过向所在对象发消息来执行,它的执行与状态有关。,传统的针对模块的设计测试用例的技术,如等价划分、边界值分析、因果图、逻辑覆盖、路径覆盖等方法,仍然可以作为测试类中每个方法的主要技术。,59,在面向对象的系统中的方法,是通过消息来驱动执行的,要测试类中的方法,必须用一个,驱动程序,对被测方法发送一条消息以驱动其执行,如果被测模块或方法中调用了其他模块或方法,则需要设计一个模拟被调子程序功能的,存根程序,,驱动程序、存根程序及被测模块或方法组成一个独立的可执行单元。,60,在面向对象软件中,在保证单个方法功能正确的基础上,还应该处理好测试方法之间的协助关系。,为了提高方法的重用性,设计方法的一个准则是提高方法的内聚,即在一个方法中只完成单个功能。,对于继承过来的方法,也要加以测试。,运行测试用例的时候,必须提供能够实例化的桩类,以及起驱动器作用的“主程序”类,来提供和分析测试用例。,61,六、面向对象的单元测试,6,、构建测试用例,62,7、测试程度,可以根据已经测试了多少类的实现和多少类的说明来衡量测试的充分性。通常需要将这两者都考虑到,希望测试到操作和状态转换的各种组合情况。一个对象能维持自己的状态,而状态一般来说也会影响操作的含义。,63,七、面向对象的集成测试,传统的集成测试,是由底向上通过集成完成的功能模块进行测试,一般可以在部分程序编译完成的情况下进行。,对于面向对象程序,相互调用的功能是散布在程序的不同类中,类通过消息相互作用申请和提供服务。类的行为与它的状态密切相关,状态不仅仅是体现在类数据成员的值,也许还包括其他类中的状态信息。由此可见,类相互依赖极其紧密,根本无法在编译不完全的程序上对类进行测试。面向对象的集成测试通常需要在整个程序编译完成后进行。,面向对象程序具有动态特性,程序的控制流往往无法确定,因此也只能对整个编译后的程序做基于黑盒的集成测试。,64,七、面向对象的集成测试,把一组相互有影响的类看作一个整体称为类簇。类簇的测试主要依据系统中相关类的层次关系,检查类之间相互作用的正确性,即检查各相关类之间消息连接的合法性、子类的继承性与父类的一致性、动态绑定执行的正确性、类簇协同完成系统功能的正确性等。其测试有两种不同策略:基于类间协作关系的横向测试和基于类间继承关系的纵向测试。,65,1,、基于类间协作关系的横向测试,由系统的一个输入事件为激励,对其触发的一组类进行测试,执行相应的操作,/,消息处理路径,最后终止于某一输出时间。应用回归测试对以测试过的类集再重新执行一次,以保证加入新类时不会产生意外的结果,66,2,、基于类间继承关系的纵向测试,首先通过测试独立的类来开始构造系统,在独立类测试完成后,进行下一层继承独立类的类的测试,这个依赖类层次的测试序列一直循环执行到构造完整个系统为止。,集成测试在面向对象系统中属于应用生命周期的一个阶段,可在两个层次上进行:,对一个新类进行测试,并测试在定义中所涉及的那些类的集成。,将各部件集合在一起组成完整的系统进行测试。,67,面向对象的集成测试能够检测出相对独立的单元测试无法检测出的那些类相互作用时才会产生的错误。基于单元测试对成员函数行为正确性的保证,集成测试只关注于系统的结构和内部的相互作用。面向对象的集成测试可以分成两步进行:先进行静态测试,再进行动态测试。,68,静态测试主要针对程序的结构进行,检测程序结构是否符合设计要求。现在流行的一些测试软件都能提供一种称为“可逆性工程”的功能,即通过原程序得到类关系图和函数功能调用关系图。通过“可逆性工程”得到的结果与,OOD,的结果相互比较,检测程序结构和实现上是否有缺陷,通过这种方法检测,OOP,是否达到了,OOD,的要求。,69,动态测试设计测试用例时,通常需要功能调用结构图、类关系图或者实体关系图为参考,确定不需要被重复测试的部分,从而优化测试用例,减少测试工作量,使得进行的测试能够达到一定覆盖标准。测试所要达到的覆盖标准可以是:达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对所有执行线程的一定覆盖率;达到类的所有状态的一定覆盖率等。同时也可以考虑使用现有的一些测试工具 来得到程序代码执行的覆盖率。,70,具体设计测试用例,参考下列步骤:,1.,先选定检测的类,参考,OOD,分析结果,仔细出类的状态和相应的行为,类或成员函数间传递的消息,输入或输出的界定等。,2.,确定覆盖标准。,3.,利用结构关系图确定待测类的所有关联。,4.,根据程序中类的对象构造测试用例,确认使用什么输入激发类的状态、使用类的服务和期望产生什么行为等。,71,注,:设计测试用例时,不但要设计确认类功能满足的输入,还应该有意识的设计一些被禁止的例子,确认类是否有不合法的行为产生,如发送与类状态不相适应的消息,要求不相适应的服务等。根据具体情况,动态的集成测试,有时也可以通过系统测试完成。,72,八、面向对象的系统测试,通过单元测试和集成测试,仅能保证软件开发的功能得以实现。但不能确认在实际运行时,它是否满足用户的需要,是否大量存在实际使用条件下会被诱发产生错误的隐患。为此,对完成开发的软件必须经过规范的系统测试。,开发完成的软件仅仅是实际投入使用系统的一个组成部分,需要测试它与系统其他部分配套运行的表现,以保证在系统各部分协调工作的环境下也能正常工作。,73,八、面向对象的系统测试,系统测试应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段。系统测试时,应该参考,OOA,分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全,再现,问题空间。系统测试不仅是检测软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认。,74,具体测试内容包括:,功能测试:测试是否满足开发要求,是否能够提供设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准。,强度测试:测试系统的能力最高实际限度,即软件在一些超负荷的情况,功能实现情况。如要求软件某一行为的大量重复、输入大量的数据或大数值数据、对数据库大量复杂的查询等。,75,性能测试:测试软件的运行性能。这种测试常常与强度测试结合进行,需要事先对被测软件提出性能指标,如传输连接的最长时限、传输的错误率、计算的精度、记录的精度、响应的时限和恢复时限等。,安全测试:验证安装在系统内的保护机构确实能够对系统进行保护,使之不受各种非常的干扰。安全测试时需要设计一些测试用例试图突破系统的安全保密措施,检验系统是否有安全保密的漏洞。,76,恢复测试:采用人工的干扰使软件出错,中断使用,检测系统的恢复能力,特别是通讯系统。恢复测试时,应该参考性能测试的相关测试指标。,可用性测试:测试用户是否能够满意使用。具体体现为操作是否方便,用户界面是否友好等。,安装,/,卸载测试(,install/uninstall test,)等等。,77,八、面向对象的系统测试,基于,UML,的系统测试,考察系统规格说明、用例图、,GUI,状态图。,构建用例与系统功能的关系矩阵,建立测试覆盖的初步标准,从对应于扩展基本用例的真实用例中导出测试用例;,通过所有真实用例开发测试用例,由,GUI,外观有限状态机描述导出有限状态机,通过有限状态机导出测试用例,通过基于状态的事件表导出测试用例,这种工作必须对每个状态重复进行,78,八、面向对象的系统测试,基于状态图的系统测试,状态图是很好的系统测试的基础。问题是,,UML,将状态图规定为类级的。合成多个类的状态图得到一个系统级的状态图很难。一种可行的方法是,将每个类级的状态图转换成一组,EDPN,(事件驱动的,Petri,网),然后合成,EDPN,。,79,九、面向对象的其他测试,1,、基于故障的测试,基于故障的测试,(fault_based testing),与传统的错误推测法类似,也是首先推测软件中可能有的错误,然后设计出最可能发现这些错误的测试用例。例如,软件工程师经常在问题的边界处犯错误,因此,应该着重检查边界情况。,80,1,、基于故障的测试,为了推测出软件中可能有的错误,应该仔细研究分析模型和设计模型,而且在很大程度上要依靠测试人员的经验和直觉。如果推测得比较准确,则使用基于故障的测试方法能够用相当低的工作量发现大量错误;反之,如果推测不准,则这种方法的效果并不比随机测试技术的效果好。,81,2,、基于脚本的测试,基于脚本的测试主要关注用户需要做什么,而不是产品能做什么,即从用户任务中找出用户要做什么。这种基于脚本的测试有助于在一个单元测试情况下检查多重系统。所以基于脚本的测试比基于故障的测试更实际、更复杂。,82,2,、基于脚本的测试,基于脚本测试减少了两种类型的错误:,不正确的规格说明,如做了用户不需要的功能或缺少了用户需要的功能,子系统间的交互作用没有考虑,如一个子系统的建立,导致其他子系统的失败。,83,3,、面向对象类的随机测试,如果一个类有多个操作(功能),这些操作(功能)序列有多种排列,而这种不变化的操作序列可随机产生,用这种可能排列的序列来检查不同类实例的生存史,就是随机测试。,84,4,、类层次的分割测试,这种测试可以减少用完全相同的方式检查类测试用例的数目。这很像传统软件测试中的等价类划分测试。分割测试又可分三种:,基于状态的分割,按类操作是否改变类的状态来分割(归类);,基于属性的分割,按类操作所用到的属性来分割(归类);,基于类型的分割,按完成的功能分割(归类)。,85,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服