CN113094283A - 一种数据获取方法、装置、设备及存储介质 - Google Patents
一种数据获取方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113094283A CN113094283A CN202110478051.5A CN202110478051A CN113094283A CN 113094283 A CN113094283 A CN 113094283A CN 202110478051 A CN202110478051 A CN 202110478051A CN 113094283 A CN113094283 A CN 113094283A
- Authority
- CN
- China
- Prior art keywords
- cgi
- source code
- code data
- php
- change
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 242
- 230000008859 change Effects 0.000 claims abstract description 145
- 238000012360 testing method Methods 0.000 claims abstract description 125
- 238000004458 analytical method Methods 0.000 claims description 25
- 230000006870 function Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 9
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000013507 mapping Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 230000003287 optical 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例涉及大数据领域,公开了一种数据获取方法、装置、设备及存储介质,该方法包括:获取待处理的php源代码数据,并对php源代码数据进行解析,以确定变更代码的变更方法;根据变更方法查找php源代码数据中CGI的入口,并根据CGI的入口获取与变更方法相关联的CGI列表;获取web测试用例与CGI的对应关系,并根据web测试用例与CGI的对应关系,查询与CGI列表对应的web测试用例;确定与CGI列表对应的web测试用例为与变更方法相关联的测试用例。通过这种方式,可以提高测试效率和测试精确性。本发明涉及区块链技术,如可将任务数据写入区块链中,以用于数据取证等场景。
Description
技术领域
本发明涉及大数据领域,尤其涉及一种数据获取方法、装置、设备及存储介质。
背景技术
在进行变更代码的精准测试分析时,首先需要的基础数据就是方法的调用关系,通常的方法调用关系为静态分析收集办法,然而静态分析收集办法无法解决php面向对象编程中的多态场景,目前业界没有成熟的方案来分析变更代码所影响的测试用例范围。因此,如何获取变更代码影响测试用例范围,如何分析变更代码影响的调用方,分析影响的测试用例,提高测试效率和测试精确性一直以来是测试领域面临的一个挑战。
发明内容
本发明实施例提供了一种数据获取方法、装置、设备及存储介质,提高测试效率和测试精确性。
第一方面,本发明实施例提供了一种数据获取方法,所述方法包括:
获取待处理的php源代码数据,并对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法;
根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;
获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;
确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
进一步地,所述对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法,包括:
对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息;
根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法。
进一步地,所述对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息,包括:
对所述php源代码数据进行符号解析,得到所述php源代码数据的类和方法列表,并根据所述类和方法列表确定类和方法的起止行号信息;
根据所述php源代码数据确定svn基本版本代码和server代码,并将所述svn基本版本代码与server代码进行比对;
根据所述svn基本版本代码与server代码的比对结果获取代码差异行;
所述根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法,包括:
根据所述代码差异行和所述起止行号信息确定所述php源代码数据中变更代码的变更方法。
进一步地,所述根据所述变更方法查找所述php源代码数据中CGI的入口,包括:
根据所述变更方法确定所述php源代码数据中php方法的调用关系链;
根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口。
进一步地,所述根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口,包括:
根据所述变更方法确定所述php源代码数据中的方法关系链;
在所述方法关系链中查找是否存在调用者为php文件的主函数方法,当查找到所述方法关系链中存在调用者为php文件的主函数方法时,确定查找到对应的CGI入口。
进一步地,所述获取web测试用例与CGI的对应关系,包括:
开启指定的代理工具,并根据所述指定的代理工具对所述CGI进行分析;
执行所述web测试用例以确定CGI信息,并在执行所述web测试用例结束后,执行指定的分析用例以确定所述web测试用例与CGI的对应关系。
进一步地,所所述根据所述指定的代理工具对所述CGI进行分析,包括:
获取所述指定的代理工具的自定义规则配置文件,并对所述指定的代理工具的自定义规则配置文件进行修改;
根据修改后的自定义规则配置文件对所述CGI进行分析。
第二方面,本发明实施例提供了一种数据获取装置,包括:
获取单元,用于获取待处理的php源代码数据,并对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法;
查找单元,用于根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;
查询单元,用于获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;
确定单元,用于确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
第三方面,本发明实施例提供了一种计算机设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储支持数据获取装置执行上述方法的计算机程序,所述计算机程序包括程序,所述处理器被配置用于调用所述程序,执行上述第一方面的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序被处理器执行以实现上述第一方面的方法。
本发明实施例可以获取待处理的php源代码数据,并对所述php源代码数据进行解析以确定所述php源代码数据中变更代码的变更方法;根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。通过这种方式,可以解决方法调用关系静态分析收集办法中无法解决php面向对象编程中的多态场景的问题,这为精准测试分析提供了更加全面的方法调用关系基础数据;通过方法调用层级关系的分析,找到方法调用的CGI入口,再通过CGI与测试用例的映射关系获取影响的测试用例列表,从而为有效选择测试用例执行提供依据,提高测试效率和测试精确性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据获取方法的示意流程图;
图2是本发明实施例提供的一种数据获取装置的示意框图;
图3是本发明实施例提供的一种计算机设备的示意框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的数据获取方法可以应用于一种数据获取装置,在某些实施例中,所述数据获取装置设置于计算机设备中。在某些实施例中,所述计算机设备包括但不限于智能手机、平板电脑、膝上型电脑等中的一种或者多种。
本发明实施例可以获取待处理的php源代码数据,并对所述php源代码数据进行解析以确定所述php源代码数据中变更代码的变更方法;根据所述变更方法查找所述php源代码数据中公共网关接口(Common Gateway Interface,CGI)的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
下面结合附图1对本发明实施例提供的数据获取方法进行示意性说明。
请参见图1,图1是本发明实施例提供的一种数据获取方法的示意流程图,如图1所示,该方法可以由数据获取装置执行,所述数据获取装置设置于计算机设备中。具体地,本发明实施例的所述方法包括如下步骤。
S101:获取待处理的php源代码数据,并对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法。
本发明实施例中,数据获取装置可以获取待处理的php源代码数据,并对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法。
在一个实施例中,数据获取装置在对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法时,可以对所述php源代码数据进行解析以获取所述php源代码数据中的变更代码信息;并根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法。
在一个实施例中,数据获取装置在对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息时,可以对所述php源代码数据进行符号解析得到所述php源代码数据的类和方法列表,并根据所述类和方法列表确定类和方法的起止行号信息;根据所述php源代码数据确定svn基本版本代码和server代码,并将所述svn基本版本代码与server代码进行比对;以及根据所述svn基本版本代码与server代码的比对结果获取代码差异行。
在一个示例中,数据获取装置可以利用token_get_all()对php源代码数据进行符号解析,并利用stack算法计算类和方法的起止行号信息。
在一个实施例中,在获取所述起止行号信息的过程中,可以利用Php Zend引擎提供的token_get_all()对php原代码数据输出指定的数据结构。在一个示例中,所述指定的数据结构可以为如下所示:
Array(
0=>337,
1=>‘function’,
2=>2,)
其中,对于337这种代码编号,php提供了token_name获取对应的名称。
在一个实施例中,可以根据更换token_name后的数据结果的数据结构,利用stack算法计算类和方法的起止行号信息。在一个具体实施方式中,可以利用T_CLASS标记获取类的起止范围,并利用T_FUNCTION标记获取方法起止行,从而根据方法起止行确定方法所在的类或者全局方法,进一步利用一个栈算法找到{}的闭合标签,即可获取方法和类的起止行号信息。
在一个实施例中,在根据所述svn基本版本代码与server代码的比对结果获取代码差异行时,可以使用linux shell命令diff获取代码差异行。
在一个实施例中,数据获取装置在根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法时,可以根据所述代码差异行和所述起止行号信息确定所述php源代码数据中变更代码的变更方法。
S102:根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表。
本发明实施例中,数据获取装置可以根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表。
在一个实施例中,数据获取装置在根据所述变更方法查找所述php源代码数据中CGI的入口时,可以根据所述变更方法确定所述php源代码数据中php方法的调用关系链;并根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口。
在一个实施例中,数据获取装置在根据所述变更方法确定所述php源代码数据中php方法的调用关系链时,可以利用预设的php性能分析工具如开源Xhprof对所述变更方法进行分析,得到所述调用关系链。
其中,开源Xhprof只输出了类名及方法名信息,可以通过修改xhprof.c代码使调用xhprof的save_run方法时输出当前类及方法所在的文件路径信息。其中,修改方法如下:
(1)删除或注释掉hp_compile_file中的如下代码:
filename=hp_get_base_filename(file_handle->filename);
(2)增加一行代码:filename=file_handle->filename;
在一个实施例中,针对xhprof输出的结果文件格式需要做如下的分析及格式化处理,首先在数据库中维护了文件id与文件路径的映射关系,通过解析分析和入库将方法调用关系保存在数据库表结构中。
在一个实施例中,数据获取装置在根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口时,可以根据所述变更方法确定所述php源代码数据中的方法关系链;并在所述方法关系链中查找是否存在调用者为php文件的主函数方法;当查找到所述方法关系链中存在调用者为php文件的主函数方法时,确定查找到对应的CGI入口。
在一个实施例中,数据获取装置在根据所述变更方法确定所述php源代码数据中的方法关系链,并在所述方法关系链中查找是否存在调用者为php文件的主函数方法时,如果查找深度到达预设深度阈值时没有查找到所述方法关系链中存在调用者为php文件的主函数方法,则停止查找CGI入口。
S103:获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例。
本发明实施例中,数据获取装置可以获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例。
在一个实施例中,数据获取装置在获取web测试用例与CGI的对应关系时,可以开启指定的代理工具,并根据所述指定的代理工具对所述CGI进行分析;执行所述web测试用例以确定CGI信息,并在执行所述web测试用例结束后,执行指定的分析用例以确定所述web测试用例与CGI的对应关系。在某些实施例中,所述指定的代理工具可以为fiddler代理工具。
在一个具体实施方式中,可以开启fiddler代理工具,并通过修改CustomizeRules脚本添加CGI分析,上报逻辑,然后用户开始用例执行,监控http获取CGI,调用http服务上报在用例执行中收集到的CGI信息,在用户结束用例执行后分析用例,确定CGI关系。
在一个实施例中,数据获取装置在根据所述指定的代理工具对所述CGI进行分析时,可以获取所述指定的代理工具的自定义规则配置文件,并对所述指定的代理工具的自定义规则配置文件进行修改;以及根据修改后的自定义规则配置文件对所述CGI进行分析。
在一个实施例中,在对所述指定的代理工具的自定义规则配置文件进行修改时,可以修改fiddler自定义规则配置文件CustomRules.js,在方法
static function OnBeforeRequest(oSession:Session){
}
增加oSession.url根据cgi服务地址前缀过滤,
例如,当识别到请求地址包含http://xxx.xxx.xxx.xxx/api/时,将此接口的完整地址信息oSession.url上报到收集服务器进行保存。
if(oSession.uriContains("http://xxx.xxx.xxx.xxx/api/"){
CGI地址信息上报处理
}
在一个实施例中,可以通过new ActiveXObject('Microsoft.XMLHTTP')创建对象发起post接口请求上传CGI地址信息到服务器,当上报处理服务接收到CGI上报请求时,根据开始执行的用例编号与接收到的CGI地址信息进行关联写入数据库表(包括caseid,cgiurl字段),其中caseid为执行的用例编号,cgiurl代表采集到的cgi接口地址。
S104:确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
本发明实施例中,数据获取装置可以确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
本发明实施例中,数据获取装置可以获取待处理的php源代码数据,并对所述php源代码数据进行解析以确定所述php源代码数据中变更代码的变更方法;根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。通过这种方式,可以解决方法调用关系静态分析收集办法中无法解决php面向对象编程中的多态场景的问题,这为精准测试分析提供了更加全面的方法调用关系基础数据;通过方法调用层级关系的分析,找到方法调用的CGI入口,再通过CGI与测试用例的映射关系获取影响的测试用例列表,从而为有效选择测试用例执行提供依据,提高测试效率和测试精确性。
本发明实施例还提供了一种数据获取装置,该数据获取装置用于执行前述任一项所述的方法的单元。具体地,参见图2,图2是本发明实施例提供的一种数据获取装置的示意框图。本实施例的数据获取装置包括:获取单元201、查找单元202、查询单元203、确定单元204。
获取单元201,用于获取待处理的php源代码数据,并对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法;
查找单元202,用于根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;
查询单元203,用于获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;
确定单元204,用于确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
进一步地,所述获取单元201对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法时,具体用于:
对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息;
根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法。
进一步地,所述获取单元201对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息时,具体用于:
对所述php源代码数据进行符号解析,得到所述php源代码数据的类和方法列表,并根据所述类和方法列表确定类和方法的起止行号信息;
根据所述php源代码数据确定svn基本版本代码和server代码,并将所述svn基本版本代码与server代码进行比对;
根据所述svn基本版本代码与server代码的比对结果获取代码差异行;
所述获取单元201根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法时,具体用于:
根据所述代码差异行和所述起止行号信息确定所述php源代码数据中变更代码的变更方法。
进一步地,所述查找单元202根据所述变更方法查找所述php源代码数据中CGI的入口时,具体用于:
根据所述变更方法确定所述php源代码数据中php方法的调用关系链;
根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口。
进一步地,所述查找单元202根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口时,具体用于:
根据所述变更方法确定所述php源代码数据中的方法关系链;
在所述方法关系链中查找是否存在调用者为php文件的主函数方法,当查找到所述方法关系链中存在调用者为php文件的主函数方法时,确定查找到对应的CGI入口。
进一步地,所述查询单元203获取web测试用例与CGI的对应关系时,具体用于:
开启指定的代理工具,并根据所述指定的代理工具对所述CGI进行分析;
执行所述web测试用例以确定CGI信息,并在执行所述web测试用例结束后,执行指定的分析用例以确定所述web测试用例与CGI的对应关系。
进一步地,所述查询单元203根据所述指定的代理工具对所述CGI进行分析时,具体用于:
获取所述指定的代理工具的自定义规则配置文件,并对所述指定的代理工具的自定义规则配置文件进行修改;
根据修改后的自定义规则配置文件对所述CGI进行分析。
本发明实施例中,数据获取装置可以获取待处理的php源代码数据,并对所述php源代码数据进行解析以确定所述php源代码数据中变更代码的变更方法;根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。通过这种方式,可以解决方法调用关系静态分析收集办法中无法解决php面向对象编程中的多态场景的问题,这为精准测试分析提供了更加全面的方法调用关系基础数据;通过方法调用层级关系的分析,找到方法调用的CGI入口,再通过CGI与测试用例的映射关系获取影响的测试用例列表,从而为有效选择测试用例执行提供依据,提高测试效率和测试精确性。
参见图3,图3是本发明实施例提供的一种计算机设备的示意框图。如图所示的本实施例中的设备可以包括:一个或多个处理器301;一个或多个输入设备302,一个或多个输出设备303和存储器304。上述处理器301、输入设备302、输出设备303和存储器304通过总线305连接。存储器304用于存储计算机程序,所述计算机程序包括程序,处理器301用于执行存储器404存储的程序。
其中,处理器301被配置用于调用所述程序执行:
获取待处理的php源代码数据,并对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法;
根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;
获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;
确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
进一步地,所述处理器301对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法时,具体用于:
对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息;
根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法。
进一步地,所述处理器301对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息时,具体用于:
对所述php源代码数据进行符号解析,得到所述php源代码数据的类和方法列表,并根据所述类和方法列表确定类和方法的起止行号信息;
根据所述php源代码数据确定svn基本版本代码和server代码,并将所述svn基本版本代码与server代码进行比对;
根据所述svn基本版本代码与server代码的比对结果获取代码差异行;
所述处理器301根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法时,具体用于:
根据所述代码差异行和所述起止行号信息确定所述php源代码数据中变更代码的变更方法。
进一步地,所述处理器301根据所述变更方法查找所述php源代码数据中CGI的入口时,具体用于:
根据所述变更方法确定所述php源代码数据中php方法的调用关系链;
根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口。
进一步地,所述处理器301根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口时,具体用于:
根据所述变更方法确定所述php源代码数据中的方法关系链;
在所述方法关系链中查找是否存在调用者为php文件的主函数方法,当查找到所述方法关系链中存在调用者为php文件的主函数方法时,确定查找到对应的CGI入口。
进一步地,所述处理器301获取web测试用例与CGI的对应关系时,具体用于:
开启指定的代理工具,并根据所述指定的代理工具对所述CGI进行分析;
执行所述web测试用例以确定CGI信息,并在执行所述web测试用例结束后,执行指定的分析用例以确定所述web测试用例与CGI的对应关系。
进一步地,所述处理器301根据所述指定的代理工具对所述CGI进行分析时,具体用于:
获取所述指定的代理工具的自定义规则配置文件,并对所述指定的代理工具的自定义规则配置文件进行修改;
根据修改后的自定义规则配置文件对所述CGI进行分析。
本发明实施例中,计算机设备可以获取待处理的php源代码数据,并对所述php源代码数据进行解析以确定所述php源代码数据中变更代码的变更方法;根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。通过这种方式,可以解决方法调用关系静态分析收集办法中无法解决php面向对象编程中的多态场景的问题,这为精准测试分析提供了更加全面的方法调用关系基础数据;通过方法调用层级关系的分析,找到方法调用的CGI入口,再通过CGI与测试用例的映射关系获取影响的测试用例列表,从而为有效选择测试用例执行提供依据,提高测试效率和测试精确性。
应当理解,在本发明实施例中,所称处理器301可以是中央处理单元(CenSralProcessing UniS,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigiSalSignal Processor,DSP)、专用集成电路(ApplicaSion Specific InSegraSed CircuiS,ASIC)、现成可编程门阵列(Field-Programmable GaSe Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
输入设备302可以包括触控板、麦克风等,输出设备303可以包括显示器(LCD等)、扬声器等。
该存储器304可以包括只读存储器和随机存取存储器,并向处理器301提供指令和数据。存储器304的一部分还可以包括非易失性随机存取存储器。例如,存储器304还可以存储设备类型的信息。
具体实现中,本发明实施例中所描述的处理器301、输入设备302、输出设备303可执行本发明实施例提供的图1所述的方法实施例中所描述的实现方式,也可执行本发明实施例图2所描述的数据获取装置的实现方式,在此不再赘述。
本发明实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现图1所对应实施例中描述的数据获取方法,也可实现本发明图2所对应实施例的数据获取装置,在此不再赘述。
所述计算机可读存储介质可以是前述任一实施例所述的数据获取装置的内部存储单元,例如数据获取装置的硬盘或内存。所述计算机可读存储介质也可以是所述数据获取装置的外部存储装置,例如所述数据获取装置上配备的插接式硬盘,智能存储卡(SmarSMedia Card,SMC),安全数字(Secure DigiSal,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括所述数据获取装置的内部存储单元也包括外部存储装置。所述计算机可读存储介质用于存储所述计算机程序以及所述数据获取装置所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。所述的计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
需要强调的是,为进一步保证上述数据的私密和安全性,上述数据还可以存储于一区块链的节点中。其中,本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
以上所述,仅为本发明的部分实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种数据获取方法,其特征在于,所述方法包括:
获取待处理的php源代码数据,并对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法;
根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;
获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;
确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
2.根据权利要求1所述的方法,其特征在于,所述对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法,包括:
对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息;
根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法。
3.根据权利要求2所述的方法,其特征在于,所述对所述php源代码数据进行解析,以获取所述php源代码数据中的变更代码信息,包括:
对所述php源代码数据进行符号解析,得到所述php源代码数据的类和方法列表,并根据所述类和方法列表确定类和方法的起止行号信息;
根据所述php源代码数据确定svn基本版本代码和server代码,并将所述svn基本版本代码与server代码进行比对;
根据所述svn基本版本代码与server代码的比对结果获取代码差异行;
所述根据所述变更代码信息确定所述php源代码数据中变更代码的变更方法,包括:
根据所述代码差异行和所述起止行号信息确定所述php源代码数据中变更代码的变更方法。
4.根据权利要求1所述的方法,其特征在于,所述根据所述变更方法查找所述php源代码数据中CGI的入口,包括:
根据所述变更方法确定所述php源代码数据中php方法的调用关系链;
根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口。
5.根据权利要求4所述的方法,其特征在于,所述根据所述变更方法和所述php方法的调用关系链查找所述php源代码数据中CGI的入口,包括:
根据所述变更方法确定所述php源代码数据中的方法关系链;
在所述方法关系链中查找是否存在调用者为php文件的主函数方法,当查找到所述方法关系链中存在调用者为php文件的主函数方法时,确定查找到对应的CGI入口。
6.根据权利要求1所述的方法,其特征在于,所述获取web测试用例与CGI的对应关系,包括:
开启指定的代理工具,并根据所述指定的代理工具对所述CGI进行分析;
执行所述web测试用例以确定CGI信息,并在执行所述web测试用例结束后,执行指定的分析用例以确定所述web测试用例与CGI的对应关系。
7.根据权利要求6所述的方法,其特征在于,所述根据所述指定的代理工具对所述CGI进行分析,包括:
获取所述指定的代理工具的自定义规则配置文件,并对所述指定的代理工具的自定义规则配置文件进行修改;
根据修改后的自定义规则配置文件对所述CGI进行分析。
8.一种数据获取装置,其特征在于,包括:
获取单元,用于获取待处理的php源代码数据,并对所述php源代码数据进行解析,以确定所述php源代码数据中变更代码的变更方法;
查找单元,用于根据所述变更方法查找所述php源代码数据中CGI的入口,并根据所述CGI的入口获取与所述变更方法相关联的CGI列表;
查询单元,用于获取web测试用例与CGI的对应关系,并根据所述web测试用例与CGI的对应关系,查询与所述CGI列表对应的web测试用例;
确定单元,用于确定所述与所述CGI列表对应的web测试用例为与所述变更方法相关联的测试用例。
9.一种计算机设备,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序,所述处理器被配置用于调用所述程序,执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110478051.5A CN113094283A (zh) | 2021-04-29 | 2021-04-29 | 一种数据获取方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110478051.5A CN113094283A (zh) | 2021-04-29 | 2021-04-29 | 一种数据获取方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113094283A true CN113094283A (zh) | 2021-07-09 |
Family
ID=76680837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110478051.5A Pending CN113094283A (zh) | 2021-04-29 | 2021-04-29 | 一种数据获取方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113094283A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145831A (zh) * | 2022-09-05 | 2022-10-04 | 湖南长银五八消费金融股份有限公司 | 无侵入式测试数据恢复方法及系统 |
WO2024109007A1 (zh) * | 2022-11-23 | 2024-05-30 | 华为云计算技术有限公司 | 一种回归测试方法及相关系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176895A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种回归测试方法和系统 |
CN105302710A (zh) * | 2014-07-03 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 一种确定需要回归测试的测试用例的方法和装置 |
US20170132119A1 (en) * | 2015-09-25 | 2017-05-11 | EMC IP Holding Company LLC | Method and device for retrieving test case based on code coverage |
CN109240911A (zh) * | 2018-08-13 | 2019-01-18 | 腾讯科技(北京)有限公司 | 精准测试方法、装置和计算机设备 |
CN111209217A (zh) * | 2020-03-12 | 2020-05-29 | 苏州浪潮智能科技有限公司 | 系统软件功能测试方法、装置、设备及存储介质 |
CN111382073A (zh) * | 2020-03-09 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 自动化测试用例确定方法、装置、设备及存储介质 |
CN111831564A (zh) * | 2020-07-09 | 2020-10-27 | 北京齐尔布莱特科技有限公司 | 一种回归测试方法、装置及计算设备 |
-
2021
- 2021-04-29 CN CN202110478051.5A patent/CN113094283A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176895A (zh) * | 2011-12-22 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种回归测试方法和系统 |
CN105302710A (zh) * | 2014-07-03 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 一种确定需要回归测试的测试用例的方法和装置 |
US20170132119A1 (en) * | 2015-09-25 | 2017-05-11 | EMC IP Holding Company LLC | Method and device for retrieving test case based on code coverage |
CN109240911A (zh) * | 2018-08-13 | 2019-01-18 | 腾讯科技(北京)有限公司 | 精准测试方法、装置和计算机设备 |
CN111382073A (zh) * | 2020-03-09 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 自动化测试用例确定方法、装置、设备及存储介质 |
CN111209217A (zh) * | 2020-03-12 | 2020-05-29 | 苏州浪潮智能科技有限公司 | 系统软件功能测试方法、装置、设备及存储介质 |
CN111831564A (zh) * | 2020-07-09 | 2020-10-27 | 北京齐尔布莱特科技有限公司 | 一种回归测试方法、装置及计算设备 |
Non-Patent Citations (3)
Title |
---|
FREEPHP: "php性能分析利器:xhprof", pages 1 - 3, Retrieved from the Internet <URL:https://www.cnblogs.com/freephp/p/14408641.html> * |
小陈: "php的性能分析工具:xhprof", pages 1 - 8, Retrieved from the Internet <URL:http://www.h7hh.cn/232.html> * |
追风皇帝: "Web利器---fidder使用", pages 1 - 6, Retrieved from the Internet <URL:https://www.cnblogs.com/zhangqie/p/9636759.html> * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145831A (zh) * | 2022-09-05 | 2022-10-04 | 湖南长银五八消费金融股份有限公司 | 无侵入式测试数据恢复方法及系统 |
CN115145831B (zh) * | 2022-09-05 | 2022-11-08 | 湖南长银五八消费金融股份有限公司 | 无侵入式测试数据恢复方法及系统 |
WO2024109007A1 (zh) * | 2022-11-23 | 2024-05-30 | 华为云计算技术有限公司 | 一种回归测试方法及相关系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111475694B (zh) | 一种数据处理方法、装置、终端及存储介质 | |
CN109040052B (zh) | 一种信息处理方法、终端及计算机可读介质 | |
US10754628B2 (en) | Extracting web API endpoint data from source code to identify potential security threats | |
WO2019148712A1 (zh) | 钓鱼网站检测方法、装置、计算机设备和存储介质 | |
CN113094283A (zh) | 一种数据获取方法、装置、设备及存储介质 | |
CN111008405A (zh) | 一种基于文件Hash的网站指纹识别方法 | |
CN112527414A (zh) | 一种基于前端的数据处理方法、装置、设备及存储介质 | |
CN114900546B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US9584537B2 (en) | System and method for detecting mobile cyber incident | |
CN112463533A (zh) | 日志数据解析方法、装置、电子装置和存储介质 | |
CN110598115A (zh) | 一种基于人工智能多引擎的敏感网页识别方法及系统 | |
CN112052267B (zh) | 一种数据查询方法、设备、服务器及存储介质 | |
CN115437930A (zh) | 网页应用指纹信息的识别方法及相关设备 | |
CN113127767B (zh) | 手机号码提取方法、装置、电子设备及存储介质 | |
CN112416875A (zh) | 日志管理方法、装置、计算机设备及存储介质 | |
CN109635175B (zh) | 页面数据拼接方法、装置、可读存储介质和电子设备 | |
CN110489130B (zh) | 一种基于客户端的业务数据提取方法及装置 | |
CN110851346A (zh) | 查询语句边界问题的检测方法、装置、设备及存储介质 | |
CN111859063A (zh) | 一种用于监控互联网中转载文章信息的控制方法及装置 | |
CN109408368A (zh) | 一种测试辅助信息的输出方法、存储介质和服务器 | |
CN110750739B (zh) | 一种页面类型确定方法及装置 | |
JP4454080B2 (ja) | 情報フィルタリング装置、情報フィルタリング方法および情報フィルタリングプログラムを記録した媒体 | |
CN111427870B (zh) | 一种资源管理方法、装置及设备 | |
CN109285036B (zh) | 物联网业务处理方法、装置及存储介质 | |
KR101921123B1 (ko) | 메시지의 필드 인덱싱 방법 |
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 |