CN114253828A - 确定测试模板的方法、装置、计算设备和存储介质 - Google Patents
确定测试模板的方法、装置、计算设备和存储介质 Download PDFInfo
- Publication number
- CN114253828A CN114253828A CN202011026923.6A CN202011026923A CN114253828A CN 114253828 A CN114253828 A CN 114253828A CN 202011026923 A CN202011026923 A CN 202011026923A CN 114253828 A CN114253828 A CN 114253828A
- Authority
- CN
- China
- Prior art keywords
- code
- tested
- test
- template
- attribute information
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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/3696—Methods or tools to render software testable
Abstract
本申请提供了一种确定测试模板的方法、装置、计算设备和存储介质,该方法属于软件测试技术领域。该方法包括:在获取待测试代码的测试用例时,获取待测试代码的属性信息,该属性信息包括技术属性和业务属性,根据待测试代码的属性信息,确定待测试代码对应的测试模板,测试模板是根据多个已知的测试用例获得的,测试模板用于生成待测试代码对应的测试用例。采用本申请,可以提升获取测试用例的效率。
Description
技术领域
本申请涉及软件测试技术领域,特别涉及一种确定测试模板的方法、装置、计算设备和存储介质。
背景技术
在开发软件产品的过程中,测试是开发过程中的关键环节,是保障软件产品质量的关键过程。测试可以包括单元测试、集成测试等。单元测试是在确保软件产品中的被测单元是否正常工作所进行的测试,待测试的代码为类或者方法的代码。集成测试是对多个类组成的模块所进行测试。
相关技术中,在对待测试代码进行测试时,用户为待测试代码编写测试用例,然后使用该测试用例对待测试代码进行测试。由于相关技术中是由人工编写测试用例,所以获取测试用例花费的时间比较多。
发明内容
本申请提供了一种确定测试模板的方法、装置、计算设备和存储介质,用以解决测试用例编写花费的时间比较多的问题。
第一方面,本申请提供了一种确定测试模板的方法,该方法包括:获取待测试代码的属性信息,其中,该属性信息包括技术属性和业务属性;根据待测试代码的属性信息,确定待测试代码对应的测试模板,该测试模板是根据多个已知的测试用例获得的,该测试模板用于生成待测试代码对应的测试用例。
本申请所示的方案,确定测试模板的方法可以由确定装置执行,在确定待测试代码的测试用例时,确定装置可以获取待测试代码的属性信息,该属性信息包括技术属性和业务属性。确定装置根据待测试代码的属性信息,确定待测试代码对应的测试模板,该测试模板用于生成待测试代码对应的测试用例。这样,由于可以基于测试模板获得测试用例,而不需要编写测试用例的全部内容,所以提升获取测试用例的效率。
在一种可能的实现方式中,该方法还包括:根据待测试代码的上下文信息,对测试模板进行调整,获得待测试代码的测试用例;向用户提供待测试代码的测试用例,或者,根据待测试代码的测试用例对待测试代码进行测试,向用户提供待测试代码的测试结果。
其中,待测试代码的上下文信息可以包括待测代码在所属软件中的上下文信息和待测试代码中内部的上下文信息。
本申请所示的方案,确定装置可以获取待测试代码的上下文信息,使用该上下文信息,对测试模板进行调整,获得待测试代码对应的测试用例。然后确定装置将该测试用例,提供给用户,如确定装置具有显示功能,确定装置显示该测试用例,用户可以在确定装置的屏幕上看到测试用例。或者,确定装置在获得测试用例之后,可以基于该测试用例,对待测试代码进行测试,获得对待测试代码进行测试的测试结果,然后向用户提供该测试结果。这样,不仅可以自动的编写测试用例,而且可以使得用户及时的了解待测试代码能否正常运行。
在一种可能的实现方式中,业务属性用于指示待测试代码实现的功能或者完成的业务;技术属性用于指示待测试代码的编程技术信息。其中,编程技术信息可以包括编程语言、技术栈等。
在一种可能的实现方式中,该方法还包括:向用户提供待测试代码对应的测试模板;获取用户对待测试代码对应的测试模板进行修正后的测试模板;根据修正后的测试模板生成待测试代码的测试用例,根据待测试代码的测试用例对待测试代码进行测试;或者,获取用户在待测试代码对应的测试模板中确认的测试模板;根据确认的测试模板生成待测试代码的测试用例,根据待测试代码的测试用例对待测试代码进行测试。
本申请所示的方案,确定装置在获取到待测试代码对应的测试模板后,可以向用户提供该测试模板,用户可以对该测试模板进行修正处理,然后提交修正后的测试模板。确定装置将该修正后的测试模板,作为待测试模板的测试用例,使用该测试用例对待测试代码进行测试。或者,确定装置在获取到待测试代码对应的测试模板后,可以向用户提供该测试模板,用户可以确认该测试模板。确定装置将确认后的测试模板,作为待测试模板的测试用例,使用该测试用例对待测试代码进行测试。这样,可以将测试模板提供给用户,使得使用测试模板的灵活性更高。
在一种可能的实现方式中,根据待测试代码的属性信息,确定待测试代码对应的测试模板,包括:根据待测试代码的属性信息,查询测试模板库;在测试模板库中获得与待测试代码的属性信息相似度满足预设条件的属性信息对应的测试模板。
本申请所示的方案,确定装置中存储有测试模板库,或者与确定装置建立有通信连接的其他设备中存储有测试模板库。确定装置可以从自身存储的测试模板库中,获得与待测试代码的属性信息相似度满足预设条件的属性信息对应的测试模板。或者,确定装置可以从该其他设备,获得与待测试代码的属性信息相似度满足预设条件的属性信息对应的测试模板。这样,由于可以基于待测试代码的属性信息,获得测试模板,所以可以获取到准确的测试模板。
在一种可能的实现方式中,测试模板库中包括各属性信息对应的测试模板。
在一种可能的实现方式中,测试模板库是基于多个代码的属性信息和对应的测试用例构建的。其中,多个代码为已有的被测试过的代码。
在一种可能的实现方式中,在构建测试模板库之前,该方法还包括:对多个代码对应的测试用例中的无效测试用例进行过滤处理。这样,可以预先筛选不能用于确定测试模板的测试用例,使获得的测试模板更准确。
第二方面,本申请提供了一种确定测试用例的装置,该装置包括:获取模块,用于获取待测试代码的属性信息,其中,该属性信息包括技术属性和业务属性;确定模块,用于根据待测试代码的属性信息,确定待测试代码对应的测试模板,测试模板是根据多个已知的测试用例获得的,测试模板用于生成待测试代码对应的测试用例。这样,由于可以基于多个已知的测试用例获得测试模板,并且将测试模板与属性信息相对应,然后可以使用待测试代码的属性信息,确定出待测试代码的测试模板,后续可以直接基于测试模板获得测试用例,而不需要编写测试用例的全部内容,所以提升获取测试用例的效率。
在一种可能的实现方式中,确定模块,还用于根据待测试代码的上下文信息,对测试模板进行调整,获得待测试代码的测试用例;该装置还包括:提供模块,用于向用户提供待测试代码的测试用例,或者,测试模块,用于根据待测试代码的测试用例对待测试代码进行测试,提供模块,用于向用户提供待测试代码的测试结果。
在一种可能的实现方式中,业务属性用于指示待测试代码实现的功能或者完成的业务;技术属性用于指示待测试代码的编程技术信息。
在一种可能的实现方式中,该装置还包括:提供模块,用于向用户提供所述待测试代码对应的测试模板;所述获取模块,还用于获取所述用户对所述待测试代码对应的测试模板进行修正后的测试模板;所述确定模块,还用于根据所述修正后的测试模板生成所述待测试代码的测试用例;该装置还包括,测试模块,用于根据所述待测试代码的测试用例对所述待测试代码进行测试;或者,所述获取模块,还用于获取所述用户在所述待测试代码对应的测试模板中确认的测试模板;所述确定模块,还用于根据所述确认的测试模板生成所述待测试代码的测试用例;该装置还包括,测试模块,用于根据所述待测试代码的测试用例对所述待测试代码进行测试。
在一种可能的实现方式中,确定模块,用于:根据待测试代码的属性信息,查询测试模板库;在测试模板库中获得与待测试代码的属性信息相似度满足预设条件的属性信息对应的测试模板。
在一种可能的实现方式中,测试模板库中包括各属性信息对应的测试模板。
在一种可能的实现方式中,测试模板库是基于多个代码的属性信息和对应的测试用例构建的。
在一种可能的实现方式中,该装置还包括:过滤模块,用于在构建测试模板库之前,对多个代码对应的测试用例中的无效测试用例进行过滤处理。
第三方面,本申请提供了一种计算设备,计算设备包括处理器和存储器,其中:存储器中存储有计算机指令,处理器执行计算机指令,以实现第一方面及其可能的实现方式的方法。
第四方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,当计算机可读存储介质中的计算机指令被计算设备执行时,使得计算设备执行第一方面及其可能的实现方式的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的装置的功能。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行上述第一方面及其可能的实现方式的方法,或者使得计算设备实现上述第二方面及其可能的实现方式的装置的功能。
附图说明
图1是本申请一个示例性实施例提供的确定测试模板的系统架构图;
图2是本申请一个示例性实施例提供的确定测试模板的系统架构图;
图3是本申请一个示例性实施例提供的确定测试模板的方法的流程示意图;
图4是本申请一个示例性实施例提供的获取测试模板的示例图;
图5是本申请一个示例性实施例提供的构建测试模板库的流程示意图;
图6是本申请一个示例性实施例提供的对无效测试用例过滤的示意图;
图7是本申请一个示例性实施例提供的划分测试用例的示意图;
图8是本申请一个示例性实施例提供的生成测试模板的示意图;
图9是本申请一个示例性实施例提供的确定测试用例的系统流程图;
图10是本申请一个示例性实施例提供的确定测试模板的装置的结构示意图;
图11是本申请一个示例性实施例提供的确定测试模板的装置的结构示意图;
图12是本申请一个示例性实施例提供的确定测试模板的装置的结构示意图;
图13是本申请一个示例性实施例提供的计算设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于对本申请实施例的理解,下面首先介绍所涉及到的名词的概念:
1、测试,是在软件开发过程中的关键环节,测试可以包括单元测试和集成测试等。单元测试的目标是用于确保软件内测试单元能够正常工作,单元测试一般是在方法或者类的层面上进行。集成测试是对多个类或者多个方法组成的测试模块进行整体测试。
2、测试用例,是用于对待测试代码进行测试的一段代码,通过运行测试用例可以对待测试代码的过程逻辑和结果等进行测试,可以发现待测试代码存在的潜在问题。
3、测试模板,是基于多个已知的测试用例生成的测试框架。测试模板用于生成测试用例。例如,可以基于待测试代码对应的测试模板,生成待测试代码的测试用例。
测试是在软件开发过程中的关键环节,而测试用例又是测试过程中的必备用具,所以编写测试用例至关重要。然而相关技术中,一般是由用户针对待测试代码编写测试用例,将编写好的测试用例用于对待测试代码进行测试,在本实施例中,用户指软件开发者。由于一个软件中需要测试的内容比较多,对于每个内容都单独编写测试用例,会导致获取测试用例的效率比较低。
在对本申请中确定测试模板的方法介绍之前,首先对本申请实施例的应用场景以及执行主体进行介绍:
在本申请实施例中确定测试模板的方法,可以应用于对待测试代码进行测试之前。确定测试模板的装置(简称为确定装置)可以是一个硬件装置。具体的,如图1所示,确定装置可以为运行确定测试模板的方法代码的任何地方的硬件设备,例如,云设备、边缘设备、终端设备等计算设备。该硬件设备可以与集成开发环境(integrated developmentenvironment,IDE)工具不在一个计算设备上,用户通过IDE编写待测试代码,通过IDE与确定装置通信。
确定装置也可以是软件装置。具体的,如图2所示,确定装置可以是IDE工具上的一个插件。或者是运行确定测试模板的方法代码的虚拟机。该IDE可以是云化的IDE,该IDE也可以是客户端化的IDE。另外,确定装置也可以是一个独立的软件或者软件云服务。
下面将结合图3对本申请实施例提供的确定测试模板的方法进行说明,该方法可以由确定装置执行。如图3所示,该方法的处理流程如下:
步骤301,确定装置获取待测试代码的属性信息,其中,属性信息包括技术属性和业务属性。
其中,待测试代码为要被测试的一段代码。待测试代码可以是测试单元,也可以是测试模块,模块包括多个单元。即在待测试代码是测试单元时,对测试单元进行测试,实现单元测试;在待测试代码是测试模块时,对测试模块进行测试,实现集成测试。
在本实施例中,确定装置可以获取用户编写好的待测试代码,分析待测试代码,获得待测试代码的属性信息,该属性信息包括技术属性和业务属性。具体的,可以分析待测试代码,获得待测试代码中的各个单词,然后确定各个单词中出现频度最高的预设数目个单词。将该预设数目个单词(也可以称为是关键词)确定为待测试代码的技术属性,此处预设数目可以预设,如预设数目等于5等。然后可以分析待测试代码,获得待测试代码所使用的编程语言、技术栈等。将该编程语言、技术栈等,确定为待测试代码的技术属性。此处编程语言指编写待测试代码所使用的语言,如C++、java、python等。技术栈泛指编写待测试代码所使用的多种技术。
或者,确定装置可以将待测试代码提供给属性信息确定设备,从属性信息确定设备,获得待测试代码的属性信息。
或者,在确定装置为软件装置,且不是安装在用户编写待测试代码的终端上,或者在为硬件装置,且与用户编写待测试代码的终端不是同一设备,用户编写好待测试代码后,终端可以确定待测试代码的属性信息。然后终端将待测试代码的属性信息,提交给确定装置,此处终端确定待测试代码的属性信息与确定装置确定测试代码的属性信息的方式相同。
这样,确定装置可以获得待测试代码的属性信息。
可选的,业务属性包括待测试代码中出现频度最高的预设数目个的单词,由于这些单词是待测试代码中的关键词,其一般指代待测试代码中的方法名称或者函数名称,业务属性可以用于指示待测试代码所实现的功能或者所完成的业务。技术属性包括编程语言和技术栈等,技术属性是指示编码时使用的技术方面的内容,即技术属性用于指示待测试代码的编程技术信息。
步骤302,确定装置根据待测试代码的属性信息,确定待测试代码对应的测试模板,测试模板是根据多个已知的测试用例获得的,测试模板用于生成待测试代码对应的测试用例。
其中,测试模板是基于已知的测试用例获得,已知的测试用例是已经用于对测试代码进行测试的测试用例。测试模板可以认为是测试用例的框架,或者测试用例本身。
在本实施例中,确定装置获得待测试代码的属性信息后,可以使用待测试代码的属性信息,确定该属性信息对应的测试模板,将该测试模板,确定为待测试代码对应的测试模板。该测试模板可以用于生成待测试代码对应的测试用例。
这样,由于可以使用待测试代码的属性信息,直接确定出待测试代码对应的测试模板,后续可以基于测试模板,获得测试用例,所以用户不需要为待测试代码编写测试用例,所以可以提升测试用例的获取效率。
可选的,由于待测试代码的属性信息对应的测试模板有可能在语法等方面上无法适配待测试代码,所以可以对待测试代码的属性信息对应的测试模板进行自动调整,以获得测试用例。处理过程可以为:
步骤203,确定装置根据待测试代码的上下文信息,对测试模板进行调整,获得待测试代码的测试用例;向用户提供待测试代码的测试用例,或者,根据测试用例对待测试代码进行测试,向用户提供待测试代码的测试结果。
其中,待测试代码的上下文信息可以包括待测代码在所属软件中的上下文信息和待测试代码中内部的上下文信息。具体的,待测试代码的上下文信息可以包括调用的接口、数据构造、代码逻辑中的一种或多种。
在本实施例中,确定装置根据待测代码的上下文信息,对测试模板进行调整。具体的,可以使用上下文信息中的数据构造,调整测试模板中输入数据的构造等,使测试用例中的输入数据符合要求,并使用上下文信息中的调用的接口,对待测试代码中的方法的调用语句进行修正等,并使用上下文信息中的代码逻辑,对测试模板中的变量名进行修正、缺失语句进行补充等。基于这些处理后,使得生成的测试用例符合待测试代码。
确定装置在获取到待测试代码的测试用例后,可以自动运行该测试用例,对待测试代码进行测试,获得测试结果,将该测试结果提供给用户。
或者,确定装置在获得待测试代码的测试用例后,有可能获得多个测试用例,或者获得的测试用例,还是不能准确用于对待测试代码进行测试,或者,用户想要下载测试用例,在其它位置进行测试,确定装置可以向用户提供待测试代码的测试用例,如在确定装置不具备显示功能时,确定装置将该测试用例提供给用户使用的终端。用户可以手动对测试用例进行修正,在用户对测试用例修正完成后,可以将修正后的测试用例提交给确定装置。确定装置运行修正完成的测试用例,对待测试代码进行测试。或者用户确定待测试代码的测试用例正确时,可以选择测试用例,提交给确定装置。确定装置运行用户提交的测试用例,对待测试代码进行测试。或者,用户下载待测试代码的测试用例,在其它位置运行该测试用例,对待测试代码进行测试。
这样,由于可以基于测试模板,获得测试用例,而不需要用户自行编写测试用例,所以可以提升获取测试用例的效率。
在一种可能的实现方式中,确定装置也可以直接将待测试代码的测试模板提供给用户,用户决定是否将待测试代码的测试模板作为待测试代码的测试用例,处理为:
向用户提供待测试代码对应的测试模板;获取用户对待测试代码对应的测试模板进行修正后的测试模板;根据修正后的测试模板生成待测试代码的测试用例,根据待测试代码的测试用例对待测试代码进行测试;或者,获取用户在待测试代码对应的测试模板中确认的测试模板;根据确认的测试模板生成待测试代码的测试用例,根据待测试代码的测试用例对待测试代码进行测试。
在本实施例中,确定装置可以将待测试代码对应的测试模板提供给用户,并且提供了用户修正测试模板的功能以及用户确认测试模板的功能。
用户在发现测试模板有错误时,可以对测试模板进行修正处理,具体的,修正可以包括代码逻辑错误、多余的测试方法模板、数据构造不正确等。在修正完成后,用户可以提交修正后的测试模板给确定装置。确定装置获取到修正后的测试模板后,将修正后的测试模板确定为待测试代码的测试用例,然后可以运行该测试用例,对待测试代码进行测试,获得测试结果,然后将该测试结果提供给用户。
或者,用户认为测试模板没有问题,用户可以对测试模板进行确认,确定装置即会接收到确认指令。确定装置可以基于待测试代码的上下文信息,对用户确认的测试模板进行调整(调整方式见前文中的描述,此处不再赘述),将调整后的测试模板确定为待测试代码的测试用例。然后可以运行该测试用例,对待测试代码进行测试,获得测试结果,然后将该测试结果提供给用户。
这样,由于在获取到测试模板后,还提供给用户确认,所以可以使待测试代码对应的测试用例更准确,进而可以更准确的测试待测试代码。
此处需要说明的是,此处是以确定装置不具备显示功能为例,在确定装置具备显示功能的情况下,确定装置可以直接显示待测试代码对应的测试模板,用户可以在确定装置上看到待测试代码对应的测试模板,进而可以对测试模板执行相应的操作。
另外,在确定装置获取到待测试模板对应的测试用例后,也可以将该待测试模板和该测试用例对应存储,用于更新后续提到的测试模板库。
在一种可能的实现方式中,确定装置可以在测试模板库中,获取到待测试代码对应的测试模板,处理可以为:
确定装置根据待测试代码的属性信息,查询测试模板库;在测试模板库中获得与待测试代码的属性信息相似度满足预设条件的属性信息对应的测试模板。
在本实施例中,确定装置中提前构建有测试模板库,测试模板库中包括多个测试模板。或者,也可以向其它设备请求获取测试模板库,从其它设备获取到测试模板库。确定装置可以使用待测试代码的属性信息,在测试模板库中,确定与待测试代码的属性信息相似度满足预设条件的属性信息,此处预设条件可以是相似度最高的目标数目个,目标数目可以预设,如2等。此处在确定相似度时,可以是计算待测试代码的属性信息与测试模板库中的属性信息的距离,该距离可以是欧式距离等。将距离最小的目标数目个属性信息,确定为与待测试代码相似度最高的目标数目个属性信息。
然后将该目标数目个属性信息对应的测试模板,确定为待测试代码对应的测试模板。
此处需要说明的是,确定装置可以为待测试代码确定出一个或多个测试模板。当然在待测试代码的属性信息与测试模板库中各属性信息的相似度均小于一定数值时,为了防止输出错误的测试模板,也可以为用户输出未找到待测试代码的测试模板的提示消息。
在一种可能的实现方式中,测试模板库中包括各属性信息对应的测试模板,具体的,测试模板库中存储各属性信息对应的测试模板时,可以是存储有多颗树,每颗树的顶点为一个技术属性,在每颗树的顶点下连接有一个或多个业务属性,在每个业务属性下对应有测试模板。或者,每颗树的顶点为一个业务属性,在每颗树的顶点下连接有一个或多个技术属性,在每个技术属性下对应有测试模板。这样,测试模板库中构建了技术属性和业务属性共同对应的测试模板,即构建了属性信息对应的测试模板。
为了更好的理解本申请实施例中,针对确定装置确定待测试代码的测试模板,还提供了如图4所示的示例:
在图4中待测试代码为待测试单元,待测试单元中包括三个方法,即方法1、方法2和方法3。确定装置获取到待测试代码的属性信息包括业务属性N和技术属性M,确定装置在测试模板库中,查找业务属性N和技术属性M共同对应的测试模板,获得待测试代码对应的测试模板。
另外,本申请实施例中,测试模板库可以由其它设备生成,或者由确定装置生成,此处以确定装置生成测试模板库为例描述生成测试模板库的处理过程,如图5所示:
步骤501,确定装置获取多个代码的测试用例。
其中,多个代码为已有的被测试过的代码。每个代码的测试用例,为每个代码在测试时所使用的测试用例,即为已知的测试用例。此处以代码为测试单元为例进行说明。
在本实施例中,确定装置可以收集已知的多个代码,以及该多个代码分别对应的测试用例,即获取到多个代码与测试用例的组合。具体的,可以但是不限于在开源代码库中,分析代码,获取存在测试用例的多个代码,并且获取到该多个代码对应的测试用例。
可选的,为了更准确的构建测试模板库,可以进行如下处理:
对多个代码对应的测试用例中的无效测试用例进行过滤处理。
在本实施例中,确定装置可以对步骤501获取到的每个代码进行分析,确定该代码中是否仅是一个代码名称,而不存在实际的代码段。对于一个代码,若不存在实际的代码段,则认为该代码为无效代码,可以将其以及其对应的测试用例过滤掉。对于一个测试用例,若该测试用例的代码中,没有测试结束语句,和/或没有判断语句,将该测试用例以及其对应的代码过滤掉。如图6所示为过滤的流程示意图。
步骤502,确定装置确定每个代码对应的属性信息。
在本实施例中,确定装置可以按照前文中描述的确定属性信息的方式,确定每个代码对应的属性信息,此处不再赘述。
步骤503,确定装置对测试用例进行分组处理,获得属性信息与测试用例的映射关系。
在本实施例中,确定装置将属性信息相同或者属性信息的相似度高于一定条件的代码分为同一组。由于每个代码对应有测试用例,这样,相当于将代码的测试用例也按照属性信息进行分组,使得属性信息相同或者属性信息的相似度高于一定条件的代码对应的测试用例被分为同一组,获得属性信息与测试用例的映射关系。
此处需要说明的是,由于属性信息包括技术属性和业务属性,所以可以基于技术属性和业务属性的组合形成多颗树,每颗树的顶点为一个技术属性,在每颗树的顶点下连接有一个或多个业务属性,在每个业务属性下对应有代码与测试用例的组合。或者,每颗树的顶点为一个业务属性,在每颗树的顶点下连接有一个或多个技术属性,在每个技术属性下对应有代码与测试用例的组合。例如,如图7所示,多个代码的技术属性可以包括技术属性1、技术属性2,…,至技术属性N,技术属性1连接的业务属性可以包括业务属性1至业务属性M,业务属性1对应有3个代码与测试用例的组合,业务属性M对应有6个代码与测试用例的组合,技术属性N连接的业务属性可以包括业务属性1至业务属性P,业务属性1对应有2个代码与测试用例的组合,业务属性P对应有3个代码与测试用例的组合,其余技术属性在图6中未示出。
步骤504,确定装置基于每个属性信息对应的代码与测试用例的组合,确定每个属性信息对应的测试模板。
在本实施例中,在任一属性信息(以目标属性信息为例进行说明)下,可以对目标属性信息对应的代码进行分析,获得一个或多个具有相似性的方法组成的方法集合,即每个方法集合中包括具有相似性的方法。对于每个方法集合中的任一方法,确定在该方法所属的代码对应的测试用例中,获取该方法对应的测试方法。这样,确定装置可以获取到每个方法集合中各方法对应的测试方法。
然后对于任一方法集合,可以称为是目标方法集合,确定装置对目标方法集合中的各方法对应的测试方法进行代码分析,获得目标方法集合中各方法对应的测试方法的代码逻辑。然后确定装置通过聚类、模式识别等技术,提取目标方法集合中各方法对应的测试方法的代码逻辑的公共部分,并对该各方法对应的测试方法的代码逻辑的差异部分进行泛化处理,将该公共部分和泛化处理后的差异部分,组成目标方法集合对应的测试方法模板的代码部分。此处泛化处理指的是:将表达相同含义的语句中不相同的表述,更改为相同的表述。例如,对于两个测试方法对应的两条语句中使用m和n表示相同含义的参数,经过泛化处理后,更改为使用n表示。此处“聚类”可以采用任一种聚类算法,如密度聚类算法等。
然后确定装置将目标方法集合中各方法对应的测试方法中频度最高的测试方法的名称,确定为目标方法集合对应的测试方法模板的名称。然后确定装置将目标方法集合对应的测试方法模板的名称和该测试方法模板的代码部分,组成目标方法集合对应的测试方法模板。
对于目标属性信息,确定装置按照上述方式确定出目标属性信息下,每个方法集合对应的测试方法模板。确定装置将目标属性信息对应的每个方法集合的测试方法模板组合在一起,获得目标属性信息对应的测试模板。
在图5的流程中,是以确定装置构建测试模板库为例进行说明,其它设备构建测试模板库的处理与图5描述的流程相同,此处不再赘述。
针对图5的流程,为了更好的理解本申请实施例,还提供了生成测试模板的示例,如图8所示:
在图8中,目标属性信息对应有三个代码,代码可以是类,即代码1、代码2和代码3。代码1中包括方法1至方法4;代码2中包括方法5至方法9;代码3中包括方法10至方法12。确定装置对三个代码进行相似性分析后,获得多个方法集合,多个方法集合包括方法集合1和方法集合2等,方法集合1中包括方法1、方法6和方法9,方法集合2包括方法8和方法12,图8中仅示出方法集合1和方法集合2。确定装置确定方法集合1中各方法对应的测试方法,确定装置基于各方法对应的测试方法生成测试方法模板的代码部分和测试方法模板的名称,获得方法集合1对应的测试方法模板,同理也可以获得测试方法集合2对应的测试方法模板。确定装置将该多个方法集合对应的测试方法模板组成目标属性信息对应的测试模板。
此处还需要说明的是,在图5的流程中,对于目标属性信息,确定装置除了要识别出相似的方法,还要识别出目标属性信息中各个代码中所特有的方法,将该方法不作为测试模板生成的考虑范围。
另外,为了更好的理解本申请实施例,本申请实施例还提供了图3和图5结合的流程示意图,如图9所示,确定装置获取多个代码以及该多个代码分别对应的测试用例,即存在一个测试用例库。然后确定装置基于代码的属性信息,对测试用例进行分组,获得属性信息与测试用例的映射关系,基于该映射关系提取到每个属性信息对应的测试模板,即构建好测试模板库。后续,确定装置获取待测试代码的测试模板时,获取待测试代码的属性信息,基于测试模板库,获取待测试代码的属性信息对应的测试模板。
另外,需要说明的是,在本申请实施例中,待测试代码可以为测试单元,对待测试代码的测试模板进行调整时,由于待测试代码中可能存在某些特有的方法,这部分测试方法模板需要用户编写,用户可以编写这部分测试方法模板。另外,在待测试代码中可能不存在测试模板中某些测试方法模板对应的测试方法,确定装置还可以将这些测试方法模板删除。
本申请实施例中,基于待测试代码的业务属性和技术属性相结合,确定待测试模板对应的测试模板,能够从业务功能和编码信息的角度,自动的获得待测试代码的测试模板,这样,用户不需要编写整个测试用例,可以提升测试用例的生成效率。
图10是本申请实施例提供的确定测试用例的装置的结构图。该装置可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。本申请实施例提供的装置可以实现本申请实施例图3所述的流程,该装置包括:获取模块1010和确定模块1020,其中:
获取模块1010,用于获取待测试代码的属性信息,其中,所述属性信息包括技术属性和业务属性,具体可以用于实现步骤301的获取功能以及执行步骤301包含的隐含步骤;
确定模块1020,用于根据所述待测试代码的属性信息,确定所述待测试代码对应的测试模板,所述测试模板是根据多个已知的测试用例获得的,所述测试模板用于生成所述待测试代码对应的测试用例,具体可以用于实现步骤302确定功能以及执行步骤302包含的隐含步骤。
在一种可能的实现方式中,所述确定模块1020,还用于根据所述待测试代码的上下文信息,对所述测试模板进行调整,获得所述待测试代码的测试用例;
如图11所示,所述装置还包括:
提供模块1030,用于向用户提供所述待测试代码的测试用例,或者,测试模块1040,用于根据所述待测试代码的测试用例对所述待测试代码进行测试,提供模块1030,用于向所述用户提供所述待测试代码的测试结果。
在一种可能的实现方式中,所述业务属性用于指示所述待测试代码实现的功能或者完成的业务;所述技术属性用于指示所述待测试代码的编程技术信息。
在一种可能的实现方式中,所述装置还包括:提供模块1030,用于向用户提供所述待测试代码对应的测试模板;
所述获取模块1010,还用于获取所述用户对所述待测试代码对应的测试模板进行修正后的测试模板;
所述确定模块1020,还用于根据所述修正后的测试模板生成所述待测试代码的测试用例;
所述装置还包括,测试模块1040,用于根据所述待测试代码的测试用例对所述待测试代码进行测试;
或者,
所述获取模块1010,还用于获取所述用户在所述待测试代码对应的测试模板中确认的测试模板;
所述确定模块1020,还用于根据所述确认的测试模板生成所述待测试代码的测试用例;
所述装置还包括,测试模块1040,用于根据所述待测试代码的测试用例对所述待测试代码进行测试。
在一种可能的实现方式中,所述确定模块1020,用于:
根据所述待测试代码的属性信息,查询测试模板库;
在所述测试模板库中获得与所述待测试代码的属性信息相似度满足预设条件的属性信息对应的测试模板。
在一种可能的实现方式中,所述测试模板库中包括各属性信息对应的测试模板。
在一种可能的实现方式中,所述测试模板库是基于多个代码的属性信息和对应的测试用例构建的。
在一种可能的实现方式中,如图12所示,所述装置还包括:
过滤模块1050,用于在构建所述测试模板库之前,对所述多个代码对应的测试用例中的无效测试用例进行过滤处理。
本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时也可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成为一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
本申请实施例中还提供了一种确定测试模板的计算设备。图13示例性的提供了计算设备1300的一种可能的架构图。
计算设备1300包括存储器1301、处理器1302、通信接口1303以及总线1304。其中,存储器1301、处理器1302、通信接口1303通过总线1304实现彼此之间的通信连接。
存储器1301可以是ROM,静态存储设备,动态存储设备或者RAM。存储器1301可以存储程序,当存储器1301中存储的程序被处理器1302执行时,处理器1302和通信接口1303用于执行确定测试模板的方法。存储器1301还可以存储数据集合,例如,存储器1301中的一部分存储资源用于存储测试模板库。
处理器1302可以采用通用的中央处理器(central processing pnit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),图形处理器(graphics processing unit,gpu)或者一个或多个集成电路。
处理器1302还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的确定测试模板的装置的部分或全部功能可以通过处理器1302中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1302还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(asic)、现成可编程门阵列(fieldprogrammable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请上述实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1301,处理器1302读取存储器1301中的信息,结合其硬件完成本申请实施例的确定测试模板的装置的部分功能。
通信接口1303使用例如但不限于收发器一类的收发模块,来实现计算设备1300与其他设备或通信网络之间的通信。
总线1304可包括在计算设备1300各个部件(例如,存储器1301、处理器1302、通信接口1303)之间传送信息的通路。
在计算机设备1300为多个时,上述每个计算设备1300间通过通信网络建立通信通路。每个计算设备1300上运行获取模块1010和确定模块1020中的任意一个或多个。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digital vIDEodisk,dvd)等),或者半导体介质(如固态硬盘等)。
Claims (18)
1.一种确定测试模板的方法,其特征在于,所述方法包括:
获取待测试代码的属性信息,所述属性信息包括技术属性和业务属性;
根据所述待测试代码的属性信息,确定所述待测试代码对应的测试模板,所述测试模板是根据多个已知的测试用例获得的,所述测试模板用于生成所述待测试代码对应的测试用例。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述待测试代码的上下文信息,对所述测试模板进行调整,获得所述待测试代码的测试用例;
向用户提供所述待测试代码的测试用例,或者,根据所述待测试代码的测试用例对所述待测试代码进行测试,向所述用户提供所述待测试代码的测试结果。
3.根据权利要求1或2所述的方法,其特征在于,所述业务属性用于指示所述待测试代码实现的功能或者完成的业务;所述技术属性用于指示所述待测试代码的编程技术信息。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
向用户提供所述待测试代码对应的测试模板;
获取所述用户对所述待测试代码对应的测试模板进行修正后的测试模板;
根据所述修正后的测试模板生成所述待测试代码的测试用例,根据所述待测试代码的测试用例对所述待测试代码进行测试;
或者,
获取所述用户在所述待测试代码对应的测试模板中确认的测试模板;
根据所述确认的测试模板生成所述待测试代码的测试用例,根据所述待测试代码的测试用例对所述待测试代码进行测试。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述根据所述待测试代码的属性信息,确定所述待测试代码对应的测试模板,包括:
根据所述待测试代码的属性信息,查询测试模板库;
在所述测试模板库中获得与所述待测试代码的属性信息相似度满足预设条件的属性信息对应的测试模板。
6.根据权利要求5所述的方法,其特征在于,所述测试模板库中包括各属性信息对应的测试模板。
7.根据权利要求5或6所述的方法,其特征在于,所述测试模板库是基于多个代码的属性信息和对应的测试用例构建的。
8.根据权利要求6所述的方法,其特征在于,在构建所述测试模板库之前,所述方法还包括:
对所述多个代码对应的测试用例中的无效测试用例进行过滤处理。
9.一种确定测试模板的装置,其特征在于,所述装置包括:
获取模块,用于获取待测试代码的属性信息,其中,所述属性信息包括技术属性和业务属性;
确定模块,用于根据所述待测试代码的属性信息,确定所述待测试代码对应的测试模板,所述测试模板是根据多个已知的测试用例获得的,所述测试模板用于生成所述待测试代码对应的测试用例。
10.根据权利要求9所述的装置,其特征在于,所述确定模块,还用于根据所述待测试代码的上下文信息,对所述测试模板进行调整,获得所述待测试代码的测试用例;
所述装置还包括:
提供模块,用于向用户提供所述待测试代码的测试用例,或者,测试模块,用于根据所述待测试代码的测试用例对所述待测试代码进行测试,提供模块,用于向所述用户提供所述待测试代码的测试结果。
11.根据权利要求9或10所述的装置,其特征在于,所述业务属性用于指示所述待测试代码实现的功能或者完成的业务;所述技术属性用于指示所述待测试代码的编程技术信息。
12.根据权利要求9至11任一项所述的装置,其特征在于,所述装置还包括:提供模块,用于向用户提供所述待测试代码对应的测试模板;
所述获取模块,还用于获取所述用户对所述待测试代码对应的测试模板进行修正后的测试模板;
所述确定模块,还用于根据所述修正后的测试模板生成所述待测试代码的测试用例;
所述装置还包括,测试模块,用于根据所述待测试代码的测试用例对所述待测试代码进行测试;
或者,
所述获取模块,还用于获取所述用户在所述待测试代码对应的测试模板中确认的测试模板;
所述确定模块,还用于根据所述确认的测试模板生成所述待测试代码的测试用例;
所述装置还包括,测试模块,用于根据所述待测试代码的测试用例对所述待测试代码进行测试。
13.根据权利要求9至12任一项所述的装置,其特征在于,所述确定模块,用于:
根据所述待测试代码的属性信息,查询测试模板库;
在所述测试模板库中获得与所述待测试代码的属性信息相似度满足预设条件的属性信息对应的测试模板。
14.根据权利要求13所述的装置,其特征在于,所述测试模板库中包括各属性信息对应的测试模板。
15.根据权利要求13或14所述的装置,其特征在于,所述测试模板库是基于多个代码的属性信息和对应的测试用例构建的。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
过滤模块,用于在构建所述测试模板库之前,对所述多个代码对应的测试用例中的无效测试用例进行过滤处理。
17.一种计算设备,其特征在于,所述计算设备包括存储器和处理器,所述存储器用于存储计算机指令;
所述处理器执行所述存储器存储的计算机指令,以执行上述权利要求1至8中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被计算设备执行时,所述计算设备执行上述权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011026923.6A CN114253828A (zh) | 2020-09-25 | 2020-09-25 | 确定测试模板的方法、装置、计算设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011026923.6A CN114253828A (zh) | 2020-09-25 | 2020-09-25 | 确定测试模板的方法、装置、计算设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114253828A true CN114253828A (zh) | 2022-03-29 |
Family
ID=80790604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011026923.6A Pending CN114253828A (zh) | 2020-09-25 | 2020-09-25 | 确定测试模板的方法、装置、计算设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114253828A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860516A (zh) * | 2022-03-30 | 2022-08-05 | 中国人民解放军军事科学院国防科技创新研究院 | 一种面向risc-v处理器功能验证的随机压力测试方法及装置 |
-
2020
- 2020-09-25 CN CN202011026923.6A patent/CN114253828A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860516A (zh) * | 2022-03-30 | 2022-08-05 | 中国人民解放军军事科学院国防科技创新研究院 | 一种面向risc-v处理器功能验证的随机压力测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111428462B (zh) | 通讯协议模板构建的方法及终端设备 | |
US20200241872A1 (en) | Systems and Methods for Automating and Monitoring Software Development Operations | |
CN111382070B (zh) | 兼容性测试方法、装置、存储介质和计算机设备 | |
CN110933095A (zh) | 一种报文解析方法及装置 | |
CN111400116A (zh) | 芯片测试验证方法、计算机装置及计算机可读存储介质 | |
CN110737594A (zh) | 自动生成测试用例的数据库标准符合性测试方法及装置 | |
CN111221727A (zh) | 测试方法、装置、电子设备和计算机可读介质 | |
US11663113B2 (en) | Real time fault localization using combinatorial test design techniques and test case priority selection | |
CN114253828A (zh) | 确定测试模板的方法、装置、计算设备和存储介质 | |
CN115617594B (zh) | 用于生成激励信息的方法、装置、存储介质及程序产品 | |
CN111427582A (zh) | Rtl代码的管理方法、装置、设备及计算机可读存储介质 | |
CN114721943A (zh) | 测试范围的确定方法和装置 | |
CN114896161A (zh) | 基于人工智能的文件构造方法、装置、计算机设备及介质 | |
CN114661298A (zh) | 公共方法自动生成方法、系统、设备及介质 | |
CN114416895A (zh) | 地图数据的处理方法、装置、电子设备及存储介质 | |
CN113419957A (zh) | 基于规则的大数据离线批处理性能容量扫描方法及装置 | |
CN113158988A (zh) | 财务报表处理方法、装置以及计算机可读存储介质 | |
CN113360365A (zh) | 一种流程测试方法和流程测试系统 | |
CN114756217B (zh) | 基于插件的脚本生成系统 | |
CN113792019B (zh) | 一种分析方法、电子设备及计算机存储介质 | |
CN108628750B (zh) | 一种测试代码处理方法及装置 | |
CN117555533B (zh) | 代码生成方法、电子设备及存储介质 | |
CN111857664B (zh) | 一种应用开发的方法、装置、设备及存储介质 | |
CN116661758B (zh) | 一种优化日志框架配置的方法、装置、电子设备及介质 | |
CN117971647A (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 |