CN103268285A - 针对api接口的健壮性测试用例自动生成方法和装置 - Google Patents

针对api接口的健壮性测试用例自动生成方法和装置 Download PDF

Info

Publication number
CN103268285A
CN103268285A CN2013102153986A CN201310215398A CN103268285A CN 103268285 A CN103268285 A CN 103268285A CN 2013102153986 A CN2013102153986 A CN 2013102153986A CN 201310215398 A CN201310215398 A CN 201310215398A CN 103268285 A CN103268285 A CN 103268285A
Authority
CN
China
Prior art keywords
data
api interface
type
function
test
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
CN2013102153986A
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN2013102153986A priority Critical patent/CN103268285A/zh
Publication of CN103268285A publication Critical patent/CN103268285A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提出一种针对API接口的健壮性测试用例自动生成方法,包括以下步骤:获取待测API接口的源代码;对源代码进行静态分析以获得静态扫描结果,并从静态扫描结果中获取API接口中函数的函数名、参数名、参数类型和返回值;建立基本数据集合,其中,基本数据集合包括多个基本数据类型和每个基本数据类型对应的相关数据;根据API接口中函数的参数类型和基本数据集合生成API接口的测试数据;根据测试数据生成API接口的测试用例。本发明使用计算机代替人力,自动化的生成测试用例,节省了人力成本,提高了效率。本发明还公开了一种针对API接口的健壮性测试用例自动生成装置。

Description

针对API接口的健壮性测试用例自动生成方法和装置
技术领域
本发明涉及软件测试技术领域,特别涉及一种针对API接口的健壮性测试用例自动生成方法和装置。
背景技术
软件测试利用测试工具,按照测试方案和流程对软件产品进行功能和性能测试。软件测试使用人工或者自动手段运行或测试某个系统的过程,检验系统是否满足规定的需求。
现在的测试代码一般都是通过测试人员手工编写。虽然已经有单元测试框架类似gtest、btest,但是并没有自动产生真正的测试代码。例如gtest测试框架可以在不同平台上,如Linux、Mac OS X、Windows、Cygwin、WindowsCE和Symbian上编写C++测试用例,但是只是提出了框架,还需要人工撰写测试代码。
完成测试过程需要准备测试数据、测试代码和测试环境。测试数据需要对业务有一定了解,并且需要经验累积;测试代码一般是人通过分析已有代码手工进行撰写;测试环境是在人对业务了解和代码了解的基础上搭建的。测试人员完成上述过程本质上是通过了解业务、累积经验、熟悉代码来完成的。通用性的健壮测试忽略业务之间的差异,通过经验累积和代码了解来进行健壮性测试。由于屏蔽了业务的差异,因此通用性的健壮测试有更多的规律,而现有技术严重依赖人工,浪费了人力,并且耗时长,效率低。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。
为此,本发明的一个目的在于提出一种针对API接口的健壮性测试用例自动生成方法,使用计算机代替人力,自动化的生成测试用例,节省了人力成本,提高了效率。
本发明的第二个目的在于提出一种针对API接口的健壮性测试用例自动生成装置。
为达到上述目的,本发明第一方面的实施例提出了一种针对API接口的健壮性测试用例自动生成方法,包括以下步骤:获取待测API接口的源代码;对所述源代码进行静态分析以获得静态扫描结果,并从静态扫描结果中获取所述API接口中函数的函数名、参数名、参数类型和返回值;建立基本数据集合,其中,所述基本数据集合包括多个基本数据类型和每个基本数据类型对应的相关数据;根据所述API接口中函数的参数类型和所述基本数据集合生成所述API接口的测试数据;根据所述测试数据生成所述API接口的测试用例。
根据本发明实施例的针对API接口的健壮性测试用例自动生成方法通过分析代码,自动生成函数对应的测试数据,并组合成健壮性测试用例。在单元测试中可以加快单元测试的撰写速度,也支持无人参与的健壮性测试。通过计算机自动化的方法生成健壮性测试用例,代替了人工,避免了人力学习和熟悉业务以及编码,提高了测试代码生成的效率,节省了人力成本,提高了效率。
在本发明的一个实施例中,所述根据API接口中函数的参数类型和所述基本数据集合生成所述API接口的测试数据进一步包括:
如果所述API接口中函数的参数类型为基本类型,则查询所述基本数据集合直接生成基本类型对应的数据;如果所述API接口中函数的参数类型是组合类型,则分别获得所述组合类型中的多个基本类型,并查询所述基本数据集合直接获取所述多个基本类型对应的多个数据,并对所述多个数据进行组合以生成所述组合类型对应的数据。
在本发明的一个实施例中,所述API接口的测试用例包括数据赋值代码和函数调用代码。
在本发明的一个实施例中,所述函数调用代码根据所述函数名和参数名按照函数的调用格式组装获得。
在本发明的一个实施例中,所述数据赋值代码通过所述函数的参数类型和所述测试数据获得。
本发明第二方面的实施例提出了一种针对API接口的健壮性测试用例自动生成装置,包括源代码获取模块、静态分析模块、基本数据集合建立模块、测试数据生成模块和测试用例生成模块。
源代码获取模块用于获取待测API接口的源代码;静态分析模块用于对所述源代码进行静态分析以获得静态扫描结果,并从静态扫描结果中获取所述API接口中函数的函数名、参数名、参数类型和返回值;基本数据集合建立模块用于建立基本数据集合,其中,所述基本数据集合包括多个基本数据类型和每个基本数据类型对应的相关数据;用于根据所述API接口中函数的参数类型和所述基本数据集合生成所述API接口的测试数据;用于根据所述测试数据生成所述API接口的测试用例。
根据本发明实施例的针对API接口的健壮性测试用例自动生成装置通过分析代码,自动生成函数对应的测试数据,并组合成健壮性测试用例。在单元测试中可以加快单元测试的撰写速度,也支持无人参与的健壮性测试。通过计算机自动化的方法生成健壮性测试用例,代替了人工,避免了人力学习和熟悉业务以及编码,提高了测试代码生成的效率,节省了人力成本,提高了效率。
在本发明的一个实施例中,在所述API接口中函数的参数类型为基本类型时,所述测试数据生成模块查询所述基本数据集合直接获取基本类型对应的数据。
在本发明的一个实施例中,在所述API接口中函数的参数类型是组合类型时,所述测试数据生成模块分别获得所述组合类型中的多个基本类型,并查询所述基本数据集合直接获取所述多个基本类型对应的多个数据,以及对所述多个数据进行组合以获得所述组合类型对应的数据。
在本发明的一个实施例中,所述API接口的测试用例包括数据赋值代码和函数调用代码。
在本发明的一个实施例中,所述函数调用代码根据所述函数名和参数名按照函数的调用格式组装获得。
在本发明的一个实施例中,所述数据赋值代码通过所述函数的参数类型和所述测试数据获得。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是根据本发明实施例的针对API接口的健壮性测试用例自动生成方法的流程图;
图2a是根据本发明实施例的文件存储树的示意图;
图2b是根据本发明实施例的文件存储树中my_add函数调用示意图;
图3是根据本发明实施例的接口my_add的测试用例;
图4是根据本发明实施例的测试用例的结构化效果展示图;和
图5是根据本发明实施例的针对API接口的健壮性测试用例自动生成装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
下面参考图1描述根据本发明实施例的针对API接口的健壮性测试用例自动生成方法,包括以下步骤:
步骤S110:获取待测API接口的源代码。
步骤S120:对源代码进行静态分析以获得静态扫描结果,并从静态扫描结果中获取API接口中函数的函数名、参数名、参数类型和返回值。
步骤S130:建立基本数据集合,其中,基本数据集合包括多个基本数据类型和每个基本数据类型对应的相关数据。
步骤S140:根据API接口中函数的参数类型和基本数据集合生成API接口的测试数据。
根据API接口中函数的参数类型和基本数据集合生成API接口的测试数据进一步包括:
如果API接口中函数的参数类型为基本类型,则查询基本数据集合直接生成基本类型对应的数据;以及
如果API接口中函数的参数类型是组合类型,则分别获得组合类型中的多个基本类型,并查询基本数据集合直接获取多个基本类型对应的多个数据,并对多个数据进行组合以生成组合类型对应的数据。
步骤S150:根据测试数据生成API接口的测试用例。
其中,API接口的测试用例包括数据赋值代码和函数调用代码。函数调用代码根据函数名和参数名按照函数的调用格式组装获得。数据赋值代码通过函数的参数类型和测试数据获得。
具体地,结合API每个参数类型对应的测试数据(比如int类型对应的数据1)和API接口参数类型所对应的赋值语法(比如int的语法要求为一个参数类型+空格+变量名称+等号+int数据)可自动撰写一个API接口每个参数类型的赋值代码(对于int类型,该部分的结果为int a=1)。然后,根据API接口的调用语法(也就是函数名+括号+参数名+逗号+参数名+...),将赋值代码中参数名称传给API接口名称,从而完成一个API接口的函数调用代码。综上,产生了测试用例。
机器代替人写代码的关键是让机器模拟人思考和判断的过程。API接口的健壮性测试用例包括测试数据、测试代码和运行环境。本方法使用计算机代替人进行经验累积学习过程和代码了解,自动准备测试数据、撰写测试用例、自动化搭建运行环境、自动运行测试用例,实现针对API接口的自动健壮性测试。
下面以一个具体的例子对本发明进行说明,可以理解的是,下述说明仅出于示例目的,根据本发明的实施例不限于此。
步骤S210:获取待测API接口的源代码。
步骤S220:对源代码进行静态分析。
应用GCC编译选项生成待测源代码的静态扫描结果,分析该扫描结果,得到每个待测API接口的函数名、参数名、参数类型、返回值。
如图2a所示,对于接口my_add,对应的扫描结果部分如下所示。扫描结果是一棵用文件存储的树,针对文件存储树的结构特点提取出需要的信息。
图2b描述了my_add函数名的获得过程,在文件存储树中,从函数节点function_decl出发,得到函数的名字my_add,同理可以得到函数的参数名、参数类型和返回值。
步骤S230:根据静态扫描结果,建立基本测试数据集合。
首先,由人工收集各种基本数据类型以及对应的异常数据,建立基本数据类型和每个基本数据类型的相关数据的对应关系,称为基本数据集合。表1为基本数据集合的一个示例表。其中,基本数据类型包括整形、枚举类型、字符类型和统一资源定位符等,对应的相关数据分别在右侧列出。如整形对应的相关数据包括0、1、-1、INT_MIN_VALUE和INT_MAX_VALUE。
Figure BDA00003287571800071
表1
步骤S240:获得静态扫描结果得到函数输入参数的参数类型,根据不同的参数类型,按照如下方法得到不用参数类型所对应的数据。
(一)、参数类型是基本类型。如果参数类型是基本类型,查询查询基本数据集合,根据建立的基本类型和基本类型对应的相关数据的对应关系,直接得到基本类型对应的相关数据。
(二)、参数类型是组合类型。由于组合类型是由基本类型组成的,因此首先获得组合类型中的基本类型,查询基本数据集合直接获取每个基本类型对应的数据,并将基本类型对应的数据进行组合,生成组合类型对应的组合数据。
步骤S250:根据测试数据生成API接口的测试用例。
步骤S251:得到函数每个输入参数对应的数据集合。如果一个函数有M个参数,每个参数的对应的简单类型对应内置的Ni个数据,根据组合原理可以生成N1*N2*...*Nm个测试数据,每种测试数据组合对应一个测试用例。但是在实际应用中,一般不对数据进行穷举,而是根据成对组合原理来减少组合个数。
步骤S252:根据已知的函数的函数名、参数名、参数类型和每个函数对应的数据,编写测试用例。
例如,对于上述接口my_add,测试用例对应的代码如图3所示,int a=1、int b=1为数据赋值代码,my_add(a,b)为函数调用代码。其中,根据已获取的函数名和参数名,按照函数的调用格式组装函数调用代码。步骤S251中已得到数据赋值代码中的数据,所以本步的关键是撰写数据赋值代码。
具体地,根据静态分析结果得到函数输入参数的参数类型,不同的参数类型根据下面的不同情况对应不同的数据赋值代码。
(一)、参数类型是基本类型。对于每种基本类型,撰写的语法是固定的。根据基本类型的语法特点声明该基本类型,并将步骤S251得到的数据赋给声明的基本类型,完成数据赋值代码。
(二)、参数类型是简单组合类型。简单组合类型由简单类型组成,因此简单组合类型的语法也是固定的。根据组合类型的语法特点,撰写组合类型的声明。组合类型的数据选用对应的基本类型对应的数据,由基本类型对应的数据组合生成组合类型对应的组合数据,将组合类型的组合数据赋给组合类型,从而完成组合类型的数据赋值代码。
(三)、参数类型是复杂组合类型。复杂组合类型的基本组成部分是其它函数的返回值。为了得到其它参数的返回值,需要递归调用函数,直到函数的参数类型为非复杂组合类型为止。
步骤S260:运行测试用例,进行结构化展示。
获得测试数据、测试代码和运行环境后,运行测试用例。例如,健壮性的预期结果为不出core、不死循环。这种预期结果可以通过自动化的方式进行判断,因此运行测试用例后,可以自动化判断出该测试用例执行失败与否,做到机器自动化的判断和分析结果,从而实现了整个过程的完全自动化。
测试产生的测试用例的结构化效果展示如图4所示。通过newTesta(1,2),构造新的测试用例,调用testa->GetC()执行测试用例。
最终的执行效果如表2summary所示,表2中Total tests表示测试用例总数为2,Passed/Failed tests表示通过/失败的测试用例,其中,通过的测试用例为2个,失败的测试用例为0个。Verdict为结论,本表中结论为测试通过。
Figure BDA00003287571800101
表2
根据本发明实施例的针对API接口的健壮性测试用例自动生成方法应用在单元测试中可以加快单元测试的撰写速度,通过数据fuzz和数据筛选技术,可以用于无人参与的健壮性测试,例如支持在所有c/c++模块上普遍适用的”无人参与的健壮性测试“应用场景。本方法针对API接口代码,使用机器模拟人来撰写测试代码。一般情况下,利用本方法产生的测试代码,结合相应的Makefile文件后,只需执行make就可以运行测试程序。通过机器自动对运行结果进行分析,实现了针对API接口代码的健壮性测试用例自动生成。本方法通过计算机自动化的方法生成测试用例并分析结果,提高了测试代码生成的效率,节省了人力成本,提高了效率。
下面参考图3描述根据本发明实施例的针对API接口的健壮性测试用例自动生成装置100,包括源代码获取模块110、静态分析模块120、基本数据集合建立模块130、测试数据生成模块140和测试用例生成模块150。
其中,源代码获取模块110用于获取待测API接口的源代码;静态分析模块120用于对源代码进行静态分析以获得静态扫描结果,并从静态扫描结果中获取API接口中函数的函数名、参数名、参数类型和返回值;基本数据集合建立模块130用于建立基本数据集合,其中,基本数据集合包括多个基本数据类型和每个基本数据类型对应的相关数据;测试数据生成模块140用于根据API接口中函数的参数类型和基本数据集合生成API接口的测试数据;测试用例生成模块150用于根据测试数据生成API接口的测试用例。
在API接口中函数的参数类型为基本类型时,测试数据生成模块140查询基本数据集合直接获取基本类型对应的数据。在API接口中函数的参数类型是组合类型时,测试数据生成模块140分别获得组合类型中的多个基本类型,并查询基本数据集合直接获取多个基本类型对应的多个数据,以及对多个数据进行组合以获得组合类型对应的数据。
API接口的测试用例包括数据赋值代码和函数调用代码。其中,函数调用代码根据函数名和参数名按照函数的调用格式组装获得。数据赋值代码通过函数的参数类型和测试数据获得。
机器代替人写代码的关键是让机器模拟人思考和判断的过程。API接口的健壮性测试用例包括测试数据、测试代码和运行环境。本装置使用计算机代替人进行经验累积学习过程和代码了解,自动准备测试数据、撰写测试用例、自动化搭建运行环境、自动运行测试用例,实现针对API接口的自动健壮性测试。
下面以一个具体的例子对本发明进行说明,可以理解的是,下述说明仅出于示例目的,根据本发明的实施例不限于此。
源代码获取模块110获取待测API接口的源代码。
静态分析模块120对源代码进行静态分析。静态分析模块120应用GCC编译选项生成待测源代码的静态扫描结果,分析该扫描结果,得到每个待测API接口的函数名、参数名、参数类型、返回值。
如图2a所示,对于接口my_add,静态分析模块120对应的扫描结果部分如下所示。扫描结果是一棵用文件存储的树,针对文件存储树的结构特点提取出需要的信息。
图2b描述了my_add函数名的获得过程,在文件存储树中,从函数节点function_decl出发,得到函数的名字my_add,同理可以得到函数的参数名、参数类型和返回值。
基本数据集合建立模块130根据静态扫描结果,建立基本测试数据集合。
首先,由人工收集各种基本数据类型以及对应的异常数据,建立基本数据类型和每个基本数据类型的相关数据的对应关系,称为基本数据集合。表1为基本数据集合的一个示例表。其中,基本数据类型包括整形、枚举类型、字符类型和统一资源定位符等,对应的相关数据分别在右侧列出。如整形对应的相关数据包括0、1、-1、INT_MIN_VALUE和INT_MAX_VALUE。
测试数据生成模块140获得静态扫描结果得到函数输入参数的参数类型,根据不同的参数类型,按照如下方法得到不用参数类型所对应的数据。
(一)、参数类型是基本类型。如果参数类型是基本类型,查询查询基本数据集合,根据建立的基本类型和基本类型对应的相关数据的对应关系,直接得到基本类型对应的相关数据。
(二)、参数类型是组合类型。由于组合类型是由基本类型组成的,因此首先获得组合类型中的基本类型,查询基本数据集合直接获取每个基本类型对应的数据,并将基本类型对应的数据进行组合,生成组合类型对应的组合数据。
测试用例生成模块150根据测试数据生成API接口的测试用例。
测试用例生成模块150得到函数每个输入参数对应的数据集合。如果一个函数有M个参数,每个参数的对应的简单类型对应内置的Ni个数据,根据组合原理可以生成N1*N2*...*Nm个测试数据,每种测试数据组合对应一个测试用例。但是在实际应用中,一般不对数据进行穷举,而是根据成对组合原理来减少组合个数。
测试用例生成模块150根据已知的函数的函数名、参数名、参数类型和每个函数对应的数据,编写测试用例。
例如,对于上述接口my_add,测试用例对应的代码如图3所示,int a=1、int b=1为数据赋值代码,my_add(a,b)为函数调用代码。
其中,根据已获取的函数名和参数名,按照函数的调用格式组装函数调用代码。测试用例生成模块150中已得到数据赋值代码中的数据,所以本步的关键是撰写数据赋值代码。
具体地,根据静态分析结果得到函数输入参数的参数类型,不同的参数类型根据下面的不同情况对应不同的数据赋值代码。
(一)、参数类型是基本类型。对于每种基本类型,撰写的语法是固定的。根据基本类型的语法特点声明该基本类型,并将测试用例生成模块150得到的数据赋给声明的基本类型,完成数据赋值代码。
(二)、参数类型是简单组合类型。简单组合类型由简单类型组成,因此简单组合类型的语法也是固定的。根据组合类型的语法特点,撰写组合类型的声明。组合类型的数据选用对应的基本类型对应的数据,由基本类型对应的数据组合生成组合类型对应的组合数据,将组合类型的组合数据赋给组合类型,从而完成组合类型的数据赋值代码。
(三)、参数类型是复杂组合类型。复杂组合类型的基本组成部分是其它函数的返回值。为了得到其它参数的返回值,需要递归调用函数,直到函数的参数类型为非复杂组合类型为止。
运行测试用例后,可以进行结构化展示。
获得测试数据、测试代码和运行环境后,运行测试用例。例如,健壮性的预期结果为不出core、不死循环。这种预期结果可以通过自动化的方式进行判断,因此运行测试用例后,可以自动化判断出该测试用例执行失败与否,做到机器自动化的判断和分析结果,从而实现了整个过程的完全自动化。
测试产生的测试用例的结构化效果展示如图4所示。通过new Testa(1,2),构造新的测试用例,调用testa->GetC()执行测试用例。
最终的执行效果如表2summary所示,表2中Total tests表示测试用例总数为2,Passed/Failed tests表示通过/失败的测试用例,其中,通过的测试用例为2个,失败的测试用例为0个。Verdict为结论,本表中结论为测试通过。
根据本发明实施例的针对API接口的健壮性测试用例自动生成装置应用在单元测试中可以加快单元测试的撰写速度,通过数据fuzz和数据筛选技术,可以用于无人参与的健壮性测试,例如支持在所有c/c++模块上普遍适用的“无人参与的健壮性测试”应用场景。本装置针对API接口代码,使用机器模拟人来撰写测试代码。一般情况下,利用本装置产生的测试代码,结合相应的Makefile文件后,只需执行make就可以运行测试程序。通过机器自动对运行结果进行分析,实现了针对API接口代码的健壮性测试用例自动生成。本装置通过计算机自动化的方法生成测试用例并分析结果,提高了测试代码生成的效率,节省了人力成本,提高了效率。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。

