CN104503917B - 基于数据流函数调用路径的变更影响域分析方法及*** - Google Patents
基于数据流函数调用路径的变更影响域分析方法及*** Download PDFInfo
- Publication number
- CN104503917B CN104503917B CN201510004022.XA CN201510004022A CN104503917B CN 104503917 B CN104503917 B CN 104503917B CN 201510004022 A CN201510004022 A CN 201510004022A CN 104503917 B CN104503917 B CN 104503917B
- Authority
- CN
- China
- Prior art keywords
- statement
- block
- blocks
- function
- influence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于数据流函数调用路径的变更影响域分析方法及***,所述方法包括:对源代码和变更后的代码中的每个函数进行静态路径分析,获得每个函数对应的局部数据流影响树;分别将源代码和变更后的代码中的所有局部数据流影响树整合为对应的全局数据流影响树;比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域。本发明能够有效确定数据流变更影响域,大大减少了***的冗余路径,提高了测试效率,为开发人员快速处理回归测试中的软件缺陷提供了帮助,为回归测试在数据流方面的发展提供了一种新思路。
Description
技术领域
本发明涉及软件测试领域,具体地,涉及一种基于数据流函数调用路径的变更影响域分析方法及***。
背景技术
回归测试是对之前已测试过、经过修改的程序进行重新测试,以验证该修改没有引入新的错误或者由于更改而发现之前未发现的错误。计算机程序有很大一部分是数据声明,数据的变化对软件功能的影响将是巨大的。因此,对数据变更的测试是进行回归测试首先应该考虑的问题。通常,影响域分析用来确定变更影响范围,影响域可以划分为控制流影响域、数据流影响域和信息流影响域。控制流只是从控制方面没有办法分析数据,范围比较小;信息流影响范围广,信息量大,难以准确提取影响数据;数据流分析了带有控制关系的数据流,其影响范围大,变更影响域相对容易确定。
函数调用路径的思想是在每个函数完成单元测试的前提下,将代码分析粒度由语句扩展到函数。其以函数为基本单位,分析源程序里基于控制流的函数之间的逻辑关系。因此,本发明提出了一种基于数据流函数调用路径的变更影响域分析方法及***。
发明内容
本发明的目的是提供一种基于数据流函数调用路径的变更影响域分析方法及***,用于解决代码变更后,如何确定变更影响域的问题。
本发明的技术方案包括一种基于数据流函数调用路径的变更影响域分析方法,其包括:
对源代码和变更后的代码中的每个函数进行静态路径分析,获得每个函数对应的局部数据流影响树;
分别将源代码和变更后的代码中的所有局部数据流影响树整合为对应的全局数据流影响树;以及
比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域。
优选地,所述对源代码和变更后的代码中的每个函数进行静态分析,获得每个函数对应的局部数据流影响树,具体包括:将每个函数作为一个语句块,以语句块为单位进行静态分析,获得每个语句块对应的局部数据流影响树。
优选地,所述语句块包括选择语句块、循环语句块、跳转语句块和/或开关语句块。
优选地,获得选择语句块的局部数据流影响树,具体包括:
对于不以else语句块结束的选择语句块,当整个if语句块结束时,需在if语句块的第一个孩子的兄弟链表中添加一个空的结点;当最后一个else if语句块结束时,将该语句块同上一层if语句块相连,且在if语句块中连接一个空的兄弟结点;
对于以else语句块结束的选择语句块,当else语句块结束时,标识整个if语句块结束,将else语句块同上一层if语句块相连,再将整个if语句块同其父语句块相连,不添加空的兄弟结点。
优选地,获得循环语句块的局部数据流影响树,具体包括:循环语句块包括for语句块、while-do语句块和do-while语句块,对于for语句块和while-do语句块,当整个语句块结束时,为该语句块添加一个空的兄弟结点,对于do-while语句块,不需要添加空的兄弟结点。
优选地,获得跳转语句块的局部数据流影响树,具体包括:跳转语句块包括break语句块、continue语句块和return语句块,若函数名为break语句块、continue语句块或return语句块,则对应的结点不进行连接操作,若一个循环语句块或switch整个语句块结束,要从该语句块中删除函数名为break和continue的结点,若一个函数语句块结束,从该语句块中删除函数名为return的结点。
优选地,获得开关语句块的局部数据流影响树,具体包括:所述开关语句块包括switch语句块和case语句块,当一个case语句块结束时,将当前case语句块同其父语句块进行兄弟连接操作,当父语句块没有break关键字,则将当前语句块同父语句块进行孩子连接操作;当整个switch语句块结束时,删除switch语句块中的函数名为break的结点。
优选地,将源局部数据流影响树整合为全局数据流影响树,具体包括:基于每个函数的第一层数据流影响树,对main函数的局部数据流影响树进行扩展,获得全局数据流影响树。
优选地,所述比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域,具体包括:确定变更后的代码相对于源代码的变更点,分析变更点时,建立变更影响模型,将要分析的全局数据流影响树进行对比分析,并将变更点后面的数据流分别标记,并将标记的节点读取出来得到数据流变更影响域。
本发明的技术方案还包括一种基于数据流函数调用路径的变更影响域分析***,包括:
局部数据流影响树获取模块,用于对源代码和变更后的代码中的每个函数进行静态路径分析,获得每个函数对应的局部数据流影响树;
全局数据流影响树获取模块,用于分别将源代码和变更后的代码中的所有局部数据流影响树整合为对应的全局数据流影响树;以及
变更影响域获取模块,用于比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域。
本发明的有益效果是:本发明能够有效确定数据流变更影响域,大大减少了***的冗余路径,提高了测试效率,为开发人员快速处理回归测试中的软件缺陷提供了帮助,为回归测试在数据流方面的发展提供了一种新思路。
附图说明
图1是基于数据流函数调用路径的变更影响域分析方法的流程示意图;
图2是基于数据流函数调用路径的变更影响域分析方法的实施过程示意图;
图3是选择语句块中示例代码的局部数据流影响树示意图;
图4是基于数据流函数调用路径的变更影响域分析方法的结构示意图;
图5是应用例中main函数的局部数据流影响树的示意图;
图6是应用例中bFunc函数的局部数据流影响树的示意图;
图7是应用例中源代码的全局数据流影响树的示意图;
图8是应用例中变更后的代码的全局数据流影响树的示意图;
图9是应用例中函数数据流变更影响域的示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
为便于描述,本实施方式首先给出了部分术语的定义,其仅用于对技术方案进行解释,并不限定本发明的保护范围。
1、函数调用路径(Function Calling Path,FCP):指根据函数调用关系得到的由程序入口点到出口点的一个函数名序列,表示为pathi={fi0,fi1,fi2……fin}。其中,fij表示函数名,fij与fij+1之间的相邻关系表示fij调用了fij+1或fij与fij+1顺序执行。
2、数据流函数调用路径:数据流函数调用路径指同一数据与所关联的函数之间的序列,使用P表示,Pi={(Vj0/mi0,…mik/Vjk…,min/Vjm}。其中min代表起始数据,Vjm代表被调函数,路径中相邻结点表示调用关系或者顺序执行关系。例如P1={(V0,m0,m1)}表示源函数中的数据流函数调用关路径V0→m0→m1。
3、局部数据流影响树:局部数据流影响树表示源程序中单个函数中所发生的数据流调用。本实施方式中使用三元组T(M,R,S)表示局部数据流影响树,M表示数据集合,R表示数据流之间的调用关系,S表示源函数。
4、静态路径:是指对源代码进行静态分析,根据数据流调用关系得到的数据流调用路径。全局静态路径集是全部静态路径的集合,表示为:B(S,C)={P1,P2,…Pn},其中S是源代码,C是数据流调用关系准则,Pi是数据流调用路径。
5、语句块:是指过程语言中特定程序结构,由关键字构成的一个语句序列,或不在特定程序结构中的单条语句。
基于上述定义,本实施方式给出了一种基于数据流函数调用路径的变更影响域分析方法,如图1所示,包括以下步骤:
步骤1,对源代码和变更后的代码中的每个函数进行静态路径分析,获得每个函数对应的局部数据流影响树。
步骤2,分别将源代码和变更后的代码中的所有局部数据流影响树整合为对应的全局数据流影响树。
步骤3,比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域。
上述三个步骤仅示意了一种优选的执行顺序,本发明并不限制于此。
如图2所示,本实施例方式的大致实施过程为:对源代码和变更后代码通过局部数据处理得到局部数据流影响树,然后通过全局数据流影响树获取算法得到全局数据流影响树,将分别得到的全局数据流影响树使用变更影响模型算法得到数据流影响域分析报告。因此,基于上述三个步骤,具体的实施过程如下所述。
一、语句块及各语句块的局部数据流影响树
本实施方式中,所述对源代码和变更后的代码中的每个函数进行静态分析,获得每个函数对应的局部数据流影响树,具体包括:将每个函数作为一个语句块,以语句块为单位进行静态分析,获得每个语句块对应的局部数据流影响树。
首先,进行语句块分析。
所述语句块包括选择语句块、循环语句块、跳转语句块和/或开关语句块。
(1)选择语句块
选择语句块包括if语句块、else语句块和else if语句块,针对这种结构可以分为两类:
1)if、if/else if/…/else if
不以else语句块结束,当整个if语句块结束时,需在if语句块的第一个孩子的兄弟链表中添加一个空的结点,以下面所示的代码为例,其对应的局部数据流影响树如图3所示。
示例代码:
if(i>3)
tVariable++;
else if(i<4)
tVariable--;
上述示例代码中,当最后一个else if语句块结束时,将其语句块对应的树同上一层if语句块相连,由于else if语句块结束标识整个if语句块结束,因此,还需要在if语句块树中连接一个空的兄弟结点。
2)if/…/else
以else语句块结束,当语句块else结束时,标识整个if语句块结束,将else语句块同上一层if语句块相连,最后将整个if语句块同其父语句块相连,没有必要再添加一个空的兄弟结点。
(2)循环语句块
循环语句块包括for语句块、while-do语句块和do-while语句块,采用Z路径测试思想处理,只考虑循环的两个可能性:重复零次和多于零次的重复。因此,在处理for语句块和while-do语句块结构类似于处理if/…/else if结构。当整个语句块结束时,需为其添加一个空的兄弟结点。
do-while结构由于该循环至少被执行了一次,因此,不需要为其添加空的兄弟结点。
(3)跳转语句块
跳转语句块包括break语句块、continue语句块和return语句块,break语句块主要出现在循环、switch/case结构中,continue语句块主要出现在循环结构中,return语句块可以出现在任何语句块中。在程序处理过程中,以上关键字均被识为函数名处理,在以下情况中要对局部数据流影响树进行特殊处理。
1)当进行语句块连接处理时,如果函数名为以上关键字,那么该结点不进行连接操作。
2)当一个循环语句块、switch整个语句块结束时,要从语句块中删除函数名为break、continue的结点。
3)当一个函数语句块结束时,从函数语句块树中删除函数名为return的结点。
(4)开关语句块
开关语句块包括switch语句块和case语句块,在处理case语句块时,case语句块之间通过break关键字来实现并列关系,因此,当一个case语句块结束时,要进行以下两步操作:将当前case语句块同其父语句块进行兄弟连接操作,case语句块本身就存在并列关系;当父语句块没有break关键字,将当前语句块同父语句块进行孩子连接操作。
当整个switch语句块结束时,删除switch中函数名为break的结点。
其次,采用局部数据处理算法获取局部数据流影响树。
在分析函数时,首先建立队列,设置临时变量,遇到语句块、遇到“{”测试变量加1,并将数值加入队列中,如果是控制字则将其入队,遇到含有所测数据的函数名和数据时都要入队,在遇到“}”临时变量减1并入队,通过两端对临时变量数值的比较得到数据流函数调用关系,最后得到局部数据流调用关系队列。
从分析得到的队列来建立局部数据流影响树,队列出队,创建一个树头,如果是数字将其存储到变量中,如果是控制字,根据控制字的不同类别来进行结构的选择,遇到数据流则添加数据流信息到孩子节点,按此下去,直到队列出队完,得到局部数据流函数影响树
局部数据处理算法的算法实现描述如下:
输入:源程序,变更后程序
输出:局部数据流函数影响树
二、全局数据流影响树
基于每个函数的第一层数据流影响树,对main函数数据流影响树进行扩展,采用先序递归方法。
算法描述如下:
输入:各个函数的局部数据流影响树
输出:全局数据流影响树
三、变更影响域
确定变更后的代码相对于源代码的变更点,分析变更点时,建立变更影响模型,将要分析的全局数据流影响树进行对比分析,并将变更点后面的数据流分别标记,并将标记的节点读取出来得到数据流变更影响域。
算法描述如下:
输入:全局数据流函数调用路径
输出:变更影响域
对应地,本实施方式还给出一种基于数据流函数调用路径的变更影响域分析***,如图4所示,包括:
局部数据流影响树获取模块,用于对源代码和变更后的代码中的每个函数进行静态路径分析,获得每个函数对应的局部数据流影响树;
全局数据流影响树获取模块,用于分别将源代码和变更后的代码中的所有局部数据流影响树整合为对应的全局数据流影响树;
变更影响域获取模块,用于比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域。
该变更影响域分析***与上述基于数据流函数调用路径的变更影响域分析方法的工作过程及具体实施过程均相同,这里不再多述。
为突出本实施方式所述的基于数据流函数调用路径的变更影响域分析***及方法的效果,本实施方式还给出一个应用例,用于说明本实施方式的具体实施过程及有益效果。
该应用例给出如下表所示的测试程序:
下面对代码中的变量mUse进行数据流影响域分析,mUse在bFun函数内使用时传递到a形参变量,所以在分析bFun函数时分析a变量的影响域就可以确定mUse在bFun函数的影响域。影响域分析图如下图5至图8所示,其中图5为main函数的局部数据流影响树,图6为bFunc函数的局部数据流影响树,图7为源代码的全局数据流影响树,图8为变更后的代码的全局数据流影响树。
mUse数据流调用关系路径如下所示。
mUse数据流调用关系路径
第1条路径:17.int main()->20.int mUse,result->26.mUse=mUse+2;->42.if(mUse>0&&kCom>2)->44.--mUse;
第2条路径:17.int main()->20.int mUse,result->39.mUse+=kCom;->42.if(mUse>0&&kCom>2)->44.--mUse;
第3条路径:17.int main()->20.int mUse,result->42.if(mUse>0&&kCom>2)->44.--mUse;
第4条路径:17.int main()->20.int mUse,result->32.result=bFun(mUse);->8.int bFun(int a)->15.return a;->42.if(mUse>0&&kCom>2)->44.--mUse;
第5条路径:17.int main()->20.int mUse,result->32.result=bFun(mUse);->8.int bFun(int a)->11.for(i=0;i<a;i++)->13.a=a-1;->15.return a;->42.if(mUse>0&&kCom>2)->44.--mUse;
对源程序进行变更,修改第13行a=a-2;将其改为a=a-1;并将第39行mUse+=kCom;删除,变更后的数据流调用关系路径如下所示。
程序变更后的mUse数据流调用关系路径
第1条路径:17.int main()->20.int mUse,result->26.mUse=mUse+2;->42.if(mUse>0&&kCom>2)->44.--mUse;
第2条路径:17.int main()->20.int mUse,result->42.if(mUse>0&&kCom>2)->44.--mUse;
第3条路径:17.int main()->20.int mUse,result->32.result=bFun(mUse);->8.int bFun(int a)->15.return a;->42.if(mUse>0&&kCom>2)->44.--mUse;
第4条路径:17.int main()->20.int mUse,result->32.result=bFun(mUse);->8.int bFun(int a)->11.for(i=0;i<a;i++)->13.a=a-1;->15.return a;->42.if(mUse>0&&kCom>2)->44.--mUse;
由上述获得的数据流调用关系路径进行对比,可以清楚的看到mUse数据流变更前后的数据流调用关系路径,变更后的数据流路径比变更前少了一条。结合数据流影响域图分析可以得到更加确切的变更影响域,如图7所示。
图9中变更及受影响的结点均用斜线填充的部分表示,受到影响的函数调用路径用虚线表示,从图中可以准确的看到算法得到的函数变更影响域为13.a=a-1;->15.return a;->42.if(mUse>0&&kCom>2)->44.--mUse;这样有效地减少了路径测试中的路径数目,提高了测试效率。
通过对以上程序数据流调用关系的逻辑检查,得出图3-图7完全正确,这就保证了通过变更点受影响路径分析的正确性,测试人员可以根据路径分析的结果,设计、选择、优化测试用例。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (4)
1.一种基于数据流函数调用路径的变更影响域分析方法,其特征在于,包括:
对源代码和变更后的代码中的每个函数进行静态路径分析,获得每个函数对应的局部数据流影响树;
分别将源代码和变更后的代码中的所有局部数据流影响树整合为对应的全局数据流影响树;以及
比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域;
其中,所述对源代码和变更后的代码中的每个函数进行静态分析,获得每个函数对应的局部数据流影响树,具体包括:将每个函数作为一个语句块,以语句块为单位进行静态分析,获得每个语句块对应的局部数据流影响树;
其中,所述语句块包括选择语句块、循环语句块、跳转语句块和/或开关语句块;
获得选择语句块的局部数据流影响树,具体包括:
对于不以else语句块结束的选择语句块,当整个if语句块结束时,需在if语句块的第一个孩子结点的兄弟链表中添加一个空的结点;当最后一个else if语句块结束时,将该语句块同上一层if语句块相连,且在if语句块中连接一个空的兄弟结点;
对于以else语句块结束的选择语句块,当else语句块结束时,标识整个if语句块结束,将else语句块同上一层if语句块相连,再将整个if语句块同其父语句块相连,不添加空的兄弟结点;
获得循环语句块的局部数据流影响树,具体包括:循环语句块包括for语句块、while-do语句块和do-while语句块,对于for语句块和while-do语句块,当整个语句块结束时,为该语句块添加一个空的兄弟结点,对于do-while语句块,不需要添加空的兄弟结点;
获得跳转语句块的局部数据流影响树,具体包括:跳转语句块包括break语句块、continue语句块和return语句块,若函数名为break语句块、continue语句块或return语句块,则对应的结点不进行连接操作,若一个循环语句块或switch整个语句块结束,要从该语句块中删除函数名为break和continue的结点,若一个函数语句块结束,从该语句块中删除函数名为return的结点;
获得开关语句块的局部数据流影响树,具体包括:所述开关语句块包括switch语句块和case语句块,当一个case语句块结束时,将当前case语句块同其父语句块进行兄弟连接操作,当父语句块没有break关键字,则将当前语句块同父语句块进行孩子连接操作;当整个switch语句块结束时,删除switch语句块中的函数名为break的结点。
2.根据权利要求1所述的变更影响域分析方法,其特征在于,将源局部数据流影响树整合为全局数据流影响树具体包括:基于每个函数的第一层数据流影响树,对main函数的局部数据流影响树进行扩展,获得全局数据流影响树。
3.根据权利要求1所述的变更影响域分析方法,其特征在于,所述比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域,具体包括:确定变更后的代码相对于源代码的变更点,分析变更点时,建立变更影响模型,将要分析的全局数据流影响树进行对比分析,并将变更点后面的数据流分别标记,并将标记的节点读取出来得到数据流变更影响域。
4.一种基于数据流函数调用路径的变更影响域分析***,其特征在于,包括:
局部数据流影响树获取模块,用于对源代码和变更后的代码中的每个函数进行静态路径分析,获得每个函数对应的局部数据流影响树;全局数据流影响树获取模块,用于分别将源代码和变更后的代码中的所有局部数据流影响树整合为对应的全局数据流影响树;以及
变更影响域获取模块,用于比较源代码和变更后的代码的全局数据流影响树,获得数据流变更影响域;
其中,所述对源代码和变更后的代码中的每个函数进行静态分析,获得每个函数对应的局部数据流影响树,具体包括:将每个函数作为一个语句块,以语句块为单位进行静态分析,获得每个语句块对应的局部数据流影响树;
其中,所述语句块包括选择语句块、循环语句块、跳转语句块和开关语句块;
获得选择语句块的局部数据流影响树,具体包括:
对于不以else语句块结束的选择语句块,当整个if语句块结束时,需在if语句块的第一个孩子结点的兄弟链表中添加一个空的结点;当最后一个else if语句块结束时,将该语句块同上一层if语句块相连,且在if语句块中连接一个空的兄弟结点;对于以else语句块结束的选择语句块,当else语句块结束时,标识整个if语句块结束,将else语句块同上一层if语句块相连,再将整个if语句块同其父语句块相连,不添加空的兄弟结点;
获得循环语句块的局部数据流影响树,具体包括:循环语句块包括for语句块、while-do语句块和do-while语句块,对于for语句块和while-do语句块,当整个语句块结束时,为该语句块添加一个空的兄弟结点,对于do-while语句块,不需要添加空的兄弟结点;
获得跳转语句块的局部数据流影响树,具体包括:跳转语句块包括break语句块、continue语句块和return语句块,若函数名为break语句块、continue语句块或return语句块,则对应的结点不进行连接操作,若一个循环语句块或switch整个语句块结束,要从该语句块中删除函数名为break和continue的结点,若一个函数语句块结束,从该语句块中删除函数名为return的结点;
获得开关语句块的局部数据流影响树,具体包括:所述开关语句块包括switch语句块和case语句块,当一个case语句块结束时,将当前case语句块同其父语句块进行兄弟连接操作,当父语句块没有break关键字,则将当前语句块同父语句块进行孩子连接操作;当整个switch语句块结束时,删除switch语句块中的函数名为break的结点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510004022.XA CN104503917B (zh) | 2015-01-04 | 2015-01-04 | 基于数据流函数调用路径的变更影响域分析方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510004022.XA CN104503917B (zh) | 2015-01-04 | 2015-01-04 | 基于数据流函数调用路径的变更影响域分析方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104503917A CN104503917A (zh) | 2015-04-08 |
CN104503917B true CN104503917B (zh) | 2017-07-07 |
Family
ID=52945316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510004022.XA Expired - Fee Related CN104503917B (zh) | 2015-01-04 | 2015-01-04 | 基于数据流函数调用路径的变更影响域分析方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104503917B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750496B (zh) * | 2015-04-13 | 2018-01-05 | 上海新炬网络信息技术股份有限公司 | 一种模型变更影响度自动检查方法 |
CN104834603B (zh) * | 2015-05-26 | 2017-12-01 | 牟永敏 | 一种面向回归测试的控制流变更影响域分析方法和*** |
CN105045719B (zh) * | 2015-08-24 | 2018-06-19 | 中国科学院软件研究所 | 基于修复缺陷的变更预测回归测试失效的方法及装置 |
CN106547520B (zh) * | 2015-09-16 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 一种代码路径分析方法及装置 |
CN105389262B (zh) * | 2015-12-23 | 2019-02-15 | 北京奇虎科技有限公司 | 一种针对界面测试生成测试建议的方法和装置 |
US11789724B2 (en) | 2016-08-23 | 2023-10-17 | International Business Machines Corporation | Machine learning to facilitate incremental static program analysis |
CN106528422B (zh) * | 2016-11-10 | 2019-01-29 | ***股份有限公司 | 一种检测Java程序页面扰动的方法和装置 |
CN108536585B (zh) * | 2018-03-19 | 2022-01-11 | 北京信息科技大学 | 数据变更影响域分析方法 |
CN109446068B (zh) * | 2018-09-26 | 2024-04-05 | 平安健康保险股份有限公司 | 接口测试方法、装置、计算机设备和存储介质 |
CN109582300A (zh) * | 2018-11-30 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 基于路径的代码变更分析方法、装置及设备 |
CN110046103A (zh) * | 2019-04-23 | 2019-07-23 | 上海航天计算机技术研究所 | 装订数据变更影响域分析方法及*** |
CN111008139A (zh) * | 2019-12-06 | 2020-04-14 | 北京京航计算通讯研究所 | 软件更改影响域分析辅助方法 |
CN111061634A (zh) * | 2019-12-06 | 2020-04-24 | 北京京航计算通讯研究所 | 软件更改影响域分析辅助*** |
CN112817637A (zh) * | 2021-04-16 | 2021-05-18 | 四川新网银行股份有限公司 | 获得***代码修改后受影响的对外提供服务接口的方法 |
CN117009230B (zh) * | 2023-07-25 | 2024-04-16 | 北京泰策科技有限公司 | 一种基于代码覆盖率评测的精准测试方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN104021084A (zh) * | 2014-06-19 | 2014-09-03 | 国家电网公司 | 一种Java源代码缺陷检测方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7849509B2 (en) * | 2005-10-07 | 2010-12-07 | Microsoft Corporation | Detection of security vulnerabilities in computer programs |
-
2015
- 2015-01-04 CN CN201510004022.XA patent/CN104503917B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN104021084A (zh) * | 2014-06-19 | 2014-09-03 | 国家电网公司 | 一种Java源代码缺陷检测方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于函数调用路径的测试用例优先级排序;牟永敏;《计算机工程》;20140731;第40卷(第7期);第242-246页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104503917A (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104503917B (zh) | 基于数据流函数调用路径的变更影响域分析方法及*** | |
CN110908640B (zh) | 实现业务功能的方法和脚本引擎 | |
Memon | A comprehensive framework for testing graphical user interfaces | |
CN104834603B (zh) | 一种面向回归测试的控制流变更影响域分析方法和*** | |
EP3208716A1 (en) | System and method for coverage-based automated test case augmentation for design models | |
CN106557413A (zh) | 基于代码覆盖率获取测试用例的方法和设备 | |
Griebe et al. | A model-based approach to test automation for context-aware mobile applications | |
JP6387182B2 (ja) | 情報処理方法、装置及びコンピュータ記憶媒体 | |
CN103294596B (zh) | 一种基于程序不变量的合约式软件故障预警方法 | |
CN103116540A (zh) | 基于全局超级块支配图的动态符号执行方法及其装置 | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
CN102662644A (zh) | 一种使用流程图生成测试案例的方法 | |
CN103914379B (zh) | 故障自动注入与故障检测的方法及其*** | |
CN102567201A (zh) | 跨模型的图形用户界面测试脚本自动修复方法 | |
CN108595334A (zh) | 一种计算Java程序动态切片的方法、装置及可读存储介质 | |
CN108563561A (zh) | 一种程序隐性约束提取方法及*** | |
CN104317711A (zh) | 一种基于路径的软件实现与设计一致性验证方法及*** | |
CN105354035A (zh) | 用于编写web工程测试用例的方法 | |
CN107608890A (zh) | 一种基于带权重的事件处理函数模型生成gui软件测试用例的方法 | |
CN109002723B (zh) | 一种分段式符号执行方法 | |
CN104199649B (zh) | 一种用于父子进程间交互信息的路径剖析方法 | |
CN104657139B (zh) | 用于故障注入的可视化命令流生成***及方法 | |
Vert et al. | Detection of incorrect pointer dereferences for C/C++ programs using static code analysis and logical inference | |
Alshanqiti et al. | Visual contract extractor: a tool for reverse engineering visual contracts using dynamic analysis | |
Dong et al. | Build your own model checker in one month |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170707 Termination date: 20180104 |