一种基于路径的软件实现与设计一致性验证方法及系统的制作方法

文档序号:6631267阅读:271来源:国知局
一种基于路径的软件实现与设计一致性验证方法及系统的制作方法
【专利摘要】本发明涉及一种基于路径的软件实现与设计一致性验证方法及系统,所述方法包括:基于软件设计说明书生成设计函数调用关系图,根据设计函数调用关系图生成设计函数调用路径,再根据设计函数调用路径建立被测软件系统的设计功能簇模型;基于源代码生成实际函数调用关系图,根据实际函数调用关系图生成实际函数调用路径,并基于函数特征从源代码中提取出函数功能回填到实际函数调用路径中,再根据实际函数调用路径建立被测软件系统的实际功能簇模型;比较设计功能簇模型与实际功能簇模型,验证被测软件系统的功能实现是否达到软件设计说明书的要求。
【专利说明】一种基于路径的软件实现与设计一致性验证方法及系统

【技术领域】
[0001]本发明涉及软件测试【技术领域】,具体地,涉及一种基于路径的软件实现与设计一致性验证方法及系统。

【背景技术】
[0002]在过去的几十年里,软件数量激增,同时软件的代码量和代码复杂度不断增加,软件测试工作的复杂程度也随之不断提高,大量的软件产品导致软件测试工作需要高效的完成,自动化的测试工具已经成为软件测试的迫切需求。软件实现与设计一致性验证是指对已完成软件系统,验证其功能实现是否按照软件设计说明书的要求完成,是一种非常重要的测试工作。黑盒测试只能保证软件完成了指定的功能,而不能验证其完成的方式;人工代码走查和代码审查的白盒测试需要测试人员有丰富开发经验,充分理解源代码、系统设计结构以及各个代码模块实现方法,这对测试人员有着十分高的要求并且测试效率低,易出错,对大型软件的分析工作是一个十分耗时且昂贵的工作。
[0003]现有技术中提出了一种基于Module Documentat1n-based Testing (MD-Test)的测试方法,该方法从形式化的设计文档中提取软件设计信息,指导测试工作,自动生成测试用例,执行测试用例,计算测试结果。但是该方法是基于严格格式化的软件设计文档的,并不考虑软件代码实际的实现过程,不能验证软件实现方法是否与设计说明书中的方法一致。另外还有一种基于场景的分析方法来发现执行路径中的错误,基于格式化的说明文档中自动生成测试用例检测执行路径的正确性,但是该方法需要分析每一个场景下的每一条执行路径,需要产生大量的测试用例。
[0004]针对上述问题,本发明提出了一种基于路径的软件实现与设计一致性验证方法及系统。


【发明内容】

[0005]本发明所要解决的技术问题是提供一种基于路径的软件实现与设计一致性验证方法及系统,用于解决软件实现与设计一致性验证的技术问题。
[0006]本发明解决上述技术问题的技术方案如下:一种基于路径的软件实现与设计一致性验证方法,包括:
[0007]基于软件设计说明书生成设计函数调用关系图,根据设计函数调用关系图生成设计函数调用路径,再根据设计函数调用路径建立被测软件系统的设计功能簇模型;
[0008]基于源代码生成实际函数调用关系图,根据实际函数调用关系图生成实际函数调用路径,并基于函数特征从源代码中提取出函数功能回填到实际函数调用路径中,再根据实际函数调用路径建立被测软件系统的实际功能簇模型;
[0009]比较设计功能簇模型与实际功能簇模型,验证被测软件系统的功能实现是否达到软件设计说明书的要求。
[0010]本发明的技术方案还包括一种基于路径的软件实现与设计一致性验证系统,包括:
[0011]设计功能簇模型构建模块,其用于根据软件设计说明书生成设计函数调用关系图,根据设计函数调用关系图生成设计函数调用路径,再根据设计函数调用路径建立被测软件系统的设计功能簇模型;
[0012]实际功能簇模型构建模块,其用于根据源代码生成实际函数调用关系图,根据实际函数调用关系图生成实际函数调用路径,并基于函数特征从源代码中提取出函数功能回填到实际函数调用路径中,再根据实际函数调用路径建立被测软件系统的实际功能簇模型;
[0013]功能簇比对模块,其用于比较设计功能簇模型与实际功能簇模型,验证被测软件系统的功能实现是否达到软件设计说明书的要求
[0014]本发明的有益效果是:本发明设计了一种基于函数特征的函数功能提取方法,能准确地获得被测软件系统的功能结构,并进一步实现基于函数调用路径的软件实现与设计方法,丰富了软件测试方法,为设计文档的自动化测试提供了新的思路,能够帮助测试人员完成对源代码的分析,自动提取实现系统的功能与实现方法,提高了软件实现与设计的一致性验证效率。

