首页> 中国专利> 对象测试方法、对象测试装置、电子设备及可读存储介质

对象测试方法、对象测试装置、电子设备及可读存储介质

摘要

本公开提供了一种对象测试方法,可用于计算机技术领域或其他领域。该方法包括:获取与待测试对象中功能相关联的代码数据,其中,待测试对象中包括多个功能,每个功能具有相关联的代码数据;对代码数据进行处理,得到多个与功能相关联的函数信息以及每个与功能相关联的函数信息和与其他功能相关联的函数信息之间的关联关系;根据函数信息和关联关系构建待测试对象的测试模型,其中,函数信息与测试模型的节点一一对应;利用测试模型对待测试对象进行测试,输出测试结果。本公开还提供了一种对象测试装置、电子设备、可读存储介质及计算机程序产品。

著录项

  • 公开/公告号CN113127362A

    专利类型发明专利

  • 公开/公告日2021-07-16

    原文格式PDF

  • 申请/专利权人 中国工商银行股份有限公司;

    申请/专利号CN202110445287.9

  • 发明设计人 陈琦;王文春;王江娟;张春艳;

    申请日2021-04-23

  • 分类号G06F11/36(20060101);

  • 代理机构11021 中科专利商标代理有限责任公司;

  • 代理人吴梦圆

  • 地址 100140 北京市西城区复兴门内大街55号

  • 入库时间 2023-06-19 11:52:33

说明书

技术领域

本公开涉及计算机技术领域,更具体地,涉及一种对象测试方法、对象测试装置、电子设备、可读存储介质及计算机程序产品。

背景技术

在企业管理中,随着系统规模的不断扩大,存量代码的不断累加。目前针对系统中自动进行故障监测和诊断的方法为根据长期的时间经验和大量的故障信息知识,通过针对对象实际输入与输出之间的不一致,生成引起这种不一致的原因集合,从原因集合中分析寻找学习诊断出故障原因,或者根据输入域的值提前预测故障原因。

在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:只有当故障发生时,或即将发生时才进行故障检查,缺少对系统进行实时守护的能力;过于依赖已有的故障信息知识,对增量的故障没有诊断能力;并且仅能诊断大致问题原因,无法精准定位问题发生的位置。

发明内容

有鉴于此,本公开提供了一种对象测试方法、对象测试装置、电子设备、可读存储介质及计算机程序产品。

本公开的一个方面提供了一种对象测试方法,包括:

获取与待测试对象中功能相关联的代码数据,其中,所述待测试对象中包括多个功能,每个所述功能具有相关联的代码数据;

对所述代码数据进行处理,得到多个与所述功能相关联的函数信息以及每个与所述功能相关联的函数信息和与其他所述功能相关联的函数信息之间的关联关系;

根据所述函数信息和所述关联关系构建所述待测试对象的测试模型,其中,所述函数信息与所述测试模型的节点一一对应;

利用所述测试模型对所述待测试对象进行测试,输出测试结果。

根据本公开的实施例,所述获取与待测试对象中功能相关联的代码数据包括:

获取所述待测试对象的功能信息;以及

对所述功能信息进行处理,得到与所述功能相关联的所述代码数据。

根据本公开的实施例,所述对所述代码数据进行处理,得到多个与所述功能相关联的函数信息以及每个与所述功能相关联的函数信息和与其他所述功能相关联的函数信息之间的关联关系包括:

根据函数特征模板对所述代码数据进行特征提取,输出多个所述函数信息,其中,所述函数特征模板包括:函数类型、方法名、参数类型、参数名和方法体;

根据每个所述函数信息的调用关系,得到每个与所述功能相关联的函数信息和与其他所述功能相关联的函数信息之间的关联关系。

根据本公开的实施例,所述根据所述函数信息和所述关联关系构建所述待测试对象的测试模型包括:

以所述函数信息作为节点,根据所述关联关系构建初始测试模型;

通过动态规划的方法对所述初始测试模型进行训练,得到最终的所述测试模型。

根据本公开的实施例,所述通过动态规划的方法对所述初始测试模型进行训练包括:

将训练数据输入所述初始测试模型,输出真实输出值;

