CN113297095A - 一种子程序调用路径分支的确定方法及装置 - Google Patents
一种子程序调用路径分支的确定方法及装置 Download PDFInfo
- Publication number
- CN113297095A CN113297095A CN202110737592.5A CN202110737592A CN113297095A CN 113297095 A CN113297095 A CN 113297095A CN 202110737592 A CN202110737592 A CN 202110737592A CN 113297095 A CN113297095 A CN 113297095A
- Authority
- CN
- China
- Prior art keywords
- information
- static
- path
- path branch
- dynamic
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000003068 static effect Effects 0.000 claims abstract description 138
- 238000010801 machine learning Methods 0.000 claims abstract description 44
- 238000004458 analytical method Methods 0.000 claims abstract description 43
- 238000012549 training Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 15
- 239000003795 chemical substances by application Substances 0.000 claims description 12
- 238000002347 injection Methods 0.000 claims description 3
- 239000007924 injection Substances 0.000 claims description 3
- 238000012360 testing method Methods 0.000 abstract description 37
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 13
- 238000004519 manufacturing process Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 4
- 239000000243 solution Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供一种子程序调用路径分支的确定方法及装置,可用于测试安全领域,方法包括:对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息;根据所述全量路径分支信息确定所述子程序的调用路径分支。本申请有效地保证了测试完整性,并极大地提高了测试效率。
Description
技术领域
本申请涉及测试安全,具体涉及子程序调用路径分支的确定方法及装置。
背景技术
现有测试链路分支分析工具相对比较缺乏,已有的工具有基于静态程序调用分析,找到两两相关的程序。也有部分工具使用生产或测试环境上抓取的流量进行分析,找到程序间分支路径。在程序间分支路径的完整性和准确性都会存在一些问题。
基于静态程序调用分析,找到两两相关程序的工具,存在无法找到长路径分支的情况,只能两两,而不能从第一个程序一直找到最后一个程序。且找到的两两程序间分支路径存在使用不便的情况,测试人员可能不知道关联的两两程序,具体是什么功能分支,同样是因为缺少从开始到结束的所有程序用来判断。使用生产或测试环境上抓取的流量进行分析,找到程序间分支路径的工具,存在采集不全的情况,从测试环境上采集,会存在测不到就采不到的问题,不能用来指导当期改造内容的测试,只能指导改造影响的存量程序的测试,且不准确;从生产环境上采集,会存在当期改造的程序还未投产,所以相关路径无法准确采到的问题,也存在生产可能的路径收到采集范围、采集时间、数据安全性等限制,采集范围有限的问题。
因此,提出一种更可靠的,既能够采集完整,准确,也能够及时采集用于指导当期改造内容测试和对存量相关内容测试的工具,就显得尤为重要。
发明内容
针对现有技术中的问题,本申请提供一种子程序调用路径分支的确定方法及装置,对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息;根据所述全量路径分支信息确定所述子程序的调用路径分支。本发明有效地保证了测试完整性,并极大地提高了测试效率。
本发明的一方面,提供一种子程序调用路径分支的确定方法,包括:
对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;
将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;
集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息。
根据所述全量路径分支信息确定所述子程序的调用路径分支。
在优选的实施例中,还包括:建立所述预设的机器学习模型。
在优选的实施例中,所述建立所述预设的机器学习模型,包括:
获取训练集中程序代码的静态路径分支信息;
对训练集中程序进行静态和动态解析,得到相应的静态调用信息和动态路径分支信息;
根据所述静态路径分支信息,对所述静态调用信息、动态路径分支信息进行有监督的机器学习,生成所述机器学习模型。
在优选的实施例中,对全量程序进行静态解析,生成对应的静态调用信息,包括:
根据程序代码的语法规则,查找出所有的子程序;
根据每个子程序在代码中的包含关系,确定静态调用信息。
在优选的实施例中,对全量程序进行动态解析,生成对应的动态路径分支信息,包括:
抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数;
根据各子程序间动态调用的分支路径和调用参数生成所述动态路径分支信息。
在优选的实施例中,所述抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数,包括:
创建一个动态监控的代理接口对象;
通过所述代理接口将字节码注入所述全量程序;
获取所述全量程序执行时所述代理接口返回的各子程序间动态调用的分支路径和调用参数。
本发明的又一方面,提供一种子程序调用路径分支的确定装置,包括:
程序解析模块,对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;
静态路径分支生成模块,将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;
全量路径分支生成模块,集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息。
调用路径分支确定模块,根据所述全量路径分支信息确定所述子程序的调用路径分支。
在优选的实施例中,还包括:机器学习模型建立模块,建立所述预设的机器学习模型。
在优选的实施例中,所述机器学习模型建立模块,包括:
训练集目标输出获取单元,获取训练集中程序代码的静态路径分支信息;
训练集输入信息获取单元,对训练集中程序进行静态和动态解析,得到相应的静态调用信息和动态路径分支信息;
监督学习单元,根据所述静态路径分支信息,对所述静态调用信息、动态路径分支信息进行有监督的机器学习,生成所述机器学习模型。
在优选的实施例中,所述程序解析模块,包括:
子程序查找单元,根据程序代码的语法规则,查找出所有的子程序;
静态调用信息确定单元,根据每个子程序在代码中的包含关系,确定静态调用信息。
在优选的实施例中,所述程序解析模块,还包括:
动态调用信息抓取单元,抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数;
动态路径分支生成单元,根据各子程序间动态调用的分支路径和调用参数生成所述动态路径分支信息。
在优选的实施例中,所述动态调用信息抓取单元,包括:
代理接口创建单元,创建一个动态监控的代理接口对象;
字节码注入单元,通过所述代理接口将字节码注入所述全量程序;
动态调用信息获取单元,获取所述全量程序执行时所述代理接口返回的各子程序间动态调用的分支路径和调用参数。
本发明的又一方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的子程序调用路径分支的确定方法。
本发明的又一方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的子程序调用路径分支的确定方法。
由上述技术方案可知,本申请提供的一种子程序调用路径分支的确定方法,方法包括:对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息;根据所述全量路径分支信息确定所述子程序的调用路径分支。本发明有效地保证了测试完整性,并极大地提高了测试效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种子程序调用路径分支的确定方法流程示意图。
图2是程序静态解析流程示意图。
图3是程序动态解析流程示意图。
图4是抓取动态调用信息流程示意图。
图5是机器学习模型建立流程示意图。
图6是一种子程序调用路径分支的确定装置结构示意图。
图7是本申请实施例中的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请公开的子程序调用路径分支的确定方法及装置可用于金融领域,也可用于除金融领域之外的任意领域,本申请公开的子程序调用路径分支的确定方法及装置的应用领域不做限定。
现有测试链路分支分析工具相对比较缺乏,已有的工具有基于静态程序调用分析,找到两两相关的程序。也有部分工具使用生产或测试环境上抓取的流量进行分析,找到程序间分支路径。在程序间分支路径的完整性和准确性都会存在一些问题。
基于静态程序调用分析,找到两两相关程序的工具,存在无法找到长路径分支的情况,只能两两,而不能从第一个程序一直找到最后一个程序。且找到的两两程序间分支路径存在使用不便的情况,测试人员可能不知道关联的两两程序,具体是什么功能分支,同样是因为缺少从开始到结束的所有程序用来判断。使用生产或测试环境上抓取的流量进行分析,找到程序间分支路径的工具,存在采集不全的情况,从测试环境上采集,会存在测不到就采不到的问题,不能用来指导当期改造内容的测试,只能指导改造影响的存量程序的测试,且不准确;从生产环境上采集,会存在当期改造的程序还未投产,所以相关路径无法准确采到的问题,也存在生产可能的路径收到采集范围、采集时间、数据安全性等限制,采集范围有限的问题。
因此,提出一种更可靠的,既能够采集完整,准确,也能够及时采集用于指导当期改造内容测试和对存量相关内容测试的工具,就显得尤为重要。
针对现有技术中的问题,本申请提供一种子程序调用路径分支的确定方法及装置,首先对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息;根据所述全量路径分支信息确定所述子程序的调用路径分支,从而本发明有效地保证了测试完整性,并极大地提高了测试效率。
下面结合附图对本发明提供的子程序调用路径分支的确定方法及装置进行详细说明。
在具体的实施例中,本申请提供一种子程序调用路径分支的确定方法,如图1,步骤包括:
S1:对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;
具体的,对程序进行静态解析是指对程序的源代码进行解析,无需执行程序,是静态的过程。另一方面,对程序进行动态解析则需要执行程序,解析程序执行时的相应信息,是一个动态的过程。
在具体的实施例中,对全量程序进行静态解析,生成对应的静态调用信息,区图2,包括:
S101:根据程序代码的语法规则,查找出所有的子程序;
具体的,源代码中,对于一个字程序的定义是有固定的声明规则的,根据相应开发语言的语法规则,查找出所有的子程序。例如对于c语言来说,子程序的声明格式为
函数返回值类型函数名(参数列表)
{
//函数体
}
而对于java语言来说,它的声明格式为:
[修饰符1修饰符2...]返回值类型方法名(形式参数列表)
{
程序代码;
[return返回值];
}
上述函数或者方法都是指子程序,根据不同语言的规则可以查找到所有子程序的名称,输入参数,输出参数等信息。
S102:根据每个子程序在代码中的包含关系,确定静态调用信息。
具体的,查找出的子程序之间是存在调用关系的,例如查找出子程序有A,B,C,D,E,其中C和D程序都包含在A程序的程序代码中,即A调用了C且A调用了D。E包含在D的程序代码中,即D调用了E。A和B不存在包含关系,即没有调用关系。根据各子程序在代码中的包含关系,可以确定子程序间的两两调用关系,为后续路径分支生成提供基础。
在具体的实施例中,对全量程序进行动态解析,生成对应的动态路径分支信息,如图3,包括:
S11:抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数;
具体的,对于程序执行过程的动态抓取,采用字节码技术来实现。在具体的实施例中,所述抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数,如图4,包括:
S111:创建一个动态监控的代理接口对象;
具体的,代理接口装入类时,可以修改类的字节码,实现不同的输出。可以用三个步骤创建代理:
实现java.lang.instrument.ClassFileTransformer接口:
创建“premain”方法。这个方法在应用程序的main()方法之前调用;
在代理的JAR文件中,包含一个清单条目,表示包含premain()方法的类。
S112:通过所述代理接口将字节码注入所述全量程序;
具体的,将代理接口置于全量程序的main函数之前,并且在代理接口中编写字节码对应的输出操作。例如通过代理接口实现在装入类时,输出类的类的名称。
S113:获取所述全量程序执行时所述代理接口返回的各子程序间动态调用的分支路径和调用参数。
具体的,利用代理接口注入字节码实现切面的处理后,在程序执行时代理接口可以实现:子程序调用进入时,获取当前子程序名称和调用参数值列表;子程序调用结束时,获取返回值;子程序异常抛出时,触发回调并获取异常实例等。根据子程序调用进入时的返回信息和调用结束时的返回信息来连接动态调用的分支路径。
例如代理接口在程序执行过程中,返回了如下信息:
classname:a;
input:a1,a2,a3;
classname:b;
input:b1,b2,b3;
return:B1;
classname:c;
input:c1,c2,c3;
return:C1;
return:A1;
classname:d;
input:d1,d2,d3;
return:D1;
以上日志文本包括了各子程序间动态调用的分支路径和调用参数。
S12:根据各子程序间动态调用的分支路径和调用参数生成所述动态路径分支信息。
具体的,根据日志文本中的信息,连接各子程序形成动态路径分支。例如上文中的日志文本中,存在着子程序a,b,c,d,并且可知b和c是a的子分支,d在a执行完成后开始。
S2:将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;
具体的,所述预设的机器学习模型需要通过训练集样本来建立。在具体的实施例中,建立所述预设的机器学习模型,如图5,包括:
S21:获取训练集中程序代码的静态路径分支信息;
具体的,可以理解该步骤是获取最终训练的目标结果,静态路径分支信息中包括了路径分支的起点子程序,终点子程序及公共子程序。例如图中,起点子程序为a,终点子程序是b,公共子程序也是a。
S22:对训练集中程序进行静态和动态解析,得到相应的静态调用信息和动态路径分支信息;
具体的,对训练集中样本进行静态和动态解析已在上文具体的实施例中进行阐述,在此不再赘述。
S23:根据所述静态路径分支信息,对所述静态调用信息、动态路径分支信息进行有监督的机器学习,生成所述机器学习模型。
具体的,建立的机器学习模型采用有监督的学习方法,输入为静态调用信息和动态路径分支信息,输出为静态路径分支信息。同样的,所述输出的静态路径分支信息包括了起点子程序,终点子程序及公共子程序。
S3:集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息。
具体的,将静态路径分支信息和动态路径分支信息进行合并,生成全量路径分支信息。静态路径分支信息中包含了程序涉及的所有子程序,对子程序的覆盖率是百分之百,但是其对子程序的路径表达可能是不完整的。而动态路径分支信息中完整地覆盖了子程序的执行路径,但是这些执行的子程序可能只是所有子程序的一部分。将静态路径分支信息和动态路径分支信息进行集合,生成的全量路径分支信息,既可以操作子程序种类的完整性又可以保证路径表达的完整性。
S4:根据所述全量路径分支信息确定所述子程序的调用路径分支。
具体的,根据待测试子程序的程序名及调用参数信息,从全量路径分支信息中可以查找出所述子程序所对应的路径分支,执行相关测试操作。
由以上描述可知,本发明提供的一种子程序调用路径分支的确定方法,首先对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息;根据所述全量路径分支信息确定所述子程序的调用路径分支,从而本发明有效地保证了测试完整性,并极大地提高了测试效率。
从软件层面来说,本申请提供一种用于执行所述子程序调用路径分支的确定方法中全部或部分内容的子程序调用路径分支的确定装置的实施例,参见图6,所述子程序调用路径分支的确定装置具体包含有如下内容:
程序解析模块,对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;
静态路径分支生成模块,将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;
全量路径分支生成模块,集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息。
调用路径分支确定模块,根据所述全量路径分支信息确定所述子程序的调用路径分支。
由以上描述可知,本发明提供的子程序调用路径分支的确定装置,本装置首先对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息;根据所述全量路径分支信息确定所述子程序的调用路径分支。本发明有效地保证了测试完整性,并极大地提高了测试效率。
基于相同的发明构思,在优选的实施例中,还包括:机器学习模型建立模块,建立所述预设的机器学习模型。
基于相同的发明构思,在优选的实施例中,所述机器学习模型建立模块,包括:
训练集目标输出获取单元,获取训练集中程序代码的静态路径分支信息;
训练集输入信息获取单元,对训练集中程序进行静态和动态解析,得到相应的静态调用信息和动态路径分支信息;
监督学习单元,根据所述静态路径分支信息,对所述静态调用信息、动态路径分支信息进行有监督的机器学习,生成所述机器学习模型。
在优选的实施例中,所述程序解析模块,包括:
子程序查找单元,根据程序代码的语法规则,查找出所有的子程序;
静态调用信息确定单元,根据每个子程序在代码中的包含关系,确定静态调用信息。
基于相同的发明构思,在优选的实施例中,所述程序解析模块,还包括:
动态调用信息抓取单元,抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数;
动态路径分支生成单元,根据各子程序间动态调用的分支路径和调用参数生成所述动态路径分支信息。
基于相同的发明构思,在优选的实施例中,所述动态调用信息抓取单元,包括:
代理接口创建单元,创建一个动态监控的代理接口对象;
字节码注入单元,通过所述代理接口将字节码注入所述全量程序;
动态调用信息获取单元,获取所述全量程序执行时所述代理接口返回的各子程序间动态调用的分支路径和调用参数。
由以上描述可知,本发明提供的一种子程序调用路径分支的确定装置,包括程序解析模块,对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;静态路径分支生成模块,将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;全量路径分支生成模块,集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息。调用路径分支确定模块,根据所述全量路径分支信息确定所述子程序的调用路径分支。本发明有效地保证了测试完整性,并极大地提高了测试效率。
从硬件层面来说,本申请提供一种用于实现子程序调用路径分支的确定方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
图7为本申请实施例的电子设备9600的系统构成的示意框图。如图7所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图7是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
在一实施例中,子程序调用路径分支的确定方法功能可以被集成到中央处理器中。其中,中央处理器可以被配置为进行如下控制:
S1:对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;
S2:将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;
S3:集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息。
S4:根据所述全量路径分支信息确定所述子程序的调用路径分支。
从上述描述可知,本申请实施例提供的电子设备,有效地保证了测试完整性,并极大地提高了测试效率。
在另一个实施方式中,子程序调用路径分支的确定装置可以与中央处理器9100分开配置,例如可以子程序调用路径分支的确定装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现子程序调用路径分支的确定方法功能。
如图7所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图7中所示的所有部件;此外,电子设备9600还可以包括图7中没有示出的部件,可以参考现有技术。
如图7所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本申请的实施例还提供能够实现上述实施例中的子程序调用路径分支的确定方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的子程序调用路径分支的确定方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S1:对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;
S2:将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;
S3:集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息。
S4:根据所述全量路径分支信息确定所述子程序的调用路径分支。
从上述描述可知,本申请实施例提供的计算机可读存储介质,有效地保证了测试完整性,并极大地提高了测试效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种子程序调用路径分支的确定方法,其特征在于,包括:
对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;
将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;
集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息;
根据所述全量路径分支信息确定所述子程序的调用路径分支。
2.根据权利要求1所述的一种子程序调用路径分支的确定方法,其特征在于,还包括:建立所述预设的机器学习模型。
3.根据权利要求2所述的一种子程序调用路径分支的确定方法,其特征在于,所述建立所述预设的机器学习模型,包括:
获取训练集中程序代码的静态路径分支信息;
对训练集中程序进行静态和动态解析,得到相应的静态调用信息和动态路径分支信息;
根据所述静态路径分支信息,对所述静态调用信息、动态路径分支信息进行有监督的机器学习,生成所述机器学习模型。
4.根据权利要求1所述的一种子程序调用路径分支的确定方法,其特征在于,对全量程序进行静态解析,生成对应的静态调用信息,包括:
根据程序代码的语法规则,查找出所有的子程序;
根据每个子程序在代码中的包含关系,确定静态调用信息。
5.根据权利要求1所述的一种子程序调用路径分支的确定方法,其特征在于,对全量程序进行动态解析,生成对应的动态路径分支信息,包括:
抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数;
根据各子程序间动态调用的分支路径和调用参数生成所述动态路径分支信息。
6.根据权利要求5所述的一种子程序调用路径分支的确定方法,其特征在于,所述抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数,包括:
创建一个动态监控的代理接口对象;
通过所述代理接口将字节码注入所述全量程序;
获取所述全量程序执行时所述代理接口返回的各子程序间动态调用的分支路径和调用参数。
7.一种子程序调用路径分支的确定装置,其特征在于,包括:
程序解析模块,对所述子程序所处的全量程序分别进行静态解析和动态解析,生成对应的静态调用信息和动态路径分支信息;
静态路径分支生成模块,将所述静态调用信息和所述动态路径分支信息,输入至一预设的机器学习模型,生成静态路径分支信息;
全量路径分支生成模块,集合所述静态路径分支信息和所述动态路径分支信息,生成全量路径分支信息;
调用路径分支确定模块,根据所述全量路径分支信息确定所述子程序的调用路径分支。
8.根据权利要求7所述的一种子程序调用路径分支的确定装置,其特征在于,还包括:机器学习模型建立模块,建立所述预设的机器学习模型。
9.根据权利要求8所述的一种子程序调用路径分支的确定装置,其特征在于,所述机器学习模型建立模块,包括:
训练集目标输出获取单元,获取训练集中程序代码的静态路径分支信息;
训练集输入信息获取单元,对训练集中程序进行静态和动态解析,得到相应的静态调用信息和动态路径分支信息;
监督学习单元,根据所述静态路径分支信息,对所述静态调用信息、动态路径分支信息进行有监督的机器学习,生成所述机器学习模型。
10.根据权利要求7所述的一种子程序调用路径分支的确定装置,其特征在于,所述程序解析模块,包括:
子程序查找单元,根据程序代码的语法规则,查找出所有的子程序;
静态调用信息确定单元,根据每个子程序在代码中的包含关系,确定静态调用信息。
11.根据权利要求7所述的一种子程序调用路径分支的确定装置,其特征在于,所述程序解析模块,还包括:
动态调用信息抓取单元,抓取所述全量程序在执行过程中的各子程序间动态调用的分支路径和调用参数;
动态路径分支生成单元,根据各子程序间动态调用的分支路径和调用参数生成所述动态路径分支信息。
12.根据权利要求11所述的一种子程序调用路径分支的确定装置,其特征在于,所述动态调用信息抓取单元,包括:
代理接口创建单元,创建一个动态监控的代理接口对象;
字节码注入单元,通过所述代理接口将字节码注入所述全量程序;
动态调用信息获取单元,获取所述全量程序执行时所述代理接口返回的各子程序间动态调用的分支路径和调用参数。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述的子程序调用路径分支的确定方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的子程序调用路径分支的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110737592.5A CN113297095B (zh) | 2021-06-30 | 一种子程序调用路径分支的确定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110737592.5A CN113297095B (zh) | 2021-06-30 | 一种子程序调用路径分支的确定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113297095A true CN113297095A (zh) | 2021-08-24 |
CN113297095B CN113297095B (zh) | 2024-07-05 |
Family
ID=
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703729A (zh) * | 2021-08-30 | 2021-11-26 | 中国工商银行股份有限公司 | 一种生成程序调用链的方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073825A (zh) * | 2011-01-28 | 2011-05-25 | 李清宝 | 基于路径驱动的可执行程序安全性检测方法及系统 |
CN110647752A (zh) * | 2019-09-26 | 2020-01-03 | 信联科技(南京)有限公司 | 一种基于遗传算法的模糊测试平台 |
CN111177663A (zh) * | 2019-12-20 | 2020-05-19 | 青岛海尔科技有限公司 | 编译器的代码混淆改进方法及装置、存储介质、电子装置 |
CN112486808A (zh) * | 2020-11-20 | 2021-03-12 | 中国人寿保险股份有限公司 | 一种系统测试方法、装置、电子设备及存储介质 |
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073825A (zh) * | 2011-01-28 | 2011-05-25 | 李清宝 | 基于路径驱动的可执行程序安全性检测方法及系统 |
CN110647752A (zh) * | 2019-09-26 | 2020-01-03 | 信联科技(南京)有限公司 | 一种基于遗传算法的模糊测试平台 |
CN111177663A (zh) * | 2019-12-20 | 2020-05-19 | 青岛海尔科技有限公司 | 编译器的代码混淆改进方法及装置、存储介质、电子装置 |
CN112486808A (zh) * | 2020-11-20 | 2021-03-12 | 中国人寿保险股份有限公司 | 一种系统测试方法、装置、电子设备及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703729A (zh) * | 2021-08-30 | 2021-11-26 | 中国工商银行股份有限公司 | 一种生成程序调用链的方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109871326B (zh) | 一种脚本录制的方法和装置 | |
CN102200911B (zh) | 变量闭包 | |
CN111930617B (zh) | 基于数据对象化的自动化测试方法及装置 | |
CN109308254B (zh) | 一种测试方法、装置及测试设备 | |
CN109471768B (zh) | 业务问题的监控方法、装置以及电子设备 | |
CN109871312B (zh) | 一种接口测试方法、装置、设备及可读存储介质 | |
CN111831542B (zh) | Api应用调测方法及装置、存储介质 | |
CN111124870A (zh) | 一种接口测试方法及装置 | |
WO2014200803A1 (en) | Using a static analysis for configuring a follow-on dynamic analysis for the evaluation of program code | |
CN110609785A (zh) | 软件接口的测试方法及装置 | |
CN110908915A (zh) | 一种测试覆盖率的展示方法、装置及计算机系统 | |
CN112131573A (zh) | 安全漏洞的检测方法、装置及存储介质 | |
CN111782266A (zh) | 软件性能基准确定方法及装置 | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 | |
KR20180129623A (ko) | 연관된 다중 파일 정적 분석 장치 | |
CN113157559B (zh) | 流量筛选方法及装置 | |
CN112346981A (zh) | 联调测试覆盖率检测方法及系统 | |
CN113297095B (zh) | 一种子程序调用路径分支的确定方法及装置 | |
CN113297095A (zh) | 一种子程序调用路径分支的确定方法及装置 | |
CN113157590A (zh) | 测试案例生成方法及装置 | |
CN113282476B (zh) | 接口性能测试方法、装置和电子设备 | |
CN113515447B (zh) | 系统自动化测试方法及装置 | |
CN113282504A (zh) | 一种增量代码覆盖率检测方法及业务开发方法、装置 | |
CN113377677B (zh) | 一种单元测试方法及装置 | |
CN113342600B (zh) | 一种程序依赖插件的监测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |