自动化调试方法、装置、终端、系统和存储介质与流程

文档序号:33505066发布日期:2023-03-17 23:48阅读:45来源:国知局
自动化调试方法、装置、终端、系统和存储介质与流程

1.本发明涉及计算机技术领域,特别涉及一种自动化调试方法、装置、终端、系统和存储介质。


背景技术:

2.在算法研发过程中,当算法工程师将已完成的可工作的算法(往往是低效的程序,比如:matlab程序)转移给研发工程师(通常是软件工程师,某些情况下也可以是硬件工程师)之后,研发工程师需要对当前代码进行深入了解并将其进行转化(逐步优化或者转义),以能够应用到实际产品中。因此,算法优化工作是算法转移到产品中必不可少的环节,它是算法高效运行的重要组成部分。然而,在实际工作中,转化后的程序运行结果和算法原始程序的执行结果常常会相差甚远。由于算法本身比较复杂且代码量很高,再加上转化后的程序和算法原始程序通常采用不同的编程语言甚至在不同的操作系统上运行,导致结果出错的原因无法使用传统软件的调试方法(例如日志查找法,排除程序故障debug等)进行分析,为了查找出错的原因,现有技术中,在发现转化后的最终结果和算法工程师提供的算法执行结果差别很大时,研发工程师通常不得不在原始算法代码和转义代码中分别保存中间结果,并手动进行算法中间结果的对比。很显然地,这种人工操作的方式需要经验丰富的工程师耗费较长的时间才能定位到发生问题的具体位置,效率非常低下。
3.需要说明的是,公开于该发明背景技术部分的信息仅仅旨在加深对本发明一般背景技术的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域技术人员所公知的现有技术。


技术实现要素:

