CN114625633A - 用于接口测试的方法、系统和存储介质 - Google Patents

用于接口测试的方法、系统和存储介质 Download PDF

Info

Publication number
CN114625633A
CN114625633A CN202210095504.0A CN202210095504A CN114625633A CN 114625633 A CN114625633 A CN 114625633A CN 202210095504 A CN202210095504 A CN 202210095504A CN 114625633 A CN114625633 A CN 114625633A
Authority
CN
China
Prior art keywords
test
interface
header file
parameter information
engine
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
CN202210095504.0A
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.)
iFlytek Co Ltd
Original Assignee
iFlytek 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 iFlytek Co Ltd filed Critical iFlytek Co Ltd
Priority to CN202210095504.0A priority Critical patent/CN114625633A/zh
Publication of CN114625633A publication Critical patent/CN114625633A/zh
Pending legal-status Critical Current

Links

Images

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
    • 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
    • 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/3696Methods or tools to render software testable

Landscapes

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

Abstract

一种用于接口测试的方法、系统和存储介质,该方法包括:获取引擎的头文件,并从所述头文件中提取所述引擎中接口的参数信息;根据所述参数信息自动生成测试用例和测试代码;基于所述测试用例执行所述测试代码,得到测试结果;基于所述测试结果生成接口测试报告。根据本申请实施例的用于接口测试的方法和系统通过获取引擎的头文件,自动从头文件中提取引擎中待测接口的参数信息,根据参数提取结果自动生成测试用例和测试代码,并在得到测试结果之后自动统计引擎中待测接口的测试结果并生成测试报告,实现了接口测试的完整流程的全部自动化实现,即使不是专业的测试人员也能一键式进行接口测试任务,节省了大量的人力成本。

Description

