CN113094252B - 测试用例生成方法、装置、计算机设备及存储介质 - Google Patents

测试用例生成方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN113094252B
CN113094252B CN201911336253.5A CN201911336253A CN113094252B CN 113094252 B CN113094252 B CN 113094252B CN 201911336253 A CN201911336253 A CN 201911336253A CN 113094252 B CN113094252 B CN 113094252B
Authority
CN
China
Prior art keywords
function
test
source code
code
function list
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.)
Active
Application number
CN201911336253.5A
Other languages
English (en)
Other versions
CN113094252A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201911336253.5A priority Critical patent/CN113094252B/zh
Publication of CN113094252A publication Critical patent/CN113094252A/zh
Application granted granted Critical
Publication of CN113094252B publication Critical patent/CN113094252B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

本申请公开了一种测试用例生成方法、装置、计算机设备及存储介质,属于计算机技术领域。所述方法包括:获取被测源代码;根据被测源代码,查询第一测试代码;当查询到第一测试代码时,根据程序结构接口PSI获取第一函数列表,第一函数列表是第一测试代码已覆盖的函数列表;根据被测源代码以及第一函数列表,获取第二函数列表,第二函数列表是被测源代码的函数除去第一函数列表中包含的函数后的剩余函数组成的函数列表;生成第二函数列表对应的测试用例。本申请通过生成该第二函数列表对应的测试用例,实现了在已有第一测试代码的基础上,增量生成被测源代码的测试用例,提高了对被测源代码生成测试用例时的效率。

Description

