首页 / 专利库 / 电脑零配件 / 微指令翻译器 / 分支预测器 / 测试数据处理方法、装置、计算机设备和存储介质

测试数据处理方法、装置、计算机设备和存储介质

阅读:873发布:2020-05-12

专利汇可以提供测试数据处理方法、装置、计算机设备和存储介质专利检索,专利查询,专利分析的服务。并且本 申请 提供了一种测试 数据处理 方法、装置、设备和存储介质,包括:获取待测试程序和对应的 有向图 ,有向图以待测试程序中的各个函数为 节点 ,根据各个函数的先后调用关系生成各个节点之间的有向连接;从待测试程序获取有向图中各个节点的节点信息对对应的各个节点进行信息标记;遍历有向图,得到有向图对应的有向图链路集合;根据各个节点对应的节点信息确定有向图链路集合中的有向图链路对应的有向图链路关键字,根据有向图链路关键字和测试 用例 模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到有向图链路对应的目标测试用例模板,得到对应的目标测试用例,一般的测试人员也能够容易检测出 黑盒测试 不能发现的故障。,下面是测试数据处理方法、装置、计算机设备和存储介质专利的具体信息内容。

1.一种测试数据处理方法,所述方法包括:
获取待测试程序,获取所述待测试程序对应的有向图,所述有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接;
从所述待测试程序获取所述有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记;
遍历所述有向图,得到所述有向图对应的有向图链路集合;
根据各个节点对应的节点信息确定所述有向图链路集合中的有向图链路对应的有向图链路关键字,根据所述有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到所述有向图链路对应的目标测试用例模板;
根据所述有向图链路对应的目标测试用例模板,得到所述有向图链路对应的目标测试用例。
2.根据权利要求1所述的方法,其特征在于,所述获取所述待测试程序对应的有向图包括:
分析待测试程序的执行过程,通过程序指令检测所述待测试程序的各个函数之间的调用关系,所述程序指令包括调转指令和分支指令中的至少一种;
当第一函数与第二函数之间存在有向的调用关系时,根据调用关系确定所述第一函数对应的第一节点与所述第二函数对应的第二节点之间的有向连接符;
通过所述有向连接符连接所述第一节点与所述第二节点。
3.根据权利要求1所述的方法,其特征在于,所述根据各个节点对应的节点信息确定所述有向图链路集合中的有向图链路对应的有向图链路关键字,根据有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到所述有向图链路对应的目标测试用例模板包括:
获取有向图链路中的各个节点对应的节点信息,所述节点信息包括实体信息;
从所述实体信息中提取所述有向图链路对应的当前有向图链路关键字;
将所述当前有向图链路关键字分别与各个候选测试用例模板对应的测试用例模板关键字进行匹配;
当匹配成功时,匹配成功的候选测试用例模板作为所述有向图链路对应的目标测试用例模板。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
生成所述有向图链路集合中的有向图链路对应的当前关键字向量;
将所述当前关键字向量输入已训练的测试用例预测模型,得到所述测试用例预测模型输出的所述有向图链路对应的目标测试用例。
5.根据权利要求4所述的方法,其特征在于,所述已训练的测试用例预测模型的生成步骤包括:
获取训练有向图链路和对应的标准测试用例;
获取所述训练有向图链路对应的训练有向图链路关键字组成训练关键字向量;
将所述训练关键字向量输入测试用例预测模型,得到所述测试用例预测模型输出的预测测试用例;
根据所述训练有向图链路对应的预测测试用例和标准测试用例调整所述测试用例预测模型的参数,直到满足预设条件,生成所述已训练的测试用例预测模型。
6.一种测试数据处理装置,其特征在于,所述装置包括:
获取模,用于获取待测试程序,获取所述待测试程序对应的有向图,所述有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接;
节点标记模块,用于从所述待测试程序获取所述有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记;
有向图链路集合确定模块,用于遍历所述有向图,得到所述有向图对应的有向图链路集合;
模板匹配模块,用于根据各个节点对应的节点信息确定所述有向图链路集合中的有向图链路对应的有向图链路关键字,根据所述有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到所述有向图链路对应的目标测试用例模板;
第一目标测试用例确定模块,用于根据所述有向图链路对应的目标测试用例模板,得到所述有向图链路对应的目标测试用例。
7.根据权利要求6所述的装置,其特征在于,所述模板匹配模块还用于获取有向图链路中的各个节点对应的节点信息,所述节点信息包括实体信息,从所述实体信息中提取所述有向图链路对应的当前有向图链路关键字,将所述当前有向图链路关键字分别与各个候选测试用例模板对应的测试用例模板关键字进行匹配,当匹配成功时,匹配成功的候选测试用例模板作为所述有向图链路对应的目标测试用例模板。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第二目标测试用例确定模块,用于生成所述有向图链路集合中的有向图链路对应的当前关键字向量,将所述当前关键字向量输入已训练的测试用例预测模型,得到所述测试用例预测模型输出的所述有向图链路对应的目标测试用例。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述方法的步骤。