用于接口测试的方法、系统和存储介质
技术领域
本申请涉及软件开发技术领域,更具体地涉及一种用于接口测试的方法、系统和存储介质。
背景技术
在软件开发的整个周期中,接口测试介入的时间位于整个测试阶段的早期。接口测试在早期介入测试过程,能提前发现问题,检查系统的异常处理能力、安全性和稳定性,从而降低项目风险,减少项目研发成本。目前市场上主流的接口测试方法大多分为五步进行:1、需求评审,熟悉业务和需求;2、开发人员提供接口文档;3、测试人员为每个接口编写多个测试用例和测试代码;4、用例评审;5、提测后开始测试并提交测试报告。在完整的测试过程中,工作量最大的分别是第三步和第五步。测试人员需要针对每个接口人工地从多个角度设计多个维度的测试用例,并为测试每个接口编写相应的测试代码,这项工作繁杂重复,占用了测试过程的大部分时间。
具体地,当下,市面上主流的代码接口测试方法大多是由测试人员人工地查看待测试接口的参数信息。然后,测试人员手动的为每个接口设计多种测试用例,并编写接口测试代码对每个接口进行测试,最后人工统计接口测试结果并编写接口测试报告。这一过程会耗费大量的人力和物力。近年来,关于自动化接口测试方法的研究层出不穷,大多数方法都集中于解决测试用例的自动化生成问题。对于接口测试代码开发的过程完全没有优化,每个接口的测试代码仍然需要专业的测试人员手动开发。
总体地,现有的接口测试方法需要人工地查看待测试接口的参数信息,这项工作繁杂且容易出错,会直接影响测试用例的正确与否;且需要人工地为每个接口设计多个测试用例,测试人员非常容易产生疏漏,导致测试用例不能完整的覆盖该接口的所有可能情况;还需要通过人工地为每个接口编写相应的测试代码,这项工作重复度高,浪费了一定人力物力;还需要人工地统计测试结果,这项工作重复度高且容易出错。
发明内容
为了解决上述问题中的至少一项而提出了本申请。根据本申请一方面,提供了一种用于接口测试的方法,所述方法包括:获取引擎的头文件,并从所述头文件中提取所述引擎中接口的参数信息;根据所述参数信息自动生成测试用例和测试代码;基于所述测试用例执行所述测试代码,得到测试结果;基于所述测试结果生成接口测试报告。
在本申请的一个实施例中,所述从所述头文件中提取所述引擎中接口的参数信息,包括:自动扫描所述头文件,将所述头文件中的代码分解成多个字符串,存入字符串列表中;访问所述字符串列表中的每个字符串,以获取所述引擎中每个接口的参数信息,并将非基础类型参数分解为基础类型参数。
在本申请的一个实施例中,所述方法还包括:在将所述多个字符串存入所述字符串列表中之前,移除无用字符串,所述无用字符串包括空白符和注释信息。
在本申请的一个实施例中,所述自动扫描所述头文件是基于抽象语法树执行的。
在本申请的一个实施例中,根据所述参数信息自动生成测试用例,包括:为每个类型的参数自动设计赋值集合,包含正常值和异常值;通过以下中的至少一项自动生成测试用例:对每个类型的参数进行不同的赋值以形成多种赋值组合;改变接口调用顺序;删除部分接口。
在本申请的一个实施例中,所述方法还包括:在改变接口调用顺序之前,对部分接口进行标记;当所述被标记的接口的调用顺序未改变时,生成正常测试用例;当所述被标记的接口的调用顺序改变时,生成异常测试用例。
在本申请的一个实施例中,所述对部分接口进行标记是基于模糊匹配执行的。
在本申请的一个实施例中,根据所述参数信息自动生成测试代码,包括:获取与每个类型的参数各自对应的处理模板,其中所述处理模板是头文件模板中通过定义多个宏预设出的,所述头文件模板中还包括预先定义的测试类;基于所述处理模板自动生成测试代码,并将所述测试代码作为所述测试类的成员函数加入所述测试类中。
在本申请的一个实施例中,所述基于所述测试用例执行所述测试代码,包括:通过解析器解析所述测试用例中的每个接口的信息;通过响应器基于所述每个接口的信息执行所述测试代码。
根据本申请另一方面,提供了一种用于接口测试的系统,所述系统包括:参数提取模块,用于获取引擎的头文件,并从所述头文件中提取所述引擎中接口的参数信息;用例生成模块,用于根据所述参数信息自动生成测试用例;代码生成模块,用于根据所述参数信息自动生成测试代码,并基于所述测试用例执行所述测试代码,得到测试结果;报告生成模块,用于基于所述测试结果生成接口测试报告。
在本申请的一个实施例中,所述参数提取模块进一步用于:自动扫描所述头文件,将所述头文件中的代码分解成多个字符串,存入字符串列表中;访问所述字符串列表中的每个字符串,以获取所述引擎中每个接口的参数信息,并将非基础类型参数分解为基础类型参数。
在本申请的一个实施例中,所述用例生成模块进一步用于:为每个类型的参数自动设计赋值集合,包含正常值和异常值;通过以下中的至少一项自动生成测试用例:对每个类型的参数进行不同的赋值以形成多种赋值组合;改变接口调用顺序;删除部分接口。
在本申请的一个实施例中,所述代码生成模块进一步用于:获取与每个类型的参数各自对应的处理模板;基于所述处理模板与头文件模板自动生成测试代码。
在本申请的一个实施例中,所述代码生成模块进一步用于:通过解析器解析所述测试用例中的每个接口的信息;通过响应器基于所述每个接口的信息执行所述测试代码。
根据本申请再一方面,提供了一种用于接口测试的方法,所述方法包括:获取待测接口的参数信息;根据所述参数信息自动生成测试代码;获取测试用例,并基于所述测试用例执行所述测试代码,得到测试结果;基于所述测试结果生成接口测试报告。
在本申请的一个实施例中,根据所述参数信息自动生成测试代码,包括:获取与每个类型的参数各自对应的处理模板,其中所述处理模板是头文件模板中通过定义多个宏预设出的,所述头文件模板中还包括预先定义的测试类;基于所述处理模板自动生成测试代码,并将所述测试代码作为所述测试类的成员函数加入所述测试类中。
根据本申请又一方面,提供了一种用于接口测试的系统,所述系统包括存储器和处理器,所述存储器上存储有由所述处理器运行的计算机程序,所述计算机程序在被所述处理器运行时,使得所述处理器执行上述用于接口测试的方法。
根据本申请再一方面,提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序在运行时,执行上述用于接口测试的方法。
根据本申请实施例的用于接口测试的方法和系统通过获取引擎的头文件,自动从头文件中提取引擎中待测接口的参数信息,根据参数提取结果自动生成测试用例和测试代码,并在得到测试结果之后自动统计引擎中待测接口的测试结果并生成测试报告,实现了接口测试的完整流程的全部自动化实现,即使不是专业的测试人员也能一键式进行接口测试任务,节省了大量的人力成本,且由于是自动生成测试用例和测试代码,能够保证测试用例的完整性和接口测试代码的正确性、合规性以及安全性。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1示出根据本申请一个实施例的用于接口测试的方法的示意性流程图。
图2示出根据本申请一个实施例的用于接口测试的方法中自动生成测试用例的示意性流程图。
图3示出根据本申请一个实施例的用于接口测试的方法中自动生成测试代码以及执行代码的示意性流程图。
图4示出根据本申请一个实施例的用于接口测试的系统的示意性结构框图。
图5示出根据本申请另一个实施例的用于接口测试的方法的示意性流程图。
图6示出本申请另一个实施例的用于接口测试的系统的示意性结构框图。
具体实施方式
为了使得本申请的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。基于本申请中描述的本申请实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其他实施例都应落入本申请的保护范围之内。
首先,参照图1描述根据本申请一个实施例的用于接口测试的方法。图1示出了根据本申请一个实施例的用于接口测试的方法100的示意性流程图。如图1所示,用于接口测试的方法100可以包括如下步骤:
在步骤S110,获取引擎的头文件,并从头文件中提取引擎中接口的参数信息。
在步骤S120,根据参数信息自动生成测试用例和测试代码。
在步骤S130,基于测试用例执行测试代码,得到测试结果。
在步骤S140,基于测试结果生成接口测试报告。
在本申请的实施例中,通过获取引擎的头文件,自动从头文件中提取引擎中待测接口的参数信息,根据参数提取结果自动生成测试用例和测试代码,并在得到测试结果之后自动统计引擎中待测接口的测试结果并生成测试报告,实现了接口测试的完整流程的全部自动化实现,节省了大量的人力成本,且由于是自动生成测试用例和测试代码,能够保证测试用例的完整性和接口测试代码的正确性、合规性以及安全性。
在本申请的实施例中,步骤S110中从头文件中提取引擎中接口的参数信息,可以包括:自动扫描头文件,将头文件中的代码分解成多个字符串(token),存入字符串列表(tokenlist)中;访问字符串列表中的每个字符串,以获取引擎中每个接口的参数信息,并将非基础类型参数分解为基础类型参数。
在该实施例中,自动扫描(诸如通过AST抽象语法树)引擎接口头文件,将头文件中的代码分解成一个个token存入tokenlist中,以访问每个token的方式,就能获取接口参数的详细信息。此外,在将分解后的token存入tokenlist中之前,可以移除诸如空白符、注释等无用信息,以提高后续访问token获取接口参数信息的效率。
在本申请的实施例中,对于非基础类型的参数,如struct、enum等,也能通过tokenlist列表访问到其每个基础类型的成员。也即,步骤S110中的参数提取过程能够将引擎的接口参数分解到最基础的类型,并将每个接口的参数信息存入对应接口的json文件中,以用于后续的测试用例和测试代码的自动生成。
在本申请的实施例中,在本申请的实施例中,参数提取过程可以不依赖源码,仅需要引擎头文件便可完整扫描所有接口并提取出所有参数信息。示例性地,参数提取过程支持的编程语言类型有C++、python、java、go等。为了更好地理解参数提取的工作流程,以C++编程语言为例,将参数提取结果展示如下:
假设引擎A包含两个接口,分别为接口1和接口2:
接口1:int MOTrack(void*inst,unsigned char*data,int width,capture_result*p_capture_result);
接口2:int GetResult(void*inst,const char*sResult,int*len,ResultStatus*status);
其中,参数p_capture_result是struct(非基础)类型,参数status是enum(非基础)类型,其余参数都是基础类型。非基础类型参数的信息展示如下:
typedef struct
{rect person_rect,
unsigned int num,
float score
}capture_result;
enum ResultStatus
{RESULT_NULL=0,
RESULT_RESUME,
RESULT_COMPILE
}
值得注意的是,capture_result结构体的内部嵌套了一个rect结构体,内容如下:
typedef struct
{int x,
int y}
对于引擎A,步骤S110的参数提取过程对其所有接口进行解析并生成其所有参数信息,分别保存在对应接口的json文件MOTrack和GetResult中。
参数解析结果如下所示:
Figure BDA0003490865620000071
Figure BDA0003490865620000081
因此,经过步骤S110的参数提取过程后,引擎接口的每个参数都被划分为基础类型并展开。
在本申请的实施例中,步骤S120中根据参数信息自动生成测试用例,可以包括:为每个类型的参数自动设计赋值集合,包含正常值和异常值;对每个类型的参数进行不同的赋值以形成多种赋值组合,从而得到多个测试用例。
在该实施例中,基于步骤S110的参数提取结果,会为每个基础类型参数自动地设计赋值集合,该集合包含了每个基础类型的所有可能情况的值。以char类型参数为例,char类型参数的赋值集合为{"\"C:\\\\Program_Files\\\\\\"","\"0.12345649\"","\"中文汉字\"","\"!@#$%^&*()_-=+:"\\<>"","/"\"/","|0"<>?:"{}|}(&^%%""等等}。通过对每个基础类型参数进行多种组合的赋值,能够自动化设计覆盖每个接口的所有可能情况的所有测试用例。
此外,还可以通过改变接口调用顺序和/或删除部分接口的方式来生成测试用例。例如,基于模糊匹配对部分接口进行标记;当被标记的接口的调用顺序未改变时,生成正常测试用例;当被标记的接口的调用顺序改变时,生成异常测试用例。在该实施例中,通过对引擎中所有接口进行模糊匹配可以对各接口进行标记,被标记的接口被认定为其调用顺序十分重要且不可改变。针对这些被标记的接口,能够自动生成正常和异常的测试用例,如在引擎中init-create-destroy-unit的顺序是正常的用例,而unit-create-destroy-init的顺序就是错误的用例。根据接口参数类型和接口调用顺序,步骤S120能够生成全面完整的接口测试用例。可以结合图2来理解上文描述的测试用例自动生成过程。
在本申请的实施例中,步骤S120中根据参数信息自动生成测试代码,可以包括:获取与每个类型的参数各自对应的处理模板;基于处理模板与头文件模板自动生成测试代码。在该实施例中,可以预先针对各种类型的参数定义对应的处理模板,当获取了接口的参数信息(包括参数类型和参数名称)后,可以将接口中每个类型的参数匹配至对应的处理模板,基于匹配到的处理模板即可得到接口的测试代码。
具体地,根据引擎是否具有多个实例,可以预先设定多种接口测试头文件和测试工具主文件模板。在头文件模板中,定义一个测试类,通过定义多个宏预设出每种基础类型参数的处理模板,并由此生成每个接口的测试代码。每个接口测试代码作为该测试类的成员函数加入该测试类中。在每个接口测试代码内部实现的过程中,由于接口参数类型多种多样,分析处理每种类型参数的方法模板是预设的(如前文所述的针对各种类型的参数定义对应的处理模板)。因此,只要得到参数提取结果,便能够自动生成完整的接口测试代码,避免了手动对引擎的每个接口独立编写测试代码,大大提高了测试效率。
在本申请的实施例中,步骤S130中的基于测试用例执行测试代码,可以包括:通过解析器解析测试用例中的每个接口的信息;通过响应器基于每个接口的信息执行测试代码。在该实施例中,可以预先建立一个解析器模版和一个响应器模板。解析器用于解析输入测试用例文件中每个接口的详细信息,包括函数名、参数个数、参数值、返回值等信息。响应器为程序执行单元,该类主要完成代码执行的功能。响应器将每个接口的测试代码与引擎对应的实际接口地址做绑定。在执行接口测试时,初始化测试类会自动地将解析器与响应器进行绑定,从而完成测试系统对测试用例中的每个指定接口的接口测试与调用。可以结合图3来理解上文描述的测试代码自动生成过程和执行流程图。
在本申请的实施例中,在测试完成之后,在步骤S140可以自动统计引擎中每个接口的测试结果并最终生成接口测试报告。
基于上面的描述,根据本申请实施例的用于接口测试的方法100通过获取引擎的头文件,自动从头文件中提取引擎中待测接口的参数信息,根据参数提取结果自动生成测试用例和测试代码,并在得到测试结果之后自动统计引擎中待测接口的测试结果并生成测试报告,实现了接口测试的完整流程的全部自动化实现,即使不是专业的测试人员也能一键式进行接口测试任务,节省了大量的人力成本,且由于是自动生成测试用例和测试代码,能够保证测试用例的完整性和接口测试代码的正确性、合规性以及安全性。此外,根据本申请实施例的用于接口测试的方法100在参数提取时能将接口的每个参数分解至最基础的参数类型;在生成测试用例时对每个最基础类型的参数设计覆盖尽量全面的值,还能对关键接口的调用顺序进行标记,通过改变多种接口调用顺序和删除部分接口,生成覆盖场景更为全面的测试用例;在生成测试代码时通过预先设定的解析器、响应器以及处理各种类型参数的模板能够完全自动化地生成并执行接口测试代码,节省了大量的人力和物力。
以上示例性地示出了根据本申请一个实施例的用于接口测试的方法。下面结合图4描述根据本申请另一方面提供的用于接口测试的系统400。如图4所示,用于接口测试的系统400包括参数提取模块410、用例生成模块420、代码生成模块430和报告生成模块440。其中,参数提取模块410用于获取引擎的头文件,并从头文件中提取引擎中接口的参数信息。用例生成模块420用于根据参数信息自动生成测试用例。代码生成模块430用于根据参数信息自动生成测试代码,并基于测试用例执行测试代码,得到测试结果。报告生成模块440用于基于测试结果生成接口测试报告。根据本申请实施例的用于接口测试的系统400可以用于执行前文所述的用于接口测试的方法100,本领域技术人员可以结合前文所述理解其结构和操作,为了简洁,此处不再赘述细节,仅描述各模块一些主要操作内容。
在本申请的实施例中,参数提取模块410可以进一步用于:自动扫描头文件,将头文件中的代码分解成多个字符串,存入字符串列表中;访问字符串列表中的每个字符串,以获取引擎中每个接口的参数信息,并将非基础类型参数分解为基础类型参数。
在本申请的实施例中,用例生成模块420可以进一步用于:为每个类型的参数自动设计赋值集合,包含正常值和异常值;通过以下中的至少一项自动生成测试用例:对每个类型的参数进行不同的赋值以形成多种赋值组合;改变接口调用顺序;删除部分接口。
在本申请的实施例中,代码生成模块430可以进一步用于:获取与每个类型的参数各自对应的处理模板;基于处理模板与头文件模板自动生成测试代码。
在本申请的实施例中,代码生成模块430可以进一步用于:通过解析器解析测试用例中的每个接口的信息;通过响应器基于每个接口的信息执行测试代码。
基于上面的描述,根据本申请实施例的用于接口测试的系统400通过获取引擎的头文件,自动从头文件中提取引擎中待测接口的参数信息,根据参数提取结果自动生成测试用例和测试代码,并在得到测试结果之后自动统计引擎中待测接口的测试结果并生成测试报告,实现了接口测试的完整流程的全部自动化实现,即使不是专业的测试人员也能一键式进行接口测试任务,节省了大量的人力成本,且由于是自动生成测试用例和测试代码,能够保证测试用例的完整性和接口测试代码的正确性、合规性以及安全性。
下面结合图5描述根据本申请另一个实施例的用于接口测试的方法。图5示出了根据本申请另一个实施例的用于接口测试的方法500的示意性流程图,如图5所示,用于接口测试的方法500可以包括如下步骤:
在步骤S510,获取待测接口的参数信息。
在步骤S520,根据参数信息自动生成测试代码。
在步骤S530,获取测试用例,并基于测试用例执行测试代码,得到测试结果。
在步骤S540,基于测试结果生成接口测试报告。
根据本申请实施例的用于接口测试的方法500与前文所述的用于接口测试的方法100大体上类似,不同之处在于,用于接口测试的方法500中不限定接口参数的提取方式,也不限定测试用例的生成方式(人工生成也可以,自动生成也可以),但测试代码是根据接口的参数信息自动生成的,这仍然能够保证接口测试代码的正确性、合规性以及安全性,并实现节省人力成本的效果。
具体地,根据接口的参数信息自动生成测试代码的方式与前文所述类似的,为了简洁,此处仅简要描述。
在本申请的实施例中,根据参数信息自动生成测试代码,可以包括:获取与每个类型的参数各自对应的处理模板;基于处理模板与头文件模板自动生成测试代码。
在本申请的实施例中,头文件模板中包括预先定义的测试类以及通过定义多个宏预设出的不同类型参数的处理模板,基于处理模板与头文件模板自动生成测试代码,可以包括:获取与每个接口中各个参数各自对应的处理模板,并将根据模板生成的接口测试代码作为测试类的成员函数加入测试类中。
基于上面的描述,根据本申请实施例的用于接口测试的方法500能够根据接口的参数信息自动生成测试代码,并在根据测试用例和测试代码得到测试结果之后自动统计引擎中待测接口的测试结果,生成测试报告,能够保证测试代码的完整性和接口测试代码的正确性、合规性以及安全性,节省人力成本。
下面结合图6描述根据本申请另一个实施例的用于接口测试的系统。图6示出了本申请另一个实施例的用于接口测试的系统600的示意性结构框图。如图6所示,用于接口测试的系统600可以包括存储器610和处理器620,存储器610存储有由处理器620运行的计算机程序,所述计算机程序在被处理器620运行时,使得处理器620执行前文所述的根据本申请实施例的用于接口测试的方法100或500。本领域技术人员可以结合前文所述的内容理解根据本申请实施例的用于接口测试的系统600的具体操作,为了简洁,此处不再赘述具体的细节。
此外,根据本申请实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本申请实施例的用于接口测试的方法的相应步骤。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
基于上面的描述,根据本申请实施例的用于接口测试的方法和系统能够根据接口的参数信息自动生成测试用例和/或测试代码,并在根据测试用例和测试代码得到测试结果之后自动统计引擎中待测接口的测试结果,生成测试报告,能够保证测试用例和/或测试代码的完整性和接口测试代码的正确性、合规性以及安全性,节省人力成本。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本申请的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本申请的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本申请的范围之内。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其他的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本申请的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其他实施例中所包括的某些特征而不是其他特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的一些模块的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的系统程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本申请的具体实施方式或对具体实施方式的说明,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。本申请的保护范围应以权利要求的保护范围为准。

Claims (13)

1.一种用于接口测试的方法,其特征在于,所述方法包括:
获取引擎的头文件,并从所述头文件中提取所述引擎中接口的参数信息;
根据所述参数信息自动生成测试用例和测试代码;
基于所述测试用例执行所述测试代码,得到测试结果;
基于所述测试结果生成接口测试报告。
2.根据权利要求1所述的方法,其特征在于,所述从所述头文件中提取所述引擎中接口的参数信息,包括:
自动扫描所述头文件,将所述头文件中的代码分解成多个字符串,存入字符串列表中;
访问所述字符串列表中的每个字符串,以获取所述引擎中每个接口的参数信息,并将非基础类型参数分解为基础类型参数。
3.根据权利要求1或2所述的方法,其特征在于,根据所述参数信息自动生成测试用例,包括:
为每个类型的参数自动设计赋值集合,包含正常值和异常值;
通过以下中的至少一项自动生成测试用例:
对每个类型的参数进行不同的赋值以形成多种赋值组合;改变接口调用顺序;删除部分接口。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在改变接口调用顺序之前,对部分接口进行标记;
当所述被标记的接口的调用顺序未改变时,生成正常测试用例;
当所述被标记的接口的调用顺序改变时,生成异常测试用例。
5.根据权利要求1或2所述的方法,其特征在于,根据所述参数信息自动生成测试代码,包括:
获取与每个类型的参数各自对应的处理模板,其中所述处理模板是头文件模板中通过定义多个宏预设出的,所述头文件模板中还包括预先定义的测试类;
基于所述处理模板自动生成测试代码,并将所述测试代码作为所述测试类的成员函数加入所述测试类中。
6.一种用于接口测试的系统,其特征在于,所述系统包括:
参数提取模块,用于获取引擎的头文件,并从所述头文件中提取所述引擎中接口的参数信息;
用例生成模块,用于根据所述参数信息自动生成测试用例;
代码生成模块,用于根据所述参数信息自动生成测试代码,并基于所述测试用例执行所述测试代码,得到测试结果;
报告生成模块,用于基于所述测试结果生成接口测试报告。
7.根据权利要求6所述的系统,其特征在于,所述参数提取模块进一步用于:
自动扫描所述头文件,将所述头文件中的代码分解成多个字符串,存入字符串列表中;
访问所述字符串列表中的每个字符串,以获取所述引擎中每个接口的参数信息,并将非基础类型参数分解为基础类型参数。
8.根据权利要求6所述的系统,其特征在于,所述用例生成模块进一步用于:
为每个类型的参数自动设计赋值集合,包含正常值和异常值;
通过以下中的至少一项自动生成测试用例:
对每个类型的参数进行不同的赋值以形成多种赋值组合;改变接口调用顺序;删除部分接口。
9.根据权利要求6所述的系统,其特征在于,所述代码生成模块进一步用于:
通过解析器解析所述测试用例中的每个接口的信息;
通过响应器基于所述每个接口的信息执行所述测试代码。
10.一种用于接口测试的方法,其特征在于,所述方法包括:
获取待测接口的参数信息;
根据所述参数信息自动生成测试代码;
获取测试用例,并基于所述测试用例执行所述测试代码,得到测试结果;
基于所述测试结果生成接口测试报告。
11.根据权利要求10所述的方法,其特征在于,根据所述参数信息自动生成测试代码,包括:
获取与每个类型的参数各自对应的处理模板,其中所述处理模板是头文件模板中通过定义多个宏预设出的,所述头文件模板中还包括预先定义的测试类;
基于所述处理模板自动生成测试代码,并将所述测试代码作为所述测试类的成员函数加入所述测试类中。
12.一种用于接口测试的系统,其特征在于,所述系统包括存储器和处理器,所述存储器上存储有由所述处理器运行的计算机程序,所述计算机程序在被所述处理器运行时,使得所述处理器执行如权利要求1-5或10-11中的任一项所述的用于接口测试的方法。
13.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序在运行时,执行如权利要求1-5或10-11中的任一项所述的用于接口测试的方法。
CN202210095504.0A 2022-01-26 2022-01-26 用于接口测试的方法、系统和存储介质 Pending CN114625633A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210095504.0A CN114625633A (zh) 2022-01-26 2022-01-26 用于接口测试的方法、系统和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210095504.0A CN114625633A (zh) 2022-01-26 2022-01-26 用于接口测试的方法、系统和存储介质

Publications (1)

Publication Number Publication Date
CN114625633A true CN114625633A (zh) 2022-06-14

Family

ID=81897838

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210095504.0A Pending CN114625633A (zh) 2022-01-26 2022-01-26 用于接口测试的方法、系统和存储介质

Country Status (1)

Country Link
CN (1) CN114625633A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117370217A (zh) * 2023-12-08 2024-01-09 天津华来科技股份有限公司 一种基于python的接口测试结果自动生成方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117370217A (zh) * 2023-12-08 2024-01-09 天津华来科技股份有限公司 一种基于python的接口测试结果自动生成方法

Similar Documents

Publication Publication Date Title
EP3631618B1 (en) Automated dependency analyzer for heterogeneously programmed data processing system
EP3433732B1 (en) Converting visual diagrams into code
CN101377759B (zh) 自动化界面测试系统
CN109189479B (zh) 一种用于处理器指令集的并行自动化验证方法
CN103257919B (zh) 脚本程序检查方法和装置
CN112328226B (zh) 一种嵌入式系统自动化测试代码生成方法及装置
JP7404839B2 (ja) ソフトウェアプログラム不良位置の識別
CN101183332A (zh) 一种根据程序内容自动生成测试数据集的方法和装置
US10782942B1 (en) Rapid onboarding of data from diverse data sources into standardized objects with parser and unit test generation
CN111552476A (zh) 一种代码静态检查的方法与设备
CN114625633A (zh) 用于接口测试的方法、系统和存储介质
CN108897678B (zh) 静态代码检测方法和静态代码检测系统、存储设备
CN110990282A (zh) 一种自动化单元测试方法
CN112256575A (zh) 一种代码质量管理方法、系统及相关设备
CN104536880A (zh) 基于符号执行的gui程序测试用例扩增方法
CN111985936A (zh) 一种商户证件信息的检验方法、装置及设备
CN112084108A (zh) 一种测试脚本生成方法、装置及相关组件
CN113805861B (zh) 基于机器学习的代码生成方法、代码编辑系统及存储介质
CN115543832A (zh) 一种软件代码标准性的检测方法、系统、设备及存储介质
CN115269444A (zh) 代码静态检测方法、装置及服务器
US9495278B2 (en) Dynamic discovery of data segments within instrumented code
Harzevili et al. Automatic Static Vulnerability Detection for Machine Learning Libraries: Are We There Yet?
CN113961238A (zh) 对象转换方法、装置及电子设备和存储介质
CN113327023A (zh) 穿行测试方法、装置、电子设备及计算机可读存储介质
CN112580334A (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