测试用例生成方法、装置、计算机设备及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种测试用例生成方法、装置、计算机设备及存储介质。
背景技术
随着计算机技术领域的发展,代码设计人员可以在计算机设备中可以创建各种各样的源代码,并在计算机设备中运行创建的源代码。
目前,计算机设备中可以运行有不同的编程语言环境,比如,Java语言环境、Kotlin语言环境、C++语言环境等等,代码设计人员可以在不同的编程语言环境中编写不同的程序代码,并在计算机设备中运行。例如,代码设计人员在Java语言环境中编写了一套数学算法代码,计算机设备可以通过运行该数学算法代码,实现数学计算等功能。相关技术中,当代码设计人员需要检查自身编写的数学算法代码(又可称为被测源代码)中各个环节是否可以存在问题时,可以利用计算机设备提供的生成测试用例的插件,生成对该数学算法代码进行检测的测试用例,从而实现对该数学算法代码的检查。
对于上述相关技术中的方案,由于该测试用例生成的方式单一,每次需要根据被测源代码重新生成,导致测试用例的生成效率低等问题。
发明内容
本申请实施例提供了一种测试用例生成方法、装置、计算机设备及存储介质,可以提高计算机设备对被测源代码生成测试用例的效率。所述技术方案如下:
一方面,本申请实施例提供了一种测试用例生成方法,所述方法包括:
获取被测源代码;
根据所述被测源代码,查询第一测试代码,所述第一测试代码是上一次对所述被测源代码进行测试时生成的各个测试用例对应的测试代码;
当查询到所述第一测试代码时,根据程序结构接口PSI获取第一函数列表,所述第一函数列表是所述第一测试代码已覆盖的函数列表;
根据所述被测源代码以及所述第一函数列表,获取第二函数列表,所述第二函数列表是所述被测源代码的函数除去所述第一函数列表中包含的函数后的剩余函数组成的函数列表;
生成所述第二函数列表对应的所述测试用例。
另一方面,本申请实施例提供了一种测试用例生成装置,所述装置包括:
第一获取模块,用于获取被测源代码;
代码查询模块,用于根据所述被测源代码,查询第一测试代码,所述第一测试代码是上一次对所述被测源代码进行测试时生成的各个测试用例对应的测试代码;
第二获取模块,用于当查询到所述第一测试代码时,根据程序结构接口PSI获取第一函数列表,所述第一函数列表是所述第一测试代码已覆盖的函数列表;
第三获取模块,用于根据所述被测源代码以及所述第一函数列表,获取第二函数列表,所述第二函数列表是所述被测源代码的函数除去所述第一函数列表中包含的函数后的剩余函数组成的函数列表;
第一生成模块,用于生成所述第二函数列表对应的所述测试用例。
可选的,所述装置还包括:
参数获取模块,用于通过所述程序结构接口PSI,获取所述被测源代码的应用参数,所述应用参数包含函数列表methodlist,函数method参数类型以及返回值类型;
所述第三获取模块,用于根据所述应用参数中包含的函数列表以及所述第一函数列表,获取所述第二函数列表;
所述第一生成模块,用于根据所述应用参数以及所述第二函数列表中的函数,生成所述第二函数列表对应的所述测试用例。
可选的,所述根据所述应用参数以及所述第二函数列表中的函数,生成所述第二函数列表对应的所述测试用例,包括:
对目标函数参数类型进行参数赋值,得到参数值,所述目标函数参数类型是所述应用参数中包含的所述第二函数列表中的函数对应的函数参数类型;
根据所述参数值以及所述应用参数,生成目标语句,所述目标语句是所述测试用例的代码语句。
可选的,所述装置还包括:
名称获取模块,用于当所述目标函数参数类型包含非基础类型时,获取所述目标函数参数类型中第一函数参数类型的类型名称,所述第一函数参数类型是所述目标函数参数类型中任意一个非基础类型的目标函数参数类型;
定义类查找模块,用于根据所述类型名称查找所述第一函数参数类型的定义类;
函数获取模块,用于当查找到所述第一函数参数类型的定义类时,获取所述定义类的构造函数;
参数赋值模块,用于通过初始化所述构造函数对所述第一函数参数类型进行参数赋值。
可选的,所述装置还包括:
文件读取模块,用于读取配置文件,所述配置文件包含生成所述测试用例时采用的配置项,所述配置项包含编写作者,测试基类,存放路径,批量生成,源代码路径,自动登录中的至少一种配置项;
配置项获取模块,用于根据所述配置文件,获取所述配置文件中包含的各个配置项。
可选的,所述装置还包括:
文件创建模块,用于当未查询到所述第一测试代码时,按照所述存放路径,创建测试文件,所述测试文件用于存储所述测试用例的代码语句;
第二生成模块,用于按照所述被测源代码的函数生成所述测试用例。
可选的,所述第一获取模块,用于当所述配置项包含所述批量生成以及所述源代码路径的配置项,且所述批量生成配置项指示需要批量生成时,获取所述源代码路径下的各个被测源代码。
又一方面,本申请实施例还提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上所述的测试用例生成方法。
又一方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述的测试用例生成方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请通过获取被测源代码;根据被测源代码,查询第一测试代码,第一测试代码是上一次对被测源代码进行测试时生成的各个测试用例对应的测试代码;当查询到第一测试代码时,根据程序结构接口PSI获取第一函数列表,第一函数列表是第一测试代码已覆盖的函数列表;根据被测源代码以及第一函数列表,获取第二函数列表,第二函数列表是被测源代码的函数除去第一函数列表中包含的函数后的剩余函数组成的函数列表;生成第二函数列表对应的测试用例。本申请通过从被测源代码的函数中除去第一函数列表中的函数得到第二函数列表,生成该第二函数列表对应的测试用例,实现了在已有第一测试代码的基础上,增量生成被测源代码的测试用例,避免了对被测源文件再次重新生成全部的测试用例,从而提高了对被测源代码生成测试用例时的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一示例性实施例提供的一种测试用例生成的应用场景示意图;
图2是本申请一示例性实施例涉及的一种测试用例生成方法的方法流程图;
图3是本申请一示例性实施例涉及的一种测试用例生成方法的方法流程图;
图4是本申请一示例性实施例涉及的一种测试用例代码生成装置的结构框图;
图5是本申请一示例性实施例提供的一种测试用例生成方法的方法流程图;
图6是本申请实施例涉及的一种测试用例生成的结构框图;
图7是本申请一示例性实施例提供的一种测试用例生成装置的结构方框图;
图8是本申请一示例性实施例提供的计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请提供的方案,可以用于在程序代码开发过程中对某个源代码文件生成测试用例的现实场景中。为了便于理解,下面首先对一些名词术语以及应用场景进行简单介绍。
1)程序结构接口(Program Structure Interface,PSI):是IntelliJ平台中的一层,该层可以通过java语言、Kotlin语言等语法解析源文件中的源代码。
2)测试用例(Test Case):是指对某个软件产品进行测试时所建立的源代码,可以包含测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等代码。或者说,测试用例是为某个待测源代码而编制的一组测试输入、执行条件以及预期结果,可以用于核实待测源代码的功能是否正常。
3)单元测试(Unit Testing):一个单元可以指某个应用程序中可测试的最小的一组源代码。一组源代码可测试,一般要求其有明确的输入和输出。因此,一般来说,源代码文件中包含明确的输入和输出的每一段源代码都可以被认为是一个可测试的单元。其中,这里所说的输出,并不局限于方法的返回值或对输入参数的改变,而包括了源代码的执行结果中发生改变的数据。单元在程序里可以简单的理解为最小的一组源代码。单元测试也就是在完成每组源代码后进行的测试,从而确保每组源代码都没有问题,从而提高整体的程序代码质量。每个单元测试中可以包含多条测试用例。
请参考图1,其示出了本申请一示例性实施例提供的一种测试用例生成的应用场景示意图。如图1所示,在计算机设备100中包含有开发工具界面101。
可选的,上述计算机设备100可以是安装有开发工具并具有软件开发能力的终端设备,比如,该计算机设备可以是手机、平板电脑、笔记本电脑和台式计算机等等。
其中,上述开发工具界面101可以是计算机设备100展示的某个用于软件开发采用的开发工具的界面,程序开发人员可以在该界面中编写代码,形成某个应用程序的源文件。比如,程序开发人员需要编写一个应用程序A,可以在计算机设备100中运行该开发工具,在展示的开发工具界面101中编写程序,从而完成应用程序A源代码的开发。
可选的,该开发工具可以是IntelliJ IDEA,Android Studio,JDK(JavaDevelopment Kit),Eclipse,MyEclips,NetBeans开发工具中的任意一种。其中,这些开发工具可以支持Java语言环境、Kotlin语言环境等等,当开发工具支持Java语言环境时,程序开发人员可以通过在开发工具界面101中编写Java语言代码,生成相应的源代码文件,并存储在计算机设备100中。当开发工具支持Kotlin语言环境时,程序开发人员可以通过在开发工具界面101中编写Kotlin语言代码,生成相应的源代码文件,并存储在计算机设备100中。
可选的,程序开发人员也可以在该开发工具界面101中打开某个应用程序的源代码,对某个应用程序的源代码进行修改,更改其中存在的漏洞、错误等,或者向某个应用程序添加新的源代码,使其具有新的功能等。
为了避免对某个源代码进行检测时重新生成测试用例的问题,提高计算机设备对被测源代码生成测试用例的效率,本申请实施例提供了一种测试用例生成方法,可以应用于上述图1所示的应用场景中,从而实现在计算机设备中对某个源代码进行检测时,提高测试用例的生成效率。请参考图2,其示出了本申请一示例性实施例涉及的一种测试用例生成方法的方法流程图,该方法可以应用于上述图1所示的应用场景中,由该应用场景中的计算机设备执行。如图2所示,该测试用例生成方法可以包括如下几个步骤。
步骤201,获取被测源代码。
其中,被测源代码可以是计算机设备中需要进行检测的任意一个源代码,比如,计算机设备中开发完成某个应用程序的源代码后,对该应用程序的源代码进行检测时,该应用程序的源代码可以是此时的被测源代码。
步骤202,根据被测源代码,查询第一测试代码,第一测试代码是上一次对被测源代码进行测试时生成的各个测试用例对应的测试代码。
其中,本申请实施例中,在对被测源代码生成测试用例时,由于是对该测试代码进行的单元测试,因此对一个被测源代码生成测试用例时,该被测源代码可能被分割为多个测试单元,对各个测试单元分别生成测试用例。因此,如果一个被测源代码在上一次进行过测试,那么第一测试代码是此次测试中生成的各个测试用例对应的测试代码。比如,被测源代码一在此次进行测试之前,存在上一次测试,并且在上一次测试中生成有3个测试用例,此时第一测试代码可以是这3个测试用例对应的测试代码。
步骤203,当查询到第一测试代码时,根据程序结构接口PSI获取第一函数列表。
其中,第一函数列表是第一测试代码已覆盖的函数列表。
可选的,计算机设备可以通过PSI对第一测试代码进行解析得到第一测试代码中包含的各个函数(也可以称为子程序)组成的函数列表。
步骤204,根据被测源代码以及第一函数列表,获取第二函数列表,第二函数列表是被测源代码的函数除去第一函数列表中包含的函数后的剩余函数组成的函数列表。
可选的,被测源代码的函数是被测源代码中包含的所有函数。按照被测源代码中的函数以及第一函数列表,获取需要新增的函数(即,被测源代码中包含而第一函数列表中不包含的函数),按照新增的函数组成第二函数列表。比如,被测源代码的函数包含有函数一、函数二、函数三、函数四,第一函数列表中包含函数一、函数二,那么,此时函数三和函数四可以是第二函数列表中包含的函数。
步骤205,生成第二函数列表对应的测试用例。
可选的,在本申请实施例中,得到第二函数列表后,可以根据第二函数列表中的函数生成各个函数的测试用例。比如,上述第二函数列表是由函数三和函数四组成的,那么,此处可以分别生成函数三和函数四对应的测试用例。
综上所述,本申请通过获取被测源代码;根据被测源代码,查询第一测试代码,第一测试代码是上一次对被测源代码进行测试时生成的各个测试用例对应的测试代码;当查询到第一测试代码时,根据程序结构接口PSI获取第一函数列表,第一函数列表是第一测试代码已覆盖的函数列表;根据被测源代码以及第一函数列表,获取第二函数列表,第二函数列表是被测源代码的函数除去第一函数列表中包含的函数后的剩余函数组成的函数列表;生成第二函数列表对应的测试用例。本申请通过从被测源代码的函数中除去第一函数列表中的函数得到第二函数列表,生成该第二函数列表对应的测试用例,实现了在已有第一测试代码的基础上,增量生成被测源代码的测试用例,避免了对被测源文件再次重新生成全部的测试用例,从而提高了对被测源代码生成测试用例时的效率。
在一种可能实现的方式中,本申请中还可以编写配置文件,该配置文件可以包含此次生成测试用例时采用的配置项,比如,配置项可以包含编写作者,测试基类,存放路径,批量生成,源代码路径,自动登录中的至少一种配置项。在生成第二函数列表对应的测试用例之前,可以先读取配置文件,按照配置文件中的配置项进一步生成对应的测试用例。请参考图3,其示出了本申请一示例性实施例涉及的一种测试用例生成方法的方法流程图,该方法可以应用于上述图1所示的应用场景中,由该应用场景中的计算机设备执行。如图3所示,该测试用例生成方法可以包括如下几个步骤。
步骤301,读取配置文件。
其中,配置文件中包含生成测试用例时采用的配置项,配置项包含编写作者,测试基类,存放路径,批量生成,源代码路径,自动登录中的至少一种配置项。
可选的,配置文件可以是由程序开发人员预先在计算机设备中编写的,当需要对某个被测源代码生成测试用例时,计算机设备可以主动读取该配置文件。比如,配置文件中可以包含生成测试用例时的存放路径,是否对该被测源代码进行批量生成测试用例,批量生成的测试用例的源代码路径等配置项。
在一种可能实现的方式中,配置文件的代码可以如下:
author=default;#用例编写作者,default取计算机设备的username。
businessid=0;#0表示通用项目,没有和业务相关的测试基类。
testdir=default;#测试用例存放路径,default表示测试用例生成到应用程序目录下,默认为default;如需指定目录,请填写绝对路径,精确到androidTest下。
isAutoLogin=1;#是否需要自动登录,0表示不需要,1表示需要。
isBatched=0;#是否批量生成用例,0表示no,1表示yes。
srcPaths=;#源文件路径,用“;”分割,只有批量生成用例需要填写。
如上述配置文件所示,如果按照上述配置文件中的配置项对某个应用程序的被测源代码生成测试用例时,计算机设备可以将username作为编写作者,按照默认测试账号自动登录该应用程序,并将最后生成的测试用例存储在默认路径default下。
可选的,程序开发人员可以对上述配置文件中的内容进行修改,比如,将上述配置文件中的“isBatched=0”改为“isBatched=1”等。
步骤302,根据配置文件,获取配置文件中包含的各个配置项。
相应的,计算机设备在读取到配置文件后,可以获取配置文件中包含的各个配置项。
步骤303,获取被测源代码。
可选的,在本申请实施例中,对某个被测源代码生成测试用例之前,需要在开发工具展示的开发工具界面中打开需要被测试的源代码,当需要对当前打开的源代码生成测试用例时,计算机设备可以将当前打开的源代码获取为被测源代码。
比如,程序开发人员可以在上述图1所示的开发工具界面中,打开自身之前编写好的某个应用程序的源代码,并通过该开发工具对该应用程序的源代码进行检测,此时,计算机设备可以通过读取配置文件,获取其中的各个配置项后,发现其中包含的批量生成配置项指示不需要批量生成,计算机设备可以将当前打开的应用程序的源代码获取为被测源代码。
在一种可能实现的方式中,当配置项包含批量生成以及源代码路径的配置项,且批量生成配置项指示需要批量生成时,计算机设备可以获取源代码路径下的各个被测源代码。比如,配置文件中的批量生成以及源代码路径的配置项如下:“isBatched=1”、“srcPaths=d;win;bu;”。此时,本步骤计算机设备获取被测源代码时,获取的是路径:“d;win;bu;”下包含的各个源代码,即路径:“d;win;bu;”下包含的各个源代码都是被测源代码。
步骤304,通过程序结构接口PSI,获取被测源代码的应用参数。
其中,应用参数可以包括包列表importlist,函数列表methodlist,函数method参数类型以及返回值类型。其中,importlist中可以包含被测源代码包含各个程序包名称;methodlist中可以包含被测源代码包含各个函数的名称;method参数类型是methodlist中各个函数使用的参数类型;返回值类型是methodlist中各个函数的返回值对应的类型。可选的,当被测源代码是配置文件中的源代码路径下多个被测源代码时,计算机设备也可以依次获取各个被测源代码的应用参数。本申请实施例对此并不加以限定。
可选的,上述应用参数可以是计算机设备通过PSI对被测源代码进行解析得到的,在得到被测源代码的应用参数后,计算机设备可以根据这些应用参数执行后续步骤。
步骤305,根据被测源代码,查询第一测试代码,第一测试代码是上一次对被测源代码进行测试时生成的各个测试用例对应的测试代码。
其中,计算机设备获取到被测源代码后,可以判断该被测源代码是否已经存在有测试文件,如果该被测源代码之前进行过检测,并生成有测试文件,计算机设备可以获取该测试文件中包含的各个测试用例对应的测试代码,将获取到的各个测试用例对应的测试代码作为第一测试代码。
在一种可能实现的方式中,上述被测源代码是在开发工具界面中当前打开的源文件,计算机设备可以根据获取的配置信息中的存储路径中查询被测源代码是否有之前测试时生成的测试代码,当查询到该存储路径中有该被测源代码的测试代码,可以将该测试代码获取为第一测试代码。
在又一种可能实现的方式中,上述被测源代码是计算机设备获取的在源代码路径下的各个源代码,计算机设备也可以根据获取的配置信息中的存储路径中查询各个被测源代码是否有之前测试时生成的测试代码,当查询到该存储路径中某个被测源代码的测试代码,可以将该被测源代码的测试代码获取为第一测试代码。比如,在配置文件中,源代码路径为:“d;win;bu;”,在源代码路径下存在源代码一,源代码二以及源代码三。计算机设备可以按照源代码一,源代码二以及源代码三的顺序,依次在配置文件中的存储路径下查找源代码一,源代码二以及源代码三各自的测试代码,如果查找到源代码一的测试代码,则将该测试代码获取为源代码一的第一测试代码,如果查找到源代码二的测试代码,则将该测试代码获取为源代码二的第一测试代码。
可选的,当查询到第一测试代码时,计算机设备执行后续步骤306,当未查询到第一测试代码时,计算机设备执行后续步骤309。
步骤306,当查询到第一测试代码时,根据程序结构接口PSI获取第一函数列表,第一函数列表是第一测试代码已覆盖的函数列表。
当计算机设备查询到第一测试代码时,说明计算机设备已经对获取的被测源代码生成过测试用例,计算机设备可以通过PSI对第一测试代码进行解析,获取第一测试代码已覆盖的函数列表。比如,以被测源代码是应用程序A的源代码举例,计算机设备中存储有上次对应用程序A的源代码生成的测试用例,该测试用例包含有函数一、函数二。当计算机设备通过上述步骤查询到该测试用例时,可以通过PSI对该测试用例中的测试代码进行解析,得到测试代码已覆盖的函数列表为函数一和函数二组成的列表。
步骤307,根据应用参数中包含的函数列表以及第一函数列表,获取所述第二函数列表。
其中,第二函数列表是被测源代码的函数除去第一函数列表中包含的函数后的剩余函数组成的函数列表。即,计算机设备可以根据上述获取的被测源代码的应用参数中的methodlist,得到被测源代码的函数,从被测源代码的函数中除去第一函数列表中包含的函数,将剩余的函数作为第二函数列表。
比如,被测源代码的应用参数中的methodlist包含有函数一、函数二、函数三、函数四,第一函数列表中包含函数一、函数二,那么,此时函数三和函数四可以是第二函数列表中包含的函数。
在一种可能实现的方式中,当被测源代码的应用参数中的methodlist包含有函数一、函数二、函数三、函数四,第一函数列表中包含函数一、函数三、函数五,那么,此时函数二和函数四可以是第二函数列表中包含的函数。在一种可能实现的方式中,当被测源代码的应用参数中的methodlist包含有函数一、函数二、函数三、函数四,第一函数列表中包含函数五、函数六,那么,此时函数一、函数二、函数三、函数四可以是第二函数列表中包含的函数。
步骤308,根据应用参数以及第二函数列表中的函数,生成第二函数列表对应的测试用例。
其中,对某个函数生成测试用例的过程中,需要生成代码语句,并在生成代码语句的过程中对参数进行赋值。
可选的,在本申请实施例中,计算机设备可以对目标函数参数类型进行参数赋值,得到参数值。其中,目标函数参数类型是应用参数中包含的第二函数列表中的函数对应的函数参数类型。
可选的,计算机设备得到第二函数列表后,可以从上述应用参数中的method参数类型确定出第二函数列表中的各个函数的参数类型。比如,当第二函数列表中包含的函数是函数三和函数四,而函数三和函数四在应用参数中的method参数类型分别是自定义类和回调类,计算机设备可以确定出第二函数列表中的函数三和函数四的参数类型分别是自定义类和回调类(即为目标函数参数类型)。相应的,计算机设备可以对应函数三和函数四各自的参数类型分别进行参数赋值,得到最终需要赋予给函数三和函数四各自的参数值。或者,计算机设备也可以通过PSI获取第二函数列表中的函数三和函数四的参数类型,本申请实施例对此并不加以限定。
可选的,本申请实施例中,可以将method参数类型分为基础类型和非基础类型,非基础类型可以包含除基础类型之外的所有参数类型。其中,计算机设备对基础类型的函数参数类型进行参数赋值时,可以直接根据该基础类型获取该基础类型的参数值。比如,计算机设备中可以存储有基础类型和参数值对应的对应关系表。请参考表1,其示出了本申请实施例涉及的一种基础类型和参数值对应的对应关系表。
类型 参数值
类型一 参数值一
类型二 参数值二
…… ……
表1
计算机设备可以通过查询上述表格,获取到对应基础类型的参数值,将该参数值赋予给对应的基础类型。比如,上述第二函数列表中的某个函数的函数参数类型是类型一,计算机设备可以通过上述表1得到此次赋予的参数值是参数值一,则计算机设备可以将参数值一赋予给该函数。在一种可能实现的方式中,String类型可以是基础类型中的一种,其对应的赋值为“this is test data”。
可选的,当目标函数参数类型包含非基础类型时,计算机设备进行参数赋值时,可以按照如下方式进行赋值:获取目标函数参数类型中第一函数参数类型的类型名称,第一函数参数类型是目标函数参数类型中任意一个非基础类型的目标函数参数类型;根据类型名称查找第一函数参数类型的定义类;当查找到第一函数参数类型的定义类时,获取定义类的构造函数;通过初始化构造函数对第一函数参数类型进行参数赋值。
比如,上述第二函数列表中的某个函数的函数参数类型是自定义类参数类型,回调类参数类型。计算机设备可以获取自定义类参数类型的类型名称,根据该自定义类参数类型的类型名称查找自定义类参数类型的定义类;当查找到自定义类参数类型的定义类时,获取定义类的构造函数;通过初始化构造函数对自定义类参数类型进行参数赋值。计算机设备也可以获取回调类参数类型的类型名称,根据该回调类参数类型的类型名称查找回调类参数类型的定义类;当查找到回调类参数类型的定义类时,获取定义类的构造函数;通过初始化构造函数对回调类参数类型进行参数赋值。可选的,对回调类参数类型进行参数赋值时,还可以添加异步代码。
可选的,计算机设备可以依次获取上述两个函数参数类型各自的参数值,也可以同时获取,本申请实施例对此并不加以限定。可选的,非基础类型中还可以包含参数异常类型,当上述第二函数列表中的某个函数的函数参数类型是参数异常类型时,计算机设备可以通过上述方式,赋值参数异常类型的边界值或者异常值(超出边界,null等值)。
可选的,在上述根据类型名称查找第一函数参数类型的定义类时,如果查找到第一函数参数类型存在多个名称相同的定义类时,计算机设备还可以根据被测源代码的包列表importlist以及所在的源代码包(package),从多个名称相同的定义类选择目标定义类,目标定义类是多个名称相同的定义类中与package对应的定义类。上述获取定义类的构造函数,可以替换为获取目标定义类的构造函数。
可选的,计算机设备可以根据参数值以及应用参数,生成目标语句,目标语句是测试用例的代码语句。可选的,计算机设备可以在根据应用参数生成目标语句后,将参数值添加至目标语句中,从而完善此次生成的代码语句,最终生成对此次被测源代码检测时需要生成的测试用例。可选的,计算机设备可以将生成的测试用例追加到已有的测试文件中,从而构成对被测源代码重新检测的测试用例。
可选的,目标语句中可以包含有Import语句、注释语句、断言语句、测试类语句等。其中,对于Import语句的生成,计算机设备可以根据生成被测代码的测试代码过程中用到第二函数列表中的某个函数时,就根据该函数中用到的类,来生成并添加相应的Import语句,比如,第二函数列表中包含函数三时,在生成被测代码的测试代码过程中用到函数三时,可以根据函数三的类,查找对应的自定义类,并Import该自定义类,从而生成对应的Import语句。例如,函数三的类是IBaseCallBack类,计算机设备可以找到IBaseCallBack的定义类,然后import该定义类。
可选的,对于注释语句的生成,计算机设备可以根据开发工具平台,提供注释语句。可选的,对应上述IntelliJ IDEA平台和Android Studio平台,可以提供有两种注释语句,本申请实施例对此并不加以限定。
可选的,对于断言语句的生成,计算机设备可以通过PSI获取第二函数列表中包含的各个函数各自的返回值类型以及异步测试用例返回值的类型,并生成正确的断言语句。可选的,第二函数列表中包含的各个函数各自的返回值类型还可以从得到的应用参数中的返回值类型中查找对应的返回值类型。其中,本申请实施例中,生成断言语句的过程中还使用了类型映射机制,对每种类型都进行了断言。比如,开发人员可以预先对各种返回值类型进行断言,建立断言结果和返回值类型之间的对应关系,并将该对应关系存储在计算机设备中,计算机设备可以根据该对应关系获取断言语句。可选的,本申请实施例中可对int,long,double,short,float,String,ByteString,boolean,byte[],List,ArrayList,等类进行断言。
可选的,对于测试类语句的生成,计算机设备可以先判断第二函数列表中包含的各个函数对应的类是不是单例,如果是,可以使用单例模式创建测试类语句,如果不是,可以使用该类的构造函数初始化该函数的类,从而创建测试类语句。
请参考图4,其示出了本申请一示例性实施例涉及的一种测试用例代码生成装置的结构框图。如图4所示,其中包含了Import语句生成模块401,注释语句生成模块402,测试类语句生成模块403,断言语句生成模块404,自定义类型参数赋值模块405,回调类型参数赋值模块406,参数异常赋值模块407,基础类型参数赋值模块408,其它语句生成模块409。其中,计算机设备可以按照该图4所示的各个模块之间的配合生成上述需要的测试用例,各个模块的执行内容可以参考上述参数赋值以及语句生成的内容描述,此处不再赘述。可选的,其它语句生成模块409中还可以包含:setUp语句生成,testBeforeClass语句生成,tearDown语句生成,testAfterClass语句生成,异步语句生成,log语句生成等内容,此处不再赘述。
可选的,对应上述一种可能实现的方式,当第一函数列表中包含有被测源代码的应用参数中的methodlist中未包含的函数时,计算机设备还可以获取第一函数列表中包含有被测源代码的应用参数中的methodlist中未包含的函数,从上述获取的第一测试代码中删除未包含的函数对应的测试代码。比如,当被测源代码的应用参数中的methodlist包含有函数一、函数二、函数三、函数四,第一函数列表中包含函数一、函数三、函数五。此时函数五是被测源代码的应用参数中的methodlist中未包含的函数,计算机设备还可以对第一测试代码中对应函数五的测试用例进行注释,删除函数五的测试代码。
步骤309,当未查询到第一测试代码时,按照存放路径,创建测试文件,测试文件用于存储测试用例的代码语句。
当未查询到第一测试代码时,说明计算机设备未对获取的被测源代码生成过测试用例,计算机设备是对该被测源代码重新生成测试用例的,此时,计算机设备可以根据配置文件中的存放路径,创建测试文件,在该测试文件中存储后续生成的测试用例的代码语句。
步骤310,按照被测源代码的函数生成测试用例。
可选的,计算机设备生成测试用例的代码语句可以参照上述步骤308中代码语句的生成方式,此处不再赘述。
综上所述,本申请通过获取被测源代码;根据被测源代码,查询第一测试代码,第一测试代码是上一次对被测源代码进行测试时生成的各个测试用例对应的测试代码;当查询到第一测试代码时,根据程序结构接口PSI获取第一函数列表,第一函数列表是第一测试代码已覆盖的函数列表;根据被测源代码以及第一函数列表,获取第二函数列表,第二函数列表是被测源代码的函数除去第一函数列表中包含的函数后的剩余函数组成的函数列表;生成第二函数列表对应的测试用例。本申请通过从被测源代码的函数中除去第一函数列表中的函数得到第二函数列表,生成该第二函数列表对应的测试用例,实现了在已有第一测试代码的基础上,增量生成被测源代码的测试用例,避免了对被测源文件再次重新生成全部的测试用例,从而提高了对被测源代码生成测试用例时的效率。
另外,通过在配置文件中设置批量生成语句,可以支持批量生成多个源代码的测试用例,提高测试用例的生成效率。本申请还支持复杂类型参数值赋值(如:自定义类型参数,回调类型参数,参数异常赋值),提高检测的准确性。
以上述计算机设备是电脑,被测源代码是手机中的应用程序的源代码为例,并结合界面操作对上述方法实施例进行举例说明。请参考图5,其示出了本申请一示例性实施例提供的一种测试用例生成方法的方法流程图。如图5所示,该测试用例生成方法可以包括如下几个步骤。
步骤501,在开发工具界面中打开被测源代码。
比如,在上述图1所示的开发工具界面中,程序开发人员可以打开被测源代码,在该界面中对被测源代码进行编辑,修改等。
步骤502,触发测试用例生成按钮。
可选的,在上述图1所示的界面中,还包含有测试用例生成按钮102,程序开发人员可以触发图1中的测试用例生成按钮102,触发对被测源代码生成测试用例。
步骤503,生成测试用例。
可选的,电脑可以自动对该被测源代码生成测试用例。其中,生成测试用例的方式可以参照上述图3所示的方法实施例中的描述,此处不再赘述。
步骤504,运行测试用例。
可选的,电脑可以自动对生成测试用例进行运行,从而检测该被测源代码。可选的,电脑还可以将生成的测试用例展示出来,程序开发人员也可以对测试用例进行检查,补充等。
综上所述,本申请通过获取被测源代码;根据被测源代码,查询第一测试代码,第一测试代码是上一次对被测源代码进行测试时生成的各个测试用例对应的测试代码;当查询到第一测试代码时,根据程序结构接口PSI获取第一函数列表,第一函数列表是第一测试代码已覆盖的函数列表;根据被测源代码以及第一函数列表,获取第二函数列表,第二函数列表是被测源代码的函数除去第一函数列表中包含的函数后的剩余函数组成的函数列表;生成第二函数列表对应的测试用例。本申请通过从被测源代码的函数中除去第一函数列表中的函数得到第二函数列表,生成该第二函数列表对应的测试用例,实现了在已有第一测试代码的基础上,增量生成被测源代码的测试用例,避免了对被测源文件再次重新生成全部的测试用例,从而提高了对被测源代码生成测试用例时的效率。
另外,本申请可以根据被测函数的参数类型,自动生成异常参数值,自动生成异常测试用例等,从而发现应用程序的源代码中的问题。自动生成的测试代码可直接编译运行,避免了后续人工编写运行代码,提高了检测效率。通过一键生成的方式,降低了测试用例的编写门槛,有利于统一测试用例编写规范。
请参考图6,其示出了本申请实施例涉及的一种测试用例生成的结构框图。如图6所示,其中包含了代码解析模块601,配置模块602,测试用例生成模块603。
其中,代码解析模块601用于通过PSI解析被测源代码、第一测试代码等,获取相应的参数等。配置模块602用于建立配置文件,提供测试用例生成时采用的配置项。测试用例生成模块603用于读取配置模块中的配置文件以及获取代码解析模块601的参数,并生成对应的测试代码。
可选的,上述各个模块执行的步骤也可以参照上述图3所示的方法实施例中的部分内容,此处不再赘述。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图7是本申请一示例性实施例提供的一种测试用例生成装置的结构方框图。该测试用例生成装置可以用于图1所示的计算机设备中,以执行图2、图3或图5对应实施例所示的方法中的全部或者部分步骤。该测试用例生成装置可以包括如下模块:
第一获取模块701,用于获取被测源代码;
代码查询模块702,用于根据所述被测源代码,查询第一测试代码,所述第一测试代码是上一次对所述被测源代码进行测试时生成的各个测试用例对应的测试代码;
第二获取模块703,用于当查询到所述第一测试代码时,根据程序结构接口PSI获取第一函数列表,所述第一函数列表是所述第一测试代码已覆盖的函数列表;
第三获取模块704,用于根据所述被测源代码以及所述第一函数列表,获取第二函数列表,所述第二函数列表是所述被测源代码的函数除去所述第一函数列表中包含的函数后的剩余函数组成的函数列表;
第一生成模块705,用于生成所述第二函数列表对应的所述测试用例。
可选的,所述装置还包括:
参数获取模块,用于通过所述程序结构接口PSI,获取所述被测源代码的应用参数,所述应用参数包含函数列表methodlist,函数method参数类型以及返回值类型;
所述第三获取模块704,用于根据所述应用参数中包含的函数列表以及所述第一函数列表,获取所述第二函数列表;
所述第一生成模块705,用于根据所述应用参数以及所述第二函数列表中的函数,生成所述第二函数列表对应的所述测试用例。
可选的,所述根据所述应用参数以及所述第二函数列表中的函数,生成所述第二函数列表对应的所述测试用例,包括:
对目标函数参数类型进行参数赋值,得到参数值,所述目标函数参数类型是所述应用参数中包含的所述第二函数列表中的函数对应的函数参数类型;
根据所述参数值以及所述应用参数,生成目标语句,所述目标语句是所述测试用例的代码语句。
可选的,所述装置还包括:
名称获取模块,用于当所述目标函数参数类型包含非基础类型时,获取所述目标函数参数类型中第一函数参数类型的类型名称,所述第一函数参数类型是所述目标函数参数类型中任意一个非基础类型的目标函数参数类型;
定义类查找模块,用于根据所述类型名称查找所述第一函数参数类型的定义类;
函数获取模块,用于当查找到所述第一函数参数类型的定义类时,获取所述定义类的构造函数;
参数赋值模块,用于通过初始化所述构造函数对所述第一函数参数类型进行参数赋值。
可选的,所述装置还包括:
文件读取模块,用于读取配置文件,所述配置文件包含生成所述测试用例时采用的配置项,所述配置项包含编写作者,测试基类,存放路径,批量生成,源代码路径,自动登录中的至少一种配置项;
配置项获取模块,用于根据所述配置文件,获取所述配置文件中包含的各个配置项。
可选的,所述装置还包括:
文件创建模块,用于当未查询到所述第一测试代码时,按照所述存放路径,创建测试文件,所述测试文件用于存储所述测试用例的代码语句;
第二生成模块,用于按照所述被测源代码的函数生成所述测试用例。
可选的,所述第一获取模块,用于当所述配置项包含所述批量生成以及所述源代码路径的配置项,且所述批量生成配置项指示需要批量生成时,获取所述源代码路径下的各个被测源代码。
综上所述,本申请通过获取被测源代码;根据被测源代码,查询第一测试代码,第一测试代码是上一次对被测源代码进行测试时生成的各个测试用例对应的测试代码;当查询到第一测试代码时,根据程序结构接口PSI获取第一函数列表,第一函数列表是第一测试代码已覆盖的函数列表;根据被测源代码以及第一函数列表,获取第二函数列表,第二函数列表是被测源代码的函数除去第一函数列表中包含的函数后的剩余函数组成的函数列表;生成第二函数列表对应的测试用例。本申请通过从被测源代码的函数中除去第一函数列表中的函数得到第二函数列表,生成该第二函数列表对应的测试用例,实现了在已有第一测试代码的基础上,增量生成被测源代码的测试用例,避免了对被测源文件再次重新生成全部的测试用例,从而提高了对被测源代码生成测试用例时的效率。
需要说明的是:上述实施例提供的装置在执行上述步骤时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与上述测试用例生成方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8是本申请一示例性实施例提供的一种计算机设备的结构示意图。所述计算机设备800包括中央处理单元(Central Processing Unit,CPU)801、包括随机存取存储器(Random Access Memory,RAM)802和只读存储器(Read Only Memory,ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。所述计算机设备800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(Input/OutputSystem,I/O系统)806,和用于存储操作系统812、应用程序813和其他程序模块814的大容量存储设备807。
所述基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为计算机设备800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,带电可擦可编程只读存储器)、闪存或其他固态存储其技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
计算机设备800可以通过连接在所述系统总线805上的网络接口单元811连接到互联网或者其它网络设备。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,中央处理单元801通过执行该一个或一个以上程序来实现本申请上述各个实施例提供的方法中,由计算机设备执行的全部或者部分步骤。
在一个示例性实施例中,还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集可由计算机设备的处理器(也称为中央处理单元)加载并执行,以完成本申请各个实施例所示的方法的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (9)

1.一种测试用例生成方法,其特征在于,所述方法包括:
获取被测源代码;
根据所述被测源代码,查询第一测试代码,所述第一测试代码是上一次对所述被测源代码进行测试时生成的各个测试用例对应的测试代码;
当查询到所述第一测试代码时,根据程序结构接口PSI获取第一函数列表,所述第一函数列表是所述第一测试代码已覆盖的函数列表;
通过所述程序结构接口PSI,获取所述被测源代码的应用参数,所述应用参数包含函数列表methodlist,函数method参数类型以及返回值类型;
根据所述应用参数中包含的函数列表以及所述第一函数列表,获取第二函数列表,所述第二函数列表是所述被测源代码的函数除去所述第一函数列表中包含的函数后的剩余函数组成的函数列表;所述被测源代码的函数是所述被测源代码中包含的所有函数;
根据所述应用参数以及所述第二函数列表中的函数,生成所述第二函数列表对应的所述测试用例,作为对所述被测源代码增量生成的测试用例。
2.根据权利要求1所述的方法,其特征在于,所述根据所述应用参数以及所述第二函数列表中的函数,生成所述第二函数列表对应的所述测试用例,包括:
对目标函数参数类型进行参数赋值,得到参数值,所述目标函数参数类型是所述应用参数中包含的所述第二函数列表中的函数对应的函数参数类型;
根据所述参数值以及所述应用参数,生成目标语句,所述目标语句是所述测试用例的代码语句。
3.根据权利要求2所述的方法,其特征在于,当所述目标函数参数类型包含非基础类型时,所述方法还包括:
获取所述目标函数参数类型中第一函数参数类型的类型名称,所述第一函数参数类型是所述目标函数参数类型中任意一个非基础类型的目标函数参数类型;
根据所述类型名称查找所述第一函数参数类型的定义类;
当查找到所述第一函数参数类型的定义类时,获取所述定义类的构造函数;
通过初始化所述构造函数对所述第一函数参数类型进行参数赋值。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
读取配置文件,所述配置文件包含生成所述测试用例时采用的配置项,所述配置项包含编写作者,测试基类,存放路径,批量生成,源代码路径,自动登录中的至少一种配置项;
根据所述配置文件,获取所述配置文件中包含的各个配置项。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当未查询到所述第一测试代码时,按照所述存放路径,创建测试文件,所述测试文件用于存储所述测试用例的代码语句;
按照所述被测源代码的函数生成所述测试用例。
6.根据权利要求4所述的方法,其特征在于,当所述配置项包含所述批量生成以及所述源代码路径的配置项,且所述批量生成配置项指示需要批量生成时,所述获取被测源代码,包括:
获取所述源代码路径下的各个被测源代码。
7.一种测试用例生成装置,其特征在于,所述装置包括:
第一获取模块,用于获取被测源代码;
代码查询模块,用于根据所述被测源代码,查询第一测试代码,所述第一测试代码是上一次对所述被测源代码进行测试时生成的各个测试用例对应的测试代码;
第二获取模块,用于当查询到所述第一测试代码时,根据程序结构接口PSI获取第一函数列表,所述第一函数列表是所述第一测试代码已覆盖的函数列表;
参数获取模块,用于通过所述程序结构接口PSI,获取所述被测源代码的应用参数,所述应用参数包含函数列表methodlist,函数method参数类型以及返回值类型;
第三获取模块,用于根据所述应用参数中包含的函数列表以及所述第一函数列表,获取第二函数列表,所述第二函数列表是所述被测源代码的函数除去所述第一函数列表中包含的函数后的剩余函数组成的函数列表;所述被测源代码的函数是所述被测源代码中包含的所有函数;
第一生成模块,用于根据所述应用参数以及所述第二函数列表中的函数,生成所述第二函数列表对应的所述测试用例,作为对所述被测源代码增量生成的测试用例。
8.一种计算机设备,其特征在于,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一所述的测试用例生成方法。
9.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至6任一所述的测试用例生成方法。
CN201911336253.5A 2019-12-23 2019-12-23 测试用例生成方法、装置、计算机设备及存储介质 Active CN113094252B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911336253.5A CN113094252B (zh) 2019-12-23 2019-12-23 测试用例生成方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911336253.5A CN113094252B (zh) 2019-12-23 2019-12-23 测试用例生成方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN113094252A CN113094252A (zh) 2021-07-09
CN113094252B true CN113094252B (zh) 2023-09-29