在所述真实输出值与预测输出值不一致的情况下,调整所述初始测试模型,直至输出的所述真实输出值与预测输出值达到一致,其中,所述预测输出值为将所述训练数据输入所述初始测试模型后的预期输出值。

根据本公开的实施例,所述利用所述测试模型对所述待测试对象进行测试,输出测试结果包括:

将测试数据输入所述测试模型,输出测试值;

在所述测试值与预测值不一致的情况下,遍历所述测试模型的所有节点,确定导致所述测试值与预测值不一致的情况的目标节点,其中,所述预测值为将所述测试值输入所述测试模型后的预期输出值;

将与所述目标节点相对应的所述函数信息作为所述测试结果并输出。

本公开的另一个方面提供了一种对象测试系统,包括:

获取模块,用于获取与待测试对象中功能相关联的代码数据,其中,所述待测试对象中包括多个功能,每个所述功能具有相关联的代码数据;

处理模块,用于对所述代码数据进行处理,得到多个与所述功能相关联的函数信息以及每个与所述功能相关联的函数信息和与其他所述功能相关联的函数信息之间的关联关系;

构建模块,用于根据所述函数信息和所述关联关系构建所述待测试对象的测试模型,其中,所述函数信息与所述测试模型的节点一一对应;

测试模块,用于利用所述测试模型对所述待测试对象进行测试,输出测试结果。

本公开的另一方面提供了电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个指令,其中,当所述一个或多个指令被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。

本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。

本公开的另一方面提供了一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。

根据本公开的实施例,通过对每个与功能相关联的代码数据进行处理,得到与每个功能相关联的函数信息以及每个函数信息与其他函数信息之间的关联关系,并根据函数信息和关联关系构建测试模型。由于测试模型是通过对待测试对象结构进行全面梳理得到的,因此根据测试模型对待测试对象进行测试,不需要依赖已有的故障信息知识,并且能够准确定位故障出现的节点。同时,可以随时通过测试模型对待测试对象进行检测,保证待测试对象稳定运行。从而,有效克服了现有技术中无法对系统进行实时守护,过于依赖已有的故障信息知识,对增量的故障没有诊断能力,并且无法精准定位问题发生的位置的技术问题。

附图说明

通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:

图1示意性示出了根据本公开实施例的可以应用对象测试方法的示例性系统架构。

图2示意性示出了根据本公开实施例的对象测试方法的流程图。

图3示意性示出了根据本公开实施例的系统结构梳理示意图。

图4示意性示出了根据本公开实施例的函数特征模板的示意图。

图5示意性示出了根据本公开实施例的测试模型的结构示意图。

图6示意性示出了根据本公开的实施例的对象测试系统的框图。

图7示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。

在企业管理中,随着系统规模的不断扩大,存量代码的不断累加,当故障暴漏出来时,传统的故障监测和诊断方法是人为通过日志,源码分析等排查故障,该方法存在以下两点不足:对于故障的排查和诊断需要花费大量的时间成本,同时无法全面发现这一故障引发的其他问题;只有当故障出现时,相关人员才开始进行故障的诊断,面对核心业务容易引发严重的后果。

目前已有大量针对系统中自动进行故障监测和诊断的方法,例如专家系统、神经网络和基于不确定性理论等。上述方法的设计思路都是根据长期的时间经验和大量的故障信息知识,通过针对对象实际输入与输出之间的不一致,生成引起这种不一致的原因集合。当发现故障时,采用不同的算法,从原因集合中分析寻找学习诊断出故障原因,或者根据输入域的值提前预测故障原因。

在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:只有当故障发生时,或即将发生时才进行故障检查,缺少对系统进行实时守护的能力;过于依赖已有的故障信息知识,对增量的故障没有诊断能力;并且仅能诊断大致问题原因,无法精准定位问题发生的位置。