4.本发明的目的在于,针对现有技术中在算法优化时存在的调试效率低下的问题,提供一种自动化调试方法、装置、终端、系统和存储介质,以提高算法优化的调试效率,节约人力和物力成本。
5.为达到上述目的,本发明通过以下技术方案实现:一种自动化调试方法,包括:
6.获取源程序的标准数据集和目标程序的测试数据集;
7.根据所述标准数据集和所述测试数据集,生成校验报告;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。
8.可选地,所述获取所述目标程序的测试数据集,包括:
9.获取指定版本的源程序的标准数据集的数据特征描述清单;
10.根据所述标准数据集的特征描述清单,获取所述测试数据集。
11.可选地,所述标准数据集和所述测试数据集以文件的形式存储;
12.所述数据特征描述清单,包括:所述文件的存储信息和各个所述文件中数据的属性信息。
13.可选地,还包括:
14.在获取所述标准数据集中的每一条标准数据和所述测试数据集中的测试数据时,判断产生所述标准数据和所述测试数据的代码执行的迭代次数是否确定,若是,则所述属性信息还包括产生该条标准数据和该条测试数据的代码对应的迭代次数。
15.可选地,所述根据所述标准数据集和所述测试数据集,生成校验报告,包括:
16.比较所述测试数据集中的测试数据与对应的所述标准数据集中的标准数据是否一致,若是,则所述调试结果为测试通过;若否,则所述调试结果为测试失败,并根据所述测试数据的属性信息得到产生所述测试数据的代码在所述目标程序中的位置;
17.根据所述调试结果和所述产生所述测试数据的代码在所述目标程序中的位置,生成所述校验报告。
18.为了实现上述目的,本发明还提供了一种自动化调试装置,包括:
19.数据生成模块,配置为获取源程序的标准数据集和目标程序的测试数据集;
20.数据校验模块,配置为根据所述标准数据集和所述测试数据集,生成校验报告;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。
21.可选地,所述数据生成模块包括数据生成接口子模块和数据搜集服务子模块,所述数据校验模块包括数据校验接口子模块和数据校验服务子模块,所述自动化调试装置还包括数据存储及配置模块;其中,
22.所述数据生成接口子模块,用于分别为所述源程序提供标准数据获取接口以及为所述目标程序提供测试数据获取接口,以获取所述源程序的标准生数据和所述目标程序的测试生数据;
23.所述数据搜集服务子模块,配置为根据所述预设调试数据获取规则,分别对所述标准生数据进行处理以得到所述标准数据集和对所述测试生数据进行处理以得到所述测试数据集;还用于将所述标准数据集和所述测试数据集发送至所述数据存储及配置模块;
24.所述数据存储及配置模块,配置为存储所述自动化调试装置的配置信息,以及所述标准数据集、所述测试数据集和所述校验报告三者中的至少一者;
25.所述数据校验服务子模块,用于从所述数据存储及配置模块获取所述标准数据集和所述测试数据集,并用于根据所述标准数据集和所述测试数据集,生成校验报告生数据,以及将所述校验报告生数据发送至所述数据校验接口子模块;
26.所述数据校验接口子模块,配置为根据所述校验报告生数据,生成校验报告,并用于将所述校验报告通过所述数据校验服务子模块存储至所述数据存储及配置模块。
27.为了实现上述目的,本发明还提供了一种自动化调试终端,包括处理器和存储器,所述存储器上存储有源程序和目标程序中的其中一者或两者以及数据生成程序;和/或所述存储器上存储有数据校验程序;
28.所述源程序,配置为被所述处理器执行时,调用所述数据生成程序;
29.所述目标程序,配置为被所述处理器执行时,调用所述数据生成程序;
30.所述数据生成程序,配置为由所述源程序调用被所述处理器执行时,执行以下步骤:获取所述源程序的标准数据集;和/或配置为由所述目标程序调用被所述处理器执行时,执行以下步骤:获取所述目标程序的测试数据集;
31.所述数据校验程序,配置为被所述处理器执行时,执行以下步骤:
32.根据所述源程序的标准数据集和所述目标程序的测试数据集,生成校验报告;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。
33.为了实现上述目的,本发明还提供了一种自动化调试系统,包括:通信连接的源程序终端、目标程序终端和调试服务端;其中,
34.源程序终端,配置为获取源程序的标准数据集,并将所述标准数据集发送至所述调试服务端;
35.目标程序终端,配置为获取目标程序的测试数据集,并将所述测试数据集发送至所述调试服务端;
36.所述调试服务端,配置为根据所述标准数据集和所述测试数据集,生成校验报告,并将所述校验报告发送至所述目标程序终端;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。
37.可选地,所述目标程序终端,配置为获取目标程序的测试数据集,包括:
38.所述目标程序终端,配置为向所述调试服务端请求指定版本的源程序的标准数据集的数据特征描述清单;
39.根据所述标准数据集的特征描述清单,获取所述测试数据集。
40.为了实现上述目的,本发明还提供了一种计算机可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一项所述的自动化调试方法。
41.与现有技术相比,本发明提供的自动化调试方法、装置、终端、系统和存储介质具有以下优点:
42.本发明提供的一种自动化调试方法,首先获取源程序的标准数据集和目标程序的测试数据集;然后根据所述标准数据集和所述测试数据集,生成校验报告;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。由此,本发明提供的自动化调试方法,通过获取源程序的标准数据集从而为测试所述目标程序是否正确提供了参考标准,通过获取目标程序的测试数据集从而为进行目标程序的自动调试奠定了良好的基础。然后根据所述标准数据集和所述测试数据集,生成校验报告,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。由于所述校验报告是根据所述标准数据集和所述测试数据集获得,由此,校验报告中的调试结果可靠性高;校验报告中调试结果和对应的位置信息(产生所述测试数据的代码在所述目标程序中的位置,比如精确到文件、函数和代码行等)能够帮助研发工程师快速、准确定位问题,能够显著节约人力物力,提高软件优化的调试效率。
43.进一步地,本发明通过先获取指定版本的源程序的标准数据集的数据特征描述清单;再根据所述标准数据集的特征描述清单,获取所述测试数据集,由此,通过版本标识(区分)所述标准数据集,不仅能够便于源程序和目标程序的各自升级迭代,而且通过所述版本能够保证测试数据集的版本与所述标准数据集匹配,从而可以防止数据验证时因标准数据集和测试数据集的版本不同导致校验报告出现误差,而且版本控制简便易行、便于维护。
44.更进一步地,本发明提供的自动化调试装置包括数据生成模块和数据校验模块,所述数据生成模块包括数据生成接口子模块(比如,在软件架构的应用层中实现)和数据搜集服务子模块(比如,在软件架构的服务层中实现),所述数据校验模块包括数据校验接口子模块(比如,在软件架构的应用层中实现)和数据校验服务子模块(比如,在软件架构的服务层中实现)。由此,本发明提供的自动化调试装置通过接口和逻辑处理的分离,从而能够通过所述数据生成模块的数据生成接口子模块(比如给算法工程师提供多种编程语言的脚本)支持不同编程语言实现的所述源程序(算法程序),具有较好的跨平台性。再进一步地,本发明提供的自动化调试系统,包括通信连接的源程序终端、目标程序终端和调试服务端,这种分布式特性,不仅能够使得目标程序的研发工程师可以进行在线或离线的自动化调试,以验证所述目标程序是否出现错误;而且,能够支持集群部署,方便不同区域及不同目标程序的研发工程师进行高并发访问。
45.综上,本发明提供的自动化调试方法、装置、终端、系统和存储介质,实现了端到端的自动化调试流程,整个过程无需人工参与,能够显著提高研发工程师的调试效率,节约人力和物力成本。
附图说明
46.图1为本发明提供的自动化调试方法的基本原理示意图;
47.图2为本发明实施例一提供的自动化调试方法的流程示意图;
48.图3为本发明实施例一提供的自动化调试方法其中一种获取已知数据大小的标准数据的流程示意图;
49.图4为本发明实施例二提供的自动化调试装置的结构示意图;
50.图5为本发明实施例三提供的自动化调试终端的结构示意图;
51.图6为本发明实施例四提供的自动化调试系统的结构示意图;
52.图7为本发明实施例四的其中一种应用场景示意图;
53.其中,附图标记如下:
54.数据生成模块-100、数据生成接口子模块-110、数据搜集服务子模块-120、数据校验模块-200、数据校验接口子模块-210、数据校验服务子模块-220、数据存储及配置模块-300;
55.处理器-410、通信接口-420、存储器-430、通信总线-440;
56.源程序终端-500、目标程序终端-600、调试服务端-700。
具体实施方式
57.以下结合附图对本发明提出的自动化调试方法、装置、终端、系统、存储介质和作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需要说明的是,附图采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施方式的目的。为了使本发明的目的、特征和优点能够更加明显易懂,请参阅附图。须知,本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在与本发明所能产生的功效及所能达成的目的相同或近似的情况下,均
应仍落在本发明所揭示的技术内容能涵盖的范围内。本文所公开的本发明的具体设计特征包括例如具体尺寸、方向、位置和外形将部分地由具体所要应用和使用的环境来确定。以及,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。另外,如果本文所述的方法包括一系列步骤,且本文所呈现的这些步骤的顺序并非必须是可执行这些步骤的唯一顺序,且一些所述的步骤可被省略和/或一些本文未描述的其他步骤可被添加到该方法。
58.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。单数形式“一”、“一个”以及“该”包括复数对象,术语“或”通常是以包括“和/或”的含义而进行使用的,术语“若干”通常是以包括“至少一个”的含义而进行使用的,术语“至少两个”通常是以包括“两个或两个以上”的含义而进行使用的,此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
59.需要特别说明的是,如本领域技术人员可以理解的,现有技术中,以python、matlab和c++为例,虽然它们都是软件研发过程中使用的最主流的编程语言,但是,却各有侧重,比如python和matlab包含丰富的、易用的数学库,它们能够使研发人员快速的实现他们的想法,快速地将方法落地,算法工程师使用的比较多。而c++是高效执行算法的编程语言,因此,在工程上往往需要将python或者matlab实现的算法转化成c++以对算法进行优化,从而使得程序具有更高的运行效率。
60.本发明的核心思想在于,提高算法优化的调试效率,以节约人力和物力成本,提供一种自动化调试方法、装置、终端、系统和存储介质。本发明的基本原理在于:算法工程师可以通过本方法在源程序的相关流程里添加保存标准数据的代码以获取标准数据集,在算法转义的阶段,研发工程师也使用本方法在目标程序对应的流程中增加相应的代码以获取测试数据集,并在目标程序执行的时候进行数据的动态分析,从而高效地定位错误代码的具体位置。具体地,请参见图1,其示意性地给出了本发明提供的自动化调试方法的基本原理示意图。从图1可以看出,首先通过数据生成工具获取源程序(比如python或matlab)的标准数据集和目标程序(比如c++)的测试数据集,然后数据校验工具根据测试数据集和标准数据集,自动获得校验报告。
61.需要特别说明的是,图1中实线标识的关键路径为本发明提供的自动化调试算法的必选路径、虚线标识的可选路径为择一可选路径,即根据源程序的编程语言确定,比如,若源程序使用的是python,则从数据生成工具经过python再到标准数据集这一条路径为必选路径,对应地,数据生成工具经过matlab再到标准数据集这一条路径就不复存在。反之亦然。
62.进一步地,虽然本文以c++作为目标程序的编程语言、以python、matlab作为源程序的编程语言为例进行说明,但很显然地,这并非本发明的限制,本发明对所述源程序以及所述目标程序使用的编程语言不作任何限制,所述目标程序的编程语言也可以为除c++之外的其他编程语言,比如包括但不限于java等;同样地,所述源程序的编程语言也可以为除python、matlab之外的其他编程语言,包括但不限于java等。更进一步地,所述目标程序和所述源程序的编程语言可以相同也可以不同,比如:源程序和目标程序的编程语言均为c++。
63.实施例一
64.本实施例提供了一种自动化调试方法,具体地,请参见图2,其示意性地给出了本实施例提供的自动化调试方法的流程示意图。从图2可以看出,本实施例提供的自动化调试方法,包括:
65.s100:获取源程序的标准数据集和目标程序的测试数据集;其中,所述目标程序根据所述源程序转化得到;
66.s200:根据所述标准数据集和所述测试数据集,生成校验报告;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。
67.由此可见,本实施例提供的自动化调试方法,通过获取源程序的标准数据集从而为测试所述目标程序是否正确提供了参考标准,通过获取目标程序的测试数据集从而为进行目标程序的自动调试奠定了良好的基础。然后根据所述标准数据集和所述测试数据集,生成校验报告,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。由于所述校验报告是根据所述标准数据集和所述测试数据集获得,由此,校验报告中的调试结果可靠性高;校验报告中调试结果和对应的位置信息(产生所述测试数据的代码在所述目标程序中的位置,比如精确到文件、函数和代码行等)能够帮助研发工程师快速、准确定位问题,能够显著节约人力物力,提高软件优化的调试效率。
68.基于上文的相关说明,本领域技术人员应该能够理解,本文中的所述目标程序与所述源程序是对应的,所述目标程序是由所述源程序转化得到,是研发工程师对源程序的优化(改造),并不是使用某种现有工具或技术的直接转换。优化需要工程师结合生产环境的硬件资源、以及程序的逻辑找到程序执行的最优路径对源程序的调整变化,而不是逐条的翻译。
69.需要特别说明的是,本发明并不限制所述调试结果的具体内容,在其中一种实施方式中,所述调试结果可以仅包括调试结论,比如成功(success,通过)和失败(fail,不通过)二者中的一者;在另外一些实施方式中,还可以包括测试的次数、及每次的调试结论;在又一些实施方式中,除调试结论外,在得到的调试结论为失败时,还可以包括更详细的内容,比如测试数据集中的测试数据的内容、标准数据集中对应的标准数据的内容,以及测试数据集中的测试数据与标准数据集中对应的标准数据的具体偏差信息等。
70.在其中一种示范性实施方式中,步骤s100,所述获取所述目标程序的测试数据集,包括:
71.s110:获取指定版本的源程序的标准数据集的数据特征描述清单;
72.s120:根据所述标准数据集的特征描述清单,获取所述测试数据集。
73.由此,本实施例通过先获取指定版本的源程序的标准数据集的数据特征描述清单;再根据所述标准数据集的特征描述清单,获取所述测试数据集,由此,通过版本标识(区分)所述标准数据集,不仅能够便于源程序和目标程序的各自升级迭代,而且通过所述版本能够保证测试数据集的版本与所述标准数据集匹配,从而可以防止数据验证时因标准数据集和测试数据集的版本不同导致校验报告出现误差,而且版本控制简便易行、便于维护。
74.如本领域技术人员可以理解地,用户需求的变化或者软件版本(比如源程序或目标程序本身的优化,或源程序本身的bug修复等)的升级,都会导致源程序(比如使用matlab或python实现)发生变化,这样的变化可能会使得源程序的标准数据集更新不及时,从而导致生成校验报告时误认为目标程序(c++实现的代码)的验证出现错误。而本实施例提供的自动化调试方法,通过版本标识(区分)所述标准数据集,在校验时根据所述标准数据集的特征描述清单,获取所述测试数据集,从而避免了因标准数据集和测试数据集的版本不匹配导致的误判,由此,能够进一步提升程序转义的调试效率。
75.在其中一种优选实施方式中,所述标准数据集和所述测试数据集以文件的形式存储;
76.所述数据特征描述清单,包括但不限于所述文件的存储信息和各个所述文件中数据的属性信息。
77.由此,本实施例提供的自动化调试流程,通过文件的方式存储所述标准数据集和所述测试数据集,为后续在线和/或离线生成校验报告打下了坚实的基础。进一步地,所述测试数据集根据各个文件中每条数据的属性信息得到,由此,使得所述测试数据集与所述标准数据集更匹配,能够更好地指导后续校验报告的生成。
78.需要特别说明的是,如本领域技术人员可以理解地,上述仅是示例性描述,而非本发明的限制,本发明并不限制所述数据特征描述清单的具体内容。比如,在其中一种优选实施方式中,所述文件的存储信息,包括用于存储所述标准数据集的标准文件的个数,以及每个文件的描述信息(比如文件名、存储路径等);所述每条数据的属性信息包括属性的列表信息。更具体地,属性列表信息包括属性个数、每个属性的含义及各个属性的顺序等。所述属性包括生成该测试数据的代码文件的名称、代码行等。
79.进一步地,步骤s100,所述获取源程序的标准数据集和目标程序的测试数据集,包括:
80.在获取所述标准数据集中的每一条标准数据和所述测试数据集中的每一条测试数据时,判断产生所述标准数据和所述测试数据的代码执行的迭代次数是否确定,若是,则所述属性信息还包括产生该条标准数据和该条测试数据的代码对应的迭代次数。
81.本实施例提供的自动化调试方法,针对目标语言(比如c++)存在多线程并发的情况,部分算法产生测试数据的代码可能不是通过一次操作就能够完全缓存下来,而是需要多次迭代才能完成,根据算法迭代次数固定和不固定场景,可以将测试数据的大小分为已知和未知两种情况。比如,若产生所述测试数据的代码执行的迭代次数是确定的,每条所述测试数据的属性信息还包括所述产生该条测试数据的代码对应的迭代次数。比如数据1,是第一次执行产生、数据2是第二次执行产生,
……
。基于此,目标程序在获取测试数据集时,可以根据目标程序的实际代码合理选择生成所述测试数据集的方式。由此,得到的校验报
告的调试结果还可以进一步包括该结果对应的代码执行到第几次时获得,从而进一步提高调试效率。得到标准数据集的原理类似,可以参照上述生成测试数据集的方法适应性理解,在此不再赘述。
82.需要特别说明的是,获取标准数据集的流程类似,不再赘述。本发明并不限制上述获取测试数据集和标准数据集的具体实施方式,可以分别糅合在源程序和目标程序对应的代码中,但作为优选,上述获取标准数据集的流程由独立的逻辑处理模块执行(比如,如下述实施例二中的数据搜集服务子模块120),所述目标程序和所述源程序通过调用所述逻辑处理模块以获取所述测试数据集和所述标准数据集。
83.请参见图3,其示意性地给出了其中一实施方式提供的自动化调试方法其中一种获取已知数据大小(比如迭代执行n次)的标准数据的流程示意图。从图3可以看出:源程序首先调用api接口(比如,下述实施例二中的数据生成接口子模块110提供的函数接口),然后逻辑处理模块(比如,如下述实施例二中的数据搜集服务子模块120)创建文件目录,查找当前的文件存储表(包括文件的个数、文件的标识符等),如果对应的文件不存在,则创建文件,并更新文件存储表(文件的个数加1,并为该文件添加文件标识符)以及数据的存储;然后判断全部数据是否存储完成(比对存储的数据大小与已知数据大小,比如是否达到n次),如果是,则完成当前数据的存储,并从当前的文件存储表中将该对应的文件删除(文件的个数减1,删除对应的文件标识符)。如果全部数据没有完成,则在下次迭代时,在查找当前的文件存储表时,该文件已经存在,则根据当前文件的中数据的属性信息直接存储数据。具体地,步骤s200,所述根据所述标准数据集和所述测试数据集,生成校验报告,包括:
84.比较所述测试数据集中的测试数据与对应的所述标准数据集中的标准数据是否一致,若是,则所述调试结果为测试通过;若否,则所述调试结果为测试失败,并根据所述测试数据的属性信息得到产生所述测试数据的代码在所述目标程序中的位置;
85.根据所述调试结果和所述产生所述测试数据的代码在所述目标程序中的位置,生成所述校验报告。
86.由此,本实施例提供的自动化调试方法,所述校验报告不仅给出调试结果是否通过,而且在测试数据集中的测试数据与标准数据集中对应的标准数据不一致时,还能够给出产生所述测试数据的代码在所述目标程序中的位置,由此,能够使得研发工程师快速、高效地定位发生问题的具体位置,节约人力和时间成本。
87.需要说明的是,上文中的比较所述测试数据集中的测试数据与对应的所述标准数据集中的标准数据是否一致,实际上是指能够实际执行产生的结果是否与标准数据(比如:matlab产生的)所产生的结果匹配。本发明对所述测试数据和所述标准数据的具体内容不作限定,在一些实施方式,所述测试数据和所述标准数据可以为标准值,例如:如果所述目标程序采用c++语言,重建出来的数据其l2范式产生的值和所述源程序采用的matlab中重建出来的数据其l2范式产生的值,两者的差的绝对值小于1.e-5,那么就可以表示二者的值是一致的,则所述调试结果为测试通过。在另外一些实施方式中,所述测试数据和所述标准数据可以为图像,通过比较测试数据的图像和标准数据的图像的像素点的差异在预设范围,则认为所述调试结果为测试通过。
88.更具体地,所述产生所述测试数据的代码在所述目标程序中的位置包括但不限于所述代码所在目标文件的名称、以及代码在所述目标文件中的行号,所述目标文件所在的
目录以及版本号。
89.综上所述,本发明提供的自动化调试方法,实现了端到端的自动化调试流程,整个过程无需人工参与,能够显著提高研发工程师的调试效率,节约人力和物力成本。
90.实施例二
91.本实施例提供了一种自动化调试装置,具体地,请参见图4,其示意性地给出了本发明提供的自动化调试装置的结构示意图。从图4可以看出,本实施例提供的自动化调试装置包括:数据生成模块100和数据校验模块200。
92.具体地,所述数据生成模块100,配置为获取源程序的标准数据集和目标程序的测试数据集;其中,所述目标程序根据所述源程序转化得到。所述数据校验模块200,配置为根据所述标准数据集和所述测试数据集,生成校验报告;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。
93.由于本实施例提供的自动化调试装置与上述实施例一提供的自动化调试方法,属于同一发明构思,因此,至少具有所述自动化调试方法的所有优点,具体内容请参见上文自动化调试方法的相关描述,在此不一一赘述。
94.更具体地,所述数据生成模块100包括数据生成接口子模块110和数据搜集服务子模块120,所述数据校验模块200包括数据校验接口子模块210和数据校验服务子模块220,所述自动化调试装置还包括数据存储及配置模块300。以下分别对各个子模块说明如下:
95.所述数据生成接口子模块110,用于分别为所述源程序提供标准数据获取接口以及为所述目标程序提供测试数据获取接口,以获取所述源程序的标准生数据和所述目标程序的测试生数据。所述数据搜集服务子模块120,配置为根据所述预设调试数据获取规则,分别对所述标准生数据进行处理以得到所述标准数据集和对所述测试生数据进行处理以得到所述测试数据集;还用于将所述标准数据集和所述测试数据集发送至所述数据存储及配置模块300。
96.所述数据存储及配置模块300,配置为存储所述自动化调试装置的配置信息,以及所述标准数据集、所述测试数据集和所述校验报告三者中的至少一者。
97.所述数据校验服务子模块220,用于从所述数据存储及配置模块300获取所述标准数据集和所述测试数据集,并用于根据所述标准数据集和所述测试数据集,生成校验报告生数据,以及将所述校验报告生数据发送至所述数据校验接口子模块210;所述数据校验接口子模块210,配置为根据所述校验报告生数据,生成校验报告,并用于将所述校验报告通过所述数据校验服务子模块220存储至所述数据存储及配置模块300。
98.由此,本实施例提供的自动化调试装置包括数据生成模块100和数据校验模块200,所述数据生成模块100包括数据生成接口子模块110(比如,在软件架构的应用层中实现)和数据搜集服务子模块120(比如,在软件架构的服务层中实现),所述数据校验模块200包括数据校验接口子模块210(比如,在软件架构的应用层中实现)和数据校验服务子模块220(比如,在软件架构的服务层中实现)。由此,本发明提供的自动化调试装置通过接口和逻辑处理的分离,从而能够通过所述数据生成模块100的数据生成接口子模块110(比如给算法工程师提供多种编程语言的脚本)支持不同编程语言实现的所述源程序(算法程序),具有较好的跨平台性。
99.具体地,请继续参见图4,从图4可以看出,本实施例提供的自动化调试装置,按照软件的三层架构实现,所述数据生成接口子模块110和数据校验接口子模块210设置在应用层,可以提供多种编程语言的源程序和目标程序,从而通过为算法工程师和研发工程师提供相应语言的脚本,以方便将所述自动化调试装置植入到所述源程序和目标程序。将负责逻辑处理的数据搜集服务子模块120和数据校验服务子模块220设置在服务层,将逻辑处理(包括但不限于数据收集、数据对比等)与应用层进行分离,更便于自动化调试装置本身的维护和升级。比如,若新增一个支持的源程序和/或目标程序的编程语言,仅需对所述数据生成接口子模块110和/或数据校验接口子模块210进行相应编程语言的扩增即可,而无需修改设置在服务层的数据搜集服务子模块120和数据校验服务子模块220。进一步地,所述数据存储及配置模块300设置在数据层,更便于所述标准数据集、所述测试数据集、所述校验报告和所述自动化调试装置的配置信息的查询和实时移植。
100.需要特别说明的是,虽然图4中以单机版的自动化调试装置为例进行说明,但是这并非本发明的限制,在其他的实施的方式中,也可以采用服务端-客户端的方式实现,比如,所述数据生成模块100分别设置在所述源程序和所述目标程序所在的终端,所述数据校验模块200和所述数据存储及配置模块300设置在所述服务端(所述数据存储及配置模块300也可以设置在另外的数据库服务端,所述数据库服务端与所述服务端和客户端通信连接),所述标准数据集在源程序所在的终端获取后,发送至服务端;所述测试数据集在目标程序所在的终端获取后,也发送至服务端;设置在所述服务端的所述数据校验模块200根据所述标准数据集和所述测试数据集,生成所述校验报告。有关服务端-客户端的更详细内容,请参见下文自动化调试系统的相关描述以更好地理解,在此,不再展开说明。
101.实施例三
102.本实施例提供了一种自动化调试终端,具体地,请参见图5,其示意性地给出了本实施例提供的自动化调试终端的方框结构示意图。如图5所示,所述自动化调试终端包括处理器410和存储器430,所述存储器430存储有源程序和目标程序中的其中一者或两者以及数据生成程序;和/或所述存储器上存储有数据校验程序;其中,所述目标程序根据所述源程序转化得到以下对所述源程序、所述目标程序和所述数据校验程序分别说明如下:
103.所述源程序,配置为被所述处理器执行时,调用所述数据生成程序。所述目标程序,配置为被所述处理器执行时,调用所述数据生成程序。
104.所述数据生成程序,配置为由所述源程序调用被所述处理器执行时,执行以下步骤:获取所述源程序的标准数据集;和/或配置为由所述目标程序调用被所述处理器执行时,执行以下步骤:获取所述目标程序的测试数据集。
105.所述数据校验程序,配置为被所述处理器执行时,执行以下步骤:
106.根据所述源程序的标准数据集和所述目标程序的测试数据集,生成校验报告;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。
107.由于本实施例提供的自动化调试终端与上述实施例一提供的自动化调试方法属于同一发明构思,因此,本实施例提供的自动化调试终端至少具有上述实施例提供的自动化调试方法的全部优点,更详细的内容请参见上述实施例相关的描述,在此,不再赘述。
108.如图5所示,所述自动化调试终端还包括通信接口420和通信总线440,其中所述处
理器410、所述通信接口420、所述存储器430通过通信总线440完成相互间的通信。所述通信总线440可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线440可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。所述通信接口420用于上述自动化调试终端与其他设备之间的通信。
109.本发明中所称处理器410可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器410是所述自动化调试终端的控制中心,利用各种接口和线路连接整个自动化调试终端的各个部分。
110.所述存储器430可用于存储所述计算机程序,所述处理器410通过运行或执行存储在所述存储器430内的计算机程序,以及调用存储在存储器430内的数据,实现所述自动化调试终端的各种功能。
111.所述存储器430可以包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
112.实施例四
113.本实施例提供了一种自动化调试系统,具体地,请参见图6,其示意性地给出了本实施例提供的自动化调试系统的结构示意图。从图6可以看出,本实施例提供的自动化调试系统包括:通信连接的源程序终端500、目标程序终端600和调试服务端700。
114.具体地,所述源程序终端500,配置为获取源程序的标准数据集,并将所述标准数据集发送至所述调试服务端700。所述目标程序终端600,配置为获取目标程序的测试数据集,并将所述测试数据集发送至所述调试服务端700;其中,所述目标程序根据所述源程序转化得到。所述调试服务端700,配置为根据所述标准数据集和所述测试数据集,生成校验报告,并将所述校验报告发送至所述目标程序终端600;其中,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。
115.由此可见,本实施例提供的自动化调试系统,包括通信连接的源程序终端500、目标程序终端600和调试服务端700,这种分布式特性,不仅能够使得目标程序的研发工程师可以进行在线或离线的自动化调试,以验证所述目标程序是否出现错误;而且,能够支持集群部署,方便不同区域及不同目标程序的研发工程师进行高并发访问。
116.更具体地,在其中一种示范性实施方式中,所述目标程序终端600,配置为获取目
标程序的测试数据集,包括:
117.所述目标程序终端600,配置为向所述调试服务端700请求指定版本的源程序的标准数据集的数据特征描述清单;
118.根据所述标准数据集的特征描述清单,获取所述测试数据集。
119.特别地,本领域的技术人员应该理解,由于所述目标程序由所述源程序的转化得到,因此所述测试数据集的版本应与所述目标程序的版本匹配,本实施例提供的自动化调试系统,在获取所述测试数据集之前,首先获取所述标准数据集的描述清单,更利于调试服务端700进行标准数据集和校验数据集的分析,从而避免了因标准数据集和测试数据集的版本不匹配导致的误判,由此,能够进一步提升在程序转义过程中的调试效率。
120.进一步地,本发明并不限制所述源程序终端500和所述目标程序终端600的个数,所述源程序终端500可以为一个或多个,所述目标程序终端600也可以有一个或多个。更进一步地,在其中一种优选实施方式中,所述自动化调试系统还可以包括数据库服务器,所述数据库服务器用于存储所述标准数据集和所述测试测试数据集;当然,这并非本发明的限制,在其他的一些实施方式中,所述测试数据集和所述标准数据集也可以存储在所述调试服务端700的本地存储器,在又一些实施方式中,所述测试数据集和所述标准数据集也可以存储在云端存储器。
121.具体地,请参见图7,其示意性地给出了本实例提供的自动化调试系统的其中一种应用场景示意图。从图7可以看出,该自动化调试系统的常规流程为:
122.第一阶段、算法工程师在源程序端将获取的标准数据集存储至数据库服务器;
123.第二阶段、研发工程师在目标程序端向所述调试服务端700的数据校验服务请求所述标准数据集的特征描述清单,并根据所述特征描述清单将得到的测试数据集存储至数据库服务器;
124.第三阶段、所述调试服务端700的数据校验服务根据所述标准数据集和所述校验数据集,生成校验报告,并将所述校验报告发送至所述目标程序端。结束本次自动化调试流程。
125.如本领域技术人员可以理解地,若校验报告给出的调试结果中存在有测试数据失败的情形,则研发工程师会在目标程序端对目标程序进行修正,并再次进行调试,此时,仅需执行上述第二阶段和上述第三阶段,而无需再执行上述第一阶段。同理,若在自动化调试结束后,所述校验报告的调试结果的测试数据均为成功,而后续研发工程师在此基础上基于同一版本的源程序对目标程序本身进行优化,则仍仅需执行上述第二阶段和上述第三阶段,而无需再执行上述第一阶段。由此,进一步提高调试效率。
126.实施例五
127.本实施例提供了一种计算机可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时可以实现上文所述的自动化调试方法。
128.本发明实施方式的可读存储介质,可以采用一个或多个计算机可读的介质的任意组合。可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机硬盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可
编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其组合使用。
129.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
130.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如java、smalltalk、c++,还包括常规的过程式程序设计语言-诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)连接到用户计算机,或者可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
131.综上所述,与现有技术相比,本发明提供的自动化调试方法、装置、终端、系统和存储介质具有以下优点:本发明提供的自动化调试方法,通过获取源程序的标准数据集从而为测试所述目标程序是否正确提供了参考标准,通过获取目标程序的测试数据集从而为进行目标程序的自动调试奠定了良好的基础。然后根据所述标准数据集和所述测试数据集,生成校验报告,所述校验报告包括所述测试数据集中每条测试数据的调试结果以及产生所述测试数据的代码在所述目标程序中的位置信息。由于所述校验报告是根据所述标准数据集和所述测试数据集获得,由此,校验报告中的调试结果可靠性高;校验报告中调试结果和对应的位置信息(产生所述测试数据的代码在所述目标程序中的位置,比如精确到文件、函数和代码行等)能够帮助研发工程师快速、准确定位问题,能够显著节约人力物力,提高软件优化的调试效率。
132.进一步地,本发明通过先获取指定版本的源程序的标准数据集的数据特征描述清单;再根据所述标准数据集的特征描述清单,获取所述测试数据集,由此,通过版本标识(区分)所述标准数据集,不仅能够便于源程序和目标程序的各自升级迭代,而且通过所述版本能够保证测试数据集的版本与所述标准数据集匹配,从而可以防止数据验证时因标准数据集和测试数据集的版本不同导致校验报告出现误差,而且版本控制简便易行、便于维护。
133.更进一步地,本发明提供的自动化调试装置包括数据生成模块和数据校验模块,所述数据生成模块包括数据生成接口子模块(比如,在软件架构的应用层中实现)和数据搜集服务子模块(比如,在软件架构的服务层中实现),所述数据校验模块包括数据校验接口子模块(比如,在软件架构的应用层中实现)和数据校验服务子模块(比如,在软件架构的服务层中实现)。由此,本发明提供的自动化调试装置通过接口和逻辑处理的分离,从而能够通过所述数据生成模块的数据生成接口子模块(比如给算法工程师提供多种编程语言的脚本)支持不同编程语言实现的所述源程序(算法程序),具有较好的跨平台性。再进一步地,
本发明提供的自动化调试系统,包括通信连接的源程序终端、目标程序终端和调试服务端,这种分布式特性,不仅能够使得目标程序的研发工程师可以进行在线或离线的自动化调试,以验证所述目标程序是否出现错误;而且,能够支持集群部署,方便不同区域及不同目标程序的研发工程师进行高并发访问。
134.综上,本发明提供的自动化调试方法、装置、终端、系统和存储介质,实现了端到端的自动化调试流程,整个过程无需人工参与,能够显著提高研发工程师的调试效率,节约人力和物力成本。
135.应当注意的是,在本文的实施方式中所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施方式仅仅是示意性的,例如,附图中的流程图和框图显示了根据本文的多个实施方式的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用于执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
136.另外,在本文各个实施方式中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
137.上述描述仅是对本发明较佳实施方式的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于本发明的保护范围。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若这些修改和变型属于本发明及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1