CN116339742A - 获取函数的方法、装置及存储介质 - Google Patents

获取函数的方法、装置及存储介质 Download PDF

Info

Publication number
CN116339742A
CN116339742A CN202310233775.2A CN202310233775A CN116339742A CN 116339742 A CN116339742 A CN 116339742A CN 202310233775 A CN202310233775 A CN 202310233775A CN 116339742 A CN116339742 A CN 116339742A
Authority
CN
China
Prior art keywords
test
function
candidate
code
test method
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
Application number
CN202310233775.2A
Other languages
English (en)
Inventor
申博
周建祎
梁广泰
王千祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Huawei Cloud Computing Technology Co ltd
Original Assignee
Shenzhen Huawei Cloud Computing Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Huawei Cloud Computing Technology Co ltd filed Critical Shenzhen Huawei Cloud Computing Technology Co ltd
Priority to CN202310233775.2A priority Critical patent/CN116339742A/zh
Publication of CN116339742A publication Critical patent/CN116339742A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种获取函数的方法、装置及存储介质,属于计算机领域。所述方法包括:获取待生成的目标函数的描述信息、函数签名和第一测试方法,所述描述信息用于描述所述目标函数实现的功能,所述函数签名用于标识所述目标函数,所述第一测试方法用于测试所述目标函数;基于所述第一测试方法、所述描述信息和所述函数签名,生成多个候选函数;基于所述第一测试方法测试所述多个候选函数中的每个候选函数,得到所述每个候选函数的测试结果;基于所述每个候选函数的测试结果从所述多个候选函数中选择所述目标函数。本申请能够提高函数级代码生成的准确性,并减小用户检查和选择所生成函数的时间。

Description

获取函数的方法、装置及存储介质
技术领域
本申请涉及计算机领域,特别涉及一种获取函数的方法、装置及存储介质。
背景技术
代码生成技术一直是软件工程和人工智能领域学术研究的热点,并且因其巨大商业价值而备受工业界关注。近两年来,得益于人工智能研究在自然语言处理和程序语言处理方面取得的成果,将代码生成相关技术从学术研究逐步推向实际应用。
在相关技术中可以使用代码生成技术生成业务代码,业务代码往往包括多个函数。相关技术使用代码生成技术生成业务代码中的部分或全部函数,这样辅助用户编写业务代码,提高业务代码的编写效率。但是相关技术采用的代码生成技术生成函数的精度不高,这样需要用户花费大量时间检查生成的函数。
发明内容
本申请提供了一种获取函数的方法、装置及存储介质,以提高函数级代码生成的准确性,并减小用户检查和选择所生成函数的时间。所述技术方案如下:
第一方面,本申请提供了一种获取函数的方法,在所述方法中,获取待生成的目标函数的描述信息、函数签名和第一测试方法,该描述信息用于描述目标函数实现的功能,该函数签名用于标识目标函数,第一测试方法用于测试目标函数。基于第一测试方法、该描述信息和该函数签名,生成多个候选函数。基于第一测试方法测试该多个候选函数中的每个候选函数,得到每个候选函数的测试结果。基于每个候选函数的测试结果从该多个候选函数中选择目标函数。
由于获取第一测试方法,这样基于第一测试方法、目标函数的描述信息和函数签名,生成多个候选函数,从而丰富了生成候选函数所使用的信息,提高生成候选函数的精度,即提高函数级代码生成的准确性。以及,在使用第一测试方法测试该多个候选函数时提高测试效率。又由于通过第一测试方法自动对多个侯选函数进行测试,相比人工测试,大幅度提高了测试效率,减小用户检查和选择所生成函数的时间。
在一种可能的实现方式中,响应于针对待生成的业务代码的输入操作,获取该输入操作向业务代码输入的目标函数的描述信息和函数签名。显示第一测试文件,第一测试文件包括第二测试方法,第二测试方法是基于该函数签名生成的。响应于针对第一测试文件的修改操作,获取第一测试方法,该修改操作用于对第一测试文件包括的第二测试方法进行修改和/或补充得到第一测试方法。
由于基于第二测试方法是基于该函数签名生成的,然后对第二测试方法进行修改和/或补充得到第一测试方法,这样可以减小需要修改或补充的内容,不仅提高了得到第一测试方法的效率,还减小了得到第一测试方法所需要的时间。
在另一种可能的实现方式中,响应于该输入操作,显示第一提示元素,第一提示元素用于提示是否生成测试方法。响应于第一提示元素被触发产生的命令,获取配置信息,该配置信息包括测试框架和第一测试文件的文件信息,该测试框架包括测试方法生成模板。基于该测试方法生成模板、该文件信息和该目标函数的函数签名,通过该测试框架生成第一测试文件。
由于显示第一提示元素,第一提示元素用于提示是否生成测试方法,这样让用户自主选择是否采用自动生成方式生成测试方法,能够及时提醒用户。另外,该测试框架包括测试方法生成模板,通过测试框架保证能够成功生成第二测试方法。
在另一种可能的实现方式中,第一测试方法包括多个测试样例,每个测试样例包括输入数据和期望输出数据。将第一候选函数与待生成的业务代码结合得到目标代码,待生成的业务代码是目标函数属于的业务代码,该多个候选函数包括第一候选函数,目标代码用于对每个测试样例包括的输入数据进行处理,得到每个测试样例对应的处理结果。获取目标代码输出的每个测试样例对应的处理结果。分别比较每个测试样例包括的期望输出数据和每个测试样例对应的处理结果,得到第一候选函数的测试结果。如此实现通过第一测试方法自动测试该多个候选函数,减小测试候选函数所需要的时间。
在另一种可能的实现方式中,对目标代码进行编译。在成功编译目标代码时,向目标代码输入每个测试样例包括的输入数据,使目标代码对每个测试样例包括的输入数据进行处理。这样对编辑成功的目标代码进行测试,减小测试的数据量。
第二方面,本申请提供了一种获取函数的装置,用于执行第一方面或第一方面的任意一种可能的实现方式中的方法。具体地,所述装置包括用于执行第一方面或第一方面的任意一种可能的实现方式中的方法的单元。
第三方面,本申请提供了一种获取函数的集群,所述集群包括至少一个计算设备,所述至少一个计算设备中的每个设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述集群实现第一方面或第一方面的任意一种可能的实现方式中的方法。
第四方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过处理器进行加载来实现上述第一方面或第一方面任意可能的实现方式的方法。
第五方面,本申请提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序通过处理器进行加载来执行上述第一方面或第一方面任意可能的实现方式的方法。
第六方面,本申请提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第一方面或第一方面任意可能的实现方式的方法。
附图说明
图1是本申请实施例提供的一种网络架构示意图;
图2是本申请实施例提供的一种获取函数的方法流程图;
图3是本申请实施例提供的一种业务代码编辑界面的示意图;
图4是本申请实施例提供的一种第一配置界面的示意图;
图5是本申请实施例提供的一种第二配置界面的示意图;
图6是本申请实施例提供的一种同屏显示业务代码编辑界面和第一界面的示意图;
图7是本申请实施例提供的一种同屏显示业务代码编辑界面、第一界面和多个第二界面的示意图;
图8是本申请实施例提供的一种显示语法错误的示意图;
图9是本申请实施例提供的一种显示测试通过的测试样例数量的示意图;
图10是本申请实施例提供的一种获取函数的装置结构示意图;
图11是本申请实施例提供的一种计算设备的结构示意图;
图12是本申请实施例提供的一种获取函数的集群的结构示意图;
图13是本申请实施例提供的另一种获取函数的集群的结构示意图。
具体实施方式
下面将结合附图对本申请实施方式作进一步地详细描述。
用户可以使用终端设备来开发业务代码,通常业务代码包括至少一个函数,为了增加开发业务代码的效率,减小用户编写程序代码的工作量,终端设备可以自动获取业务代码包括的函数,将获取的函数写入到业务代码中。
在一些实施例中,终端设备本地有代码编辑器,该代码编辑器向用户提供编辑业务代码的功能,终端设备通过该代码编辑器显示业务代码编辑界面,用户可以在该业务代码编辑界面中输入业务代码。可选地,代码编辑器可以为轻量级编辑器(visual studiocode,VScode)或集成开发环境(integrated development environment,IDE)等程序开发工具。
在一些实施例中,业务代码通常包括至少一个函数,终端设备的代码编辑器上安装有代码生成插件,该代码生成插件具有自动生成函数的功能,终端设备通过该代码生成插件具有的该功能自动生成业务代码包括的函数,这样可以节省用户编辑业务代码的人力成本。
其中,生成业务代码包括的函数的详细实现过程,将在后续图2所示的方法200中进行介绍,在此先不详细说明。
在一些实施例中,生成函数的功能是一种云服务,终端设备可以请求提供该云服务的云计算设备生成业务代码包括的函数。
参见图1,本申请实施例提供了一种网络架构100,该网络架构100包括云计算设备101和终端设备102,云计算设备101提供用于生成函数的云服务,云计算设备101与终端设备102通信。该云计算设备101是集群中的计算设备。
终端设备102需要生成业务代码的函数时,可以向云计算设备101发送函数生成请求消息,该函数生成请求消息包括生成函数所需要的信息。
云计算设备101接收该函数生成请求消息,基于该函数生成请求消息包括的生成函数所需要的信息,生成该业务代码包括的函数,向终端设备102发送函数生成响应消息,该函数生成响应消息包括生成的函数。
终端设备102接收该函数生成响应消息,将该函数生成响应消息包括的函数写入到该业务代码中。
其中,云计算设备101生成业务代码包括的函数的详细实现过程,将在后续图2所示的方法200中进行介绍,在此先不详细说明。
参见图2,本申请实施例提供了一种获取函数的方法200,所述方法200由第一设备执行,第一设备可能是终端设备或第一设备可能是图1所示的网络架构100中的云计算设备101。所述方法200包括如下步骤201至步骤205的流程。
步骤201:第一设备获取待生成的目标函数的描述信息和函数签名,该描述信息用于描述目标函数实现的功能,该函数签名用于标识目标函数。
在一些实施例中,第一设备为终端设备,第一设备显示业务代码编辑界面。用户可以在业务代码编辑界面中输入待生成的业务代码包括的代码语句。
在一些实施例中,第一设备具有自动补全代码的功能。在用户向业务代码编辑界面中输入某条代码语句时,基于用户输入的该代码语句包括的部分字符自动补全整条该代码语句。例如,假设用户需要向业务代码编辑界面中输入代码语句System.out.println(“a”)。在用户向业务代码编辑界面中该条代码语句中的“sys”时,第一设备为自动补全System.out.println(“”),用户只需在该代码语句中输入需要打印的字符a,就可以得到该条代码语句System.out.println(“a”)。
通常一个业务代码包括至少一个函数和除该至少一个函数之外的内容。用户需要在业务代码编辑界面中输入待生成的业务代码包括的一条条代码语句,所以业务代码编辑界面包括当前未编写完成的待生成的业务代码。
当用户在业务代码编辑界面中输入待生成的目标函数的描述信息和函数签名时,第一设备会检测到输入操作在业务代码编辑界面包括的待生成业务代码中输入的待生成的目标函数的描述信息和函数签名,并从业务代码编辑界面中获取待生成的目标函数的描述信息和函数签名。可选地,该输入操作可以是用户通过键盘或虚拟键盘向业务代码编辑界面输入的内容的操作。
用户在业务代码编辑界面中输入待生成的目标函数时,首先会在业务代码编辑界面中输入目标函数的函数声明,然后输入目标函数的函数签名和描述信息。
第一设备在业务代码编辑界面中检测到用户输入的函数声明时,获取用户输入的位于该函数声明之后的目标函数的函数签名和描述信息。
在一些实施例中,第一设备为云计算设备,终端设备获取待生成的目标函数的描述信息和函数签名,以及获取业务代码编辑界面包括的待生成的业务代码。向第一设备发送函数生成请求消息,该函数生成请求消息包括待生成的业务代码和待生成的目标函数的描述信息和函数签名。第一设备接收该函数生成请求消息,从该函数生成请求消息中获取待生成的目标函数的描述信息和函数签名,以及还获取待生成的业务代码。
步骤202:第一设备获取第一测试方法,第一测试方法用于测试目标函数。
在步骤202中,可以通过如下2021至2024的操作获取第一测试方法,该2021-2024的操作如下所示。
2021:第一设备在检测到用于输入目标函数的函数签名和描述信息的输入操作时,响应于该输入操作,显示第一提示元素,第一提示元素用于提示是否生成第一测试方法,第一测试方法用于测试目标函数。
在一些实施例中,第一提示元素可以是个提示按钮。例如,参见图3,第一设备响应于该输入操作,显示第一界面。
可选地,第一界面是一个悬浮界面,悬浮在业务代码编辑界面上。第一界面包括第一提示元素,第一提示元素可供用户选择是否生成第一测试方法。如图3所示,第一提示元素包括“自动生成测试方法(create test?)”的提示信息、供用户选择“是(yes)”和“否(no)”两个选项。如果用户选择“是”这个第一选项,第一选项产生命令(即第一提示元素被触发产生的命令),第一设备响应于该命令,执行如下2022的操作,如果用户选择“否”这个第二选项,第一设备响应于第二选项,基于目标函数的函数签名和描述信息,调用代码编辑器中的代码生成插件生成目标函数。
在一些实施例中,第一提示元素是代码编辑器显示的提示栏,用于询问用户是否生成目标函数对应的测试方法。
在一些实施例中,用户可以事先在配置第一设备自动显示第一提示元素。
例如,参见图4,第一设备可以向用户显示第一配置界面,用户可以在第一配置界面中打开向用户自动提示生成测试方法的功能。第一设备在检测到向用户自动提示生成测试方法的功能被打开时,响应于该输入操作,显示第一提示元素。
在一些实施例中,第一设备为云计算设备,第一设备在终端设备上显示第一配置界面,用户可以在第一配置界面中打开向用户自动提示生成测试方法的功能。终端设备向第一设备发送第一指示,第一指示用于指示用户在第一配置界面中打开向用户自动提示生成测试方法的功能。第一设备接收第一指示,响应于该输入操作,在业务代码逻辑界面上显示第一提示元素。
例如,参见图4,第一配置界面包括“向用户自动提示生成测试方法(Auto-CreateTest for New Method)”的选项
用户还可能在第一配置界面中配置其他内容,例如,用户可以配置“代码补全模式(Completion Mode)”,如配置“代码补全模式”为“快速模式(fast)”。再例如,用户可以配置“函数级补全(Function-level Completion)”,如配置“函数级补全”为“打开状态(no)”。
2022:第一设备响应于第一提示元素被触发产生的命令,获取配置信息,该配置信息包括测试框架和第一测试文件的文件信息,该测试框架包括测试方法生成模板。
在一些实施例中,该配置信息还包括数据模拟框架和/或测试方法生成策略等内容。
在一些实施例中,第一测试文件的文件信息包括第一测试文件的文件名称(可以和第一测试方法的名称相同)、第一测试文件的存储路径、和/或、第一测试文件所在的数据包等
在2022中,第一设备响应于第一提示元素被触发产生的命令,显示第二配置界面,第二配置界面包括多个测试框架。用户可以在第二配置界面中选择测试框架以及输入第一测试文件的文件信息。第一设备从第二配置界面中获取用户选择的测试框架和用户输入的第一测试文件的文件信息。
在一些实施例中,第一设备为云计算设备,终端设备向第一设备发送第一提示元素被触发产生的命令。第一设备接收该命令,响应于该命令,在终端设备上显示第二配置界面,以让用户以在第二配置界面中选择测试框架以及输入第一测试文件的文件信息。第一设备接收终端设备返回的第二配置界面,从第二配置界面中获取用户选择的测试框架和用户输入的第一测试文件的文件信息。
在一些实施例中,测试框架包括如下一种或多种,Java单元测试框架(JUnit)、支持Java或Groovy的单元测试框架(Spock)或下一代测试框架(test next generation,TestNG)等。其中,Java和Groovy为两种编程语言。
例如,第一设备显示如图5所示的第二配置界面,第二配置界面包括“测试目的包(Test destination package)”输入元素、“测试类名称(Test class name)”输入元素、“存储路径(Test source root)”输入元素和“测试框架(Test framework)”输入元素。
用户可以在第二配置界面包括的“测试目的包”输入元素输入第一测试文件所在的数据包(如图5所示的数据包“com.github”),在“测试方法名称”输入元素中输入第一测试文件的文件名称(如图5所示的文件名称“MainTest”),在“存储路径”输入元素中选择第一测试文件的存储路径(如图5所示的存储路径“D:/dev/project/src/test/java”),以及在“测试框架”输入元素中选择测试框架(如图5所示的测试框架“JUnit”)。
在图5所示的第二配置界面中,“测试框架”输入元素是一个下拉列表,该下拉列表包括多个测试框架,用户可以在该下拉列表中选择测试框架。
第一设备从第二配置界面中读取第一测试文件所在的数据包“com.github”、第一测试文件的文件名称“MainTest”、第一测试文件的存储路径“D:/dev/project/src/test/java”和测试框架“JUnit”。
还例如,第二配置界面还包括“测试方法生成策略(Generation strategy)”输入元素和/或“数据模拟框架(Mock framework)”输入元素等,用户可以在第二配置界面包括的“测试方法生成策略(Generation strategy)”输入元素中输入测试方法生成策略(如图5所示的测试方法生成策略“Template:Basic”),在第二配置界面包括的“数据模拟框架”输入元素中输入数据模拟框架(如图5所示的数据模拟框架“Mockito”)。
第一设备还从第二配置界面中读取测试方法生成策略“Template:Basic”和/或数据模拟框架“Mockito”。
2023:第一设备基于该测试方法生成模板、第一测试文件的文件信息和目标函数的函数签名,通过该测试框架生成第一测试文件,第一测试文件包括第二测试方法。
在2023中,第一设备基于该测试方法生成模型和目标函数的函数签名生成第二测试方法,基于第一测试文件的文件信息生成第一测试文件,第一测试文件包括该第二测试方法。
在一些实施例中,第一设备基于该测试方法生成模型、目标函数的函数签名、该测试方法生成策略和该数据模拟框架生成第二测试方法。
在一些实施例中,该测试方法生成模板包括函数调用语句和断言语句,该函数调用语句中的需要调用的函数签名和需要输入的数据是空白的。该断言语句中的期望输出数据是空白的。
如下所示的测试方法生成模板示例,该测试方法生成模板中的函数调用语句为“<output_type>result=<class_name>.<method_name>(<input>...)”,<output_type>表示函数调用语句的类型,method_name表示需要填充的函数签名,<input>表示需要输入的输入数据。
该测试方法生成模板中的断言语句为“Assertion.assertEquals(<expected_output>,result)”,expected_output表示需要输入的期望输出数据。
Figure BDA0004121799380000071
假设,目标函数的函数签名为“String getPlatform(String url)”,将该函数签名“String getPlatform(String url)”和上述测试方法生成模型组合成如下所示的第二测试方法。在第二测试方法中,函数调用语句的类型为String,这样得到函数调用语句为“String result=Demo.getPlatform(url:“string”)”,该函数调用语句用于调用目标函数“getPlatform”,并向目标函数“getPlatform”输入数据“string1”,使目标函数“getPlatform”对输入数据“string1”进行处理,得到处理结果“result”。
断言语句为“Assertion.assertEquals(expected:“string2”,output:result)”,该断言语句用于比较期望输出数据“string2”与该处理结果“result”是否相同,如果相同,表示目标函数“getPlatform”实现的功能是所需要的功能。
Figure BDA0004121799380000072
在一些实施例中,第一设备可以分成两个界面同屏显示业务代码和第二测试方法,业务代码第二测试方法分别在两个不同的界面上显示。
例如,参见图6,第一设备可以同屏显示业务代码编辑界面和第一界面,业务代码编辑界面包括业务代码,而第一界面包括第一测试文件中的第二测试方法。
在一些实施例中,第一设备是云计算设备,第一设备在终端设备上同屏显示业务代码编辑界面和第一界面,业务代码编辑界面包括业务代码,第一界面包括第一测试文件中的第二测试方法。
第一测试文件中的第二测试方法可能有问题,用户可以对第二测试方法进行修改,例如,用户可以对第二测试方法中的输入数据和期望输出数据进行修改,即第一设备还可能执行如下2024的操作。
2024:响应于针对第一测试文件的修改操作,获取第一测试方法,该修改操作用于对第一测试文件包括的第二测试方法进行修改和/或补充得到第一测试方法。
修改后的第一测试方法包括多个测试样例,该多个测试样例中的任一个测试样例包括输入数据和期望输出数据。
在一些实施例中,第一设备是云计算设备,终端设备响应于针对第一测试文件的修改操作,获取第一测试方法,向第一设备发送第一测试方法,第一设备接收第一测试方法。
步骤203:第一设备基于第一测试方法、目标函数的描述信息和目标函数的函数签名,生成多个候选函数。
在步骤203中,基于第一测试方法、目标函数的描述信息和目标函数的函数签名,通过用于生成函数的算法生成多个候选函数。
在步骤203中,生成多个候选函数所用的信息除了包括目标函数的描述信息和目标函数的函数签名外,还包括第一测试方法,从而丰富了生成多个候选函数所用的信息,提高生成候选函数的精度。
在一些实施例中,第一设备还显示该多个候选函数。可选地,第一设备可以同屏显示待生成业务代码、第一测试方法和该多个候选函数。
例如,参见图7,第一设备可以同屏显示业务代码编辑界面、第一界面和多个第二界面。如在图7所示的示例中,业务代码编辑界面位于第一界面的左侧,该多个第二界面位于第一界面的右侧。
业务代码编辑界面包括业务代码,第一界面包括第一测试文件中的第一测试方法,该多个第二界面中的任一个第二界面用于显示一个候选函数,且该多个第二界面中的每个第二界面显示的候选函数不同。
在一些实施例中,第一设备是云计算设备,第一设备在终端设备上同屏显示业务代码编辑界面、第一界面和多个第二界面。
步骤204:第一设备基于第一测试方法测试该多个候选函数中的每个候选函数,得到该每个候选函数的测试结果。
在步骤204中,第一设备通过如下2041至2044的操作获取每个候选函数的测试结果,该2041-2045的操作如下所示。
2041:第一设备通过对第一候选函数进行可编译性检查,检查第一候选函数是否存在语法错误,该多个候选函数包括第一候选函数。
2042:如果检查出第一候选函数没有语法错误,则将第一候选函数与待生成的业务代码结合得到目标代码。
待生成的业务代码是业务代码编辑界面中的代码,对于该多个候选函数中的任一个候选函数,为了便于说明将该任一个候选函数称为第一候选函数。第一设备可以从业务代码编辑界面中读取待生成的业务代码,将待生成的业务代码和第一候选函数结合得到目标代码。按上述相同的过程,将每个候选函数与待生成的业务代码结合,得到每个侯选函数对应的目标代码。
2043:第一设备对目标代码进行编译。
其中,单独的候选函数无法编译,需要将候选函数与待生成的业务代码组成一个完整的目标代码,才能对目标代码进行编译。待生成的业务代码是已经过编译后的代码,且待生成的业务代码不存在编译错误。
第一设备在对目标代码进行编译时,可以编译出目标代码是否存在的编译错误,如果目标代码中存在编译错误,表示目标代码包括的候选函数中存在编译错误,或者,目标代码在编译构建成二进制过程中涉及外部调用或依赖项的错误,或者,业务代码与候选函数结合后的目标代码有语法错误;如果目标代码中不存在编译错误,表示目标代码包括的候选函数中不存在编译错误。
按2043所示的方式,对其他每个目标代码进行编译,得到其他每个目标代码对应的候选函数是否存在编译错误,如此可以得到每个候选函数是否存在编译错误。
在一些实施例中,对于第一候选函数,如果第一候选函数存在语法错误和/或编译错误,第一设备可以在包括第一候选函数的第二界面上显示错误指示。如果第一候选函数不存在语法错误和编译错误,第一设备可以在包括第一候选函数的第二界面上显示正确指示。
例如,参见图8,可以使用在圆圈中填充“!”表示可编译性检查得到候选函数中的语法错误,可以使用在三角形中填充“!”表示通过编译得到候选函数中的编译错误,以及使用“√”表示正确指示,表示候选函数中不存在语法错误和编译错误。
第一设备可以获取没有语法错误和编译错误的每个候选函数对应的目标代码,然后对没有语法错误和编译错误的每个候选函数对应的目标代码执行如下操作。也就是说,如果第一候选函数没有语法错误和编译错误,对第一候选函数对应的目标代码执行如下2043-2044的测试操作。
如果第一候选函数没有语法错误和编译,用于显示第一候选函数的第二界面包括测试按钮,用户可以通过触发该测试按钮,来触发对第一候选函数对应的目标代码执行如下2043-2044的测试操作。
例如,参见图8,对于任一个没有语法错误和编译错误的候选函数,显示该候选函数的第二界面包括测试按钮“test”,用户可以点击测试按钮“test”触发对该候选函数对应的目标代码执行如下2043-2044的测试操作。
在一些实施例中,第一设备为云计算设备,终端设备在包括该候选函数的第二界面中显示测试按钮“test”。在用户点击该测试按钮时,终端设备向第一设备发送测试请求,该测试请求包括该候选函数的函数标识。第一设备接收该测试请求,基于该测试请求包括的该候选函数的函数标识,对该候选函数对应的目标代码执行如下2043-2044的测试操作。
在一些实施例中,第一设备还可以显示全部测试按钮,用户可以通过触发该全部测试按钮,来触发对没有语法错误和编译错误的每个候选函数对应的目标代码分别执行如下2043-2044的测试操作。
例如,参见图8,第一设备显示全部测试按钮“testall”,用户可以点击该全部测试按钮“testall”触发对没有语法错误和编译错误的每个候选函数对应的目标代码分别执行如下2043-2044的测试操作。
在一些实施例中,第一设备为云计算设备,在用户点击终端设备显示全部测试按钮时,终端设备向第一设备发送测试请求。第一设备接收该测试请求,基于该测试请求对没有语法错误和编译错误的每个候选函数对应的目标代码分别执行如下2043-2044的测试操作。
2044:第一设备在成功编译目标代码时,向目标代码输入每个测试样例包括的输入数据,使目标代码对每个测试样例包括的输入数据进行处理
在成功编译目标代码时,表示目标代码不存在语法错误和编译错误,也就是说,目标代码包括的候选函数也不存在语法错误和编译错误。这样,对于第一测试方法中的任一个测试样例,为了便于说明将该测试样例称为第一测试样例,第一设备通过第一测试方法,向目标代码输入第一测试方法包括的输入数据,使目标代码对第一测试样例包括的输入数据进行处理,得到第一测试样例对应的处理结果。
其中,第一设备运行第一测试方法,通过第一测试方法包括的函数调用语句,向目标函数中的候选函数输入第一测试样例中的输入数据,使目标代码进行运行。在运行到目标代码中的候选函数时,候选函数第一测试样例中的输入数据进行处理,得到处理结果,该处理结果为第一测试样例对应的处理结果,向第一测试方法返回第一测试样例对应的处理结果。
第一设备按上述过程,将第一测试方法中的其他每个测试样例中的输入数据,得到其他每个测试样例对应的处理结果。
2045:第一设备获取目标代码输出的每个测试样例对应的处理结果,分别比较每个测试样例包括的期望输出数据和每个测试样例对应的处理结果,得到第一候选函数的测试结果。
对于第一测试样例对应的处理结果,第一设备比较第一测试样例包括的期望输出数据和第一测试样例对应的处理结果。如果比较出第一测试样例包括的期望输出数据和第一测试样例对应的处理结果相同,表示对第一测试样例测试通过。如果比较出第一测试样例包括的期望输出数据和第一测试样例对应的处理结果不同,表示对第一测试样例测试未通过。
针对其他每个测试样例,第一设备按上述方式确定对其他每个测试样例是否测试通过。第一候选函数的测试结果包括测试通过的测试样例的数量。
参见图9,第一设备还在包括第一候选函数的第二界面中显示测试通过的测试样例数量。例如,在图9所示的包括候选函数1的第二界面中显示的测试通过的测试样例数量为“10/10”,表示共有10个测试样例,测试通过的测试样例数量为10。在图9所示的包括候选函数2的第二界面中显示的测试通过的测试样例数量为“8/10”,表示共有10个测试样例,测试通过的测试样例数量为8。
步骤205:第一设备基于该多个候选函数中的每个候选函数的测试结果从该多个候选函数中选择目标函数,将目标函数填写入待生成的业务代码中。
在一些实施例中,第一候选函数的测试结果包括第一侯选函数对应的目标代码通过的测试样例数量,第一设备可以选择通过的测试样例数量最多的一个候选函数作为目标函数;或者,第一设备可以选择通过的测试样例数量超过数量阈值的一个候选函数作为目标函数。将目标函数填写入待生成的业务代码中。
在一些实施例中,第一设备为云计算设备,第一设备在选择出目标函数后,向终端设备发送目标函数。终端设备接收目标函数,将目标函数填写入待生成的业务代码中。
在一些实施例中,第一设备可以选择通过的测试样例数量最多的至少一个候选函数作为候选目标函数;或者,第一设备可以选择通过的测试样例数量超过数量阈值的至少一个候选函数作为候选目标函数。
也就是说,第一设备可以选择多个候选目标函数,在包括任一个候选目标函数的第二界面上显示接受按钮,用户可以通过接受按钮来选择某个候选目标函数作为目标函数。第一设备获取用户选择的目标函数,将选择的目标函数填写到业务代码编辑界面包括的待生成的业务代码中。
例如,参见图9,第一设备在包括任一个候选目标函数的第二界面上显示接受按钮“accept”,用户可以通过点击某个第二界面包括的接受按钮“accept”,来选择该第二界面包括的候选目标函数作为目标函数。第一设备获取该第二界面中的目标函数,将获取的目标函数填写到业务代码编辑界面包括的待生成的业务代码中。
在一些实施例中,第一设备为云计算设备,第一设备在选择出至少一个候选目标函数后,对于任一个候选目标函数,在终端设备显示的包括该任一个候选目标函数的第二界面上显示接受按钮。用户可以通过接受按钮来选择该候选目标函数作为目标函数。终端设备获取用户选择的目标函数,将选择的目标函数填写到业务代码编辑界面包括的待生成的业务代码中。
如果每个候选目标函数都不符合用户的要求,用户可以对候选目标函数进行修改,第一设备获取用户修改后的目标函数,将修改后的目标函数填充到业务代码编辑界面包括的待生成的业务代码中。或者,
如果每个候选目标函数都不符合用户的要求,用户可以触发第一设备按上述步骤202-步骤205的操作重新生成函数。
在本申请实施例中,第一设备获取待生成的目标函数的描述信息、函数签名和第一测试方法。基于第一测试方法、目标函数的描述信息和函数签名,生成多个候选函数。由于该生成候选函数所需要的信息引入第一测试方法,可以提高生成的多个候选函数的精度,即提高函数级代码生成的准确性。基于第一测试方法测试该多个候选函数中的每个候选函数,得到每个候选函数的测试结果。基于该每个候选函数的测试结果从该多个候选函数中选择目标函数。由于生成的候选函数的精度较高,这样从精度较高的候选函数中选择实现所需要功能的候选函数的概率较高,从而不需要用户手动花费大量时间检视、理解和修改生成的候选函数,节省了人力成本,从而减小用户检查和选择所生成函数的时间。
参见图10,本申请实施例提供了一种获取函数的装置1000,所述装置100可以部署在图1所示的网络架构100的终端设备或云计算设备上,或者,所述装置100可以部署在图2所示方法200的第一设备上。所述装置1000包括:
获取单元1001,用于获取待生成的目标函数的描述信息、函数签名和第一测试方法,该描述信息用于描述目标函数实现的功能,该函数签名用于标识目标函数,第一测试方法用于测试目标函数;
处理单元1002,用于基于第一测试方法、该描述信息和该函数签名,生成多个候选函数;
处理单元1002,还用于基于第一测试方法测试该多个候选函数中的每个候选函数,得到每个候选函数的测试结果;
处理单元1002,还用于基于每个候选函数的测试结果从该多个候选函数中选择目标函数。
可选地,获取单元1001获取目标函数的描述信息、函数签名和第一测试方法的详细实现过程参见图2所示方法200的步骤201和步骤202的相关内容,在此不再详细说明。
可选地,处理单元1002生成多个候选函数的详细实现过程参见图2所示方法200的步骤203的相关内容,在此不再详细说明。
可选地,处理单元1002得到每个候选函数的测试结果的详细实现过程参见图2所示方法200的步骤204的相关内容,在此不再详细说明。
可选地,处理单元1002从该多个候选函数中选择目标函数的详细实现过程参见图2所示方法200的步骤205的相关内容,在此不再详细说明。
可选地,获取单元1001,用于:
响应于针对待生成的业务代码的输入操作,获取该输入操作向业务代码输入的目标函数的描述信息和函数签名;
显示第一测试文件,第一测试文件包括第二测试方法,第二测试方法是基于该函数签名生成的;
响应于针对第一测试文件的修改操作,获取第一测试方法,该修改操作用于对第一测试文件包括的第二测试方法进行修改和/或补充得到第一测试方法。
可选地,获取单元1001获取输入操作向业务代码输入的目标函数的描述信息和函数签名的详细实现过程参见图2所示方法200的步骤201的相关内容,在此不再详细说明。
可选地,获取单元1001显示第一测试文件的详细实现过程参见图2所示方法200的步骤202的相关内容,在此不再详细说明。
可选地,获取单元1001获取第一测试方法的详细实现过程参见图2所示方法200的步骤202的相关内容,在此不再详细说明。
可选地,所述装置1000还包括显示单元1003;
显示单元1003,用于响应于所述输入操作,显示第一提示元素,第一提示元素用于提示是否生成测试方法;
获取单元1001,还用于:
响应于第一提示元素被触发产生的命令,获取配置信息,该配置信息包括测试框架和第一测试文件的文件信息,该测试框架包括测试方法生成模板;
基于该测试方法生成模板、该文件信息和目标函数的函数签名,通过测试框架生成第一测试文件。
可选地,显示单元1003显示第一提示元素的详细实现过程参见图2所示方法200的步骤202的相关内容,在此不再详细说明。
可选地,获取单元1001获取配置信息的详细实现过程参见图2所示方法200的步骤202的相关内容,在此不再详细说明。
可选地,获取单元1001通过测试框架生成第一测试文件的详细实现过程参见图2所示方法200的步骤202的相关内容,在此不再详细说明。
可选地,第一测试方法包括多个测试样例,每个测试样例包括输入数据和期望输出数据,
处理单元1002,用于:
将第一候选函数与待生成的业务代码结合得到目标代码,待生成的业务代码是目标函数属于的业务代码,该多个候选函数包括第一候选函数,目标代码用于对每个测试样例包括的输入数据进行处理,得到每个测试样例对应的处理结果;
获取目标代码输出的每个测试样例对应的处理结果;
分别比较每个测试样例包括的期望输出数据和每个测试样例对应的处理结果,得到第一候选函数的测试结果。
可选地,处理单元1002将第一候选函数与待生成的业务代码结合得到目标代码的详细实现过程参见图2所示方法200的步骤2042的相关内容,在此不再详细说明。
可选地,处理单元1002获取目标代码输出的每个测试样例对应的处理结果的详细实现过程参见图2所示方法200的步骤2044的相关内容,在此不再详细说明。
可选地,处理单元1002得到第一候选函数的测试结果的详细实现过程参见图2所示方法200的步骤2045的相关内容,在此不再详细说明。
可选地,处理单元1002,还用于:
对目标代码进行编译;
在成功编译目标代码时,向目标代码输入每个测试样例包括的输入数据,使目标代码对每个测试样例包括的输入数据进行处理。
可选地,处理单元1002对目标代码进行编译的详细实现过程参见图2所示方法200的步骤2043的相关内容,在此不再详细说明。
可选地,处理单元1002向目标代码输入每个测试样例包括的输入数据的详细实现过程参见图2所示方法200的步骤2044的相关内容,在此不再详细说明。
其中,获取单元1001、处理单元1002和显示单元1003均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以处理单元1002为例,介绍处理单元1002的实现方式。类似的,获取单元1001和显示单元1003的实现方式可以参考处理单元1002的实现方式。
单元作为软件功能单元的一种举例,处理单元1002可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,处理单元1002可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
单元作为硬件功能单元的一种举例,处理单元1002可以包括至少一个计算设备,如服务器等。或者,处理单元1002也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
处理单元1002包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。处理单元1002包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,处理单元1002包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,获取单元1001和处理单元1002可以用于执行上述任意实施例提供的方法中的任意步骤,显示单元1003可以用于执行上述任意实施例提供的方法中的任意显示步骤。获取单元1001、处理单元1002和显示单元1003负责实现的步骤可根据需要指定,通过获取单元1001、处理单元1002和显示单元1003分别实现上述任意实施例提供的方法中不同的步骤来实现获取函数的装置1000的全部功能。
在本申请实施例中,由于获取单元获取第一测试方法,这样处理单元基于第一测试方法、目标函数的描述信息和函数签名,生成多个候选函数,从而丰富了生成候选函数所使用的信息,提高生成候选函数的精度,即提高函数级代码生成的准确性。以及,处理单元在使用第一测试方法测试该多个候选函数时提高测试效率。又由于处理单元通过第一测试方法自动对多个侯选函数进行测试,相比人工测试,大幅度提高了测试效率,减小用户检查和选择所生成函数的时间。
参见图11,本申请实施例提供了一种计算设备1100。例如,该计算设备1100可以是图1所示网络架构中的云计算设备101或终端设备102,或者,是图2所示方法200的第一设备。
如图11所示,计算设备1100包括:总线1102、处理器1104、存储器1106和通信接口1108。处理器1104、存储器1106和通信接口1108之间通过总线1102通信。计算设备1100可以是服务器或终端设备。应理解,本申请不限定计算设备1100中的处理器、存储器的个数。
总线1102可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1104可包括在计算设备1100各个部件(例如,存储器1106、处理器1104、通信接口1108)之间传送信息的通路。
处理器1104可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器1106可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器1104还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
参见图11,存储器1106中存储有可执行的程序代码,处理器1104执行该可执行的程序代码以分别实现图10所示的装置1000中的获取单元1001、处理单元1002和显示单元1003的功能,从而实现上述任意实施例提供的方法。也即,存储器1106上存有用于执行上述任意实施例提供的方法的指令。或者,
通信接口1103使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1100与其他设备或通信网络之间的通信。
本申请实施例还提供了一种处理数据的集群。该处理数据的集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图12所示,所述处理数据的集群包括至少一个计算设备1100。处理数据的集群中的一个或多个计算设备1100中的存储器1106中可以存有相同的用于执行上述任意实施例提供的方法的指令。
在一些可能的实现方式中,该处理数据的集群中的一个或多个计算设备1100的存储器1106中也可以分别存有用于执行上述通信方法的部分指令。换言之,一个或多个计算设备1100的组合可以共同执行用于执行上述任意实施例提供的方法的指令。
在一些可能的实现方式中,处理数据的集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图13示出了一种可能的实现方式。如图13所示,两个计算设备1100A和1100B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。
在这一类可能的实现方式中,计算设备1100A中的存储器1106中存有执行如图10所示实施例中的获取单元1001和处理单元1002功能的指令。同时,计算设备1100B中的存储器1106中存有执行如图10所示实施例中的显示单元1003的功能的指令。
应理解,图13中示出的计算设备1100A的功能也可以由多个计算设备1100完成。同样,计算设备1100B的功能也可以由多个计算设备1100完成。
本申请实施例还提供了另一种获取函数的集群。该获取函数的集群中各计算设备之间的连接关系可以类似的参考图13所述获取函数的集群的连接方式。不同的是,该获取函数的集群中的一个或多个计算设备1100中的存储器1106中可以存有相同的用于执行上述任意实施例提供的方法的指令。
在一些可能的实现方式中,该获取函数的集群中的一个或多个计算设备1100的存储器1106中也可以分别存有用于执行上述任意实施例提供的方法的部分指令。换言之,一个或多个计算设备1100的组合可以共同执行用于执行上述任意实施例提供的方法的指令。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行上述任意实施例提供的方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述任意实施例提供的方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (13)

1.一种获取函数的方法,其特征在于,所述方法包括:
获取待生成的目标函数的描述信息、函数签名和第一测试方法,所述描述信息用于描述所述目标函数实现的功能,所述函数签名用于标识所述目标函数,所述第一测试方法用于测试所述目标函数;
基于所述第一测试方法、所述描述信息和所述函数签名,生成多个候选函数;
基于所述第一测试方法测试所述多个候选函数中的每个候选函数,得到所述每个候选函数的测试结果;
基于所述每个候选函数的测试结果从所述多个候选函数中选择所述目标函数。
2.如权利要求1所述的方法,其特征在于,所述获取待生成的目标函数的描述信息、函数签名和第一测试方法,包括:
响应于针对待生成的业务代码的输入操作,获取所述输入操作向所述业务代码输入的所述目标函数的描述信息和函数签名;
显示第一测试文件,所述第一测试文件包括第二测试方法,所述第二测试方法是基于所述函数签名生成的;
响应于针对所述第一测试文件的修改操作,获取所述第一测试方法,所述修改操作用于对所述第一测试文件包括的所述第二测试方法进行修改和/或补充得到所述第一测试方法。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
响应于所述输入操作,显示第一提示元素,所述第一提示元素用于提示是否生成测试方法;
响应于所述第一提示元素被触发产生的命令,获取配置信息,所述配置信息包括测试框架和所述第一测试文件的文件信息,所述测试框架包括测试方法生成模板;
基于所述测试方法生成模板、所述文件信息和所述目标函数的函数签名,通过所述测试框架生成所述第一测试文件。
4.如权利要求1-3任一项所述的方法,其特征在于,所述第一测试方法包括多个测试样例,每个测试样例包括输入数据和期望输出数据,
所述基于所述第一测试方法测试所述多个候选函数中的每个候选函数,得到所述每个候选函数的测试结果,包括:
将第一候选函数与待生成的业务代码结合得到目标代码,所述待生成的业务代码是所述目标函数属于的业务代码,所述多个候选函数包括所述第一候选函数,所述目标代码用于对所述每个测试样例包括的输入数据进行处理,得到所述每个测试样例对应的处理结果;
获取所述目标代码输出的所述每个测试样例对应的处理结果;
分别比较所述每个测试样例包括的期望输出数据和所述每个测试样例对应的处理结果,得到所述第一候选函数的测试结果。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
对所述目标代码进行编译;
在成功编译所述目标代码时,向所述目标代码输入所述每个测试样例包括的输入数据,使所述目标代码对所述每个测试样例包括的输入数据进行处理。
6.一种获取函数的装置,其特征在于,所述装置包括:
获取单元,用于获取待生成的目标函数的描述信息、函数签名和第一测试方法,所述描述信息用于描述所述目标函数实现的功能,所述函数签名用于标识所述目标函数,所述第一测试方法用于测试所述目标函数;
处理单元,用于基于所述第一测试方法、所述描述信息和所述函数签名,生成多个候选函数;
所述处理单元,还用于基于所述第一测试方法测试所述多个候选函数中的每个候选函数,得到所述每个候选函数的测试结果;
所述处理单元,还用于基于所述每个候选函数的测试结果从所述多个候选函数中选择所述目标函数。
7.如权利要求6所述的装置,其特征在于,所述获取单元,用于:
响应于针对待生成的业务代码的输入操作,获取所述输入操作向所述业务代码输入的所述目标函数的描述信息和函数签名;
显示第一测试文件,所述第一测试文件包括第二测试方法,所述第二测试方法是基于所述函数签名生成的;
响应于针对所述第一测试文件的修改操作,获取所述第一测试方法,所述修改操作用于对所述第一测试文件包括的所述第二测试方法进行修改和/或补充得到所述第一测试方法。
8.如权利要求6所述的装置,其特征在于,所述装置还包括显示单元;
所述显示单元,用于响应于所述输入操作,显示第一提示元素,所述第一提示元素用于提示是否生成测试方法;
所述获取单元,还用于响应于所述第一提示元素被触发产生的命令,获取配置信息,所述配置信息包括测试框架和所述第一测试文件的文件信息,所述测试框架包括测试方法生成模板;
所述获取单元,还用于基于所述测试方法生成模板、所述文件信息和所述目标函数的函数签名,通过所述测试框架生成所述第一测试文件。
9.如权利要求6-8任一项所述的装置,其特征在于,所述第一测试方法包括多个测试样例,每个测试样例包括输入数据和期望输出数据,
所述处理单元,用于:
将第一候选函数与待生成的业务代码结合得到目标代码,所述待生成的业务代码是所述目标函数属于的业务代码,所述多个候选函数包括所述第一候选函数,所述目标代码用于对所述每个测试样例包括的输入数据进行处理,得到所述每个测试样例对应的处理结果;
获取所述目标代码输出的所述每个测试样例对应的处理结果;
分别比较所述每个测试样例包括的期望输出数据和所述每个测试样例对应的处理结果,得到所述第一候选函数的测试结果。
10.如权利要求9所述的装置,其特征在于,所述处理单元,还用于:
对所述目标代码进行编译;
在成功编译所述目标代码时,向所述目标代码输入所述每个测试样例包括的输入数据,使所述目标代码对所述每个测试样例包括的输入数据进行处理。
11.一种处理数据的集群,其特征在于,所述集群包括至少一个计算设备,所述至少一个计算设备中的每个设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述集群执行如权利要求1-5任一项所述的方法。
12.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-5任一项所述的方法。
13.一种计算机程序产品,其包括计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-5任一项所述的方法。
CN202310233775.2A 2023-02-28 2023-02-28 获取函数的方法、装置及存储介质 Pending CN116339742A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310233775.2A CN116339742A (zh) 2023-02-28 2023-02-28 获取函数的方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310233775.2A CN116339742A (zh) 2023-02-28 2023-02-28 获取函数的方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN116339742A true CN116339742A (zh) 2023-06-27