Claims (11)

1.一种针对API接口的健壮性测试用例自动生成方法,其特征在于,包括以下步骤:
获取待测API接口的源代码;
对所述源代码进行静态分析以获得静态扫描结果,并从静态扫描结果中获取所述API接口中函数的函数名、参数名、参数类型和返回值;
建立基本数据集合,其中,所述基本数据集合包括多个基本数据类型和每个基本数据类型对应的相关数据;
根据所述API接口中函数的参数类型和所述基本数据集合生成所述API接口的测试数据;以及
根据所述测试数据生成所述API接口的测试用例。
2.如权利要求1所述的方法,其特征在于,所述根据API接口中函数的参数类型和所述基本数据集合生成所述API接口的测试数据进一步包括:
如果所述API接口中函数的参数类型为基本类型,则查询所述基本数据集合直接生成基本类型对应的数据;以及
如果所述API接口中函数的参数类型是组合类型,则分别获得所述组合类型中的多个基本类型,并查询所述基本数据集合直接获取所述多个基本类型对应的多个数据,并对所述多个数据进行组合以生成所述组合类型对应的数据。
3.如权利要求1或2所述的方法,其特征在于,所述API接口的测试用例包括数据赋值代码和函数调用代码。
4.如权利要求1-3任一项所述的方法,其特征在于,所述函数调用代码根据所述函数名和参数名按照函数的调用格式组装获得。
5.如权利要求3所述的方法,其特征在于,所述数据赋值代码通过所述函数的参数类型和所述测试数据获得。
6.一种针对API接口的健壮性测试用例自动生成装置,其特征在于,包括:
源代码获取模块,用于获取待测API接口的源代码;
静态分析模块,用于对所述源代码进行静态分析以获得静态扫描结果,并从静态扫描结果中获取所述API接口中函数的函数名、参数名、参数类型和返回值;
基本数据集合建立模块,用于建立基本数据集合,其中,所述基本数据集合包括多个基本数据类型和每个基本数据类型对应的相关数据;
测试数据生成模块,用于根据所述API接口中函数的参数类型和所述基本数据集合生成所述API接口的测试数据;以及
测试用例生成模块,用于根据所述测试数据生成所述API接口的测试用例。
7.如权利要求6所述的装置,其特征在于,在所述API接口中函数的参数类型为基本类型时,所述测试数据生成模块查询所述基本数据集合直接获取基本类型对应的数据。
8.如权利要求6所述的装置,其特征在于,在所述API接口中函数的参数类型是组合类型时,所述测试数据生成模块分别获得所述组合类型中的多个基本类型,并查询所述基本数据集合直接获取所述多个基本类型对应的多个数据,以及对所述多个数据进行组合以获得所述组合类型对应的数据。
9.如权利要求7或8所述的装置,其特征在于,所述API接口的测试用例包括数据赋值代码和函数调用代码。
10.如权利要求9所述的装置,其特征在于,所述函数调用代码根据所述函数名和参数名按照函数的调用格式组装获得。
11.如权利要求9所述的装置,其特征在于,所述数据赋值代码通过所述函数的参数类型和所述测试数据获得。
CN2013102153986A 2013-05-31 2013-05-31 针对api接口的健壮性测试用例自动生成方法和装置 Pending CN103268285A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2013102153986A CN103268285A (zh) 2013-05-31 2013-05-31 针对api接口的健壮性测试用例自动生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2013102153986A CN103268285A (zh) 2013-05-31 2013-05-31 针对api接口的健壮性测试用例自动生成方法和装置

