基于复杂网络面向对象集成测试的方法

文档序号:6482327阅读:186来源:国知局

专利名称::基于复杂网络面向对象集成测试的方法
技术领域
:本发明属于计算机软件测试
技术领域
,特别涉及一种基于复杂网络测试的方法。
背景技术
:复杂网络是当前研究的热点,自然界中存在的大量复杂系统都可以通过形形色色的网络加以描述。如社会关系网、电力网络、互联网、交通网等等。最近研究表明,大型软件系统内部结构并不是随机的,也具有小世界效应和无标度特性。软件测试作为软件质量保证的一个重要手段,在国内外受到广泛重视并已进行了许多研究。进行面向对象测试的一个重要方面就是确定测试顺序,选择有效的测试用例以达到测试充分性准则的要求。现有技术中以下几种测试方法1、从对象行为的观点出发,用灰盒分析确定最重要的路径和交互,制定出测试层次;2、通过基于用户用例的结构化模型将软件逐步集成;3、通过分析类与类之间相互作用关系,产生出类间集成测试的顺序,使桩模块的数目最小化;4、通过基于模型的面向对象形式规格说明推导测试用例的方法和技术。上述这些研究为面向对象软件测试提供了许多好的方法,但是这些研究很少从面向对象软件的内部拓扑结构特点出发,忽略了大型软件系统的复杂网络特性。
发明内容本发明的目的在于,提供一种基于复杂网络面向对象集成测试的方法。该方法将复杂网络与面向对象软件测试结合起来,根据目前新兴的复杂网络研究成果,结合面向对象软件的内部拓扑结构特点,对面向对象程序进行集成测试。本发明采用如下技术方案本发明采用黑盒测试方法,用统一建模语言(UnifiedModelingLanguage,UML)创建系统的结构模型,通过分析类(对象)之间的交互复杂性来确定测试的顺序,用较少的测试用例达到较高的覆盖率。对象图表示了程序运行时创建的对象实例以及它们之间的关系,它是面向对象程序执行时的"骨架"。因为图中每个结点代表一个对象,当程序运行时对象图会不断变化。程序刚3运行时只有几个对象,随着程序的运行,会创建更多的对象,也会销毁不再需—要的对象。图的结构(对象之间的连接)也会随之改变。对象是类的实例,类是创建对象的模板,类图在软件的整个生命周期都是存在的,因此本发明以类图来分析系统的交互复杂性。类之间的交互复杂性可以通过度分布刻画,如入度大的结点(类)说明其重用度大,而出度大的结点(类)往往比较复杂;无标度网络一个特别有用的方面是它的抗损坏的鲁棒性和脆弱性。因为大多数结点与其它结点有较少的连接,摧毁它们对其它的结点没有什么影响。另一方面,一小部分的程度中心性结点(HUB类),又称为HUB结点(类),被高度连接,摧毁它们的灾难性是巨大的。基于软件复杂网络的这个特点,本发明具体采用的测试方法包括如下步骤1)采用统一建模语言(UML)创建被测软件的系统结构模型,并将UML类图表示为一个软件网络0=(V,E),其中G是一个连通有向图,V是结点集,代表类;E是边集,代表类之间的关系;2)遍历整个软件网络,统计每个类依赖的类以及该类的入度和出度,并且记载在一个四元组(C—Test,C—D印,In—Degree,Out—Degree)中;其中,C—Test代表要统计的类,C—D印代表该统计类所依赖的类集,In—Degree代表指向该类的引用,Out—Degree代表离开该类的引用;3)首先集中测试In_Degree大而Out_Degree为0的类,这些类是重用度大而又不依赖于其他类的独立类,先测重用度大的独立类可以在保证测试覆盖率的同时减少桩模块的数量;4)接着测试使用该类的依赖类C—D印,依赖类C—D印是一个类集,原则上可以并行测试,但是本发明在并行测试依赖类时同样优先选择测试In—Degree大而Out—Degree较小的类,并且每一次测试最多增加一个新类;沿着依赖类层次的测试序列重复执行步骤4),使先测试的类优先于后测试的类,一直持续到构造完整被测软件的系统。通过先测试这些HUB类,接着再处理依赖它的类。这样可以优化测试用例,减少测试工作量。本发明在不降低原有覆盖度的前提下,可以减少桩模块的数量,提高测试效率。以下结合附图及实施例进一步说明本发明。图1为本发明实施例中的某系统类图。具体实施例方式表l是系统类图中每个类的四元组。4一种基于复杂网络面向对象集成测试的方法,包括以下步骤1)采用统一建模语言(UnifiedModelingLanguage,UML)创建被测软件的系统结构模型,并将UML类图表示为一个软件网络G二(V,E),其中G是一个连通有向图,V是结点集,代表类;E是边集,代表类之间的关系;2)遍历整个软件网络,统计每个类依赖的类以及该类的入度和出度,并且记载在一个四元组(C—Test,C—D印,In—Degree'Out—Degree)中;其中,C_Test代表要统计的类,C—D印代表该统计类所依赖的类集,In—Degree代表指向该类的引用,Out—Degree代表离开该类的引用;3)首先集中测试In_Degree大而Out_Degree为0的类;4)接着测试使用该类的依赖类C—D印,并且每一次测试最多增加一个新类;沿着依赖类层次的测试序列重复执行步骤4),使先测试的类优先于后测试的类,一直持续到构造完整被测软件的系统。其中,所述步骤4)采用并行的测试方式。并且在并行测试依赖类C—D印时,优先选择测试In—Degree大而Out—Degree小的类。以下以一实例进行说明。假定采用UML语言创建被测软件的系统结构模型,其UML类图如图1所示。图中类A与类C、类D是聚合关系,其中类A是部分,类C、类D是整体,整体依赖于部分;类G与类D是泛化关系,D是基类,G是子类;类C与类B是依赖关系,C依赖于B;类B与类K、L、M是泛化关系,类K、L、M是类B的子类;类B、类S与类T是关联关系,类B、类S依赖于类T;类T与类F也是关联关系,类T还依赖于类F;类F、类E与类A是关联关系,类F、类E依赖于类A,同时类E还依赖于类F。遍历整个类图网络,首先得出每个类的四元组(CJTest,C—D印,In—Degree,Out_Degree),如下表所示。<table>tableseeoriginaldocumentpage5</column></row><table>从表1可知,类A是In_Degree大而Out_Degree为0的独立类,应该最先测试;类C、D、E、F依赖于A,但是类C还需依赖于类B,所以类C还不能测试;类D、E、F中类F的In—Degree最大,而且类E依赖于类F,因此先测F,再测D,其次测E;再测F的依赖类T,D的依赖类G;T的依赖类是B和S,由于类B的In—Degree大于类S的In—Degree,因此先测B,再测S;类C,K,L,M依赖于B,且In—Degree都相同,可以并行测试。于是得到的测试顺序是仏-〉F-〉D-〉E-〉T-〉G-〉B-〉S->{C,K,L,M}}。以上所述的实施例仅用于说明本发明的技术思想及特点,其目的在使本领域内的技术人员能够了解本发明的内容并据以实施,当不能仅以本实施例来限定本发明的专利范围,即凡依本发明所揭示的精神所作的同等变化或修饰,仍落在本发明的专利范围内。权利要求1、一种基于复杂网络面向对象集成测试的方法,其特征在于包括以下步骤1)采用统一建模语言创建被测软件的系统结构模型,并将UML类图表示为一个软件网络G=(V,E),其中G是一个连通有向图,V是结点集,代表类;E是边集,代表类之间的关系;2)遍历整个软件网络,统计每个类依赖的类以及该类的入度和出度,并且记载在一个四元组(C_Test,C_Dep,In_Degree,Out_Degree)中;其中,C_Test代表要统计的类,C_Dep代表该统计类所依赖的类集,In_Degree代表指向该类的引用,Out_Degree代表离开该类的引用;3)首先集中测试In_Degree大而Out_Degree为0的类;4)接着测试使用该类的依赖类C_Dep,并且每一次测试不增加类或者增加一个新类;沿着依赖类层次的测试序列重复执行步骤4),使先测试的类优先于后测试的类,一直持续到构造完整被测软件的系统。2、根据权利要求l基于复杂网络面向对象集成测试的方法,其特征在于所述步骤4)采用并行的测试方式。3、根据权利要求2基于复杂网络面向对象集成测试的方法,其特征在于在并行测试依赖类C—D印时,优先选择测试In_Degree大而Out_Degree小的类。全文摘要基于复杂网络面向对象集成测试的方法。1)采用统一建模语言创建被测软件的系统结构模型,并将UML类图表示为一个软件网络G=(V,E);2)遍历整个软件网络,统计每个类依赖的类以及该类的入度和出度,并且记载在一个四元组中;3)首先集中测试入度大而出度为0的类;4)接着测试使用该类的依赖类,并且每一次测试不增加类或者增加一个新类;沿着依赖类层次的测试序列重复执行步骤4),使先测试的类优先于后测试的类,一直持续到构造完整被测软件的系统。本发明将复杂网络与面向对象软件测试结合起来,结合面向对象软件的内部拓扑结构特点,对面向对象程序进行集成测试,优化了测试用例,减少测试工作量。文档编号G06F11/36GK101477490SQ20091004598公开日2009年7月8日申请日期2009年1月23日优先权日2009年1月23日发明者李丽萍申请人:上海第二工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1