本公开的实施例提供了一种对象测试方法、对象测试装置、电子设备、可读存储介质及计算机程序产品。本公开实施例的对象测试方法、对象测试装置、电子设备、可读存储介质及计算机程序产品可以应用于计算机技术领域,也可以用于除计算机技术领域之外的任意领域,本公开实施例对此不作限定。该对象测试方法包括获取与待测试对象中功能相关联的代码数据,其中,待测试对象中包括多个功能,每个功能具有相关联的代码数据;对代码数据进行处理,得到多个与功能相关联的函数信息以及每个与功能相关联的函数信息和与其他功能相关联的函数信息之间的关联关系;根据函数信息和关联关系构建待测试对象的测试模型,其中,函数信息与测试模型的节点一一对应;利用测试模型对待测试对象进行测试,输出测试结果。

图1示意性示出了根据本公开实施例的可以应用对象测试方法的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。

如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线和/或无线通信链路等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例)。

终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。

服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。

需要说明的是,本公开实施例所提供的对象测试方法一般可以由服务器105执行。相应地,本公开实施例所提供的对象测试系统一般可以设置于服务器105中。本公开实施例所提供的对象测试方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的对象测试系统电可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。或者,本公开实施例所提供的对象测试方法也可以由终端设备101、102、或103执行,或者也可以由不同于终端设备101、102、或103的其他终端设备执行。相应地,本公开实施例所提供的对象测试系统也可以设置于终端设备101、102、或103中,或设置于不同于终端设备101、102、或103的其他终端设备中。

例如,待测试对象可以原本存储在终端设备101、102、或103中的任意一个(例如,终端设备101,但不限于此)之中,或者存储在外部存储设备上并可以导入到终端设备101中。然后,终端设备101可以在本地执行本公开实施例所提供的对象测试方法,或者将待测试对象发送到其他终端设备、服务器、或服务器集群,并由接收该待测试对象的其他终端设备、服务器、或服务器集群来执行本公开实施例所提供的对象测试方法。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

图2示意性示出了根据本公开实施例的对象测试方法的流程图。

如图2所示,该方法包括操作S201~S204。

在操作S201,获取与待测试对象中功能相关联的代码数据,其中,待测试对象中包括多个功能,每个功能具有相关联的代码数据。

根据本公开的实施例,待测试对象可以包括载体上的应用程序、应用系统等。载体可以包括电子设备,电子设备可以包括终端设备,终端设备可以包括智能手机、平板电脑、便携计算机或台式计算机等。代码数据可以包括与待测试对象功能相关联的代码文件等。

在获取与待测试对象中功能相关联的代码数据时,例如可以通过手动梳理的方法对待测试对象进行整理,得到待测试对象的每个功能所涉及的代码数据。也可以通过系统自动对与待测试对象中功能相关联的代码数据进行梳理,本公开对代码数据的获取方法不做限定。

例如,以待测试对象为某银行的手机应用为例,该应用至少包括查询功能、登录功能、转账功能和支付功能等。上述每个功能均涉及至少一个代码文件。

在操作S202,对代码数据进行处理,得到多个与功能相关联的函数信息以及每个与功能相关联的函数信息和与其他功能相关联的函数信息之间的关联关系。

根据本公开的实施例,函数信息例如可以包括函数方法等。关联关系例如可以包括以下至少之一:函数方法A包含函数方法B,则将A调用B;函数方法A和函数方法B之间不存在调用关系,且不被同一个函数方法调用;函数方法A和函数方法B之间不存在调用关系,但均被同一个函数方法调用,并且先调用A再调用B。

在操作S203,根据函数信息和关联关系构建待测试对象的测试模型,其中,函数信息与测试模型的节点一一对应。

根据本公开的实施例,测试模型可以包括树状测试模型等。

根据本公开的实施例,以待测试对象为某银行的手机应用的登录功能为例,在构建登录功能的树状测试模型时,以登录功能所涉及的代码文件作为节点,并根据各代码文件的调用关系构建登录功能的树状测试模型。

在操作S204,利用测试模型对待测试对象进行测试,输出测试结果。

根据本公开的实施例,可以通过预设时间间隔,自动利用测试模型对待测试对象进行测试,例如,时间间隔可以设置为24小时,即每隔24小时自动对对待测试对象测试一次。根据具体实现需要,也可以设置其他的间隔时间。

根据本公开的实施例,测试结果例如可以包括测试正常、测试错误、错误位置等信息。