Publications (1)

Publication Number Publication Date
CN103268285A true CN103268285A (zh) 2013-08-28

Family

ID=49011916

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013102153986A Pending CN103268285A (zh) 2013-05-31 2013-05-31 针对api接口的健壮性测试用例自动生成方法和装置

Country Status (1)

Country Link
CN (1) CN103268285A (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631720A (zh) * 2013-12-20 2014-03-12 百度在线网络技术(北京)有限公司 测试用例的生成方法和装置
CN104268073A (zh) * 2014-09-05 2015-01-07 北京广利核系统工程有限公司 一种批量生成测试用例的方法
CN104407976A (zh) * 2014-11-28 2015-03-11 联动优势电子商务有限公司 一种接口健壮性测试用例生成方法及装置
CN104461565A (zh) * 2014-12-25 2015-03-25 索尔思光电(成都)有限公司 一种光模块测试参数配置方法及系统
CN104965780A (zh) * 2015-06-04 2015-10-07 北京奇虎科技有限公司 数据处理方法与系统
CN105897497A (zh) * 2015-07-20 2016-08-24 广州华多网络科技有限公司 一种接口测试方法、应用设备以及服务设备
CN105930268A (zh) * 2016-04-19 2016-09-07 努比亚技术有限公司 一种基于树型的黑盒测试用例生成方法及其系统
CN106294138A (zh) * 2016-07-29 2017-01-04 东软集团股份有限公司 测试用例生成方法和装置
CN106649078A (zh) * 2015-11-02 2017-05-10 阿里巴巴集团控股有限公司 应用接口测试方法及装置
CN106874175A (zh) * 2015-12-11 2017-06-20 阿里巴巴集团控股有限公司 测试用例的自动生成方法和装置
CN107038110A (zh) * 2016-02-03 2017-08-11 北京京东尚科信息技术有限公司 白盒测试的方法和系统
CN107203473A (zh) * 2017-05-26 2017-09-26 四川长虹电器股份有限公司 自动扩展接口测试用例的自动化测试系统与方法
CN108334443A (zh) * 2017-12-22 2018-07-27 海尔优家智能科技(北京)有限公司 生成测试用例的方法、装置、设备及计算机可读存储介质
CN108334441A (zh) * 2017-01-19 2018-07-27 深圳市优朋普乐传媒发展有限公司 一种软件开发工具包的自动化测试方法和系统
CN108415846A (zh) * 2018-04-19 2018-08-17 挖财网络技术有限公司 一种生成最小自动化测试用例集的方法和装置
CN108664384A (zh) * 2017-03-29 2018-10-16 富士通株式会社 数据处理装置和数据处理方法
CN109213683A (zh) * 2018-09-06 2019-01-15 无线生活(杭州)信息科技有限公司 测试用例生成方法及装置
CN110162463A (zh) * 2019-04-19 2019-08-23 平安普惠企业管理有限公司 基于自动化测试工具的软件测试方法、装置及电子设备
CN110348216A (zh) * 2019-05-24 2019-10-18 中国科学院信息工程研究所 一种针对云计算系统虚拟设备的模糊测试方法及系统
CN110990248A (zh) * 2019-10-11 2020-04-10 北京银企融合技术开发有限公司 接口用例测试系统、方法、计算机设备及存储介质
CN111679989A (zh) * 2020-06-16 2020-09-18 贝壳技术有限公司 接口健壮性测试方法、装置、电子设备及存储介质
CN111857692A (zh) * 2020-07-30 2020-10-30 中国民航信息网络股份有限公司 一种代码生成方法、装置及电子设备
CN112100049A (zh) * 2019-06-18 2020-12-18 北京数聚鑫云信息技术有限公司 一种生成测试数据的方法、装置、介质及设备
CN112363922A (zh) * 2020-11-09 2021-02-12 中国农业银行股份有限公司 一种测试用例生成方法及其相关设备
CN113886227A (zh) * 2021-09-24 2022-01-04 成都安恒信息技术有限公司 一种全自动生成测试用例的系统、方法、电子设备及介质
WO2022134915A1 (zh) * 2020-12-25 2022-06-30 中兴通讯股份有限公司 一种接口测试方法、计算机设备及计算机可读存储介质
CN116932403A (zh) * 2023-07-25 2023-10-24 太初(无锡)电子科技有限公司 测试用例的生成方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190771A1 (en) * 2005-02-23 2006-08-24 Microsoft Corporation System and method for model based generation of application programming interface test code
KR20070082222A (ko) * 2006-02-15 2007-08-21 삼성전자주식회사 임베디드 소프트웨어의 api 테스트 방법 및 장치
CN101082877A (zh) * 2006-05-30 2007-12-05 上海科泰世纪科技有限公司 图形用户界面程序的自动测试接口及其自动测试方法
CN101645037A (zh) * 2009-09-11 2010-02-10 兰雨晴 基础软件平台应用程序接口集成测试覆盖分析方法
KR20100080044A (ko) * 2008-12-31 2010-07-08 엔에이치엔(주) Api 테스트 케이스 자동 생성 방법, 그리고 이를 이용한테스트 방법
CN102831060A (zh) * 2012-08-24 2012-12-19 东南大学 一种基于修改影响分析的部件软件回归测试用例更新方法
CN102999320A (zh) * 2011-09-15 2013-03-27 阿里巴巴集团控股有限公司 测试用例自动生成方法和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190771A1 (en) * 2005-02-23 2006-08-24 Microsoft Corporation System and method for model based generation of application programming interface test code
KR20070082222A (ko) * 2006-02-15 2007-08-21 삼성전자주식회사 임베디드 소프트웨어의 api 테스트 방법 및 장치
CN101082877A (zh) * 2006-05-30 2007-12-05 上海科泰世纪科技有限公司 图形用户界面程序的自动测试接口及其自动测试方法
KR20100080044A (ko) * 2008-12-31 2010-07-08 엔에이치엔(주) Api 테스트 케이스 자동 생성 방법, 그리고 이를 이용한테스트 방법
CN101645037A (zh) * 2009-09-11 2010-02-10 兰雨晴 基础软件平台应用程序接口集成测试覆盖分析方法
CN102999320A (zh) * 2011-09-15 2013-03-27 阿里巴巴集团控股有限公司 测试用例自动生成方法和系统
CN102831060A (zh) * 2012-08-24 2012-12-19 东南大学 一种基于修改影响分析的部件软件回归测试用例更新方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHRISTINE SOLOMON: "《Microsoft office应用与开发》", 31 October 1995 *
刘慕涛等: "基于XML的API自动化测试工具设计与实现", 《计算机工程》 *
孙甲霞等: "面向C++的API自动测试工具的原型系统实现", 《河南科技学院学报(自然科学版)》 *
崔红军等: "一种API自动化测试工具的设计与实现", 《计算机工程》 *

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631720A (zh) * 2013-12-20 2014-03-12 百度在线网络技术(北京)有限公司 测试用例的生成方法和装置
CN103631720B (zh) * 2013-12-20 2016-08-17 百度在线网络技术(北京)有限公司 测试用例的生成方法和装置
CN104268073A (zh) * 2014-09-05 2015-01-07 北京广利核系统工程有限公司 一种批量生成测试用例的方法
CN104407976A (zh) * 2014-11-28 2015-03-11 联动优势电子商务有限公司 一种接口健壮性测试用例生成方法及装置
CN104461565A (zh) * 2014-12-25 2015-03-25 索尔思光电(成都)有限公司 一种光模块测试参数配置方法及系统
CN104461565B (zh) * 2014-12-25 2018-02-13 索尔思光电(成都)有限公司 一种光模块测试参数配置方法及系统
CN104965780A (zh) * 2015-06-04 2015-10-07 北京奇虎科技有限公司 数据处理方法与系统
CN105897497A (zh) * 2015-07-20 2016-08-24 广州华多网络科技有限公司 一种接口测试方法、应用设备以及服务设备
CN106649078B (zh) * 2015-11-02 2019-06-25 阿里巴巴集团控股有限公司 应用接口测试方法及装置
CN106649078A (zh) * 2015-11-02 2017-05-10 阿里巴巴集团控股有限公司 应用接口测试方法及装置
CN106874175A (zh) * 2015-12-11 2017-06-20 阿里巴巴集团控股有限公司 测试用例的自动生成方法和装置
CN107038110A (zh) * 2016-02-03 2017-08-11 北京京东尚科信息技术有限公司 白盒测试的方法和系统
CN105930268A (zh) * 2016-04-19 2016-09-07 努比亚技术有限公司 一种基于树型的黑盒测试用例生成方法及其系统
CN106294138A (zh) * 2016-07-29 2017-01-04 东软集团股份有限公司 测试用例生成方法和装置
CN108334441A (zh) * 2017-01-19 2018-07-27 深圳市优朋普乐传媒发展有限公司 一种软件开发工具包的自动化测试方法和系统
CN108664384A (zh) * 2017-03-29 2018-10-16 富士通株式会社 数据处理装置和数据处理方法
CN108664384B (zh) * 2017-03-29 2021-05-07 富士通株式会社 数据处理装置和数据处理方法
CN107203473A (zh) * 2017-05-26 2017-09-26 四川长虹电器股份有限公司 自动扩展接口测试用例的自动化测试系统与方法
CN108334443A (zh) * 2017-12-22 2018-07-27 海尔优家智能科技(北京)有限公司 生成测试用例的方法、装置、设备及计算机可读存储介质
CN108415846A (zh) * 2018-04-19 2018-08-17 挖财网络技术有限公司 一种生成最小自动化测试用例集的方法和装置
CN108415846B (zh) * 2018-04-19 2021-10-15 挖财网络技术有限公司 一种生成最小自动化测试用例集的方法和装置
CN109213683A (zh) * 2018-09-06 2019-01-15 无线生活(杭州)信息科技有限公司 测试用例生成方法及装置
CN110162463A (zh) * 2019-04-19 2019-08-23 平安普惠企业管理有限公司 基于自动化测试工具的软件测试方法、装置及电子设备
CN110348216A (zh) * 2019-05-24 2019-10-18 中国科学院信息工程研究所 一种针对云计算系统虚拟设备的模糊测试方法及系统
CN112100049A (zh) * 2019-06-18 2020-12-18 北京数聚鑫云信息技术有限公司 一种生成测试数据的方法、装置、介质及设备
CN110990248A (zh) * 2019-10-11 2020-04-10 北京银企融合技术开发有限公司 接口用例测试系统、方法、计算机设备及存储介质
CN111679989A (zh) * 2020-06-16 2020-09-18 贝壳技术有限公司 接口健壮性测试方法、装置、电子设备及存储介质
CN111857692A (zh) * 2020-07-30 2020-10-30 中国民航信息网络股份有限公司 一种代码生成方法、装置及电子设备
CN112363922A (zh) * 2020-11-09 2021-02-12 中国农业银行股份有限公司 一种测试用例生成方法及其相关设备
CN112363922B (zh) * 2020-11-09 2024-08-06 中国农业银行股份有限公司 一种测试用例生成方法及其相关设备
WO2022134915A1 (zh) * 2020-12-25 2022-06-30 中兴通讯股份有限公司 一种接口测试方法、计算机设备及计算机可读存储介质
CN113886227A (zh) * 2021-09-24 2022-01-04 成都安恒信息技术有限公司 一种全自动生成测试用例的系统、方法、电子设备及介质
CN116932403A (zh) * 2023-07-25 2023-10-24 太初(无锡)电子科技有限公司 测试用例的生成方法
CN116932403B (zh) * 2023-07-25 2024-06-11 太初(无锡)电子科技有限公司 测试用例的生成方法

Similar Documents

Publication Publication Date Title
CN103268285A (zh) 针对api接口的健壮性测试用例自动生成方法和装置
CN106708719B (zh) 业务功能的测试方法和装置
CN105701008B (zh) 用于测试用例生成的系统和方法
US20170147482A1 (en) System and method for safety-critical software automated requirements-based test case generation
CN103235759A (zh) 测试用例生成方法和装置
CN106446412B (zh) 一种航空电子系统基于模型的测试方法
US20150052501A1 (en) Continuous deployment of code changes
US20150220426A1 (en) Performance tests in a continuous deployment pipeline
CN107678973B (zh) 一种测试脚本的自动生成方法及系统
CN108345532A (zh) 一种自动化测试用例生成方法和装置
CN104331366A (zh) 一种测试用例设计效率提升方法及系统
CN105389256A (zh) 一种单元测试方法及系统
CN105022691A (zh) 一种基于uml图的高度自动化软件测试方法
CN103425572A (zh) 代码分析方法及代码分析系统
CN105630667A (zh) 一种测试方法和终端设备
CN103246606A (zh) Esb平台的性能方法和系统
CN106933572B (zh) 一种基于llvm中间表示程序切片的度量模型
CN106874290B (zh) 一种数据清洗方法及设备
CN104317711A (zh) 一种基于路径的软件实现与设计一致性验证方法及系统
CN105447003A (zh) 一种参数集合生成方法及设备
CN109508204B (zh) 一种前端代码质量检测方法及装置
CN103150251A (zh) 一种智能获取自动化测试对象的方法
CN112988145B (zh) 生成航空发动机软件架构的方法及航空发动机控制装置
Jain Towards the adoption of modern software development approach: Component based software engineering
Pathania et al. Role of test case prioritization based on regression testing using clustering

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20130828

RJ01 Rejection of invention patent application after publication