【专利附图】

【附图说明】
[0015]图1为本发明所述的基于路径的软件实现与设计一致性验证方法的流程示意图;
[0016]图2为本发明实施例中的函数功能提取过程示意图;
[0017]图3为本发明实施例中的函数特征相似度计算过程示意图;
[0018]图4为本发明所述的基于路径的软件实现与设计一致性验证系统的结构示意图。

【具体实施方式】
[0019]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0020]本发明以函数调用路径为基础建立模型,认为软件实现中的一条函数调用路径实现了软件系统的一个功能。基于这样的思路,首先对带有功能描述的函数调用关系图和带有功能描述的函数调用路径进行重新定义,即是定义了系统功能关系图和系统功能路径。
[0021]系统功能关系图:系统中每个函数执行了一定的功能,函数之间的调用关系表示了系统中功能点的关系,系统功能关系可以表示为一种有向图G =〈V,E>,其中V是结点集,每一个结点称为一个功能点,表示该结点函数的功能;E = {(x, y) I x, y e V}是弧集,表示功能点之间的依赖或者顺序关系。
[0022]系统功能路径:以功能点为基本单位来描述系统的执打路径,每条系统执彳丁路径表不个系统功能,每条路径可以表不为系统功能关系图中的个结点序列(Vi =V11Vil, - ,Vim), Vi为系统功能关系图中的结点。
[0023]软件系统可以抽象为一张系统功能关系图,图中的每一个结点是一个函数,系统中的每一个函数都实现了一定功能。每一条函数的执行路径代表系统单独完成一个功能所需要的函数序列,所以本发明认为每条函数调用路径的执行都完成了一个系统需要的功能,从而可以根据函数结点在函数调用图中的位置对系统功能进行分簇,将相似的功能子模块分为一簇,即得到系统功能簇。
[0024]系统功能簇:系统功能关系图中由控制语句的分支结点Vk产生分支产生2条或者多条系统功能路径 Paths = {pathj (Vil, Vi2...Vim) Ipathi e SFP 且 Vk e pathj , Paths为分支结点Vk产生系统功能簇。
[0025]如图1所示,本实施例给出了一种基于路径的软件实现与设计一致性验证方法,可以分为三个主要过程:构建设计功能簇模型、构建实际设计功能簇模型和比对功能簇模型。
[0026]图1的左侧部分即示意了设计功能簇模型的构建过程:首先基于软件设计说明书生成设计函数调用关系图,再根据设计函数调用关系图生成设计函数调用路径,再根据设计函数调用路径建立被测软件系统的设计功能簇模型。
[0027]图1的右侧部分示意了实现功能簇模型的构建过程:首先基于源代码生成实际函数调用关系图,再根据实际函数调用关系图生成实际函数调用路径,并基于函数特征从源代码中提取出函数功能回填到实际函数调用路径中,再根据实际函数调用路径建立被测软件系统的实际功能簇模型。
[0028]最后比较设计功能簇模型与实际功能簇模型,验证被测软件系统的功能实现是否达到软件设计说明书的要求,确定软件实现了指定个数的功能及功能实现方式,并在完成对比后,给出测试报告。
[0029]下面具体介绍这三个主要过程的【具体实施方式】。
[0030]一、构建设计功能簇模型
[0031]根据软件设计说明书里的描述,可以分析得到在软件开发前,软件设计人员对代码的整体设计和实现算法要求。详细设计说明书描述每一模块的实现方式,包括实现算法、逻辑流程等。根据软件设计说明书可以画出函数的调用关系图,并且对每个函数的功能以及实现方式会有着相应的描述。软件系统的设计功能簇模型是指通过人工分析设计说明书,建立系统功能调用关系图,然后自动生成功能调用路径,建立设计功能簇模型。
[0032]二、构建实际功能簇模型
[0033]静态分析源代码得到被测软件系统实现的函数调用关系图以及函数调用路径,通过函数功能识别即可得到函数的功能描述及其实现方式,从而得到从源代码提取出来的功能簇模型。
[0034]可知,函数功能提取是最为关键的步骤,其基本思路是:预处理源代码;从源代码中提取函数特征;将提取的函数特征与已知函数功能的函数模板集中的函数特征进行相似度计算,若相似度达到设定的阈值,则认定被测函数的函数功能与函数模板集中对应的函数功能一致;将获得的函数功能及功能实现方式标记至函数的功能描述中,完成函数功能的提取。
[0035]如图2所示,函数功能提取包括以下几个部分。
[0036]I)源代码预处理
[0037]在提取函数特征之前,首先需要对源代码进行预处理。在对代码静态分析时,按token作为基本处理单元进行处理分析,源程序中的注释、空行、自定义字符串内容、输入输出语句中的提示信息等都会对函数特征抽取结果产生影响,所以需要删除这些干扰信息。
[0038]2)特征提取
[0039]有两个关键点,一是所提取特征的类型,一是针对该特征的相似度算法。
[0040]程序特征一般可以分为两类,一种是统计特征,即统计代码中可以量化的特征;另一种是结构特征,比如抽象语法树(AST),控制流图(CFG)等。本实施例将同时提取这两种特征,并根据特征选用合适的相似度算法来计算函数的相似度。
[0041]统计特征的抽取主要借助于flex工具对源代码进行词法分析,flex是一款自动化的词法分析工具,通过flex,只需要设计所需要的模式(正则表达式与该正则表达式匹配时要执行的C/C++代码),即可完成对相应统计特征的提取与计数。
[0042]函数特征中的结构特征是指能够反映函数结构的特征,而不能用数字衡量的。本实施例将抽取表征语法特征的控制流图。结构特征一般使用树或者图的形式来表示,可借助flex工具进行词法分析,并借助gcc编译器的调试信息来完成源代码的控制流图的抽取工作。
[0043]本实施例采用flex生成词法分析器提取函数的统计特征和结构特征,并以JSON格式存储提取出的函数的统计特征和结构特征。
[0044]3)功能识别
[0045]统计特征组合在一起形成了一个N维的向量,每个函数的统计特征将对应该向量空间的一个点。特征的相似度计算可以有多种方式,本实施例采用了向量相似度来表示统计特征之间的相似关系,使用Jaccard系数来表示向量之间的相似度。
[0046]Jaccard系数被广泛的应用到相似度计算中,是一种基于集合的相似度函数,其一般定义为给定两个集合A和B,这两个集合交的大小除以这两个集合并的大小。两个集合的并等于两个集合的大小的和减去两个集合交的大小。本实施例使用的是Jaccard系数的广义定义,又称为Tanimoto系数,其计算方法如公式(I)所示,Jaccard系数的广义定义二元属性情况下归约为Jaccard系数。
V X V,Χ; X V,-, 4、
[0047]NumSim{Vp,Vq)=~0- ( I )
[0048]其中Vp和Vq分别指两个函数的统计特征,均为变量,Xi和分别是向量中的一个元素。
[0049]代码结构特征采用图编辑距离来计算,图编辑距离是指对于两张图G1和G2,经过N步最少次数的基本编辑操作使G1转换为G2,其中基本编辑是指对图中结点行进行增加、删除、编辑。结构特征的相似度计算公式为:
P c.Γ \ 1 distancc(G,,G?)
[0050]GrpSnn^G^l-瞧?丨批丨)⑵
[0051]其中,(Iistance(GljG2)是指G1和G2的编辑距离|G」和|G2|为两张图的结点个数。
[0052]本实施例的特征相似度计算步骤主要为:首先,采用公式(I)基于向量相似度计算提取出的统计特征与函数模板集中的统计特征的相似度,再从中选择相似度最高的模板作为结构特征对比的模板集;其次,采用公式(2),基于图编辑距离计算提取出的结构特征与选择出的模板集中的结构特征的相似度,将相似度最高的模板作为计算结果。
[0053]举例说明,如图3所示,通过计算被测函数统计特征与特征模板集中统计特征的相似度,发现函数Fi和Fj的统计特征与被测函数相似度高(如图3中统计特征的斜线填充部分所示,Fi和Fj的特征向量分别为Vi和Vj),然后计算这两个函数的结构特征与被测函数的相似度,得到Fj的结构特征相似度较高(如图3中结构特征的斜线填充部分所示),进而可以认为Fj模板函数的功能和实现方式与被测函数类似,将被测函数的功能标记为该模板函数的功能描述。
[0054]三、比对功能簇模型
[0055]从图的角度去看两个功能簇模型对比顺序是一种自顶向下的对比顺序,从根结点开始,以深度搜索的方式对比每一对具有相同函数名称的函数对。对比的内容为两个函数的功能描述,包括函数功能以及实现方式。如果函数功能描述一致,则将这两个函数标记为真,表示该功能点的软件实现与设计是一致的。
[0056]系统功能是由一系列的功能点组成的,只有完全匹配的功能路径才能表示该系统功能是一致的。完全匹配的功能路径是指两个模型中某两条函数调用路径中的每一个结点都是对应的,并且功能描述匹配成功。
[0057]如图4所示,本实施例对应给出了一种基于路径的软件实现与设计一致性验证系统,包括:
[0058]设计功能簇模型构建模块,其用于根据软件设计说明书生成设计函数调用关系图,根据设计函数调用关系图生成设计函数调用路径,再根据设计函数调用路径建立被测软件系统的设计功能簇模型;
[0059]实际功能簇模型构建模块,其用于根据源代码生成实际函数调用关系图,根据实际函数调用关系图生成实际函数调用路径,并基于函数特征从源代码中提取出函数功能回填到实际函数调用路径中,再根据实际函数调用路径建立被测软件系统的实际功能簇模型;
[0060]功能簇比对模块,其用于比较设计功能簇模型与实际功能簇模型,验证被测软件系统的功能实现是否达到软件设计说明书的要求。
[0061]其中,所述实际功能簇模型构建模块包括有函数功能提取模块,其用于根据函数特征从源代码中提取出函数功能,且所述函数功能提取模块又包括:
[0062]源代码预处理模块,用于预处理源代码;
[0063]函数特征提取模块,用于从源代码中提取函数特征;
[0064]函数功能获取模块,用于将提取的函数特征与已知函数功能的函数模板集中的函数特征进行相似度计算,若相似度达到设定的阈值,则认定被测函数的函数功能与函数模板集中对应的函数功能一致;
[0065]函数功能标记模块,用于将获得的函数功能及功能实现方式标记至函数的功能描述中,完成函数功能的提取。
[0066]所述功能簇比对模块包括:
[0067]函数功能比对模块,其用于按自顶向下的对比顺序,从根结点开始,以深度搜索的方式对比两个功能簇模型中每一对具有相同函数名称的函数,对比的内容为两个函数的功能描述;以及
[0068]函数功能判定,其用于在进行对比的两个函数的功能描述一致时,将两个函数标记为真,以表示该函数对应的功能点的功能实现与软件设计说明书一致。
[0069]该系统与对应的基于路径的软件实现与设计一致性验证方法的实施过程一致,不再多述。
[0070]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于路径的软件实现与设计一致性验证方法,其特征在于,包括: 基于软件设计说明书生成设计函数调用关系图,根据设计函数调用关系图生成设计函数调用路径,再根据设计函数调用路径建立被测软件系统的设计功能簇模型; 基于源代码生成实际函数调用关系图,根据实际函数调用关系图生成实际函数调用路径,并基于函数特征从源代码中提取出函数功能回填到实际函数调用路径中,再根据实际函数调用路径建立被测软件系统的实际功能簇模型; 比较设计功能簇模型与实际功能簇模型,验证被测软件系统的功能实现是否达到软件设计说明书的要求。
2.根据权利要求1所述的一种基于路径的软件实现与设计一致性验证方法,其特征在于,所述基于函数特征从源代码中提取出函数功能具体包括: 预处理源代码; 从源代码中提取函数特征; 将提取的函数特征与已知函数功能的函数模板集中的函数特征进行相似度计算,若相似度达到设定的阈值,则认定被测函数的函数功能与函数模板集中对应的函数功能一致; 将获得的函数功能及功能实现方式标记至函数的功能描述中,完成函数功能的提取。
3.根据权利要求2所述的一种基于路径的软件实现与设计一致性验证方法,其特征在于,所述函数特征包括统计特征和结构特征,且所述将提取的函数特征与已知函数功能的函数模板集中的函数特征进行相似度计算具体包括: 基于向量相似度计算提取出的统计特征与函数模板集中的统计特征的相似度,再从中选择相似度最高的模板作为结构特征对比的模板集; 基于图编辑距离计算提取出的结构特征与选择出的模板集中的结构特征的相似度,将相似度最高的模板作为计算结果。
4.根据权利要求3所述的一种基于路径的软件实现与设计一致性验证方法,其特征在于,采用flex生成词法分析器提取函数的统计特征和结构特征,并以JSON格式存储提取出的函数的统计特征和结构特征。
5.根据权利要求1所述的一种基于路径的软件实现与设计一致性验证方法,其特征在于,所述比较设计功能簇模型与实际功能簇模型具体包括: 按自顶向下的对比顺序,从根结点开始,以深度搜索的方式对比两个功能簇模型中每一对具有相同函数名称的函数,对比的内容为两个函数的功能描述。
6.根据权利要求5所述的一种基于路径的软件实现与设计一致性验证方法,其特征在于,所述验证被测软件系统的功能实现是否达到软件设计说明书的要求具体包括: 若进行对比的两个函数的功能描述一致,则将两个函数标记为真,表示该函数对应的功能点的功能实现与软件设计说明书一致。
7.一种基于路径的软件实现与一致性验证系统,其特征在于,包括: 设计功能簇模型构建模块,其用于根据软件设计说明书生成设计函数调用关系图,根据设计函数调用关系图生成设计函数调用路径,再根据设计函数调用路径建立被测软件系统的设计功能簇模型; 实际功能簇模型构建模块,其用于根据源代码生成实际函数调用关系图,根据实际函数调用关系图生成实际函数调用路径,并基于函数特征从源代码中提取出函数功能回填到实际函数调用路径中,再根据实际函数调用路径建立被测软件系统的实际功能簇模型; 功能簇比对模块,其用于比较设计功能簇模型与实际功能簇模型,验证被测软件系统的功能实现是否达到软件设计说明书的要求。
8.根据权利要求7所述的一种基于路径的软件实现与一致性验证系统,其特征在于,所述实际功能簇模型构建模块包括有函数功能提取模块,其用于根据函数特征从源代码中提取出函数功能,且所述函数功能提取模块又包括: 源代码预处理模块,用于预处理源代码; 函数特征提取模块,用于从源代码中提取函数特征; 函数功能获取模块,用于将提取的函数特征与已知函数功能的函数模板集中的函数特征进行相似度计算,若相似度达到设定的阈值,则认定被测函数的函数功能与函数模板集中对应的函数功能一致; 函数功能标记模块,用于将获得的函数功能及功能实现方式标记至函数的功能描述中,完成函数功能的提取。
9.根据权利要求8所述的一种基于路径的软件实现与一致性验证系统,其特征在于,所述函数特征包括统计特征和结构特征,且将提取的函数特征与已知函数功能的函数模板集中的函数特征进行相似度计算具体包括: 基于向量相似度计算提取出的统计特征与函数模板集中的统计特征的相似度,再从中选择相似度最高的模板作为结构特征对比的模板集; 基于图编辑距离计算提取出的结构特征与选择出的模板集中的结构特征的相似度,将相似度最高的模板作为计算结果。
10.根据权利要求7所述的一种基于路径的软件实现与一致性验证系统,其特征在于,所述功能簇比对模块包括: 函数功能比对模块,其用于按自顶向下的对比顺序,从根结点开始,以深度搜索的方式对比两个功能簇模型中每一对具有相同函数名称的函数,对比的内容为两个函数的功能描述;以及 函数功能判定,其用于在进行对比的两个函数的功能描述一致时,将两个函数标记为真,以表示该函数对应的功能点的功能实现与软件设计说明书一致。
【文档编号】G06F11/36GK104317711SQ201410568963
【公开日】2015年1月28日 申请日期:2014年10月22日 优先权日:2014年10月22日
【发明者】牟永敏 申请人:牟永敏, 北京信息科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1