根据本公开的实施例,通过对每个与功能相关联的代码数据进行处理,得到与每个功能相关联的函数信息以及每个函数信息与其他函数信息之间的关联关系,并根据函数信息和关联关系构建测试模型。由于测试模型是通过对待测试对象结构进行全面梳理得到的,因此根据测试模型对待测试对象进行测试,不需要依赖已有的故障信息知识,并且能够准确定位故障出现的节点。同时,可以随时通过测试模型对待测试对象进行检测,保证待测试对象稳定运行。从而,有效克服了现有技术中无法对系统进行实时守护,过于依赖已有的故障信息知识,对增量的故障没有诊断能力,并且无法精准定位问题发生的位置的技术问题。

根据本公开的实施例,获取与待测试对象中功能相关联的代码数据包括:获取待测试对象的功能信息;对功能信息进行处理,得到与功能相关联的代码数据。

根据本公开的实施例,待测试对象的功能信息的获取方法例如可以通过手动梳理的方法对待测试对象进行整理,得到待测试对象的每个功能信息。也可以通过系统自动对待测试对象中的功能信息进行梳理,本公开对功能信息的获取方法不做限定。

根据本公开的实施例,代码数据例如可以包括代码文件。代码文件例如可以包括至少一个函数信息。

根据本公开的实施例,通过对待测试对象的结构进行全面的梳理,在测试时能够准确的确定问题出现的位置,防止出现漏查、问题定位不准的问题。

图3示意性示出了根据本公开实施例的系统结构梳理示意图。

如图3所示,以待测试对象为某个应用程序为例,该应用程序例如包括N个功能,记为Func_I,其中,I表示该应用程序的第I个功能。每个功能均涉及多个代码文件,记作Code_I,I表示第I个代码文件。每个代码文件均包括多个函数方法,记作Method_I_J,I表示第I个代码文件的第J个函数方法。

根据本公开的实施例,对代码数据进行处理,得到多个与功能相关联的函数信息以及每个与功能相关联的函数信息和与其他功能相关联的函数信息之间的关联关系包括:

根据函数特征模板对代码数据进行特征提取,输出多个函数信息,其中,函数特征模板包括:函数类型、方法名、参数类型、参数名和方法体;

根据每个函数信息的调用关系,得到每个与功能相关联的函数信息和与其他功能相关联的函数信息之间的关联关系。

根据本公开的实施例,调用关系可以包括:函数方法A包含函数方法B,则将A调用B;函数方法A和函数方法B之间不存在调用关系,且不被同一个函数方法调用;函数方法A和函数方法B之间不存在调用关系,但均被同一个函数方法调用,并且先调用A再调用B。

根据本公开的实施例,通过函数特征模板对代码数据、文件进行特征提取,能够准确并且全面的提取出与每个功能相对应的函数信息,能够减少计算量,提高检测速度。

图4示意性示出了根据本公开实施例的函数特征模板的示意图。

如图4所示,函数特征模板包括函数类型、方法名、参数类型、参数名和方法体。

根据本公开的实施例,根据函数信息和关联关系构建待测试对象的测试模型包括:

以函数信息作为节点,根据关联关系构建初始测试模型;

通过动态规划的方法对初始测试模型进行训练,得到最终的测试模型。

根据本公开的实施例,通过动态规划的方法对初始测试模型进行训练,能够有效提高测试模型的测试准确率,以使测试模型能够更好的监测整个系统中存在的故障。

图5示意性示出了根据本公开实施例的测试模型的结构示意图。

如图5所示,函数信息包括Method_I_1~Method_I_4。其中:

函数方法Method_I_1与函数方法Method_I_2的关联关系为函数方法Method_I_1包含函数方法Method_I_2,则将函数方法Method_I_1调用函数方法Method_I_2,记作Method_I_1→Method_I_2;

函数方法Method_I_1与函数方法Method_I_4的关联关系为函数方法Method_I_1包含函数方法Method_I_4,则将函数方法Method_I_1调用函数方法Method_I_4,记作Method_I_1→Method_I_4;