Family

ID=76662984

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911336253.5A Active CN113094252B (zh) 2019-12-23 2019-12-23 测试用例生成方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN113094252B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI832514B (zh) * 2022-10-25 2024-02-11 英業達股份有限公司 選擇性調整伺服器測試項目之方法
CN116225965B (zh) * 2023-04-11 2023-10-10 中国人民解放军国防科技大学 一种面向io大小的数据库性能问题检测方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008534A (ja) * 2009-06-25 2011-01-13 Kawasaki Microelectronics Inc テストコード生成装置およびテストコード生成プログラム
CN102147764A (zh) * 2010-02-08 2011-08-10 微软公司 测试代码质量评估
CN104252408A (zh) * 2013-06-26 2014-12-31 国际商业机器公司 提供测试用例的方法和装置
CN105468505A (zh) * 2014-08-12 2016-04-06 腾讯科技(深圳)有限公司 覆盖率测试方法及覆盖率测试装置
CN106547678A (zh) * 2015-09-16 2017-03-29 伊姆西公司 用于白盒测试的方法和装置
CN107133174A (zh) * 2017-05-04 2017-09-05 浙江路港互通信息技术有限公司 测试用例代码自动生成装置与方法
US9916230B1 (en) * 2016-09-26 2018-03-13 International Business Machines Corporation White box testing
CN108874661A (zh) * 2018-05-07 2018-11-23 上海陆家嘴国际金融资产交易市场股份有限公司 测试映射关系库生成方法、装置、计算机设备和存储介质
CN110134582A (zh) * 2019-04-03 2019-08-16 口碑(上海)信息技术有限公司 测试用例的处理及数据处理方法及装置
CN110287098A (zh) * 2019-05-21 2019-09-27 深圳壹账通智能科技有限公司 自动创建测试脚本方法、服务器及计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844929B2 (en) * 2008-05-08 2010-11-30 Lsi Corporation Optimizing test code generation for verification environment
US8578344B2 (en) * 2010-06-17 2013-11-05 Microsoft Corporation Incremental compositional dynamic test generation
US9632754B2 (en) * 2012-07-06 2017-04-25 International Business Machines Corporation Auto generation and linkage of source code to test cases
US9471468B2 (en) * 2014-12-02 2016-10-18 International Business Machines Corporation System, method, and computer program to improve the productivity of unit testing
CN106557413A (zh) * 2015-09-25 2017-04-05 伊姆西公司 基于代码覆盖率获取测试用例的方法和设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011008534A (ja) * 2009-06-25 2011-01-13 Kawasaki Microelectronics Inc テストコード生成装置およびテストコード生成プログラム
CN102147764A (zh) * 2010-02-08 2011-08-10 微软公司 测试代码质量评估
CN104252408A (zh) * 2013-06-26 2014-12-31 国际商业机器公司 提供测试用例的方法和装置
CN105468505A (zh) * 2014-08-12 2016-04-06 腾讯科技(深圳)有限公司 覆盖率测试方法及覆盖率测试装置
CN106547678A (zh) * 2015-09-16 2017-03-29 伊姆西公司 用于白盒测试的方法和装置
US9916230B1 (en) * 2016-09-26 2018-03-13 International Business Machines Corporation White box testing
CN107133174A (zh) * 2017-05-04 2017-09-05 浙江路港互通信息技术有限公司 测试用例代码自动生成装置与方法
CN108874661A (zh) * 2018-05-07 2018-11-23 上海陆家嘴国际金融资产交易市场股份有限公司 测试映射关系库生成方法、装置、计算机设备和存储介质
CN110134582A (zh) * 2019-04-03 2019-08-16 口碑(上海)信息技术有限公司 测试用例的处理及数据处理方法及装置
CN110287098A (zh) * 2019-05-21 2019-09-27 深圳壹账通智能科技有限公司 自动创建测试脚本方法、服务器及计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种基于面向对象测试模型的测试代码生成方法与工具;谢冰;张晨东;;计算机研究与发展(S1);全文 *
基于JTest的自动化单元测试技术;高远;杨欣;李凯;;指挥信息系统与技术(04);全文 *