说明书全文

测试数据处理方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及计算机技术领域,特别是涉及一种测试数据处理方法、装置、计算机设备和存储介质。

背景技术

[0002] 目前,随着计算机技术的发展,产生了不同类型的软件应用,各个软件应用发布前需要进行测试,以检测应用的功能、性能等。
[0003] 测试分为黑盒测试白盒测试,黑盒测试依赖需求文档和需求规格说明书,测试人员只能按照需求规格说明书描述的功能对软件进行测试,并且由于测试人员不了解代码的内部实现逻辑,在测试过程中容易遗漏测试点。而若采用传统的白盒测试对测试人员素质要求较高,需测试人员了解程序代码逻辑,才能检测出软件漏洞。发明内容
[0004] 基于此,有必要针对上述技术问题,提供一种测试数据处理方法、装置、计算机设备和存储介质,一般的测试人员也能够容易检测出黑盒测试不能发现的故障。
[0005] 一种测试数据处理方法,所述方法包括:
[0006] 获取待测试程序,获取所述待测试程序对应的有向图,所述有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接;
[0007] 从所述待测试程序获取所述有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记;
[0008] 遍历所述有向图,得到所述有向图对应的有向图链路集合;
[0009] 根据各个节点对应的节点信息确定所述有向图链路集合中的有向图链路对应的有向图链路关键字,根据所述有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到所述有向图链路对应的目标测试用例模板;
[0010] 根据所述有向图链路对应的目标测试用例模板,得到所述有向图链路对应的目标测试用例。
[0011] 在其中一个实施例中,所述获取所述待测试程序对应的有向图包括:
[0012] 分析待测试程序的执行过程,通过程序指令检测所述待测试程序的各个函数之间的调用关系,所述程序指令包括调转指令和分支指令中的至少一种;
[0013] 当第一函数与第二函数之间存在有向的调用关系时,根据调用关系确定所述第一函数对应的第一节点与所述第二函数对应的第二节点之间的有向连接符;
[0014] 通过所述有向连接符连接所述第一节点与所述第二节点。
[0015] 在其中一个实施例中,所述根据各个节点对应的节点信息确定所述有向图链路集合中的有向图链路对应的有向图链路关键字,根据有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到所述有向图链路对应的目标测试用例模板包括:
[0016] 获取有向图链路中的各个节点对应的节点信息,所述节点信息包括实体信息;
[0017] 从所述实体信息中提取所述有向图链路对应的当前有向图链路关键字;
[0018] 将所述当前有向图链路关键字分别与各个候选测试用例模板对应的测试用例模板关键字进行匹配;
[0019] 当匹配成功时,匹配成功的候选测试用例模板作为所述有向图链路对应的目标测试用例模板。
[0020] 在其中一个实施例中,所述方法还包括::
[0021] 生成所述有向图链路集合中的有向图链路对应的当前关键字向量;
[0022] 将所述当前关键字向量输入已训练的测试用例预测模型,得到所述测试用例预测模型输出的所述有向图链路对应的目标测试用例。
[0023] 在其中一个实施例中,所述已训练的测试用例预测模型的生成步骤包括:
[0024] 获取训练有向图链路和对应的标准测试用例;
[0025] 获取所述训练有向图链路对应的训练有向图链路关键字组成训练关键字向量;
[0026] 将所述训练关键字向量输入测试用例预测模型,得到所述测试用例预测模型输出的预测测试用例;
[0027] 根据所述训练有向图链路对应的预测测试用例和标准测试用例调整所述测试用例预测模型的参数,直到满足预设条件,生成所述已训练的测试用例预测模型。
[0028] 一种测试数据处理装置,所述装置包括:
[0029] 获取模,用于获取待测试程序,获取所述待测试程序对应的有向图,所述有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接;
[0030] 节点标记模块,用于从所述待测试程序获取所述有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记;
[0031] 有向图链路集合确定模块,用于遍历所述有向图,得到所述有向图对应的有向图链路集合;
[0032] 模板匹配模块,用于根据各个节点对应的节点信息确定所述有向图链路集合中的有向图链路对应的有向图链路关键字,根据所述有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到所述有向图链路对应的目标测试用例模板;
[0033] 第一目标测试用例确定模块,用于根据所述有向图链路对应的目标测试用例模板,得到所述有向图链路对应的目标测试用例。
[0034] 在其中一个实施例中,所述模板匹配模块还用于获取有向图链路中的各个节点对应的节点信息,所述节点信息包括实体信息,从所述实体信息中提取所述有向图链路对应的当前有向图链路关键字,将所述当前有向图链路关键字分别与各个候选测试用例模板对应的测试用例模板关键字进行匹配,当匹配成功时,匹配成功的候选测试用例模板作为所述有向图链路对应的目标测试用例模板。
[0035] 在其中一个实施例中,所述装置还包括:
[0036] 第二目标测试用例确定模块,用于生成所述有向图链路集合中的有向图链路对应的当前关键字向量,将所述当前关键字向量输入已训练的测试用例预测模型,得到所述测试用例预测模型输出的所述有向图链路对应的目标测试用例。
[0037] 一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0038] 获取待测试程序,获取所述待测试程序对应的有向图,所述有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接;
[0039] 从所述待测试程序获取所述有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记;
[0040] 遍历所述有向图,得到所述有向图对应的有向图链路集合;
[0041] 根据各个节点对应的节点信息确定所述有向图链路集合中的有向图链路对应的有向图链路关键字,根据所述有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到所述有向图链路对应的目标测试用例模板;
[0042] 根据所述有向图链路对应的目标测试用例模板,得到所述有向图链路对应的目标测试用例。
[0043] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0044] 获取待测试程序,获取所述待测试程序对应的有向图,所述有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接;
[0045] 从所述待测试程序获取所述有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记;
[0046] 遍历所述有向图,得到所述有向图对应的有向图链路集合;
[0047] 根据各个节点对应的节点信息确定所述有向图链路集合中的有向图链路对应的有向图链路关键字,根据所述有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到所述有向图链路对应的目标测试用例模板;
[0048] 根据所述有向图链路对应的目标测试用例模板,得到所述有向图链路对应的目标测试用例。
[0049] 上述测试数据处理方法、装置、计算机设备和存储介质,通过获取待测试程序,获取待测试程序对应的有向图,有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接;从待测试程序获取所述有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记;遍历有向图,得到有向图对应的有向图链路集合;根据各个节点对应的节点信息确定有向图链路集合中的有向图链路对应的有向图链路关键字,根据有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到有向图链路对应的目标测试用例模板;根据有向图链路对应的目标测试用例模板,得到有向图链路对应的目标测试用例,通过对有向图实施一系列提取、翻译等,实现了对黑盒测试的优化改进,进而解决黑盒测试过程中存在的较大的盲目性,以及测试用例覆盖率低的问题,进一步地,通过分析有向图得到有向图链路,根据有向图链路关键字进行测试用例模板匹配,为有向图链路自适应地确定对应的目标测试用例,通过模板匹配实现了基于有向图的测试用例自动编写,提高测试用例编写的效率,测试人员无需了解程序代码逻辑,一般的测试人员也能够容易检测出黑盒测试不能发现的故障,达到了进行白盒测试的效果。附图说明
[0050] 图1为一个实施例中测试数据处理方法的应用环境图;
[0051] 图2为一个实施例中测试数据处理方法的流程示意图;
[0052] 图3为一个实施例中有向图的示意图;
[0053] 图4为一个实施例中通过模板匹配确定目标测试用例的过程示意图;
[0054] 图5为另一个实施例中通过模型确定目标测试用例的过程示意图;
[0055] 图6为一个实施例中测试数据处理装置的结构框图
[0056] 图7为一个实施例中计算机设备的内部结构图。