函数方法Method_I_2与函数方法Method_I_4的关联关系为函数方法Method_I_2和函数方法Method_I_4不存在调用关系,但均被函数方法Method_I_1调用,并且先调用Method_I_2,在调用Method_I_4,记作Method_I_2*Method_I_4;

函数方法Method_I_2与函数方法Method_I_3的关联关系为不存在调用关系,且不被同一个函数调用,记作Method_I_2^Method_I_3;

函数方法Method_I_3与函数方法Method_I_4的关联关系为函数方法Method_I_4包含函数方法Method_I_3,则将函数方法Method_I_4调用函数方法Method_I_3,记作Method_I_4→Method_I_3。

需要说明的是,上述实施例仅为示意性实施例,根据具体实现需要,也可以是其他能够实现相同技术效果的测试模型。

根据本公开的实施例,通过动态规划的方法对初始测试模型进行训练包括:

将训练数据输入初始测试模型,输出真实输出值;

在真实输出值与预测输出值不一致的情况下,调整初始测试模型,直至输出的真实输出值与预测输出值达到一致,其中,预测输出值为将训练数据输入初始测试模型后的预期输出值。根据本公开实施例,利用动态规划方法,定义W[A,B]是第A个函数方法和第B个函数方法之间的关系,其中A→B和A*B表示1,A^B表示0。输入训练数据,连通整个数据生成过程,得到真实输出值,若真实输出值与将训练数据输入初始测试模型后的预期输出值不一样,则调整整个测试模型,继续进行训练。直至输出的真实输出值与预测输出值达到一致,将生成的关系图作为测试模型。

根据本公开的实施例,训练数据可以包括该功能对应的操作指令,以某个应用程序的登录功能为待测试对象为例,训练数据为点击登录按钮的操作指令。需要说明的是,上述实施例仅为示意性实施例,不对本公开的内容具有限制作用。

根据本公开的实施例,利用测试模型对待测试对象进行测试,输出测试结果包括:

将测试数据输入测试模型,输出测试值;

在测试值与预测值不一致的情况下,遍历测试模型的所有节点,确定导致测试值与预测值不一致的情况的目标节点,其中,预测值为将测试值输入测试模型后的预期输出值;将与目标节点相对应的函数信息作为测试结果并输出。

根据本公开的实施例,将导致测试值与预测值不一致的情况的目标节点作为最终结果进行输出,能够得到出现故障的准确位置,有效提高了检测效率。

根据本公开的实施例,在对待测试对象进行测试之前,可以将测试模型中的每一个节点进行赋值,将测试模型中输出结果的函数方法名作为根节点,将测试模型中的每一个函数方法名作为一个过程标签。并根据调用的先后顺序对每个过程标签从小到大进行排序并生成排序标签。

根据本公开的实施例,待测试对象的每个功能均对应有一组测试数据,在测试时,按照每24小时的频率将需要测试的功能对应的测试数据输入到测试模型中,输出测试值。需要说明的是,上述实施例仅为示意性实施例,根据具体实现需要,也可以采用其他测试频率。

对比测试值与预期输出值,若两者不同,则说明该功能存在问题,将测试值作为根节点,采用回溯法中的深度优先的方法从根节点遍历整个测试模型,对比每个过程标签和排序标签,得到排序最小的过程标签,将其对应的函数方法进行输出,得到导致测试值与预测值不一致的情况的目标节点对应的函数信息。若两者相同,则说明该功能不存在问题。

图6示意性示出了根据本公开的实施例的对象测试系统的框图。

如图6所示,该对象测试系统600包括获取模块601、处理模块602、构建模块603和测试模块604。

获取模块601,用于获取与待测试对象中功能相关联的代码数据,其中,待测试对象中包括多个功能,每个功能具有相关联的代码数据;

处理模块602,用于对代码数据进行处理,得到多个与功能相关联的函数信息以及每个与功能相关联的函数信息和与其他功能相关联的函数信息之间的关联关系;

构建模块603,用于根据函数信息和关联关系构建待测试对象的测试模型,其中,函数信息与测试模型的节点一一对应;

测试模块604,用于利用测试模型对待测试对象进行测试,输出测试结果。