Also Published As

Publication number Publication date
CN113094252A (zh) 2021-07-09

Similar Documents

Publication Publication Date Title
CN110990020A (zh) 一种软件编译方法、装置及电子设备和存储介质
CN112394942B (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
CN111399853A (zh) 机器学习模型与自定义算子的模板化部署方法
JP2015507303A (ja) コード網羅率決定方法およびシステム
US20070061641A1 (en) Apparatus and method for generating test driver
US20190180037A1 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
CN113094252B (zh) 测试用例生成方法、装置、计算机设备及存储介质
CN111078568A (zh) 代码规范方法、装置、计算机设备和存储介质
CN115686631B (zh) 一种基于知识基的随机指令生成方法、装置及存储介质
CN114429103A (zh) 一种芯片验证方法、装置及电子设备和存储介质
CN111897727A (zh) 软件测试方法、装置、计算机设备及存储介质
CN107622017B (zh) 一种通用自动化软件测试的解析方法
JP2017174418A (ja) モデルチェックのためのデータ構造抽象化
CN114610286A (zh) 开发文档的生成方法、装置、计算机设备及存储介质
CN116166236A (zh) 代码推荐方法、装置、计算机设备及存储介质
CN111552475A (zh) 一种半导体存储器老化测试的Workload测试文件编译方法、测试方法及系统
CN114924737A (zh) 一种电池管理系统源代码集成测试方法、测试装置及电子设备
WO2023207973A1 (zh) 编译器测试方法、用例生成方法、装置及指令存储结构
CN110806891B (zh) 嵌入式设备软件版本的生成方法及装置
CN111240987A (zh) 移植程序检测方法、装置、电子设备及计算机可读存储介质
CN116048481A (zh) 业务信息处理系统及方法
CN113805861B (zh) 基于机器学习的代码生成方法、代码编辑系统及存储介质
CN110968500A (zh) 一种测试用例的执行方法及装置
CN112380133B (zh) 一种指令集模拟器利用功能库仿真的方法及装置
CN114691496A (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
GR01 Patent grant
GR01 Patent grant