CN114816971A - 一种数据处理方法、相关设备及存储介质 - Google Patents
一种数据处理方法、相关设备及存储介质 Download PDFInfo
- Publication number
- CN114816971A CN114816971A CN202110073906.6A CN202110073906A CN114816971A CN 114816971 A CN114816971 A CN 114816971A CN 202110073906 A CN202110073906 A CN 202110073906A CN 114816971 A CN114816971 A CN 114816971A
- Authority
- CN
- China
- Prior art keywords
- call chain
- target
- data
- call
- target program
- 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
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/3676—Test management for coverage analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种数据处理方法、相关设备及存储介质,该方法包括:获取目标程序的调用链数据和提交信息,该提交信息包括所述目标程序的源代码,该调用链数据是根据所述提交信息对所述目标程序进行编译得到的;根据调用链数据和提交信息确定源代码中的变更函数关联的目标调用链,该目标调用链包括调用变更函数的各个函数所在的调用链;对目标调用链包括的函数进行聚合处理,得到测试指导数据,该测试指导数据包括按照类名聚合得到的类之间的调用路径、变更函数、类名备注信息和聚合得到的类对应的用户界面的截图中的一种或多种。采用本发明实施例,可以高效、准确地获取到变更函数影响的调用链,并生成简洁且有效的测试指导信息。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法、相关设备及存储介质。
背景技术
在对应用软件的开发过程中,使用到的开发语言会涉及多种类型,例如ObjectiveC、C、C++等,因此也涉及到这些类型函数之间的调用。这些函数之间的调用关系可以通过调用链表示,且调用链在测试或开发过程中均具有指导性的意义。目前,一方面,采用程序的文档产生工具Doxgen获取完整调用链的效率不高,而在代码里加入打点信息的方法,获取到的调用链不完整,另一方面,一般完整的调用链所包含的信息量非常庞大,直接使用并不现实,且对于后续改动的代码调用链可能有所不同。针对这种情况,如何准确、高效地对调用链进行分析并用于指导测试环节,是一个值得研究的问题。
发明内容
鉴于上述问题,本发明实施例提供了一种数据处理方法、相关设备及存储介质,可以准确、高效地获取到受变更函数影响的调用链,并生成简洁且有效的测试指导信息。
本发明实施例一方面提供了一种数据处理方法,应用于服务器,该方法包括:
获取目标程序的调用链数据和提交信息,所述提交信息包括所述目标程序的源代码,所述调用链数据是根据所述提交信息对所述目标程序进行编译得到的,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径;
根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,所述目标调用链包括调用所述变更函数的各个函数所在的调用链;
对所述目标调用链包括的函数进行聚合处理,得到测试指导数据,所述测试指导数据包括按照类名聚合得到的类之间的调用路径、所述变更函数、类名备注信息和所述聚合得到的类对应的用户界面的截图中的一种或多种。
本发明实施例一方面提供了一种数据处理方法,应用于终端设备,该方法包括:
获取针对目标程序的提交信息,所述提交信息包括所述目标程序的源代码;
根据所述提交信息对所述目标程序进行编译,以得到所述目标程序的调用链数据,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径;
将所述提交信息和所述调用链数据发送至服务器,以使得服务器根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,并对所述目标调用链包括的函数进行聚合处理,得到测试指导数据。
本发明实施例一方面提供了一种数据处理装置,包括:
获取模块,用于获取目标程序的调用链数据和提交信息,所述提交信息包括所述目标程序的源代码,所述调用链数据是根据所述提交信息对所述目标程序进行编译得到的,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径;
确定模块,用于根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,所述目标调用链包括调用所述变更函数的各个函数所在的调用链;
聚合模块,用于对所述目标调用链包括的函数进行聚合处理,得到测试指导数据,所述测试指导数据包括按照类名聚合得到的类之间的调用路径、所述变更函数、类名备注信息和所述聚合得到的类对应的用户界面的截图中的一种或多种。
本发明实施例一方面提供了一种数据处理装置,包括:
获取模块,用于获取针对目标程序的提交信息,所述提交信息包括所述目标程序的源代码;
编译模块,用于根据所述提交信息对所述目标程序进行编译,以得到所述目标程序的调用链数据,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径;
发送模块,用于将所述提交信息和所述调用链数据发送至服务器,以使得服务器根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,并对所述目标调用链包括的函数进行聚合处理,得到测试指导数据。
本发明实施例一方面提供了一种服务器,包括,处理器和存储器以及存储在所述存储器中并能够在所述处理器上运行的计算机程序,所述处理器调用所述计算机程序以执行上述方面中服务器执行的部分或全部步骤。
本发明实施例一方面提供了一种终端设备,包括:网络接口、处理器和存储器,所述网络接口、处理器与存储器相连接,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行上述方面中终端设备执行的部分或全部步骤。
相应的,本发明实施例提供了一种存储介质,所述存储介质存储计算机程序,所述计算机程序包括程序指令,由一个或多个所述处理器加载并执行所述程序指令,以执行上述方面中所述的数据处理方法。
相应的,本发明提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面中所述的数据处理方法。
可以看出,本发明实施例提供的数据处理方法,可以通过提交信息对目标程序进行编译,获取到目标程序的全部调用链,即完整的调用链数据,然后在完整的调用链数据中匹配目标程序的源代码中的变更函数关联的目标调用链,将变更函数为被调函数的调用链作为目标调用链,再对目标调用链进行聚合,减少了目标调用链的包含的信息量,降低了目标调用链的复杂度,以生成简洁且有效的测试指导数据,并且聚合处理后得到测试指导数据可以更好地提高目标程序的测试覆盖率,避免在源代码改动后的漏测。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种数据处理系统的架构示意图;
图1b是本发明实施例提供的另一种数据处理系统的架构示意图;
图2是本发明实施例提供的一种数据处理方法的流程示意图;
图3是本发明实施例提供的一种终端设备展示测试指导数据的示意图;
图4是本发明实施例提供的另一种数据处理方法的流程示意图;
图5是本发明实施例提供的一种语法生成树的示意图;
图6是本发明实施例提供的一种匹配表达式创建策略的示意图;
图7是本发明实施例提供的一种数据处理装置的结构示意图;
图8是本发明实施例提供的另一种数据处理装置的结构示意图;
图9是本发明实施例提供的一种服务器的结构示意图;
图10是本发明实施例提供的一种终端设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1a,是本发明实施例提供的一种数据处理系统的架构示意图,如图1a所示,该数据处理系统的架构可以包括服务器100以及终端设备101,每个终端设备101可以与上述服务器100进行网络连接,网络连接可以包括有线连接或无线连接,以便于每个终端设备101可以通过该网络连接与服务器100进行数据交互。
其中,每个终端设备101可以产生编译数据,例如目标程序的源代码、调用链日志、程序编译日志等,并将其发送给服务器100,每个终端设备101也可以用于向用户展示经过服务器100解析终端设备101发送的编译数据得到的业务数据,该业务数据具体可以包括变更函数、聚合后的目标调用链、用户界面的截图、待备注的控制器函数Controller等,每个终端设备101还可以存储上述编译数据和业务数据。每个终端设备101安装有程序编译设备,例如Xcode编译器,用于对目标程序的源代码进行编译,另外,可以通过在编译器中添加一些功能性的插件,对目标程序的源代码进行相应的处理,实现所需的功能。
服务器100可以接收来自于每个终端设备101的编译数据,对其进行存储,并利用相关功能模块对其进行解析处理,得到业务数据。服务器100可以将业务数据存储到相应数据库,还可以将业务数据发送给终端设备101,让终端设备101展示该业务数据。其中,服务器100可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
需要说明的是,本发明实施例中的终端设备101可以包括:平板电脑、笔记本电脑、桌上型电脑、智能电视、台式计算机、智能手机、智能手表等可以安装程序编译设备的智能终端设备,但并不局限于此。
为了便于理解图1a对应的数据处理系统的架构的工作原理,将对服务器100和终端设备101中包含的相关模块做进一步地说明,请参见图1b,是基于图1a的另一种数据处理系统的架构。
该数据处理系统的逻辑架构包括编译机101a、用户/自动化101b、逻辑层100a、存储层100b、Web前端101c这些模块,其中,编译机101a、用户/自动化101b以及Web前端101c均是在终端设备101上运行的部分,逻辑层100a和存储层100b均属于服务器100。
在具体的实现方式中,编译机101a主要用于向逻辑层100a同步生成的调用链日志,还可以向服务器提交目标程序的源代码。编译机101a通过对用户操作进行随时的监控,当监控到针对目标程序的提交命令之后,启动轻量级编译器Clang对目标程序进行编译处理,得到调用链信息后将其写入调用链日志,便可以生成调用链日志,对于监控提交和生成调用链日志这两个子模块在编译机101a中是在一直执行的部分,图1b中由生成调用链日志指向监控提交也就是表示这个过程不断地在进行。当调用链日志生成之后,便可将其同步到逻辑层100a。具体的方式可以是编译机101a一边生成调用链日志一边同步到逻辑层100a,例如获得了一条调用链并被写入调用链日志,同时就将其同步到逻辑层100a,或者在调用链日志包括的调用链达到一定数量后再将其同步到逻辑层100a,也可以在目标程序的生成调用链日志中包括了该目标程序的全部调用链后将其同步到逻辑层100a。
用户/自动化101b模块主要用于向逻辑层100a上报控制器函数Controller图片,通过UI操作,即利用提前设计好的用例跑完目标程序,在目标程序运行时,对每一个不同功能下跳转的用户界面进行截图,得到Controller图片,并将Controller图片上报到给逻辑层100a。
逻辑层100a主要用于接收编译机101a同步过来的调用链日志、用户/自动化101b上报的Controller图片以及和存储层100b进行交互。通过逻辑层100a中的调用链日志解析模块对调用链日志进行解析,然后获取提交模块从存储层100b的数据库中获取提交的信息,提交信息包括目标程序的源代码,相比于前一次提交的信息,目标程序有一定变化,因此可以根据获取变更函数模块对提交信息进行分析,得到变更函数,随后利用计算影响调用链模块,对获取变更函数模块得到的变更函数以及调用链日志解析模块解析得到的调用链数据进行相应的计算,得到被影响到的调用链,由于得到的被影响到的调用链可能包含上千或者上万的函数之间调用构成的调用路径,因此需要使用聚合模块使其更加简洁,降低函数调用链的长度,再通过Controller图片处理模块,对被影响到的调用链和上报的Controller图片进行匹配到对应的Controller图片,在得到Controller图片后,逻辑层100a将上述业务数据发送到Web前端101c。
存储层100b的主要功能是和逻辑层100a进行交互,存储逻辑层100a解析得到的相关数据,例如,并将解析调用链日志后得到的完整调用链数据存储到存储层100b的Redis(一种高性能的key-value数据库),提交日志(包括改动的函数,也即变更函数)、被影响到的调用链等存储在其他数据库中,将和聚合后的被影响到的调用链对应的Controller图片存储到图片库,进一步的,还可以将编译机101a提交过来的目标程序的源代码存储到数据库,将UI操作上报的Controller图片存储到图片库,以便于Controller图片处理模块通过拉取图片库中的图片以及数据库中被影响的函数得到最终的Controller图片。
Web前端101c用于接收上述业务数据,即提交日志、被影响到的函数、备注(即需要备注的Controller函数)和测试信息、Controller图片,通过Web前端101c将这些业务数据都可视化的展示出来,给测试人员更好的指导,也方便开发人员对更改代码对应函数进行核验。
进一步地,为便于理解,请参见图2,图2是本发明实施例基于图1b所示的数据处理系统提供的一种数据处理方法的流程示意图。该方法可以由服务器(例如上述服务器100)执行,其中,该数据处理方法至少可以包括以下步骤S201-步骤S203:
S201,获取目标程序的调用链数据和提交信息,所述提交信息包括所述目标程序的源代码,所述调用链数据是根据所述提交信息对所述目标程序进行编译得到的。
在一种可能的实施例中,提交信息包括服务器中存储的目标程序的源代码,在终端设备获取到提交命令后,可以将目标程序的源代码存储到如图1b所示的服务器的存储层100a中,也可以在同步调用链日志或者Clang编译后时将目标程序的源代码存储到服务器中,这样服务器可以直接从存储层100a中拉取到本次的提交信息中包括的源代码,这里具体的存储方式和存储时机在此不做限制。目标程序可以是针对目标应用的源代码改动后的完整代码内容,每一次终端设备的提交一般都涉及到相应的开发改动,这里的目标应用可以是运行在IOS、Linux、Windows、安卓等系统中的应用,其功能主要由相应的源代码来实现。目标程序的调用链数据包括至少一条调用链,其中,每条调用链用于指示目标程序在编译过程中函数之间的调用路径。示例的,存在这样一条调用链,具体调用路径表示为:函数a→函数b→函数c,对应的调用关系是函数a调用函数b,函数b调用函数c,其中函数b和函数c相对于函数a来说,都属于被调用的函数。通常,针对功能丰富的目标应用,目标程序的调用链不会只有简单的一条调用链,而是存在大量复杂的调用链来实现不同的功能。上述的调用链数据是对目标程序进行编译得到的,具体是由终端设备执行编译操作,得到调用链并将其写入调用链日志,然后调用链日志同步给服务器,由上述图1b中的调用链日志解析模块对调用链日志进行解析得到的调用链日志中存储的调用链数据,这里对调用链日志存储的内容和数据形式不做限制。
S202,根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,所述目标调用链包括调用所述变更函数的各个函数所在的调用链。
在一种可能的实施例中,由编译机101a实时监控针对目标程序的提交命令,可以获得提交信息并存储到服务器中的,每一次提交都可以视为相对于上一次提交的目标程序的变动,例如对其中的函数内容执行顺序的更改,对函数名称的改动等,总之对上一次提交的目标程序源代码进行增加、删除、改变并提交之后,都可视为目标程序,所以提交信息中包括的目标程序的源代码也就包含变更的函数,提交信息也就可以理解为每次开发改动后的提交的源代码,因此可以首先从提交信息包括的目标程序的源代码中获取变更函数。具体可以由服务器执行,通过利用上述图1b中逻辑层100a的获取提交模块从存储层100b先拉取到提交信息,然后利用变更函数模块对提交信息进行分析,可选的,变更函数模块的分析原则可以以及代码和行号的关联,也就是代码的内容和行号一一对应,当代码的内容发生变动,对应的行号也会发生变动,通常来讲,修改的代码都是某个子函数下包括的代码,因此该子函数对应的行号不会改变,但修改的代码行号一定会改变,根据变动的行号即可对应到子函数,并将其作为变更函数,其中,改动的代码是通过本次提交的目标程序的源代码和上一次提交的目标程序的源代码进行对比得到的,作为一种可扩展的方式,也可以将每次改动记录为日志,通过解析日志就可以直接得到改动的代码,进而得到变更函数。
然后,根据每条调用链指示的函数之间的调用路径,从至少一条调用链中确定调用变更函数的目标调用链。具体的,由于调用链数据包括多条指示调用路径的调用链,而变更函数所在的调用链中,如果是变更函数调用其他函数而没有被其他函数调用,那么变更函数所在的调用链不会受到影响,则不能作为目标调用链,但是若其他函数调用变更函数,也就是说变更函数作为被调函数,函数的功能会受到一定影响,则可以作为目标调用链。举例来说,若变更函数为c,存在这样两条调用链,分别为函数a→函数b→函数c→函数e,函数c→函数g→函数m,前者变更函数c作为被调用的函数,可以视为目标函数调用链,也就是被影响到的调用链,但是后者变更函数c不再是被调用的函数,不会影响到调用链,所以不能作为目标调用链,也就是该调用链不是调用变更函数的各个函数所在的调用链。
通过上述方式,根据提交信息和调用链数据获取变更函数,进而获得调用链数据,最终得到目标调用链,通过服务器自动解析和总结实现目标调用链获取的自动化和智能化。
S203,对所述目标调用链包括的函数进行聚合处理,得到测试指导数据,所述测试指导数据包括按照类名聚合得到的类之间的调用路径、所述变更函数、类名备注信息和所述聚合得到的类对应的用户界面的截图中的一种或多种。
在一种可能的实施例中,某些功能多样的目标应用所涉及的代码有百万行,得到的完整的调用链结果数量级在万级别,这样巨大的数据量并不能给到测试很好的指导,甚至测试根本无法根据这个进行,因此有必要对调用链数据进行精。通过对目标应用现有的调用链数据进行分析,可以发现一些规律,根据这些规律,可以实现目标调用链的数据量的大幅度减少。
在具体的实现方式中,可以根据目标调用链包括的函数确定至少一个类名,目标调用链包括的每个函数的函数名包括类名,然后将目标调用链包括的函数按照至少一个类名进行聚合,得到聚合后的至少一个类,最后根据聚合后的至少一个类确定测试指导数据。对于目标调用链,是很多函数之间的调用构成的调用路径,其中的函数也有很多类似的,示例的,CustomerToolBartListController p_addItem和CustomerToolBartListControllerp_deleteItem的前缀都相同,表示这两个函数都属于CustomerToolBartListController一类,因此函数包括的类名都相同,按照目标调用链包括的函数中确定的类名进行聚合,得到的数据相比与原始的目标调用链会急剧减少,得到多个类之间的调用路径,进而得到测试指导数据。需要说明的是,由于变更函数最终会作为测试指导数据,因此在聚合过程中,变更函数不纳入聚合的范围,进而可以将其展示出来。
举例来说,请参见表1的目标调用链,是一个改变的函数(变更函数)对应的调用的函数(两条目标调用链):
表1目标调用链
可以发现,上述目标调用链包含的两条调用链中,都是Controller内部的调用,每一个Controller都是一个类,因此可以按照Controller对目标调用链聚合,也就是说CustomerToolBartListController-a或者CustomerToolBartListController-b都是属于CustomerToolBartListController这一类的,因此可以将其都表示为CustomerToolBartListController。通过实验验证发现,聚合之后的调用链数据所包括的函数减少了56倍,影响量测试可以全部评审完成。
其中,根据聚合后的至少一个类确定测试指导数据,具体的实现方式可以是:首先获取目标程序在运行时产生的用户界面的至少一个截图,每个截图用于指示目标程序的一个类对应的功能。对应的,用户界面的截图是由上述图1b中的用户/自动化101b模块实现的,通过使用钩子函数hook,在目标程序没有调用该函数之前,先捕获该调用消息以得到控制权,这时hook函数对该将被调用的函数对应的用户界面进行截图并将其上报到服务器,以备服务器的相应处理模块对其进行处理,示例的,每个截图就是一个Controller图片。然后根据聚合后的至少一个类对应的类名,从至少一个截图中确定聚合后的至少一个类对应的用户界面的截图。这里是对目标调用链进行按照类名聚合,得到聚合后的至少一个类,由于每一个上报的截图都有唯一的类名与之对应,因此可以根据类名去匹配聚合后的目标调用链对应的用户界面的截图。接着根据目标调用链包括的函数之间的调用路径确定聚合后的至少一个类之间的调用路径,并将聚合后的至少一个类之间的调用路径、对应的用户界面的截图和所述变更函数作为测试指导数据。目标调用链包括的函数大都是某一类内部的函数调用,因此调用路径会相对较长,当聚合之后得到的调用路径虽然长度有所变化,但是对应的类之间的调用关系和目标调用链中函数所属类的调用关系并没有变化,举例来说,目标调用链有函数a→函数b1→函数b2→函数b3→函数c3,其中变更函数是函数c3,函数b1、函数b2、函数b3是属于类函数b内部的函数,因此,按照类名b进行聚合,可以得到聚合后的调用路径,函数a→函数b→函数c3,这是多个类之间的调用路径,可以其作为测试指导数据中的一部分,除此,用户界面的截图和变更函数均可以作为测试指导数据。
在一实施例中,对目标调用链聚合之后得到多个类之间的调用关系,开发人员还可以对类名进行手动备注,用于指导测试使用,如下表2所示,是每一种类备注的示例。
表2开发备注示例
类名 | 类说明 |
CloudPrintGuidViewController | 打印应用引导页 |
ConversationLBSViewController | 选择位置界面 |
ConversationMemberController | 群成员列表 |
ConvMemberSearchController | 群成员列表搜索 |
ChatManagerController | 管理-聊天管理界面 |
可以发现,类名的不同,对应的功能备注也不相同,上述对跳转界面的截图即可理解为对每一种不同类之间功能切换是对应的用户界面的截图。对应的手动备注即可理解为将聚合后的类展示到终端设备,但类说明为待补充内容。
作为一种可能的实施例,服务器还可以向终端设备发送上述测试指导数据,以使得终端设备在用户界面中展示测试指导数据,以便于测试人员制定针对该目标程序的补充测试用例。具体可参见图3,是上述测试指导数据在终端设备上展示的示意图,其中包括改变的函数(变更函数)、影响的函数(对目标调用链聚合后的调用路径)、以及用户界面的截图内容,其中,用户界面的截图和影响的函数对应,图3中用户界面的截图(a)对应了类WorkLogDetailViewContrlloer,而截图(b)则对应了WorkLogViewContrlloerinitWithLogEntites。如果某个变更函数对应多条不同的目标调用链数据,或者多个变更函数分别对应有多条目标调用链数据,都会在终端设备上显示出来,通过这样直观地将聚合之后的调用链数据展示出来,实现了调用链的自动备注,降低了人力备注成本,并且可以提高测试的效率。根据该测试指导数据,测试人员可以根据此数据设计补充测试用例,利用该补充测试用例对目标程序进行测试可以对改动后的代码实现的功能有初步的评估。
综上所述,本发明实施例至少具有如下优点:
利用服务器相关的功能模块对获取到的目标程序的调用链数据和提交信息进行处理,得到目标程序中改动代码对应的函数,即变更函数,并根据变更函数从多条调用链中匹配出目标调用链,并按照一定规则,例如类名对其中包括的函数进行聚合,实现了对目标调用链的精简,大大降低了分析该目标调用链的复杂度,提高调用链用于指导测试的可靠性,此外,测试指导数据中包括的聚合后的目标调用链对应的用户界面的截图、聚合后类之间的调用路径、变更函数等在终端设备中可视化的展示,实现了系统自动备注(即通过用户界面截图直接指示类的功能),节省了开发备注的时间,加快测试进程,同时通过该测试指导数据能够补充测试场景,降低漏测的概率。
请参见图4,图4是本发明实施例基于图1b所示的数据处理系统提供的另一种数据处理方法的流程示意图。该方法可以由上述终端设备101执行,其中,该数据处理方法至少可以包括以下步骤S401-步骤S403:
S401,获取针对目标程序的提交信息,所述提交信息包括所述目标程序的源代码。
在一种可能的实施例中,目标程序可以和目标应用对应,目标应用可以是运行在IOS、安卓、Windows、Linux等系统中的应用。通过目标程序可以实现目标应用的相关功能,当需要对目标应用的功能进行改进或者新增,又或者修复一些未知的缺陷时,可以通过调整或更改目标应用的源代码来达到这些目的。具体的,可以由终端设备(如台式电脑)中的程序编译设备,例如Codeblock,Xcode等合适的编译器对改动之后的源代码进行编译,得到编译结果,进而获知可供开发人员参考的数据,确定代码调整的正确性以及可靠性等。在这里,将改动之后的源代码视为目标程序,每次改动之后都要执行commit,即提交命令,从而获得提交信息,也即目标程序的源代码,改动后的源代码通过提交命令可以触发编译器的对目标程序的编译,在这份源代码中,变更涉及的代码一般都是实现某一功能对应的子函数中的代码。
S402,根据所述提交信息对所述目标程序进行编译,以得到所述目标程序的调用链数据,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径。
在一种可能的实施例中,可以根据目标程序的源代码启动对所述目标程序的编译,在编译过程中利用编译插件获取目标程序对应的语法表示结构,并利用语法树匹配器对语法表示结构进行分析处理,得到所述目标程序的调用链数据。具体是编译机在检测到开发人员输入的commit命令后,就自动启动编译器对目标程序进行编译,更进一步,是利用编译插件,例如Clang插件对提交的目标程序的源代码进行编译,轻量级编译器Clang能够处理C语言、C++、Objective-C、Objective-C++语言,此编译器作为IOS中运行的目标应用的目标程序的编译前端,提供了一系列的工具来分析源码,并且可以基于Clang来构建自己的工具对目标程序进行处理,也就是上述Clang插件对目标程序进行词法分析、语法分析,生成抽象语法树(Abstract Syntax Tree,AST),也就是源代码语法结构的树状表示,其中每一个节点都表示源代码中的结构。再进一步利用Clang提供的语法树匹配器ASTMatcher工具对语法表示结构的一种AST进行分析,得到目标程序的调用链数据。示例操作中,可以将开发人员编写的Clang插件作为编译的一部分,在编译器运行时加载,利用ASTMatcher编写Clang插件,可以大大降低代码的冗余,提高效率,从而准确高效地匹配到想要的节点,得到目标程序完整的调用链数据。这些调用链数据由多条调用链组成,每一条都揭示了目标程序在运行时函数之间的调用关系,指示了函数的调用路径,关于调用链具体的示例可以参见图2对应的S201,此处不再进一步说明。
作为一种示例,可以参见图5,是Objective-C(简称OC)调用Cxx(即C++)过程截取的语法树结果,可以发现,类实现会有个定义ObjCImplemetation,方法定义OjbcMethodDecl,Cxx调用会有CXXMemberCallExpr,因此对AST去搜索是可以获取到调用链数据。因此通过实现Clang插件,在编译时带上插件,进而插件会去匹配获取到调用链的结果信息。具体的,是通过程序执行匹配表达式获取到调用链数据,针对不同类型之间的调用,匹配表达式有所不同。如对应图5的OC调用C++,对应的匹配表达式有:
这个匹配表达式中的每一个函数(如hasAncestor)即为一个Matcher,所有的Matcher有三类,上述表达式集合了匹配特定类型的所有节点的Node Matchers,例如objcMethodDeclr匹配OC方法声明节点;以当前匹配的节点作为起点,用来限定匹配表达式查找范围的Traversal Matchers,上述的hasAncestor就表示在当前节点的祖代类节点中进行下一步匹配。除了上述的两种节点,还有用来缩小匹配范围Narrowing Matchers,例如hasname限定了匹配的名称,即为一个Narrowing Matcher。此外,只有在Node Matchers上可以调用bind,例如匹配表达式中的bind在objcMethodDeclr上调用,表示将对应的节点绑定到字符串上,例如上述提到的cxxMemberCallExper().bind(“classCaller”)就表示将cxxMemberCallExper绑定到字符串“classCaller”上。
对于匹配表达式的创建,对应有一定的策略,可参见图6。主要分为四个步骤,步骤60,确定所需匹配节点的最外层的类,也就是函数调用,例如想匹配方法调用关系,首先要确定最外层的类是也就是匹配表达式的最外层应该是objCMethodDecl,步骤61,在语法树匹配器的参考文档(AST Matcher Reference)中去选择合适的匹配器,也就是得到函数调用后,还要根据调用关系选择与调用函数相关的匹配器,根据上述原则将匹配表达式创建完成,步骤62,对匹配效果进行检验,判断是否需对其细化以缩小匹配节点集,可以利用Clang提供的检验匹配效果的工具Clang-query对匹配表达式进行检验,如果不符合预期,则对匹配表达式做进一步的调整,步骤63,重复上述步骤60-62,直到匹配器完成,可理解为最终的检验结果符合预期,能够利用该匹配表达式获取到不同类型对应的完整的调用链。
S403,将所述提交信息和所述调用链数据发送至服务器,以使得服务器根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,并对所述目标调用链包括的函数进行聚合处理,得到测试指导数据。
在一种可能的实施例中,终端设备在获取到提交信息以及调用链数据后发送至服务器具体的方式可以参见图1b对应的内容,通过将调用链数据写入本地终端设备的调用链日志并将调用链日志同步到服务器的逻辑层100a,对于提交信息中包括目标程序的源代码也会同步到服务器的存储层100b,主要是为了确定出源代码中的变更函数,再通过变更函数以及调用链数据确定出目标调用链,该目标函数与变更函数的关联性体现在变更函数是作为被调用的函数存在于该调用链中,当然,服务器对目标调用函数还要进一步分析进行聚合得到测试指导数据,并且终端设备会接收到来自服务器发送到的测试指导数据并将其展示出来,以更好地指导测试。
综上所述,本发明实施例至少具有如下优点:
终端设备通过对目标程序进行编译获取到调用链,具体的,采用Clang的相关工具对目标程序进行处理,可以快速准确地获取到调用链数据,通过将调用链数据写入调用链日志并同步到服务器的方法,以及将提交信息存储到服务器,使得服务器解析终端设备发送的相关数据,以得到测试指导数据,这样可以记录和上报每次开发改动的内容,提高服务器根据每次开发改动分析出受影响的调用链的效率,终端设备对测试指导数据的直观展示,也可以使得测试更具有针对性,避免漏测。
请参见图7,图7是本发明实施例提供的一种数据处理装置的结构示意图,上述数据处理装置可以是运行于服务器中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本发明实施例提供的方法中的相应步骤。该装置70可以包括:获取模块701、确定模块702、聚合模块703,其中:
获取模块701,用于获取目标程序的调用链数据和提交信息,所述提交信息包括所述目标程序的源代码,所述调用链数据是根据所述提交信息对所述目标程序进行编译得到的,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径。
确定模块702,用于根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,所述目标调用链包括调用所述变更函数的各个函数所在的调用链。
聚合模块703,用于对所述目标调用链包括的函数进行聚合处理,得到测试指导数据,所述测试指导数据包括按照类名聚合得到的类之间的调用路径、所述变更函数、类名备注信息和所述聚合得到的类对应的用户界面的截图中的一种或多种。
在一实施例中,聚合模块703,具体还用于:根据所述目标调用链包括的函数确定至少一个类名,所述目标调用链包括的每个函数的函数名包括类名;将所述目标调用链包括的函数按照所述至少一个类名进行聚合,得到聚合后的至少一个类;根据所述聚合后的至少一个类确定测试指导数据。
在一实施例中,聚合模块703,具体还用于:获取所述目标程序在运行时产生的用户界面的至少一个截图,每个截图用于指示所述目标程序的一个类对应的功能;根据所述聚合后的至少一个类对应的类名,从所述至少一个截图中确定所述聚合后的至少一个类对应的用户界面的截图;根据所述目标调用链包括的函数之间的调用路径确定所述聚合后的至少一个类之间的调用路径;将所述聚合后的至少一个类之间的调用路径、对应的用户界面的截图和所述变更函数作为测试指导数据。
在一实施例中,装置70还包括发送模块704,用于向终端设备发送所述测试指导数据,以使得所述终端设备在用户界面中展示所述测试指导数据,所述测试指导数据用于制定针对所述目标程序的补充测试用例。
本发明实施例提供的装置70通过获取模块701获取到提交信息和目标程序的调用链数据,并利用确定模块702确定出和变更函数关联的目标调用链,之后采用聚合模块703对目标调用链进行聚合处理,得到测试指导数据,并通过发送模块704将其发送给终端设备。该装置相关模块对数据的处理不仅达到了降低了目标调用链的复杂度的目的,并且聚合处理后得到测试指导数据可以更好地提高目标程序的测试覆盖率,降低漏测风险。
请参见图8,图8是本发明实施例提供的另一种数据处理装置的结构示意图,上述数据处理装置可以是运行于终端设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本发明实施例提供的方法中的相应步骤。该装置80可以包括:获取模块801、编译模块802、发送模块803,其中:
获取模块801,用于获取针对目标程序的提交信息,所述提交信息包括所述目标程序的源代码。
编译模块802,用于根据所述提交信息对所述目标程序进行编译,以得到所述目标程序的调用链数据,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径。
发送模块803,用于将所述提交信息和所述调用链数据发送至服务器,以使得服务器根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,并对所述目标调用链包括的函数进行聚合处理,得到测试指导数据。
在一实施例中,编译模块802,具体用于:根据所述目标程序的源代码启动对所述目标程序的编译;在编译过程中利用编译插件获取所述目标程序对应的语法表示结构,并利用语法树匹配器对所述语法表示结构进行分析处理,得到所述目标程序的调用链数据。
本发明实施例提供的装置80运用于终端设备,通过获取模块801得到目标程序的源代码,并利用编译模块802对其进行编译,得到调用链数据,利用发送模块803将提交信息和和调用链数据发送给服务器,以辅助服务器分析得到目标调用链,提高终端设备针对开发修改的代码的测试能力。
请参见图9,图9是本发明实施例提供的一种服务器的结构示意图。该服务器90可以包括处理器901、存储器902、网络接口903和至少一个通信总线904。其中,处理器901用于调度计算机程序,可以包括中央处理器、控制器、微处理器;存储器902用于存储计算机程序,可以包括高速随机存取存储器,非易失性存储器,例如磁盘存储器件、闪存器件;网络接口903提供数据通信功能,通信总线904负责连接各个通信元件。
其中,处理器901可以用于调用存储器中的计算机程序,以执行如下操作:
获取目标程序的调用链数据和提交信息,所述提交信息包括所述目标程序的源代码,所述调用链数据是根据所述提交信息对所述目标程序进行编译得到的,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径;
根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,所述目标调用链包括调用所述变更函数的各个函数所在的调用链;
对所述目标调用链包括的函数进行聚合处理,得到测试指导数据,所述测试指导数据包括按照类名聚合得到的类之间的调用路径、所述变更函数、类名备注信息和所述聚合得到的类对应的用户界面的截图中的一种或多种。
在一实施例中,处理器901具体用于:根据所述目标调用链包括的函数确定至少一个类名,所述目标调用链包括的每个函数的函数名包括类名;将所述目标调用链包括的函数按照所述至少一个类名进行聚合,得到聚合后的至少一个类;根据所述聚合后的至少一个类确定测试指导数据。
在一实施例中,处理器901具体用于:获取所述目标程序在运行时产生的用户界面的至少一个截图,每个截图用于指示所述目标程序的一个类对应的功能;根据所述聚合后的至少一个类对应的类名,从所述至少一个截图中确定所述聚合后的至少一个类对应的用户界面的截图;根据所述目标调用链包括的函数之间的调用路径确定所述聚合后的至少一个类之间的调用路径;将所述聚合后的至少一个类之间的调用路径、对应的用户界面的截图和所述变更函数作为测试指导数据。
在一实施例中,处理器901具体用于:向终端设备发送所述测试指导数据,以使得所述终端设备在用户界面中展示所述测试指导数据,所述测试指导数据用于制定针对所述目标程序的补充测试用例。
应当理解,本发明实施例中所描述的服务器可以实现实施例中对数据处理方法的描述,也可执行对应实施例对数据处理装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也在此不再赘述。
请参见图10,图10是本发明实施例一种终端设备的结构示意图。该终端设备1000可以是上述图1a的终端设备101,可以包括处理器1001、至少一个通信总线1002、输入输出控制设备1003、网络接口1004、存储器1005。其中,处理器1001用于调度计算机程序,可以是中央处理器(Central Processing Unit,CPU)、控制器、微处理器、单片机或其他电子元件实现对计算机指令的解读和数据的处理的任一种,通信总线1002负责连接各个通信原件,输入输出控制设备1003包括但不限于显示屏(Display)以及键盘(keyboard),这里的显示屏可以是液晶显示屏或者电子墨水显示屏,输入设备可以是物理键盘、触控键盘、触控板、鼠标等。网络接口1004可以是有线或者无线网络接口,用于提供数据通信功能,存储器1005包括应用程序管理、用户接口模块、网络通信模块、操作系统,可以是非易失性存储器或者易失性存储器。非易失性存储器可包括只读存储器(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)等。
其中,处理器1001通过调用存储器1005中的计算机程序,以执行如下操作:
获取针对目标程序的提交信息,所述提交信息包括所述目标程序的源代码;
根据所述提交信息对所述目标程序进行编译,以得到所述目标程序的调用链数据,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径;
将所述提交信息和所述调用链数据发送至服务器,以使得服务器根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,并对所述目标调用链包括的函数进行聚合处理,得到测试指导数据。
在一实施例中,处理器1001具体还用于:根据所述目标程序的源代码启动对所述目标程序的编译;在编译过程中利用编译插件获取所述目标程序对应的语法表示结构,并利用语法树匹配器对所述语法表示结构进行分析处理,得到所述目标程序的调用链数据。
应当理解,本发明实施例中所描述的终端设备可以实现实施例中对数据处理方法的描述,也可执行对应实施例对数据处理装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也在此不再赘述。
需要说明的是,前述所提及的服务器或者终端设备都属于计算机设备的一种,若文中提及计算机设备,可以指服务器或终端设备中任意一种。
此外,还应指出,本发明实施例还提供一种存储介质,该存储介质中存储了前述数据处理方法的计算机程序,该计算机程序包括程序指令,当一个或多个处理器加载并执行该程序指令,可以实现实施例一种对数据处理方法的描述,这里不再赘述,对采用相同方法的有益效果描述,也在此不再赘述。可以理解的是,程序指令可以被部署在一个或能够互相通信的多个计算机设备上执行。
本发明实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法的实施例中所执行的步骤。
本领域技术人员还可以进一步意识到,结合本说明书所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、计算机软件或者二者的结合实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本发明的范围。
最后,还需说明的是,本发明的说明书和权利要求书及上述附图中的术语,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据处理方法,其特征在于,应用于服务器,所述方法包括:
获取目标程序的调用链数据和提交信息,所述提交信息包括所述目标程序的源代码,所述调用链数据是根据所述提交信息对所述目标程序进行编译得到的,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径;
根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,所述目标调用链包括调用所述变更函数的各个函数所在的调用链;
对所述目标调用链包括的函数进行聚合处理,得到测试指导数据,所述测试指导数据包括按照类名聚合得到的类之间的调用路径、所述变更函数、类名备注信息和所述聚合得到的类对应的用户界面的截图中的一种或多种。
2.如权利要求1所述的方法,其特征在于,所述对所述目标调用链包括的函数进行聚合处理,得到测试指导数据,包括:
根据所述目标调用链包括的函数确定至少一个类名,所述目标调用链包括的每个函数的函数名包括类名;
将所述目标调用链包括的函数按照所述至少一个类名进行聚合,得到聚合后的至少一个类;
根据所述聚合后的至少一个类确定测试指导数据。
3.如权利要求2所述的方法,其特征在于,所述根据所述聚合后的至少一个类确定测试指导数据,包括:
获取所述目标程序在运行时产生的用户界面的至少一个截图,每个截图用于指示所述目标程序的一个类对应的功能;
根据所述聚合后的至少一个类对应的类名,从所述至少一个截图中确定所述聚合后的至少一个类对应的用户界面的截图;
根据所述目标调用链包括的函数之间的调用路径确定所述聚合后的至少一个类之间的调用路径;
将所述聚合后的至少一个类之间的调用路径、对应的用户界面的截图和所述变更函数作为测试指导数据。
4.如权利要求1~3中任一项所述的方法,其特征在于,所述对所述目标调用链包括的函数进行聚合处理,得到测试指导数据之后,还包括:
向终端设备发送所述测试指导数据,以使得所述终端设备在用户界面中展示所述测试指导数据,所述测试指导数据用于制定针对所述目标程序的补充测试用例。
5.如权利要求1所述的方法,其特征在于,所述根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,包括:
从所述提交信息包括的所述目标程序的源代码中获取所述变更函数;
根据每条调用链指示的函数之间的调用路径,从所述至少一条调用链中确定调用所述变更函数的目标调用链。
6.一种数据处理方法,其特征在于,应用于终端设备,所述方法包括:
获取针对目标程序的提交信息,所述提交信息包括所述目标程序的源代码;
根据所述提交信息对所述目标程序进行编译,以得到所述目标程序的调用链数据,所述调用链数据包括至少一条调用链,每条调用链用于指示所述目标程序在编译过程中函数之间的调用路径;
将所述提交信息和所述调用链数据发送至服务器,以使得服务器根据所述调用链数据和所述提交信息确定所述源代码中的变更函数关联的目标调用链,并对所述目标调用链包括的函数进行聚合处理,得到测试指导数据。
7.如权利要求6所述的方法,其特征在于,所述根据所述提交信息对所述目标程序进行编译,以得到所述目标程序的调用链数据,包括:
根据所述目标程序的源代码启动对所述目标程序的编译;
在编译过程中利用编译插件获取所述目标程序对应的语法表示结构,并利用语法树匹配器对所述语法表示结构进行分析处理,得到所述目标程序的调用链数据。
8.一种服务器,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,调用所述存储器中的所述计算机程序,用于执行如权利要求1~5任一项所述的数据处理方法。
9.一种终端设备,其特征在于,包括:网络接口、处理器和存储器,所述网络接口、处理器与存储器相连接,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如权利要求6或7所述的数据处理方法。
10.一种存储介质,其特征在于,所述存储介质存储计算机程序,所述计算机程序包括程序指令,一个或多个处理器加载并执行所述程序指令,以执行如权利要求1~5任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110073906.6A CN114816971A (zh) | 2021-01-19 | 2021-01-19 | 一种数据处理方法、相关设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110073906.6A CN114816971A (zh) | 2021-01-19 | 2021-01-19 | 一种数据处理方法、相关设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816971A true CN114816971A (zh) | 2022-07-29 |
Family
ID=82524541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110073906.6A Pending CN114816971A (zh) | 2021-01-19 | 2021-01-19 | 一种数据处理方法、相关设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816971A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116452208A (zh) * | 2023-06-20 | 2023-07-18 | 建信金融科技有限责任公司 | 变更交易码的确定方法、装置、设备及介质 |
CN117009240A (zh) * | 2023-08-18 | 2023-11-07 | 广州Tcl互联网小额贷款有限公司 | 代码分析方法、系统、装置、电子设备及存储介质 |
-
2021
- 2021-01-19 CN CN202110073906.6A patent/CN114816971A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116452208A (zh) * | 2023-06-20 | 2023-07-18 | 建信金融科技有限责任公司 | 变更交易码的确定方法、装置、设备及介质 |
CN116452208B (zh) * | 2023-06-20 | 2023-09-22 | 建信金融科技有限责任公司 | 变更交易码的确定方法、装置、设备及介质 |
CN117009240A (zh) * | 2023-08-18 | 2023-11-07 | 广州Tcl互联网小额贷款有限公司 | 代码分析方法、系统、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10108535B2 (en) | Web application test script generation to test software functionality | |
KR101989802B1 (ko) | 테스트 케이스를 이용하여 테스트를 수행하는 방법 및 장치 | |
US8490050B2 (en) | Automatic generation of user interfaces | |
US8732669B2 (en) | Efficient model checking technique for finding software defects | |
US8875110B2 (en) | Code inspection executing system for performing a code inspection of ABAP source codes | |
CN110704297B (zh) | 代码评审方法、装置、计算机设备及存储介质 | |
CN110716870B (zh) | 服务的自动化测试方法及装置 | |
CN102667730A (zh) | 设计时调试 | |
US20140143762A1 (en) | Symbolic execution of dynamic programming languages | |
US11042467B2 (en) | Automated searching and identification of software patches | |
WO2021169227A1 (zh) | 一种代码处理方法、装置、设备及介质 | |
CN114816971A (zh) | 一种数据处理方法、相关设备及存储介质 | |
CN111897727A (zh) | 软件测试方法、装置、计算机设备及存储介质 | |
CN116560683A (zh) | 软件更新方法、装置、设备及存储介质 | |
CN115599359A (zh) | 一种代码生成方法、装置、设备及介质 | |
US11526429B1 (en) | Identifying critical methods and critical paths in software code | |
CN113885876A (zh) | 一种参数校验方法、装置、存储介质及计算机系统 | |
CN114185791A (zh) | 一种数据映射文件的测试方法、装置、设备及存储介质 | |
CN117632710A (zh) | 测试代码的生成方法、装置、设备及存储介质 | |
Lavoie et al. | A case study of TTCN-3 test scripts clone analysis in an industrial telecommunication setting | |
US8943476B2 (en) | System and method to in-line script dependencies | |
CN112965910B (zh) | 自动化回归测试方法、装置、电子设备、存储介质 | |
Ben Charrada et al. | An automated hint generation approach for supporting the evolution of requirements specifications | |
CN113220586A (zh) | 一种自动化的接口压力测试执行方法、装置和系统 | |
CN113138767A (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 |