Family

ID=86881599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310233775.2A Pending CN116339742A (zh) 2023-02-28 2023-02-28 获取函数的方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN116339742A (zh)

Similar Documents

Publication Publication Date Title
US10642721B2 (en) Generation of automated testing scripts by converting manual test cases
CN107577607B (zh) 用户界面自动化测试方法、装置、电子设备、存储介质
US11714636B2 (en) Methods and arrangements to process comments
US20210365258A1 (en) Method and system for updating legacy software
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
CN112988578A (zh) 一种自动化测试方法和装置
CN115269285A (zh) 测试方法及装置、设备、计算机可读存储介质
CN108885574B (zh) 用于监视和报告设计、编译和运行时的性能和正确性问题的系统
CN116339742A (zh) 获取函数的方法、装置及存储介质
CN115185638A (zh) 一种仿真运行应用程序时获取调用栈的方法及计算设备
CN114741294A (zh) 一种页面的调试方法、装置、设备及存储介质
US20200349304A1 (en) Method, apparatus, device, and medium for implementing simulator
CN115145696B (zh) 确定进程虚拟机运行差异的方法、系统及计算设备
US11775293B1 (en) Deploying a static code analyzer based on program synthesis from input-output examples
US11360764B2 (en) Adversarial language analysis for code scanning
WO2024078472A1 (zh) 一种调试云服务应用程序接口api的方法、装置以及相关设备
CN109716304B (zh) 用于测试混合指令体系结构的方法和系统
WO2022127263A1 (zh) 一种代码处理方法以及相关设备
CN117908955A (zh) 接口文档生成方法、装置、计算设备及存储介质
CN117909207A (zh) 一种调试云服务应用程序接口api的方法、装置以及相关设备
CN115495061A (zh) 一种用于工业仿真软件的作业模板脚本及实现方法
CN115994082A (zh) Flutter组件自动化测试方法、装置、设备及介质
CN114691527A (zh) 单元测试案例生成方法、装置、设备、介质和程序产品
CN114237574A (zh) 金融业务生产管理系统、方法、设备、介质和程序产品
CN117873482A (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