根据本公开的实施例,通过对每个与功能相关联的代码数据进行处理,得到与每个功能相关联的函数信息以及每个函数信息与其他函数信息之间的关联关系,并根据函数信息和关联关系构建测试模型。由于测试模型是通过对待测试对象结构进行全面梳理得到的,因此根据测试模型对待测试对象进行测试,不需要依赖已有的故障信息知识,并且能够准确定位故障出现的节点。同时,可以随时通过测试模型对待测试对象进行检测,保证待测试对象稳定运行。从而,有效克服了现有技术中无法对系统进行实时守护,过于依赖已有的故障信息知识,对增量的故障没有诊断能力,并且无法精准定位问题发生的位置的技术问题。

根据本公开的实施例,获取模块601包括获取单元和第一处理单元。

获取单元,用于获取待测试对象的功能信息。

第一处理单元,用于对功能信息进行处理,得到与功能相关联的代码数据。

根据本公开的实施例,处理模块602包括:提取单元和第二处理单元。

提取单元,用于根据函数特征模板对代码数据进行特征提取,输出多个函数信息,其中,函数特征模板包括:函数类型、方法名、参数类型、参数名和方法体。

第二处理单元,用于根据每个函数信息的调用关系,得到每个与功能相关联的函数信息和与其他功能相关联的函数信息之间的关联关系。

根据本公开的实施例,测试模块604包括构建单元和训练单元。

构建单元,用于以函数信息作为节点,根据关联关系构建初始测试模型。

训练单元,用于通过动态规划的方法对初始测试模型进行训练,得到最终的测试模型。

根据本公开的实施例,训练单元包括输入子单元和调整子单元。

输入子单元,用于将训练数据输入初始测试模型,输出真实输出值。

调整子单元,用于在真实输出值与预测输出值不一致的情况下,调整初始测试模型,直至输出的真实输出值与预测输出值达到一致,其中,预测输出值为将训练数据输入初始测试模型后的预期输出值。

根据本公开的实施例,测试模块604包括输入单元、确定单元和输出单元。

输入单元,用于将测试数据输入测试模型,输出测试值;

确定单元,用于在测试值与预测值不一致的情况下,遍历测试模型的所有节点,确定导致测试值与预测值不一致的情况的目标节点,其中,预测值为将测试值输入测试模型后的预期输出值;

输出单元,用于将与目标节点相对应的函数信息作为测试结果并输出。

根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,获取模块601、处理模块602、构建模块603和测试模块604中的任意多个可以合并在一个模块/单元/子单元中实现,或者其中的任意一个模块/单元/子单元可以被拆分成多个模块/单元/子单元。或者,这些模块/单元/子单元中的一个或多个模块/单元/子单元的至少部分功能可以与其他模块/单元/子单元的至少部分功能相结合,并在一个模块/单元/子单元中实现。根据本公开的实施例,获取模块601、处理模块602、构建模块603和测试模块604中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块601、处理模块602、构建模块603和测试模块604中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

需要说明的是,本公开的实施例中对象测试系统部分与本公开的实施例中对象测试方法部分是相对应的,对象测试系统部分的描述具体参考对象测试方法部分,在此不再赘述。

图7示意性示出了根据本公开实施例的适于实现上文描述的方法的计算机系统的框图。图7示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图7所示,根据本公开实施例的计算机系统700包括处理器701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

在RAM 703中,存储有系统700操作所需的各种程序和数据。处理器701、ROM 702以及RAM 703通过总线704彼此相连。处理器701通过执行ROM 702和/或RAM 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 702和RAM 703以外的一个或多个存储器中。处理器701也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。

根据本公开的实施例,系统700还可以包括输入/输出(I/O)接口705,输入/输出(I/O)接口705也连接至总线704。系统700还可以包括连接至I/O接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。

本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 702和/或RAM 703和/或ROM 702和RAM 703以外的一个或多个存储器。

本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行本公开实施例所提供的方法的程序代码,当计算机程序产品在电子设备上运行时,该程序代码用于使电子设备实现本公开实施例所提供的对象测试方法。

在该计算机程序被处理器701执行时,执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。

在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分709被下载和安装,和/或从可拆卸介质711被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。

根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号