版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程
第八章面向对象的测试8.1面向对象测试的概念8.2开发前期的面向对象测试8.3开发后期的面向对象测试8.4分布式系统的测试18.1面向对象测试的概念
面向对象系统的测试与传统的基于功能的系统的测试之间存在很大差别:对象作为一个单独的构件一般比一个功能模块大。由对象到子系统的集成通常是松散耦合的,没有一个明显的“顶层”。如果对象被复用,测试者无权进入构件内部来分析其代码。2面向对象的开发模型将系统开发分为面向对象分析(OOA),面向对象设计(OOD)和面向对象编程(OOP)三个阶段。分析阶段产生整个问题领域的抽象描述,在此基础上,进一步归纳出适用于面向对象编程语言的类和类结构,最后形成代码。针对这种开发模型,结合传统测试步骤的划分,本着在整个开发过程中不断测试的原则,应将开发阶段的测试与编码完成后的单元测试、集成测试、系统测试用一个测试模型描述。3面向对象测试模型
OOSystemTestOOIntegrationTestOOUnitTestOOATestOODTestOOPTestOOAOODOOP4OOATest和OODTest是对分析结果和设计结果的测试,主要是对分析设计产生的文本进行,是软件开发前期的关键性测试。OOPTest主要针对编程风格和程序代码实现进行测试,其主要的测试内容在面向对象单元测试和面向对象集成测试中体现。面向对象单元测试是对程序内部具体单一的功能模块的测试,如果程序是用C++语言实现,主要就是对类成员函数的测试。面向对象单元测试是进行面向对象集成测试的基础。5面向对象集成测试主要对系统内部的相互服务进行测试,如成员函数间的相互作用,类间的消息传递等。面向对象集成测试不但要基于面向对象单元测试,更要参见OOD或OODTest结果。面向对象系统测试是基于面向对象集成测试的最后阶段的测试,主要以用户需求为测试标准,也需要借鉴OOA或OOATest结果。
68.2开发前期的面向对象测试
面向对象的系统开发经历面向对象分析(OOA)面向对象设计(OOD)面向对象编程(OOP)等三个阶段。在这个时期的测试工作主要是静态测试。通过各种评审和质量分析活动,完成必须的测试工作,及时检测和克服各种缺陷。78.2.1面向对象分析的测试
传统的面向过程分析是一个功能分解的过程,是把一个系统看成可以分解的功能的集合。这种传统的功能分解分析法的着眼点在于一个系统需要什么样的信息处理方法和过程,以过程的抽象来对待系统的需要。面向对象分析(OOA)是“把E-R图和语义网络模型,即信息模型中的概念,与面向对象程序设计语言中的重要概念结合在一起而形成的分析方法”,最后得到问题领域的可视的形式描述。OOA的结果是为后续阶段中类的选定和实现,类层8 层次结构的组织和实现提供平台。OOA对问题领域分析抽象的不完整,最终会影响软件的功能实现,导致软件开发后期大量可避免的修补工作;而一些冗余的对象或结构会影响类的选定、程序的整体结构或增加程序员不必要的工作量。因此,OOA测试的重点在其完整性和冗余性。根据Coad和Yourdon方法所提出的OOA实现步骤,对OOA阶段的测试划分为以下五个方面:对认定的类的测试对认定的结构的测试对认定的主题的测试9对定义的属性和实例连接的测试对定义的服务和消息连接的测试对认定的类的测试OOA中认定的类是对问题领域中的结构,其他相关系统,设备,被记忆的事件,系统涉及的人员等实际对象的抽象。对它的测试可以从如下方面考虑:认定的类是否全面,是否问题领域中所有涉及到的对象都反映在认定的类中。认定的类是否具有多个属性。只有一个属性的类通常应看成其他类的属性,而不是抽象10为独立的类类。认定为同一一个类的对对象是否有有共同的,,区别于其其他类对象象的共同属属性。对认定为同同一类的对对象是否提供或需要要相同的服服务,如果服务务随着不同同的对象而而变化,认认定的对象象就需要分分解或利用用继承性来来分类表示示。如果系统不不需要始终终保持类所所代表的对对象的信息息,认定的的类也无必必要存在。。认定的类的的名称应该该尽量准确确,适用。。对认定的结结构的测试试11在Coad和Yourdon方法中,,认定的结结构分为两两种:泛化结构和复合结构。泛化结构体现了了问题领域域中对象的的一般与特特殊的关系系,复合结构体现了了问题领域域中对象的的整体与局局部的关系系。1)对泛化结构的测试可从从如下方面面着手:对于结构中中的一个类类,尤其是是处于高层层的类,看看是否能在在问题领域域中派生出出其下一层层的类。对于结构中中的一个类类,尤其是是处于同一一低层的类类,看是否否能抽象出出在现实世世界中有意意义的更一一般的上层层的类。12高层的类的的属性和服服务是否完完全体现下下层的共性性。低层的类是是否基于其其上层类的的属性和服服务并具有有自己的特特殊性。对复合结构的测试从如如下方面入入手:整体类和局局部类的复复合(聚合合)关系是是否符合现现实的关系系。整体类的局局部类是否否在问题领领域中有实实际应用。。整体类中是是否遗漏了了在问题领领域中有用用的局部类类。13局部类是否否能够在问问题领域中中组合出新新的有现实实意义的整整体类。对认定的主主题的测试试主题是在对对象和结构构的基础上上更高一层层的抽象,,是为了提提供OOA分析结果果的可见性性,如同文文章对各部部分内容的的概要。对主题的测测试应该考考虑以下方方面:贯彻GeorgeMiller的的“7+2”原则,,如果主题题个数超过过7个个,就要求求对有较密密切属性和和服务的主主题进行归归并。14主题所反映映的一组类类和结构是是否具有相相同和相近近的属性和和服务。认定的主题题是否是类类和结构更更高层的抽抽象,是否否便于理解解OOA结结果的概貌貌(尤其是是对非技术术人员的OOA结结果读者))。主题间的消消息连接((抽象)是是否代表了了主题所反反映的类和和结构之间间的所有关关联。对定义的属属性和实例例连接的测测试属性描述类类或结构中中实例(对对象)的特特性。而实实例连接则则反映实例例集合之间间的映射关关系。15对属性和实实例连接的的测试从如如下方面考考虑:定义的属性性是否对相相应的类和和泛化结构构的每个实实例都适用用。定义的属性性在现实世世界中是否否与这种实实例关系密密切。定义的属性性在问题领领域中是否否与这种实实例关系密密切。定义的属性性是否能够够不依赖于于其他属性性被独立理理解。定义的属性性在泛化结结构中的位位置是否恰恰当,低层层类的共有有属性是否否在其上层层类的属性性中16有定义。问题领域中每每个类的属性性是否定义完完整。定义的实例连连接是否符合合实际。在问题领域中中实例连接的的定义是否完完整,特别需需要注意一对对多和多对多多的实例连接接。对定义的服务务和消息关联联的测试定义服务就是是定义每一个个类和结构在在问题领域中中的行为。由由于问题领域域中的实例之之间需要通信信,在OOA中就需要定定义消息的连连接。对服务和消息息连接的测试试应考虑以下下几方面:17类和结构在问问题领域中的的实例具有不不同的状态,,是否为状态态转换定义了了相应的服务务。类或结构所需需要的服务是是否都定义了了相应的消息息连接。定义的消息连连接所调用的的服务是否正正确。沿着消息连接接所执行的线线索(消息的的调用序列))是否合理,,是否符合实实际。定义的服务是是否有重复,,是否定义了了能够得到的的服务。18面面向对象象设计的测试试面向对象设计计(OOD))从“建模的的观点”出发发,基于OOA模型归纳纳出类,并建建立类的层次次结构或进一一步构造成类类库,实现分分析结果对问问题领域的抽抽象。OOD归纳出出的类,可以以是OOA类类的简单延续,也可以是基基于设计要求求新建立或从已有类演化化的类。因此,,OOD是OOA的进一一步细化和更更高层的抽象象,OOD与与OOA的的界限通常是是难以严格区区分的。OOD确定类类和类结构是是想通过重新新组合或加以以适当的补充充,可方便地地实现功能的的复用和扩充充。19OOD的测试试可从如下三三方面考虑::对认定的类的的测试对构造的类层层次结构的测测试对类库的支持持的测试对认定的类的的测试认定的类的测测试应考虑以以下几个方面面:是否涵盖了OOA中所有有认定的对象象。是否能体现OOA中定义义的属性。是否能实现OOA中定义义的服务。是否对应着一一个含义明确确的数据抽象象。20是否尽可能少少地依赖其他他类。类中的方法((C++称为为类的成员函函数)是否只只有单一用途途。对构造造的类类层次次结构构的测测试为能充充分发发挥面面向对对象的的继承承共享享特性性,OOD的类类层次次结构构,通通常基基于OOA中产产生的的泛化化结构构的原原则来来组织织,着着重体体现父父类和和子类类之间间一般般性和和特殊殊性关关系。。在当前前的问问题领领域,,对类类层次次结构构的主主要要要求是是能在在解空空间构构造实实现全全部功功能的的结构构框架架。为为此应应做如如下几几个方方面的的检查查:21类层次次结构构中是是否涵涵盖了了所有有定义义的类类。是否能能体现现OOA中中所定定义的的实例例连接接。是否能能实现现OOA中中所定定义的的消息息连接接。子类是是否具具有父父类没没有的的新特特性。。子类之之间的的共同同特性性是否否完全全在父父类中中得以以体现现。对类库库支持持的测测试对类库库的支支持虽虽然也也属于于类层层次结结构的的组织织问题题,但但其强强调的的重点点是软软件的的复用用。由由于它它并不不直接接影响响当前前软件件的开开发和和功能能实现现,可可以将将其单单独提提出来来测试试。22有关类类库支支持的的测试试可从从以下下几个个方面面入手手:一组子子类中中有关关某种种含义义相同同或基基本相相同的的操作作,是是否有有相同同的接接口((包括括名字字和参参数表表)。。类中方方法((C++称称为类类的成成员函函数))的功功能是是否比比较单单一,,相应应的代代码行行是否否较少少(建建议不不超过过100行行)。。类的层层次结结构是是否是是深度度大,,宽度度小。。23面面向对对象编编程的的测试试典型的的面向向对象象程序序具有有继承、封装和多态等新特特性,,这使使得传传统的的测试试策略略必须须有所所改变变。封装是对数数据的的隐藏藏,外外界只只能通通过接接口提提供的的操作作来访访问或或修改改数据据,这这就降降低了了直接接接触触数据据的可可能性性,妨妨碍了了对非非法数数据操操作的的测试试。继承提高了了代码码的复复用率率,同同时也也提高高了错错误传传播的的概率率。继继承向向测试试提出出了这这样一一个难难题::对继继承的的代码码究竟竟如何何测试试?多态令面向向对象象程序序对外外表现现出强强大的的处理理能力力,24但同时时却使使得程程序内内“同同一””函数数的行行为复复杂化化,测测试时时不得得不考考虑不不同类类型的的同名名操作作具体体的实实现代代码和和产生生的行行为。。面向对对象程程序是是把功功能的的实现现分布布在类类中。。与某某种设设计功功能相相关的的一组组对象象,通通过对对象提提供的的服务和对象象之间间的消息传传递,共同同协作作来实现这这个功功能。这种种面向向对象象程序序风格格,可可将出出现的的错误误精确确定位位在某某一个个具体体的对对象。。因此,,在面向向对象象编程程(OOP)阶阶段,,将测测试的的目光光集中中在类类功能的的实现现和相相应的的面向向对象象程序序风格格上。。251.数数据据成员员是否否满足足数据据封装装的要要求检查数数据成成员是是否满满足数数据封封装的的要求求,就就是检检查其其数据成成员是是否能能被外外界((数据据成员员所属属的类类或子子类以以外的的调用用)直直接调调用。更直直观的的说,,当改改变数数据成成员的的结构构时,,看其其是否否影响响了类类的对对外接接口,,是否否会导导致相相应外外界必必须改改动。。值得注注意,,有时时强制制的类类型转转换会会破坏坏数据据的封封装特特性。。例如如:classHiden{private:inta=1;26char*p="hiden";}classVisible{public:intb=2;char*s="visible";}……..……..Hidenpp;Visible*qq=(Visible*)&pp;在上面的的程序段段中,pp的数数据成员员可以通通过qq被随意意访问。。272.类类是否实实现了要要求的功功能类的功能能都是通通过类的的成员函函数实现现的。在在测试类类的功能能实现时时,应该该首先保保证类成成员函数数执行的的正确性性。单独地看看类的成成员函数数,与过过程性程程序中的的函数或或过程没没有本质质的区别别,几乎乎所有传传统的单单元测试试中使用用的方法法,都可可在面向向对象的的单元测测试中使使用。类函数成成员的正正确行为为只是类类能够实实现要求求功能的的基础,,而类成成员函数数之间的的交互和和类之间间的服务务调用是是单元测测试无法法确定的的。因此此需要进进行面向向对象的的集成测测试。28需要注意意的是,,测试类类的功能能,不能能仅满足足于被测测试代码码能无错运行行或被测试试类提供供的功能无错错,还应该该以OOD结结果为依依据,检检测类提提供的功功能是否否满足设设计的要要求,是是否有缺缺陷。必要时((如通过过OOD结果仍仍不清楚楚明确的的地方))还应该该参照OOA的的结果,并以其其为最终终标准。。29编程完成成之后,,需要经经历三个个阶段的的测试::单元测试试集成测试试系统测试试传统的单单元测试试是针对对程序的的函数、、过程或或完成某某一特定定功能的的程序块块所进行行的测试试。8.3开开发后后期的面面向对象象测试面面向对象象的单元元测试((UnitTest)30面向对象象的单元元测试则则是针对对面向对对象程序序的基本本单元-对象类。。为此需需要分两两步走::测试与对对象相关关联的单单个操作作它们是一一些函数数或程序序,传统统的白盒盒测试和和黑盒测测试方法法都可以以使用。。测试单个个对象类类黑盒测试试的原理理不变,,但等价价划分的的概念要要扩展以以适合操操作序列列的情况况。在设计测测试用例例时,可可基于以以下两个个假设::1.对对象操作作的测试试31如果操作作(成员员函数))对某一一类输入入中的一一个数据据正确执执行,对对同类中中的其他他输入也也能正确确执行。。如果操作作(成员员函数))对某一一复杂度度的输入入能够正正确执行行,则对对更高复复杂度的的输入也也应能正正确执行行。例如需要要选择字字符串作作为输入入时,基基于本假假设,就就无需计计较字符符串的长长度。除除非字符符串的长长度是固固定的,,如IP地址字字符串。。在面向对对象程序序中,对对象的操操作(成成员函数数)通常常都很小小,功能能单一,,函数之之间调用用频繁,,容易出出现一些些不宜发发现的错错误。例例如:32if(-1==write(fid,buffer,amount))error_out();该语句没没有全面面检查write()的的返回值值,无意意中假设了只只有数据据被完全写入入和没有写入入两种情况。此测测试还忽忽略了数数据部分写入入的情况,,就给程程序遗留留了隐患患。按程序的的设计,,使用函函数strrchr()查找最后后的匹配配字符,,但程序序中误写写成了函函数strchr(),使程序序功能实实现时查查找的是是第一个个匹配字字符。程序中将将if(strncmp(str1,str2,strlen(str1)))误写成了了if(strncmp(str1,str2,strlen(str2)))。如果测测试用例例中使用用的数据据str1和和str2长度度相33同,就无无法检测测出。因此,在设计计测试用例时时,应对以函数返回值值作为条件判判断,字符串操作等情况特别注注意。面向对象编程程的特性使得得对成员函数数的测试,又又不完全等同同于传统的函函数或过程测测试。尤其是是继承特性和和多态特性,,BrianMarick提出了两点:继承的成员函函数可能需要要重新测试对父类中已经经测试过的成成员函数,两两种情况需要要在子类中重重新测试:继承的成员函函数在子类中中做了改动;;成员函数调用用了改动过的的成员函数。。34例如:假设父父类Bass有两个成员函函数:Inherited()Redefined()若子类Derived对Redefined()做了改动,Derived::Redefined()必需重新测试。。但如果Derived::Inherited()包含有调用Redefined()的语句(如::x=x/Redefined())),就需要重重新测试;反反之,则不必必重新测试。。2)对父类的测试试用例不能照照搬到子类根据以上的假假设,Base::Redefined()和Derived::Redefined()是不同的成员员函数,它们们35有不同的说明明和实现。对对此,应该对对Derived::Redefined()重新设计测试试用例。由于面向对象象的继承性,,使得两个函函数还是有相相似之处,故故只需在Base::Redefined()的测试用例基基础上添加对对Derived::Redfined()的新测试用例例。例如:Base::Redefined()含有如下语句句if(value<0)message("less");elseif(value==0)message("equal");elsemessage("more");Derived::Redfined()中定义为36if(value<0)message("less");elseif(value==0)message(“Itisequal");else{message("more");if(value==88)message("luck");}在原有的测试试上,对Derived::Redfined()的测试只需做做如下改动::改动value==0的预期测试结结果,并增加加value==88的测试。多态有几种不不同的形式,,如参数多态,包含多态,重载多态。包含多态和重载多态在面向对象语语言程序中通通常37体现在子类与父类的的继承关系上,对这两种种多态的测试试可参照对父父类成员函数数继承和重载载的情况处理理。在测试对象时时,完全的覆覆盖测试应当当包括:隔离对象中所所有操作,进行独立测测试。测试对象中所所有属性的设置和访问问。测试对象的所所有可能的状态转换。所有可能引引起状态改变变的事件都要要模拟到。2.对象类类测试38对象类,作为为在语法上独独立的构件,,应当允许在在不同应用中中使用。每个个类都应是可可靠的且不需需了解任何实实现细节就能能复用。因此此对象类应尽尽可能孤立地地进行测试。。设计操作的测测试用例时的的要点:首先定义测试试对象各操作的测试用例。。对于一个单独独的操作,可可通过该操作作的前置条件选择测试用例例,产生输出出,让测试者者能够判断后置条件是否能够得到到满足。各个操作的测测试与传统对对函数过程定定义的测试基基本相同。39然后再把测试试用例组扩充充,针对被测测操作调用对对象类中其他他操作的情况况,设计操作作序列的测试试用例组。测试可以覆盖盖每个操作的的整个输入域域。但这不够够,还必须测测试这些操作作的相互作用用,才能认为为测试是充分分的。各个操作间的的相互作用包包括类内通信和类间通信。设计对象类的的规格说明测测试时的要点点:把对象类当做做一个黑盒,,确认类的实实现是否遵照照它的定义。。40putReferencePoint(Point)moveTo(Point)ReferencePointarea()draw()erase()getReferencePoint(Point)DisplayableShape(Point)DisplayableShape类内消息类间消息DisplayableShape()41例如,对于于“栈”的的测试应当当确保LIFO原原则得以以实施。对于多数对对象类,主主要检验在在类声明的的public域中的那些操操作。对于子类,,要检查继继承父类的的public域和protected域的那些操作作。检查所有public域,protected域及private域域中的操作以以完全检查查对象中定定义的操作作。等价划分的的思想也可可用到对象象类上。将将使用对象相相同属性的测试归入入同一个等等价划分集集合中。这这样可以建建立对对象象类属性进进行初始化化、42访问、更新新等的等价价划分。在设计对象象类的行为为测试时需需要注意::基于对象的的状态模型进行测试时时,首先要要识别需要要测试的状态的变迁迁序列,并定义事事件序列来来强制执行行这些变迁迁。原则上应当当测试每一一个状态变变迁序列,,当然这样样做测试成成本很高。。完全的单元元应当保证证类的执行行必须覆盖它的一一个有代表表性的状态态集合。构造函数和和消息序列列(线程))的参数值值的选择应应当满足这这个规则。。438.3.2面向对对象的集成成测试(OOIntegrateTest)当开发面向向对象系统统时,集成成的层次并并不明显。。而当一组组对象类通通过组合行行为提供一一组服务时时,则需将将它们一起起测试,这这就是簇测测试。此时时不存在自自底向上和和自顶向下下的集成。。面向对象程程序相互调调用的功能能是散布在在程序的不不同类中,,类通过消消息相互作作用申请和和提供服务务。类的行行为与它的的状态密切切相关,状状态不仅仅仅是体现在在类数据成成员的值,,也许还包包括其他类类中的状态态信息。44对象集成测测试又称交互测试,目的是确确保对象的的消息传递递能够正确确进行。面向对象系系统的集成成测试有3种可可用的方法法:用例或基于于场景的测测试用例或场景景描述了对对系统的使使用模式。。测试可以以根据场景景描述和对对象簇来制制定。这种种测试着眼于系统统结构,首首先测试几几乎不使用用服务器类类的独立类类,再测试试那些使用用了独立类类的下一层层次的(依依赖)类。。这样一层层一层地持持续下去,,直到整个个系统构造造完成。基于线程的的测试它把为响应应某一系统统输入或45事件所需的的一组对象象类组装在在一起。每每一条线程程将分别测测试和组装装。因为面面向对象系系统通常是是事件驱动动的,因此此这是一个个特别合适适的测试形形式。对象交互测测试这个方法提提出了集成成测试的中中间层概念念。中间层层给出叫做做“方法法-消息”路径径的对象交交互序列。。所谓“原原子系统功功能”就是是指一些输输入事件加加上一条““方法-消息”路径径,终止于于一个输出出事件。集成测试能能够检测出出相对独立立的单元测测试无法检检测出的那那些类相互互作用时才才会产生的的错误。46集成测试只只关注于系系统的结构构和内部的的相互作用用。面向对对象的集成成测试可以以分成两步步进行:先先进行静态态测试,再再进行动态态测试。1) 静态态测试静态测试主主要针对程程序的结构构进行,检检测程序结结构是否符符合设计要要求。现在在流行的一一些测试软软件都能提提供一种称称为“可逆逆性工程””的功能,,即通过源程序序得到类关关系图和函函数功能调调用关系图图。如InternationalSoftwareAutomation公司司的Panorama-2forWindows95、Rational公司司的RoseC++Analyzer等。。47将“可逆性性工程”得得到的结果果与OOD的结果相相比较,检检测程序结结构和实现现上是否有有缺陷。换换句话说,,通过这种种方法检测测OOP是是否达到了了设计要求求。2) 动态态测试动态测试在在设计测试试用例时,,通常需要要上述的功功能调用结结构图、类类关系图或或者实体关关系图为参参考,确定定不需要被被重复测试试的部分,,从而优化化测试用例例,减少测测试工作量量,使得进进行的测试试能够达到到一定覆盖盖标准。测试所要达达到的覆盖盖标准可以以是:48达到类所有有的服务要要求或服务务提供的一一定覆盖率率;依据据类类间间传传递递的的消消息息,,达达到到对对所所有有执执行行线线程程的的一一定定覆覆盖盖率率;;达到到类类的的所所有有状状态态的的一一定定覆覆盖盖率率等等。。考虑虑使使用用现现有有的的一一些些测测试试工工具具来来得得到到程程序序代代码码执执行行的的覆覆盖盖率率。。具体体设设计计测测试试用用例例,,可可参参考考下下列列步步骤骤::先选选定定检检测测的的类类;;参参考考OOD分分析析结结果果,,仔仔细细列列出出类类的的状状态态和和相相应应的的行行为为、、类类或或成成员员函函数数间间传传递递的的消消息息、、输输入入或或输输出出的的界界定定等等。。49确定定覆覆盖盖标标准准。。利用用结结构构关关系系图图确确定定待待测测试试类类的的所所有有关关联联。。根据据程程序序中中类类的的对对象象构构造造测测试试用用例例,,确确认认使使用用什什么么输输入入激激发发类类的的状状态态、、使使用用类类的的服服务务和和期期望望产产生生什什么么行行为为等等。。注意意,,设设计计测测试试用用例例时时,,不不但但要要设设计计确确认认类类功功能能能能够够成成功功执执行行的的输输入入,,还还应应该该有有意意识识的的设设计计一一些些会会导导致致异异常常的的输输入入,,确确认认类类是是否否有有不不合合法法的的行行为为产产生生,,如如发发送送与与类类状状态态不不相相适适应应的的消消息息,,要要求求不不相相适适应应的的服服务务等等。。根根据据具具体体情情况况,,动动态态的的集集成成测测试试,,有有时时也也可可以以通通过过系系统统测测试试完完成成。。50面面向向对对象象的的系系统统测测试试(OOSystemTest)通过过单单元元测测试试和和集集成成测测试试,,仅仅能能保保证证软软件件开开发发的的功功能能得得以以实实现现。。但但不不能能确确认认在在实实际际运运行行时时,,它它是是否否满满足足用用户户的的需需要要,,是是否否大大量量存存在在实实际际使使用用条条件件下下会会被被诱诱发发产产生生错错误误的的隐隐患患。。为为此此,,对对完完成成开开发发的的软软件件必必须须经经过过规规范范的的系系统统测测试试。。换个角度说,,开发完成的的软件仅仅是是实际投入使使用系统的一一个组成部分分,需要测试试它与系统其其他部分配套套运行的表现现,以保证在在系统各部分分协调工作的的环境下也能能正常工作。。51在系统测试的的层次上,不不再考虑对象象类间相互连连接的细节。。主要着眼于于用户可见的的动作和用户户可识别的系系统输出。为了帮助系统统测试的执行行,测试者需需要回到分析析时的动态模模型和描述系系统行为的事事件序列(脚脚本)进行测测试。可以利用黑盒盒测试的方法法来驱动系统统测试。测试检测软件件中的故障并并确定软件是是否执行了预预定要开发的的功能。系统测试应该该尽量搭建与与用户实际使使用环境相同同的测试平台台,应该保证证被测系统的的完整性。对没有的52系统设备部件件,应有相应应的模拟手段段。具体测试内容容包括:功能测试:测试系统是否否满足开发要要求,是否能能够满足设计计所描述的功功能,是否用用户的需求都都得到满足。。功能测试是是系统测试最最常用和必须须的测试,通通常以正式的的软件规格说说明为测试标标准。强度测试:测试系统能力力所能达到的的最高实际限限度,即软件件在一些超负负荷情况下功功能实现的情情况。如要求求软件某一行行为的大量重重复、输入大大量的数据或或大数值数据据、对数据库大量查查询53等情况。性能测试:测试软件的运运行绩效。这这种测试常常常与强度测试试结合进行,,需要事先对对被测软件提提出性能指标标,如传输连连接的最长时时限、传输的的错误率、计计算的精度、、记录的精度度、响应的时时限和恢复时时限等。安全测试:验证安装在系系统内的保护护机构能否确确实对系统进进行保护,使使之不受各种种非常的干扰扰。安全测试试时需要设计计一些测试用用例试图突破破系统的安全全保密措施,,检验系统是是否有安全保保密的漏洞。。54恢复测试:采用人工的干干扰使软件出出错,中断使使用,检测系系统的恢复能能力,特别是是通讯系统的的恢复能力。。设计恢复测测试的测试用用例时,应该该参考性能测测试的相关测测试指标。可用性测试::测试用户能否否满意地使用用。具体体现现为操作是否否方便,用户户界面是否友友好等。安装/卸载测测试(install/uninstalltest)),等。系统测试需要要对被测的软软件结合需求求分析做仔细细的测试分析析,建立测试试用例。55面向对象测试试用例的设计计测试过程包括括了一组测试试用例的开发发,每一个测测试用例要求求能检验应用用的一个特定定的元素。还还需要分析用用各个测试用用例执行测试试的结果来收收集有关软件件的信息。软件测测试人人员可可以参参考以以下方方法::应当唯唯一标标识每每一个个测试试用例例,并并与被被测试试的类类显式式地建建立关关联。。陈述测测试对对象的的一组组特定定状态态。56对每一一个测测试建建立一一组测测试步步骤,,要思思考和和确定定的问问题包包括::被测试试对象象的一一组特特定状状态;;一组消消息和和操作作;考虑在在对象象测试试时可可能产产生的的一组组异常常;一组外外部条条件;;辅助理理解和和实现现测试试时的的补充充信息息。传统的的白盒盒测试试方法法可用用在类类定义义的操操作测测试和和类级级别测测试中中,黑黑盒测测试方方法可可用于于多类类测试试。578.4分分布式式系统统的测测试分布式式处理理中涉涉及的的最基基本单单位是是线程程,线线程是是操作作系统统进程程内部部能够够独立立运行行的内内容,,它拥拥有自自己的的程序序计数数器和和本地地数据据。线线程是是能够够被调调度执执行的的最小小单位位。分布式式系统统测试试主要要面临临的问问题是是并发发性、、网络络化和和分布布式。。并发性性是指指多个个线程程同时时发生生。针针对并并发性性错误误的测测试主主要着着重于于两个个线程程的交交互。。在实实际实实施交交互机机制之之前应应对相相关方方法进进行测测试。。58在网络络环境境中各各个独独立的的盒子子连接接到通通信设设施上上,如如何实实现它它们物物理上上的同同步是是网络络计算算的问问题。。相关关的测测试就就是在在组成成一个个网络络系统统的各各个自自治机机器之之间同同步问问题的的测试试。分布式式系统统使用用多进进程来来支持持系统统的灵灵活性性一个个对象象既可可以在在同一一台机机器上上分布布在多多个进进程中中,还还可以以分布布在多多个物物理上上的计计算机机上。。所有有这些些分布布式构构件都都要能能够识识别““命名名服务务”或或“注注册””对象象,能能够与与其他他构件件交互互。所所有在在配置置文件件中登登记的的机器器与构构件构构成基基础结结构。。59需要考考虑与与这些些分布布式构构件相相关的的测试试。分布式式系统统中的的路径径测试试一条路路径是是一系系列逻逻辑上上连续续的语语句,,它只只有在在特定定的输输入下下才执执行。。路径径的另另一个个定义义是覆覆盖变变量的的定义义和使使用就就形成成一条条完整整的路路径。。在分布布式系系统中中的路路径就就是设设计测测试用用例覆盖一一个同同步顺顺序。所谓谓同步步顺序序是指指同步事事件按按照特特定次次序发发生的的顺序序,而同步事事件是是指一一个线线程产产生另另一个个线程程。60测试应应跟踪踪一个个事件件到另另一个个事件件的路路径。。如果果从一一个同同步事事件到到另一一个同同步事事件有有多条条可能能的控控制流流路径径,只只需覆覆盖其其中一一条路路径。。生存周周期测测试在分布布式系系统中中,生生存周周期测测试是是指选选择一一系列列测试试用例例,测测试任任何处处于生生存期期中的的对象象。特特别是是在整整个生生存周周期过过程中中存在在多条条路径径,测测试必必须选选择有有代表表性的的路径径以保保证最最大的的覆盖盖范围围。61对于一个类类来说,生生存周期意意味着选择择一系列测测试,每个个测试构造造类的一个个实例,并并通过一系系列消息来来使用实例例,最后再再撤销这个个实例。一个有效的的生存周期期测试应能能证实对象象本身是否否正确,还还应能证实实被测试项项是否能够够与它所在在的环境正正确地交互互。对于一一个类的实实例,在它它被撤销后后必须检查查它占用的的资源是否否已被释放放掉。62分布式模型型下面讨论用用在分布式式系统中的的使用某些些标准基础础结构的测测试过程。。基本的客户户机-服务器模型型客户机-服服务器模型型是最简单单的分布式式模型。在在这种模型型下,多个个客户机都都可访问服服务器。服服务器是单单一进程。。由于所有有客户机都都与同一个个服务器交交互,因此此存在单点失败(即服务器器出现问题题将影响所所有客户机机)。测试试要点:63在延时期间间,面对同同时收到的的服务请求求,服务器器能否把正正确结果发发送给各个个相应的客客户机?服务器能否否处理快速速增长的负负载?当负负载增加时时,服务器器的性能可可能降低,,因此可能能选择放弃弃一部分负负载。标准分布式式模型-CORBACORBA是对象管管理组织OMG开发发的公共对对象请求代代理体系结结构,并将将它作为分分布对象系系统的标准准体系结构构。64这种结构的的核心是对对象请求代代理(ORB),一一个对象通通过ORB与系统中中的另一个个对象通信信。CORBA标准准的特点:与基础结构构相联系的的机器可能能有不同的的操作系统统和不同的的存储设计计;构成分布式式系统的构构件可以用用不同的语语言编写;;根据对象的的分布性和和网络中机机器的类型型,基础结结构可以改改变它自身身的配置。。测试要点::65不考虑基础础结构的配配置,系统统能够正确确的工作??测试用例例应能产生生被测试基基础结构的的各种预期期的配置。。在标准基基础结构构的服务务基础上上,构造造新的测测试用例例能否被被重复使使用?测测试用例例的设计计应尽可可能地使使用基础础结构。。新发布的的特定基基础结构构能否与与已有的的应有有有效地结结合起来来?应有有一系列列的回归归测试,,使得新新发布的的基础结结构能够够在被集集成到产产品中之之前得到到测试。。66标准分布式模模型-DCOMDCOM是Microsoft开开发并鼓励励的一种标准准的分布式构构件对象模型型。DCOM““标准”被被描述为包含含特定方法的的标准接口,,每个标准接接口都提供了了一套特定的的服务。单个个构件可以完完成几个接口口的服务,或或若干构件中中的每一个都都能完成统一一接口的服务务,只是方式式不同。DCOM是低低层次的技术术,支持构件件间最原始的的联系,它不不作为应用开开发的部分。。67测试要点:在对各种构件件做任意配置置时测试者能能否正确编排排唯一的标识识?测试用例例应能利用各各种构件确保保所有必要的的连接能够成成功。每个构件能否否实现必要的的接口?测试试用例应能利利用各种构件件确保所有服服务是可利用用的并能实现现期望的功能能。标准
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- BIM实施方案资料
- 市场扩张计划策略书模板与实施方案
- 企业品牌宣传与推广标准化手册
- 供应链管理优化策略与工具包
- 技术支持响应快速流程与知识库工具
- 吉林省前郭县联考2026届初三下学期教育质量调研(二模)英语试题含解析
- 江苏省泰州市泰兴市西城达标名校2026年初三一模试题(语文试题文)试题含解析
- 行业诚信领域活动启动承诺书(6篇)
- 居民区绿化管理保证承诺书6篇
- 2026年建筑工地消防安全专项方案编制指南
- 口腔颌面部外伤的护理个案
- 人工智能在农产品质量检测行业的创业计划书提供智能农产品质检解决方案
- 幼儿园实物拓印版画教学的实践研究
- 2025年湖南农电服务招聘考试(非电工类)模拟试题及答案
- 通信行业市场前景及投资研究报告:光模块框架培训
- 国有企业资产租赁合同协议(GF-2025-002)
- 禁毒安全主题班会课件
- 2024河南农业大学辅导员招聘笔试真题及答案
- 餐饮具清洗消毒规程培训考试题及答案
- 2025年幼师高考语文试卷及答案
- 变压器拆除施工方案
评论
0/150
提交评论