CN104834603A - 一种面向回归测试的控制流变更影响域分析方法和系统 - Google Patents
一种面向回归测试的控制流变更影响域分析方法和系统 Download PDFInfo
- Publication number
- CN104834603A CN104834603A CN201510276202.3A CN201510276202A CN104834603A CN 104834603 A CN104834603 A CN 104834603A CN 201510276202 A CN201510276202 A CN 201510276202A CN 104834603 A CN104834603 A CN 104834603A
- Authority
- CN
- China
- Prior art keywords
- control
- function
- flow check
- control flow
- control statement
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种面向回归测试的控制流变更影响域分析方法及系统,所述控制流变更影响域分析方法包括:获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树;比较新旧版本的源程序,获取发生变更的控制语句;在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域。本发明能够正确识别发生变化的控制语句,精确获取变更点影响域,通过变更点影响域,在回归测试中可以约减测试用例,提高测试效率。
Description
技术领域
本发明涉及软件测试领域,具体地,涉及一种面向回归测试的控制流变更影响域分析方法和系统。
背景技术
回归测试(Regression Testing)是指软件系统被修改或扩充后,为了验证对软件的修改是否达到预期的目的,并且没有引入新的错误而重复进行的测试。理论上,每当软件发生修改和变化时,都要进行回归测试来验证修改的正确性及其影响,这种修改和变化称之为变更。实践表明,软件生命周期中的任何阶段都可能发生变更,不必对所有的测试用例进行重新测试,只需要对其中受到影响的部分进行重新测试。重新测试时若仍采用基于路经粒度进行测试,则路径数目将会是海量的,人工测试几乎是不可能的。采用面向函数调用路径思想,将代码分析粒度由语句扩展到函数,既避免路径数量的大规模增长,又保证了软件测试充分性。
变更可以导致数据流、控制流和信息流的变化,目前变更的研究也主要集中在这三方面。其中,控制语句在程序中有改变(或停止)程序执行顺序,控制代码执行的路径的作用。控制语句发生变化使得函数调用路径发生改变,此时若对所有的测试用例进行回归测试则会增加巨大的工作量,若能确定控制语句发生变化后影响的函数则不必对所有的用例进行回归测试,只需对受到影响的函数进行重新测试,降低回归测试中的工作量。
目前按照不同分类方式对软件变更进行了研究,从变更的行为和软件生命周期和逻辑语义三个方面对变更进行了分类。软件生命周期中的任何阶段都可能发生变更,其中代码变更可能引发各种错误,若能确定这些代码的变更影响域,开发人员可根据控制流变更影响域提高处理软件缺陷的效率;测试人员可根据控制流变更影响域分析得到变更影响的函数调用路径进行测试,不必对所有的路径进行测试,节约测试成本。
因此,本发明提出了一种面向回归测试的控制流变更影响域分析方法和系统。
发明内容
本发明的目的是提供一种面向回归测试的控制流变更影响域分析方法和系统,用于解决版本变更后,准确定位控制流变化产生的影响的问题。
为了实现上述目的,本发明提供一种面向回归测试的控制流变更影响域分析方法,包括:
获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树;
比较新旧版本的源程序,获取发生变更的控制语句;
在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域。
优选地,所述新旧版本的源程序均为C++源程序。
优选地,采用静态分析方法获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树,具体包括:
预处理源程序,得到程序静态分析信息;
将程序静态分析信息进行函数重载和多态调用点的唯一性确定,确定函数调用点和控制语句及函数的对应关系,得到控制流函数调用信息;
将程序静态分析信息中的函数逻辑结构与控制流函数调用信息结合,获得局部带有控制语句的静态函数调用路径和局部控制流二叉树;
从入口函数开始,迭代展开所有函数的局部带有控制语句的静态函数调用关系,获得全局静态函数调用路径和全局控制流二叉树。
优选地,所述比较新旧版本的源程序,获取发生变更的控制语句,具体包括:比较新旧版本的源程序中具有控制语句的语句,再采用基于编辑距离的算法获取发生变更的控制语句。
优选地,所述在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域,具体包括:所述静态函数调用路径中所有包含发生变更的控制语句的路径均为受到影响的路径,且受到影响的路径集合中被调用的该发生变更的控制语句之后的函数均为受到影响的函数。
优选地,若新旧版本的源程序为C++源程序,则确定发生变更的控制语句的影响域,具体包括:
若发生变更的控制语句包括if、else、while、for、switch case default和do while控制语句,则该发生变更的控制语句的影响域为该控制语句后调用的函数和该控制语句的兄弟结点;
若发生变更的控制语句包括continue、goto和return控制语句,则该发生变更的控制语句的影响域为所有经过该控制语句结点的函数;
若发生变更的控制语句包括break控制语句,则该发生变更的控制语句的影响域为对应的switch case整个控制语句。
本发明的技术方案还包括一种面向回归测试的控制流变更影响域分析系统,包括:
源程序分析模块,用于获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树;
控制语句获取模块,用于比较新旧版本的源程序,获取发生变更的控制语句;
影响域确定模块,用于在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域。
优选地,所述新旧版本的源程序均为C++源程序。
优选地,所述源程序分析模块包括:
预处理模块,用于预处理源程序,得到程序静态分析信息;
唯一性确定模块,用于将程序静态分析信息进行函数重载和多态调用点的唯一性确定,确定函数调用点和控制语句及函数的对应关系,得到控制流函数调用信息;
局部控制流二叉树获取模块,用于将程序静态分析信息中的函数逻辑结构与控制流函数调用信息结合,获得局部带有控制语句的静态函数调用路径和局部控制流二叉树;
全局控制流二叉树获取模块,用于从入口函数开始,迭代展开所有函数的局部带有控制语句的静态函数调用关系,获得全局静态函数调用路径和全局控制流二叉树。
优选地,所述影响域确定模块,用于在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域,具体包括:所述静态函数调用路径中所有包含发生变更的控制语句的路径均为受到影响的路径,且受到影响的路径集合中被调用的该发生变更的控制语句之后的函数均为受到影响的函数。
本发明的有益效果是:本发明能够正确识别发生变化的控制语句,精确获取变更点影响域,通过变更点影响域,在回归测试中可以约减测试用例,提高测试效率。
附图说明
图1是面向回归测试的控制流变更影响域分析方法的流程示意图;
图2是表1的示例代码对应的控制流二叉树示意图;
图3是具体实施方式中控制流变更影响域分析方法的框架示意图;
图4是表2的示例代码对应的控制流二叉树示意图;
图5是图4的控制流二叉树的变更影响域示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
本实施方式中的旧版本指未发生变更的源程序,新版本指发生为变更后的代码。
本实施方式给出了一种面向回归测试的控制流变更影响域分析方法,如图1所示,包括:获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树;比较新旧版本的源程序,获取发生变更的控制语句;在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域。
因C++语言易于得到带控制语句的函数调用关系图,故下文中以C++语言为例,具体说明本实施方式的工作过程,但并不限于C++语言。
根据图1所示的步骤,本实施方式的面向回归测试的控制流变更影响域分析方法主要分为三个部分。
一、控制流静态分析
首先,给出控制流函数调用路径和控制流二叉树的定义。
控制流函数调用路径是函数调用图中的一个结点序列(Vi=Vi0,Vi1,…,Vim),Vim为函数名或有编号的控制语句,路径中相邻结点表示调用顺序关系。
控制流二叉树是根据二叉链表表示法的原理,左指针指向其相继执行/调用的结点,即孩子结点,右指针指向兄弟结点。
其次,由于版本变更后可能出现错误,无法采用动态插装方法得到函数调用路径,因此采用静态分析方法分析源代码,基于上述定义的控制流函数调用路径和控制流二叉树,按以下步骤获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树。
1、预处理源程序。
预处理源程序主要包括:去掉注释和过滤冗余代码,此时可以得到单个或者多个源代码文件;将得到的源代码文件进行词法和模式匹配,获取函数的逻辑结构、函数调用信息、函数原型、变量、类的基本信息、控制语句以及对控制语句进行编号,即获得程序静态分析信息。
2、唯一性确定。
将程序静态分析信息进行函数重载和多态调用点的唯一性确定,确定函数调用点和控制语句及函数的对应关系,确定函数调用点对应的函数所在的类、函数名和函数列表,确定控制语句所在的类、函数名和函数列表,得到函数调用点和控制字与函数的对应关系,即获得控制流函数调用信息。
3、局部分析
将程序静态分析信息中的函数逻辑结构与控制流函数调用信息结合,获得局部带有控制语句的静态函数调用路径和局部控制流二叉树。
4、全局分析
从入口函数(如C++程序的main函数)开始,迭代展开所有函数的局部带有控制语句的静态函数调用关系,获得全局静态函数调用路径和全局控制流二叉树。
基于上述四个步骤,获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树的具体算法实现过程如下所示:
input:C++source files
output:控制流函数调用路径和控制流二叉树
foreach function read the function node and control node
if file is null then
return NULL;//不执行操作
else找到main函数
begin分析main函数中调用的所有函数原型和控制字并对控制字进行编号
foreach函数节点和控制字
先将该函数名和控制字压入con_finded;
if函数有子路径
则到原型文件中继续搜索调用函数来获得子路径,然后将当前路径扩展成对应的多条路径;
else
说明还在该函数内部调用,即该函数还未结束就又开始新一轮的调用,这种情况视为递归;
then
从con_finded中弹出函数原型和带有编号的控制字,继续往下查找,并压入con_finded;
end;
C++语言中的控制字包括if、else、while、do while、,for、switch case default、break、continue、return、goto。在程序处理过程中,根据面向函数调用路径思想将以上关键字均被识为函数名处理,除了在特殊的几种下情况要对局部函数调用关系树进行特殊处理。
下面用具体的例子进行说明,如表1的C++代码:
表1
此时的函数调用路径可以表示为带有控制语句的控制流图,即控制流二叉树。为识别同函数相同控制语句,对控制字进行编号。上面代码的控制流二叉树可以表示为如图2所示:main()函数调用f4()函数,f4函数中控制语句if1满足条件时调用f1函数,控制字结点表示为f4_if1。同时else1作为if1的兄弟节点,if2满足条件时调用f2()函数,不满足调用f3()函数作为其左孩子。
二、控制流变更点分析
该部分主要是比较新旧版本的源程序中具有控制语句的语句,再采用基于编辑距离的算法获取发生变更的控制语句。
首先,给出变更点和编辑距离算法的定义。
变更点是指在新版本中对源程序的某些函数进行了变更(增删改),这些产生变更的函数被称为变更点,通过变更点的函数调用路径就是变更路径。
编辑距离算法是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,许可的编辑操作包括将一个字符替换成另一个字符、插入一个字符和删除一个字符。
其次,根据改进的编辑距离算法获取发生变更的控制语句,算法实现如下:
三、控制流影响域匹配
本实施方式中进行控制流影响域匹配的基本原则是:所述静态函数调用路径中所有包含发生变更的控制语句的路径均为受到影响的路径,且受到影响的路径集合中被调用的该发生变更的控制语句之后的函数均为受到影响的函数。即,设F={F1,F2,,,,,Fn}为发生变更的控制语句的集合,路径分析后得出此程序的静态路径集合S={S1,S2,,,,,Sn},此时若F1是变更的控制语句则集合S中所有包含F1的静态路径都是受到影响的路径E={E1,E2,,,,,},在集合E中被调用的F1之后的函数都是受到影响的函数。如图2中的f4_if2控制语句发生了变化此时的影响域是{f2,f4_else2,f3}。
对于C++源程序,其if、else、while、for、switch case default、do while控制语句可以采用同样的方法对待;break、continue、goto、return影响域要单独分析,它们的影响域是则是所在函数的整个影响域。具体分为三种情形:
1)若发生变更的控制语句包括if、else、while、for、switch case default和do while控制语句,则该发生变更的控制语句的影响域为该控制语句后调用的函数和该控制语句的兄弟结点。
2)若发生变更的控制语句包括continue、goto和return控制语句,则该发生变更的控制语句的影响域为所有经过该控制语句结点的函数。
3)若发生变更的控制语句包括break控制语句,则该发生变更的控制语句的影响域为对应的switch case整个控制语句。
具体的算法实现为:
输入:change path(变更路径集合S)F={F1,F2,,,,,Fn}(为发生变更的控制语句集合)
输出:F1….Fn的影响域
Program Matching algorithm
Begin:
/*如果是ifelse while,for,switch case default,do while控制语句发生变化,则其影响域是其后调用的函数和其兄弟结点*/
If Fi∈{ifelse;while;for;switch case default;}
Then the route is after the Fi;
/*如果是continue,goto,return控制语句发生变化,则其影响域是所有经过其结点的函数*/
Else if Fi∈{continue,goto,return}
the route is the function which include Fi
/*如果是break控制语句发生变化,若break在switch中则影响switch case整个控制语句*/
else Fi∈{break}
ifit is in switch,the route is the next node and the switch case code
else the route is the function which include Fi
End
综合上述三个部分,如图3所示,本实施方式针对控制流变更提出一种控制流变更影响分析算法,能够准确定位发生变更后的控制语句影响的函数:根据控制流函数调用路径提取算法,将控制语句与函数名作为结点提取路径的结点,获得带有控制语句的静态函数调用路径;提出基于编辑距离算法的控制流变更点算法获取发生变更的控制语句;提出控制流影响域匹配算法确定控制流变更影像域。
对应地,本实施方式还给出了一种面向回归测试的控制流变更影响域分析系统,包括:源程序分析模块,用于获取旧版本源程序的具有控制语句的静态函数调用路径和控制流二叉树;控制语句获取模块,用于比较新旧版本的源程序,获取发生变更的控制语句;影响域确定模块,用于在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域。
其中,所述源程序分析模块包括:
预处理模块,用于预处理源程序,得到程序静态分析信息。
唯一性确定模块,用于将程序静态分析信息进行函数重载和多态调用点的唯一性确定,确定函数调用点和控制语句及函数的对应关系,得到控制流函数调用信息。
局部控制流二叉树获取模块,用于将程序静态分析信息中的函数逻辑结构与控制流函数调用信息结合,获得局部带有控制语句的静态函数调用路径和局部控制流二叉树。
全局控制流二叉树获取模块,用于从入口函数开始,迭代展开所有函数的局部带有控制语句的静态函数调用关系,获得全局静态函数调用路径和全局控制流二叉树。
该面向回归测试的控制流变更影响域分析系统与其对应的控制流变更影响域分析系统的工作原理、工作过程及具体实施细节相同,这里不再多述。
结合上述实施细节,下面以一个具体的应用例来说明本实施例所述的面向回归测试的控制流变更影响域分析方法和系统的具体实施过程。
该应用例包含if、else等诸多控制语句,没有具体的含义,能够更好地展现变更,变更之前的源代码验证程序如下表2所示。
表2
经过控制流函数调用路径提取算法可以得到带有控制语句的函数调用路径,如下所示:
Main->f1->main_return1;
Main->f1->f1_if1->f2->f2_for1->f2_do1->f2_while1;
Main->f1->f1_if1->f2->f2_for1->f2_do1->->f2_return1;
Main->f1->f1_if1->f1_else1->f3->f3_switch1->f3_return1;
Main->f1->f1_if1->f1_else1->f3->f3_switch1->f3_case1->f3_break1;
Main->f1->f1_if1->f1_else1->f3->f3_switch1->f3_case1->->f3_default1->f3_break2。
此时可以采用带有控制语句的控制流二叉树进行标示,如图4所示。经过控制流变更点算法分析得到发生变更的控制语句如下所示:
f1_else1;
f2_for1;
f2_return1;
f3_switch1;
f3_case1。
根据控制流匹配算法得到影响域如图5所示。变更的函数或者控制语句节点用斜线图案填充显示出来,变更控制语句与其影响的函数或控制语句的连接线采用虚线表示。
本应用例采用简单而具代表性的代码进行实验,可以发现上述具体实施方式的技术方案能准确分析回归测试中的控制流变更影响域。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (10)
1.一种面向回归测试的控制流变更影响域分析方法,其特征在于,包括:
获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树;
比较新旧版本的源程序,获取发生变更的控制语句;
在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域。
2.根据权利要求1所述的控制流变更影响域分析方法,其特征在于,所述新旧版本的源程序均为C++源程序。
3.根据权利要求1或2所述的控制流变更影响域分析方法,其特征在于,采用静态分析方法获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树,具体包括:
预处理源程序,得到程序静态分析信息;
将程序静态分析信息进行函数重载和多态调用点的唯一性确定,确定函数调用点和控制语句及函数的对应关系,得到控制流函数调用信息;
将程序静态分析信息中的函数逻辑结构与控制流函数调用信息结合,获得局部带有控制语句的静态函数调用路径和局部控制流二叉树;
从入口函数开始,迭代展开所有函数的局部带有控制语句的静态函数调用关系,获得全局静态函数调用路径和全局控制流二叉树。
4.根据权利要求1或2所述的控制流变更影响域分析方法,其特征在于,所述比较新旧版本的源程序,获取发生变更的控制语句,具体包括:比较新旧版本的源程序中具有控制语句的语句,再采用基于编辑距离的算法获取发生变更的控制语句。
5.根据权利要求2所述的控制流变更影响域分析方法,其特征在于,所述在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域,具体包括:所述静态函数调用路径中所有包含发生变更的控制语句的路径均为受到影响的路径,且受到影响的路径集合中被调用的该发生变更的控制语句之后的函数均为受到影响的函数。
6.根据权利要求5所述的控制流变更影响域分析方法,其特征在于,若新旧版本的源程序为C++源程序,则确定发生变更的控制语句的影响域,具体包括:
若发生变更的控制语句包括if、else、while、for、switch case default和do while控制语句,则该发生变更的控制语句的影响域为该控制语句后调用的函数和该控制语句的兄弟结点;
若发生变更的控制语句包括continue、goto和return控制语句,则该发生变更的控制语句的影响域为所有经过该控制语句结点的函数;
若发生变更的控制语句包括break控制语句,则该发生变更的控制语句的影响域为对应的switch case整个控制语句。
7.一种面向回归测试的控制流变更影响域分析系统,其特征在于,包括:
源程序分析模块,用于获取旧版本的源程序的具有控制语句的静态函数调用路径和控制流二叉树;
控制语句获取模块,用于比较新旧版本的源程序,获取发生变更的控制语句;
影响域确定模块,用于在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域。
8.根据权利要求7所述的控制流变更影响域分析系统,其特征在于,所述新旧版本的源程序均为C++源程序。
9.根据权利要求7或8所述的控制流变更影响域分析系统,其特征在于,所述源程序分析模块包括:
预处理模块,用于预处理源程序,得到程序静态分析信息;
唯一性确定模块,用于将程序静态分析信息进行函数重载和多态调用点的唯一性确定,确定函数调用点和控制语句及函数的对应关系,得到控制流函数调用信息;
局部控制流二叉树获取模块,用于将程序静态分析信息中的函数逻辑结构与控制流函数调用信息结合,获得局部带有控制语句的静态函数调用路径和局部控制流二叉树;
全局控制流二叉树获取模块,用于从入口函数开始,迭代展开所有函数的局部带有控制语句的静态函数调用关系,获得全局静态函数调用路径和全局控制流二叉树。
10.根据权利要求8所述的控制流变更影响域分析系统,其特征在于,所述影响域确定模块,用于在旧版本的源程序的控制流二叉树中,确定发生变更的控制语句的影响域,具体包括:所述静态函数调用路径中所有包含发生变更的控制语句的路径均为受到影响的路径,且受到影响的路径集合中被调用的该发生变更的控制语句之后的函数均为受到影响的函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510276202.3A CN104834603B (zh) | 2015-05-26 | 2015-05-26 | 一种面向回归测试的控制流变更影响域分析方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510276202.3A CN104834603B (zh) | 2015-05-26 | 2015-05-26 | 一种面向回归测试的控制流变更影响域分析方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104834603A true CN104834603A (zh) | 2015-08-12 |
CN104834603B CN104834603B (zh) | 2017-12-01 |
Family
ID=53812508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510276202.3A Expired - Fee Related CN104834603B (zh) | 2015-05-26 | 2015-05-26 | 一种面向回归测试的控制流变更影响域分析方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104834603B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389262A (zh) * | 2015-12-23 | 2016-03-09 | 北京奇虎科技有限公司 | 一种针对界面测试生成测试建议的方法和装置 |
CN106020848A (zh) * | 2016-06-07 | 2016-10-12 | 北京信息科技大学 | 面向c#的函数调用路径生成方法 |
CN106095672A (zh) * | 2016-06-07 | 2016-11-09 | 北京信息科技大学 | 基于函数调用路径准则的测试充分性获取方法 |
CN106557419A (zh) * | 2015-09-29 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 程序的测试方法及装置 |
CN107229487A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 代码处理方法及装置 |
CN107451050A (zh) * | 2017-06-20 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
CN108536585A (zh) * | 2018-03-19 | 2018-09-14 | 北京信息科技大学 | 数据变更影响域分析方法 |
CN109582300A (zh) * | 2018-11-30 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 基于路径的代码变更分析方法、装置及设备 |
CN109960186A (zh) * | 2017-12-25 | 2019-07-02 | 北京创昱科技有限公司 | 控制流程的处理方法、装置、电子设备和存储介质 |
CN110046103A (zh) * | 2019-04-23 | 2019-07-23 | 上海航天计算机技术研究所 | 装订数据变更影响域分析方法及系统 |
CN110389896A (zh) * | 2019-06-18 | 2019-10-29 | 中国平安人寿保险股份有限公司 | 代码自动化分析和测试方法、装置及计算机可读存储介质 |
CN111008139A (zh) * | 2019-12-06 | 2020-04-14 | 北京京航计算通讯研究所 | 软件更改影响域分析辅助方法 |
CN111061634A (zh) * | 2019-12-06 | 2020-04-24 | 北京京航计算通讯研究所 | 软件更改影响域分析辅助系统 |
CN117009230A (zh) * | 2023-07-25 | 2023-11-07 | 北京泰策科技有限公司 | 一种基于代码覆盖率评测的精准测试方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216803A (zh) * | 2008-01-09 | 2008-07-09 | 四川大学 | 基于基路径的测试程序控制流路径集生成方法 |
CN101916222A (zh) * | 2010-08-09 | 2010-12-15 | 哈尔滨工程大学 | 基于控制流图遍历和切片前向遍历相结合的软件测试方法 |
CN102915271A (zh) * | 2012-10-31 | 2013-02-06 | 北京邮电大学 | 基于控制流图的单元回归测试用例集合优化方法 |
CN103455421A (zh) * | 2013-08-19 | 2013-12-18 | 西安交通大学 | 基于程序控制依赖引导的回归测试案例生成方法 |
CN104461886A (zh) * | 2014-12-10 | 2015-03-25 | 深圳航天东方红海特卫星有限公司 | 一种控制流错误检测方法 |
CN104503917A (zh) * | 2015-01-04 | 2015-04-08 | 牟永敏 | 基于数据流函数调用路径的变更影响域分析方法及系统 |
-
2015
- 2015-05-26 CN CN201510276202.3A patent/CN104834603B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216803A (zh) * | 2008-01-09 | 2008-07-09 | 四川大学 | 基于基路径的测试程序控制流路径集生成方法 |
CN101916222A (zh) * | 2010-08-09 | 2010-12-15 | 哈尔滨工程大学 | 基于控制流图遍历和切片前向遍历相结合的软件测试方法 |
CN102915271A (zh) * | 2012-10-31 | 2013-02-06 | 北京邮电大学 | 基于控制流图的单元回归测试用例集合优化方法 |
CN103455421A (zh) * | 2013-08-19 | 2013-12-18 | 西安交通大学 | 基于程序控制依赖引导的回归测试案例生成方法 |
CN104461886A (zh) * | 2014-12-10 | 2015-03-25 | 深圳航天东方红海特卫星有限公司 | 一种控制流错误检测方法 |
CN104503917A (zh) * | 2015-01-04 | 2015-04-08 | 牟永敏 | 基于数据流函数调用路径的变更影响域分析方法及系统 |
Non-Patent Citations (3)
Title |
---|
周晓波: "构件回归测试方法研究与实现", 《中国优秀硕士论文全文数据库 信息科技辑》 * |
游亮: "回归测试用例选择技术研究", 《中国优秀博士论文全文数据库 信息科技辑》 * |
牟永敏等: "基于有限状态机的C++重载唯一性确定", 《计算机应用研究》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557419A (zh) * | 2015-09-29 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 程序的测试方法及装置 |
CN106557419B (zh) * | 2015-09-29 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 程序的测试方法及装置 |
CN105389262A (zh) * | 2015-12-23 | 2016-03-09 | 北京奇虎科技有限公司 | 一种针对界面测试生成测试建议的方法和装置 |
CN105389262B (zh) * | 2015-12-23 | 2019-02-15 | 北京奇虎科技有限公司 | 一种针对界面测试生成测试建议的方法和装置 |
CN107229487A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 代码处理方法及装置 |
CN107229487B (zh) * | 2016-03-25 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 代码处理方法及装置 |
CN106020848A (zh) * | 2016-06-07 | 2016-10-12 | 北京信息科技大学 | 面向c#的函数调用路径生成方法 |
CN106095672A (zh) * | 2016-06-07 | 2016-11-09 | 北京信息科技大学 | 基于函数调用路径准则的测试充分性获取方法 |
CN106095672B (zh) * | 2016-06-07 | 2018-10-19 | 北京信息科技大学 | 基于函数调用路径准则的测试充分性获取方法 |
CN107451050B (zh) * | 2017-06-20 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
CN107451050A (zh) * | 2017-06-20 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
CN109960186A (zh) * | 2017-12-25 | 2019-07-02 | 北京创昱科技有限公司 | 控制流程的处理方法、装置、电子设备和存储介质 |
CN108536585A (zh) * | 2018-03-19 | 2018-09-14 | 北京信息科技大学 | 数据变更影响域分析方法 |
CN109582300A (zh) * | 2018-11-30 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 基于路径的代码变更分析方法、装置及设备 |
CN110046103A (zh) * | 2019-04-23 | 2019-07-23 | 上海航天计算机技术研究所 | 装订数据变更影响域分析方法及系统 |
CN110389896A (zh) * | 2019-06-18 | 2019-10-29 | 中国平安人寿保险股份有限公司 | 代码自动化分析和测试方法、装置及计算机可读存储介质 |
CN111008139A (zh) * | 2019-12-06 | 2020-04-14 | 北京京航计算通讯研究所 | 软件更改影响域分析辅助方法 |
CN111061634A (zh) * | 2019-12-06 | 2020-04-24 | 北京京航计算通讯研究所 | 软件更改影响域分析辅助系统 |
CN117009230A (zh) * | 2023-07-25 | 2023-11-07 | 北京泰策科技有限公司 | 一种基于代码覆盖率评测的精准测试方法及系统 |
CN117009230B (zh) * | 2023-07-25 | 2024-04-16 | 北京泰策科技有限公司 | 一种基于代码覆盖率评测的精准测试方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104834603B (zh) | 2017-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104834603A (zh) | 一种面向回归测试的控制流变更影响域分析方法和系统 | |
US10152406B2 (en) | Software program repair | |
CN112035359B (zh) | 程序测试方法、装置、电子设备及存储介质 | |
CN104899147B (zh) | 一种面向安全检查的代码静态分析方法 | |
US20200380125A1 (en) | Method for Detecting Libraries in Program Binaries | |
JP7110789B2 (ja) | 自動化されたソフトウェアプログラム修復候補の選択 | |
CN105022691A (zh) | 一种基于uml图的高度自动化软件测试方法 | |
CN104503917A (zh) | 基于数据流函数调用路径的变更影响域分析方法及系统 | |
CN103914379B (zh) | 故障自动注入与故障检测的方法及其系统 | |
CN105159827A (zh) | 一种面向gui软件的可靠性加速测试方法 | |
CN105183642A (zh) | 基于插桩的程序行为获取及结构分析方法 | |
CN108763064A (zh) | 一种基于黑盒函数与机器学习的代码测试生成方法和装置 | |
CN111338692A (zh) | 基于漏洞代码的漏洞分类方法、装置及电子设备 | |
CN114491566A (zh) | 一种基于代码相似性的模糊测试方法、装置及存储介质 | |
CN106919403B (zh) | 云环境下基于Java字节码的多粒度代码克隆检测方法 | |
CN112905370A (zh) | 拓扑图生成方法、异常检测方法、装置、设备及存储介质 | |
CN106294139A (zh) | 一种软件代码中重复片段的检测提取方法 | |
Schäfer et al. | Detection of similar functions through the use of dominator information | |
CN115408700A (zh) | 基于二进制程序模块化的开源组件检测方法 | |
RU168346U1 (ru) | Устройство выявления уязвимостей | |
US20140053139A1 (en) | Symbolic testing of software using concrete software execution | |
CN106528179A (zh) | 一种Java类依赖关系的静态识别方法 | |
Neubauer | Kamino: Dynamic approach to semantic code clone detection | |
Kong et al. | Detect functionally equivalent code fragments via k-nearest neighbor algorithm | |
Jin et al. | Current and future research of machine learning based vulnerability detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate 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: 20171201 Termination date: 20180526 |