具体实施方式

[0057] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0058] 本申请提供的测试数据处理方法,可以应用于如图1所示的应用环境中。图1为一个实施例中测试数据处理方法运行的应用环境图。如图1所示,该应用环境包括终端110、服务器120。终端、服务器之间通过网络进行通信,通信网络可以是无线或者有线通信网络,例如IP网络、蜂窝移动通信网络等,其中终端和服务器的个数不限。
[0059] 其中,终端110可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。测试数据处理方法可以在终端110或服务器120上实现。
[0060] 在一个实施例中,如图2所示,提供了一种测试数据处理方法,以该方法应用于图1中的终端110或服务器120为例进行说明,包括以下步骤:
[0061] 步骤210,获取待测试程序,获取待测试程序对应的有向图,有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接。
[0062] 其中,待测试程序可以是执行文件,也可以是动态链接库,格式包括C/C++/C#/Java/Python。有向图描述了各个函数之间的调用关系和依赖关系。待测试程序包括了基本的机器执行和内存模型定义,以函数作为最小的分析单元,可以得到如下信息:
[0063] 1、函数名称,参数列表,以及返回值。
[0064] 2、函数体,包括各种实体定义,以及相关的操作,实体指某类事物的集合,通常把每一类数据对象的个体称为实体。比如我们应用程序中的物料名称,食品名称,食品大类名称等,每个数据对象都是一个实体。
[0065] 3、函数间的调用逻辑,如B->E,表示B调用E,其中B、E分别表示2个不同的函数。
[0066] 具体地,以函数作为节点,根据各个函数间的调用顺序,构建从一个函数到另一个函数间的有向图,如图3所示,其中,M1和M2分别表示程序的接口,节点A,B,C,D,E,F,G,H,I分别表示不同的函数方法,连接线表示从一个方法到另一个方法的调用。该图也指明了依赖关系,例如A依赖于D和E,C依赖于F。其中不同的程序可能会依赖于相同的方法,比如M1和M2都依赖于B。
[0067] 在一个实施例中,通过工具获取待测试程序的有向图,不同的编程语言字节码分析工具是不同的,例如JAVA语言常见的字节分析工具有jclasslib,Classpy,ASM等。
[0068] 对于一个Web接口来说,每个对外的API(Application Programming Interface,应用程序接口)都是相对独立的,可以以该函数作为入口节点,建立该函数为起点的有向图。由于一个Web程序可以包含多个API接口,并且内部逻辑存在多个节点复用的情况,如图3的节点E,有向图可以存在多入口。
[0069] 步骤220,从待测试程序获取有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记。
[0070] 其中,节点信息包括函数名称、函数体中的实体定义、函数的注释、人工标记信息等。函数名称能够部分解释函数的功能,对于像C/C++类的语言,函数可能就只是一个地址,但可以通过符号表获取其真实的名称,实体定义能够确定该方法对接的实体信息,例如物料,食品,用户等。函数的注释可以结合源码信息,找到函数对应的注释,依赖于规范的代码。人工标记信息主要是对于机器解释不足的内容进行人工解释和标记的内容,可以是测试人员和开发者共同参与确定的。
[0071] 具体地,遍历每个节点,获取到每个节点的注释,访问函数体,获取实体信息,根据开发文档获取实体的注释。标记有向图,获取到的节点信息标记到有向图,写到有向图对应的节点属性中。
[0072] 在一个实施例中,把已标记信息的有向图用MATLAB或者html形式进行展示,获取缺失节点信息的节点,接收人工标记信息,对现有节点的错误信息进行纠正。
[0073] 步骤230,遍历有向图,得到有向图对应的有向图链路集合;根据各个节点对应的节点信息确定有向图链路集合中的有向图链路对应的有向图链路关键字,根据有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到有向图链路对应的目标测试用例模板。
[0074] 其中,有向图链路是最小参考单位,有向图链路是有向图中,从入口方法,即起点API方法,到调用结束的节点形成的链路,一个有向图可以有一条或者多条有向图链路组成有向图对应的有向图链路集合。
[0075] 具体地,有向图链路来源于有向图,通过遍历有向图,对每个入口节点应用深度优先搜索算法,能够获得全部有向图链路组成有向图对应的有向图链路集合。根据各个节点对应的节点信息确定有向图链路集合中的有向图链路对应的有向图链路关键字,可以从节点信息中根据关键字提取算法提取有向图链路关键字。如第一有向图链路的节点信息包括discount,则可将discount作为第一有向图链路的一个有向图链路关键字。
[0076] 测试用例模板是一种带有输入、输出的方法或者函数,通过输入有向图链路关键字,输出测试用例集。规定测试用例模板输入为一组字符串集合Inputs,输出为一组测试用例集合,Outputs。其中,Inputs又称之为关键字集合,例如菜单信息,可以包括折扣、名称、味、数量等信息。
[0077] 测试用例模板,可以业务需求划分为通用模板、行业模板和自定义模板。通用模板是指程序定义模板,一般不带具体业务意义,例如整形数模板、字符串模板、二进制模板、浮点数模板等,因为这些数据重点关注数据的类型,而不关心具体的含义,因此称之为通用模板。行业模板则是具有一定行业意义的目录,例如餐饮行业、金融行业等,不同行业的测试人员可以引入相应行业的模板。行业模板具有一定的针对性,同时也有相应的限制,为了更加灵活的应对具体业务,需要引入自定义模板,这种模板由具体的测试人员编写。例如一个简单菜单测试用例模板,输入关键字列表可以是[foodName,foodType,discount,count],当有向图链路中出现如上关键字,则认为匹配该模板,则输出对应的测试用例。例如,修改discount为-1、9、1100等分别针对折扣信息自动生成3个测试用例。
[0078] 模板匹配的过程其实就是有向图链路关键字和测试用例模板关键字匹配的过程,匹配成功,则从候选测试用例模板得到有向图链路对应的目标测试用例模板。在一个实施例中,模板匹配的过程可以使用如下伪代码实现:
[0079]
[0080]
[0081] 步骤240,根据有向图链路对应的目标测试用例模板,得到有向图链路对应的目标测试用例。
[0082] 具体地,template代表一个目标测试用例模板,相应的测试用例通过template.testCases获取。最终,通过saveTestCases写入文件或者测试管理端,从而为后续的测试用例执行做准备。可以将有向图链路对应的目标测试用例进行测试用例集合归档。
[0083] 本实施例中,获取待测试程序,获取待测试程序对应的有向图,有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接;从待测试程序获取所述有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记;遍历有向图,得到有向图对应的有向图链路集合;根据各个节点对应的节点信息确定有向图链路集合中的有向图链路对应的有向图链路关键字,根据有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到有向图链路对应的目标测试用例模板;根据有向图链路对应的目标测试用例模板,得到有向图链路对应的目标测试用例,通过对有向图实施一系列提取、翻译等,实现了对黑盒测试的优化改进,进而解决黑盒测试过程中存在的较大的盲目性,以及测试用例覆盖率低的问题,进一步地,通过分析有向图得到有向图链路,根据有向图链路关键字进行测试用例模板匹配,为有向图链路自适应地确定对应的目标测试用例,通过模板匹配实现了基于有向图的测试用例自动编写,提高测试用例编写的效率,测试人员无需了解程序代码逻辑,一般的测试人员也能够容易检测出黑盒测试不能发现的故障,达到了进行白盒测试的效果。
[0084] 如图4所示,为一个具体的实施例中通过模板匹配确定目标测试用例的过程示意图。
[0085] 在一个实施例中,步骤210中获取待测试程序对应的有向图包括:分析待测试程序的执行过程,通过程序指令检测待测试程序的各个函数之间的调用关系,所述程序指令包括调转指令和分支指令中的至少一种;当第一函数与第二函数之间存在有向的调用关系时,根据调用关系确定所述第一函数对应的第一节点与第二函数对应的第二节点之间的有向连接符,通过有向连接符连接第一节点与第二节点。
[0086] 具体地。跳转指令指的是机器语言的跳转指令,比如C语言中的if,jump,continue,break,switch等。比如jump指令中从A跳转到B时,就可以得到AB的调用顺序为A->B,从而有向连接符的方向为从A至B。分支指令是改变程序流程的指令,如果分支成立,那么下一条将要执行的指令就进分支成立的程序部分去执行。通过分支指令也可以得到两个函数的调用关系,从而确定两个函数对应的两个节点之间的有向连接符。将各个节点之间根据函数调用关系确定有向连接符后,得到有向图。
[0087] 本实施例中,通过机器码/汇编码/字节码来分析待测试程序的执行过程,构建程序的有向图,相当于把程序黑盒变成透明的盒子,从而可以在不用通读程序代码而得知程序的内部实现过程。
[0088] 在一个实施例中,步骤230包括:获取有向图链路中的各个节点对应的节点信息,节点信息包括实体信息;从实体信息中提取有向图链路对应的当前有向图链路关键字;将当前有向图链路关键字分别与各个候选测试用例模板对应的测试用例模板关键字进行匹配,当匹配成功时,匹配成功的候选测试用例模板作为有向图链路对应的目标测试用例模板。
[0089] 具体地,实体信息描述了一种实体,例如实体为物料,食品,用户等,不同的实体的描述信息不同,如食品实体通常包括食品名称、食品类型,折扣信息、数量信息等,如用户实体通常包括性别、年龄、爱好、所属地区等信息,从而从实体信息中提取有向图链路对应的当前有向图链路关键字,可以很好的反映有向图链路的具体测试方向,因为不同类型的信息通常需要不同的测试用例进行测试。从而通过当前有向图链路关键字分别与各个候选测试用例模板对应的测试用例模板关键字进行匹配得到目标测试用例模板。
[0090] 本实施例中,通过从实体信息中提取有向图链路对应的当前有向图链路关键字,能提高目标测试用例模板确定的准确度。
[0091] 在一个实施例中,方法还包括:生成有向图链路集合中的有向图链路对应的当前关键字向量,将当前关键字向量输入已训练的测试用例预测模型,得到测试用例预测模型输出的有向图链路对应的目标测试用例。
[0092] 具体地,先获取有向图链路集合中的有向图链路对应的当前关键字,再将各个当前关键字组成当前关键字向量,已训练的测试用例预测模型可根据输入自动输出匹配的目标测试用例,从而可直接根据已训练的测试用例预测模型快速得到有向图链路对应的目标测试用例。可以将测试用例预测模型输出的有向图链路对应的目标测试用例进行测试用例集合归档,从而为后续的测试用例执行做准备。由于已训练的测试用例预测模型通过大量的训练样本进行训练得到,输出的有向图链路对应的目标测试用例的准确度也较高。
[0093] 在一个实施例中,已训练的测试用例预测模型的生成步骤包括:获取训练有向图链路和对应的标准测试用例,获取训练有向图链路对应的训练有向图链路关键字组成训练关键字向量,将训练关键字向量输入测试用例预测模型,得到测试用例预测模型输出的预测测试用例;根据训练有向图链路对应的预测测试用例和标准测试用例调整所述测试用例预测模型的参数,直到满足预设条件,生成已训练的测试用例预测模型。
[0094] 具体地,标准测试用例可以是之前通过模板匹配确定的有向图链路对应的目标测试用例,或人工编写的有向图链路对应的目标测试用例,或是历史已训练的测试用例预测模型输出的有向图链路对应的目标测试用例。将存在目标测试用例的有向图链路作为训练有向图链路,提取训练有向图链路对应的训练有向图链路关键字组成训练关键字向量,并将训练关键字向量输入测试用例预测模型,得到预测测试用例,再将预测测试用例与标准测试用例进行比较,可计算相似度,如果相似度低于预设阈值,则需要继续调整测试用例预测模型的参数,直到预测测试用例与标准测试用例达到预设条件,如相似度大于预设阈值,从而生成已训练的测试用例预测模型。在一个实施例中,还包括预处理步骤,对主要是有向图链路进行清理,保证有向图链路数据集的合法性,将合法的有向图链路作为训练有向图链路。
[0095] 如图5所示,为一个实施例中将有向图链路和测试用例作为机器学习的训练集,训练相应的模型,从而实现覆盖更全面的测试用例编写和使用已训练的测试用例预测模型的流程图
[0096] 应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0097] 在一个实施例中,如图6所示,提供了一种测试数据处理装置,包括:获取模块310、节点标记模块320、有向图链路集合确定模块330,模板匹配模块340,第一目标测试用例确定模块350其中:
[0098] 获取模块310,用于获取待测试程序,获取待测试程序对应的有向图,有向图以待测试程序中的各个函数为节点,根据各个函数的先后调用关系生成各个节点之间的有向连接。
[0099] 节点标记模块320,用于从待测试程序获取有向图中各个节点的节点信息,根据节点信息对对应的各个节点进行信息标记。
[0100] 有向图链路集合确定模块330,用于遍历有向图,得到有向图对应的有向图链路集合。
[0101] 模板匹配模块340,用于根据各个节点对应的节点信息确定有向图链路集合中的有向图链路对应的有向图链路关键字,根据有向图链路关键字和测试用例模板关键字,将有向图链路集合中的有向图链路与候选测试用例模板进行匹配,得到有向图链路对应的目标测试用例模板。
[0102] 第一目标测试用例确定模块350,用于根据有向图链路对应的目标测试用例模板,得到有向图链路对应的目标测试用例。
[0103] 在一个实施例中,模板匹配模块340还用于获取有向图链路中的各个节点对应的节点信息,节点信息包括实体信息,从实体信息中提取所述有向图链路对应的当前有向图链路关键字,将当前有向图链路关键字分别与各个候选测试用例模板对应的测试用例模板关键字进行匹配,当匹配成功时,匹配成功的候选测试用例模板作为有向图链路对应的目标测试用例模板。
[0104] 在一个实施例中,装置还包括:
[0105] 第二目标测试用例确定模块360,用于生成所述有向图链路集合中的有向图链路对应的当前关键字向量,将所述当前关键字向量输入已训练的测试用例预测模型,得到所述测试用例预测模型输出的所述有向图链路对应的目标测试用例。
[0106] 在一个实施例中,获取模块310还用于分析待测试程序的执行过程,通过程序指令检测待测试程序的各个函数之间的调用关系,程序指令包括调转指令和分支指令中的至少一种,当第一函数与第二函数之间存在有向的调用关系时,根据调用关系确定第一函数对应的第一节点与第二函数对应的第二节点之间的有向连接符;通过有向连接符连接第一节点与第二节点。
[0107] 在一个实施例中,装置还包括:
[0108] 训练模块370,用于获取训练有向图链路和对应的标准测试用例,获取训练有向图链路对应的训练有向图链路关键字组成训练关键字向量,将训练关键字向量输入测试用例预测模型,得到测试用例预测模型输出的预测测试用例,根据训练有向图链路对应的预测测试用例和标准测试用例调整测试用例预测模型的参数,直到满足预设条件,生成已训练的测试用例预测模型。
[0109] 关于测试数据处理装置的具体限定可以参见上文中对于测试数据处理方法的限定,在此不再赘述。上述测试数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0110] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器执行一种测试数据处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行数据处理方法。计算机设备的显示屏可以是液晶显示屏或者电子显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0111] 本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0112] 在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述测试数据处理方法的步骤。此处测试数据处理方法的步骤可以是上述各个实施例的测试数据处理方法中的步骤。
[0113] 在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述测试数据处理方法的步骤。此处测试数据处理方法的步骤可以是上述各个实施例的测试数据处理方法中的步骤。
[0114] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0115] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0116] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