掌桥专利:专业的专利平台
掌桥专利
首页

基于爬虫技术和规则引擎的接口测试用例生成方法及系统

文献发布时间:2023-06-19 09:54:18


基于爬虫技术和规则引擎的接口测试用例生成方法及系统

技术领域

本发明涉及软件测试技术领域,尤其是涉及了基于爬虫技术和规则引擎的接口测试用例生成方法及系统。

背景技术

目前,随着计算机技术的日益发展,业务系统不断向着分布式、业务中心化和高可用性的方向发展。系统间的接口错综复杂,传统的接口测试方法测试成本急剧增加、测试效率大幅下降。在这样的情况下,迫切需要一种更加有效而且可持续进行的测试方法来保证系统的质量。接口测试的本质是站在用户的角度,对系统接口进行全面、高效、持续的检测。但是,传统的接口测试是基于既定的接口测试文档和可测系统上通过测试脚本编写,从而完成接口测试用例的编写,当接口属性或接口功能发生变更,相应的测试用例编写脚本也需要作出调整,这就大大增加了接口测试用例的维护成本。随着系统的复杂性越来越高。接口的数量越来越多,接口之间的关系越加复杂时,这种接口测试用例的维护成本将很难控制,接口测试的效率很难提升,项目的总体质量和进度风险将大大增加。

发明内容

为解决现有技术的不足,实现接口测试自动化,自动生成接口测试用例的目的,本发明采用如下的技术方案:

基于爬虫技术和规则引擎的接口测试用例生成方法,包括如下步骤:

步骤S1,将被测系统部署于测试服务器;

步骤S2,搭建接口文档管理平台;

步骤S3,构建网络爬虫,从所述接口文档管理平台中爬取被测系统的接口信息;

步骤S4,根据给定的接口文档构造接口测试规则引擎,接口测试规则引擎分为四层,第一层为前置条件规则,第二层为测试用例规则,第三层为参数数据填充规则,第四层为断言规则,按接口类型自动匹配每一层的规则来确定接口测试用例生成规则,包括如下步骤:

步骤S4.1,预定义前置条件规则;

步骤S4.2,预定义测试用例规则;

步骤S4.3,预定义接口参数数据填充规则;

步骤S4.4,预定义断言规则;

步骤S5,按照不同的接口测试用例类型创建接口测试用例模板库;

步骤S6,执行步骤S3构造的网络爬虫,获取被测服务器的接口信息;

步骤S7,将步骤S6爬取的接口信息中的接口类型传入步骤S4构造的接口测试规则引擎,获取测试用例生成规则,并依据该用例对应的接口测试用例模板,自动生成接口测试用例;

步骤S8,将步骤S7生成的接口测试用例的属性存放于数据库;

步骤S9,构建接口测试用例运行器和测试报告生成器,自动生成接口测试用例的测试报告。

进一步的,所述步骤S3中网络爬虫的构建,包括如下步骤:

步骤S3.1,创建URL管理器,用于指定待爬取的WEB网站URL地址;

步骤S3.2,执行爬虫调度器,用于启动整个爬虫程序,获取测试服务器资源;

步骤S3.3,执行解析器,对爬取的测试服务器资源进行解析;

步骤S3.4,爬虫结果存储器对解析器解析完成的内容分类存放。

进一步的,所述步骤S3.3中的解析器首先对每个不同的网站内容设定不同的解析规则,所述解析规则需要定义的内容包括模块名的位置、接口名称位置、接口请求方式位置、接口类型位置、接口参数层级,再根据正则匹配找出相应内容。

进一步的,所述步骤S4.1中的预定义前置条件规则,首先分析需求规格说明书和静态接口文档,确定接口之间的依赖关系,新增类型的接口,其前置条件按预定义的前置条件规则,获取该业务模块前置流程的新增接口作为本模块新增接口的前置条件,查询和删除类型接口的前置条件均以同业务模块的新增接口作为前置条件。

进一步的,所述步骤S4.2中的预定义测试用例规则,是以测试方法为基础而建立的规则集,按所述测试方法将系统接口测试用例分为不同的测试用例类型,包括:正向、非空校验、重复性校验、删除不存在的值校验、查询不存在的值校验、参数传入特殊字符校验、参数传入类型校验、查询条件及查询结果排序校验测试用例类型,每一类接口类型定义一种或多种测试用例类型,通过输入接口类型,自动匹配该接口类型所需要覆盖的测试用例类型。

进一步的,所述步骤S4.3中的预定义接口参数数据填充规则,是按参数类型进行定义,每一种参数类型定义数据生成格式,接口参数数据填充时按所述格式动态生成数据。

进一步的,所述步骤S4.4中的预定义断言规则,是校验测试用例运行的实际结果和预期结果是否一致,并记录到接口测试报告中。

进一步的,所述步骤S7中首先获取前置条件、接口测试用例类型及断言规则,其次,按获取的接口测试用例类型,依次从模板库中查找到预先定义的接口测试用例模板,将规则信息自动替换到所接口测试用例模板中。

进一步的,所述接口参数数据填充默认按网络爬虫爬取的参数数据填充,再按所述步骤S4.3中定义的接口参数数据填充规则进行调整。

基于爬虫技术和规则引擎的接口测试用例生成系统,包括爬虫装置、接口测试用例规则引擎装置、接口测试用例模板库装置、接口测试用例自动生成装置、接口测试用例存储装置、接口测试用例运行装置,接口测试用例自动生成装置分别与爬虫装置、接口测试用例规则引擎装置、接口测试用例模板库装置和接口测试用例存储装置连接,接口测试用例存储装置与接口测试用例运行装置连接;

所述爬虫装置,用于获取接口信息;

接口测试用例规则引擎装置,用于定义接口测试所需的业务流、测试用例规则、接口参数数据填充规则、断言规则,采用按接口类型自动匹配的方式来触发接口测试用例规则;

接口测试用例模板库装置,用于定义不同类型的接口测试用例内容的标准格式和组成部分;

接口测试用例自动生成装置,用于将接口类型输入接口测试规则引擎和接口测试用例模板库,自动匹配到接口测试用例生成规则,按此规则自动生成接口测试用例;

接口测试用例存储装置,对自动生成的接口测试用例按属性存放于数据库;

接口测试用例运行装置,用于批量执行指定范围的接口测试用例,并自动生成接口测试报告。

本发明的优势和有益效果在于:

本发明能够对整个系统的接口进行测试用例覆盖。用例规则、业务流程可灵活配置,接口测试用例可即时动态生成,从而可以快速有效地应对需求和程序设计的变更,同时可监督开发规范,有效提高测试效率,降低测试成本。

附图说明

图1是本发明中爬虫装置结构图。

图2是本发明中接口测试规则引擎装置结构图。

图3是本发明的方法流程图。

图4是本发明的系统结构图。

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

首先需要说明的是,本发明是大数据技术在软件测试领域的一种应用。在本发明的实现过程中,会涉及到多个软件功能模块的应用,申请人认为,如在仔细阅读申请文件,准确理解本发明的实现原理和发明目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技术实现本发明。前述软件功能模块包括但不限于主设备、接口测试规则引擎、爬虫、接口信息存储、接口测试用例python代码模板、接口测试用例自动生成等。凡本发明申请文件提及的均属此范畴,申请人不再一一列举。

下面结合附图与具体实施方式对本发明作进一步详细描述:

为了能够更加全面有效地对系统接口进行测试用例的快速覆盖,并及时有效地应对需求和开发设计变更,本发明提供一种基于爬虫技术和规则引擎的接口测试用例自动生成方法。首先将基于spring架构的被测系统部署于测试服务器,通过爬虫技术从swagger接口文档管理平台下载接口信息,根据预定义的接口测试规则引擎,完成接口测试用例python编码自动生成。最终可以一键执行所有或指定范围的接口测试用例,并自动生成接口测试报告。

基于爬虫技术和规则引擎的接口测试用例自动生成方法,如图3所示,包括以下步骤:

步骤S1,将基于spring架构的被测系统部署于测试服务器。

步骤S2,搭建Swagger接口文档管理平台,即接口文档的存储管理系统。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的web服务,它采用OpenAPI规范,在API的设计阶段,可以作为需求和系统特性描述的依据,也可以作为接口测试的基础和依据。

步骤S3,主设备构建网络爬虫。如图1所示,所述网络爬虫的组成结构包括:爬虫调度器、URL管理器、解析器和爬虫结果存储器。从步骤S2所述Swagger接口文档管理平台中爬取被测系统的接口信息。所述接口信息包括业务模块名称、接口名称、接口Url地址、接口请求方法、接口请求参数。网络爬虫的构建,包括以下步骤:

步骤S3.1,创建URL管理器,用于指定待爬取的WEB网站URL地址。WEB网站的URL地址由WEB网站IP地址、端口号、URL路由目录组成,URL定义为“%s/%s/v2/api-docs”,第1个%s表示WEB网站IP,第2个%s表示网站端口,“/v2/api-docs”表示路由目录。

步骤S3.2,执行爬虫调度器,等同于爬虫程序的入口,用于启动整个爬虫程序。所述爬虫采用r=request.get(url),构造一个向测试服务器(待爬取的WEB网站的服务器)请求资源的request对象,返回一个包含测试服务器资源的Response对象。

步骤S3.3,执行解析器,对爬取的网页内容(由Response对象返回)进行解析。首先对每个不同的网站内容设定不同的解析规则,所述解析规则需要定义完整模块名的位置、接口名称位置、接口请求方式位置、接口类型位置、接口参数层级。默认解析规则为%method-%model-%type-%name,系统根据正则匹配找出相应内容。

步骤S3.4,爬虫结果存储器,对解析器解析完成的网页内容,按WEB网站、功能模块名称分类存放。

步骤S4,根据需求阶段给定的静态接口文档构造接口测试规则引擎。如图2所示,接口测试规则引擎分为四层,第一层为前置条件规则,第二层为测试用例规则,第三层为参数数据填充规则,第四层为断言规则。通过按接口类型自动匹配每一层的规则来确定接口测试用例生成规则,即向接口测试规则引擎发送接口类型,获取该接口类型对应的接口测试用例生成规则。构造接口测试规则引擎,包括以下步骤:

步骤S4.1,预定义前置条件规则,首先分析需求规格说明书和静态接口文档,梳理整个系统的业务流程,确定接口之间的依赖关系。新增类型的接口,其前置条件按预定义的前置条件规则,获取该业务模块前置流程的新增接口作为本模块新增接口的前置条件。查询和删除类型接口的前置条件均以同业务模块的新增接口作为前置条件。例如,设有业务模块a、b、c、t,其中a1、b1、c1、t1分别表示a、b、c、t模块的新增接口;a2、b2、c2、t2分别表示a、b、c、t模块的删除接口;a3、b3、c3、t3分别表示a、b、c、t模块的查询接口。删除接口a2、b2、c2、t2的前置条件分别为a1、b1、c1、t1。当业务流程为a→b→c和t→c时,即a业务模块流程执行完成才能执行b业务模块,b业务模块和t业务模块流程执行完成才能执行c业务模块,则新增接口a1的输出是新增接口b1的输入,新增接口c1的输入是新增接口t1的输出,同时c1接口的输入又是b1接口的输出,则可以定义为两条流程链,即流程链pr1=a1->b1->c1;流程链pr2=t1->c1。

步骤S4.2,预定义测试用例规则,测试用例规则是以等价类和边界值等测试方法为基础而建立的规则集。按所述测试方法将系统接口测试用例分为正向、非空校验、重复性校验、删除不存在的值校验、查询不存在的值校验、参数传入特殊字符校验、参数传入类型校验、查询条件及查询结果排序校验等测试用例类型。每一类接口类型可定义一种或多种测试用例类型,通过输入接口类型,自动匹配该接口类型所需要覆盖的测试用例的种类。

步骤S4.3,预定义接口参数数据填充规则。接口参数数据填充规则按参数类型进行定义,分为字符型参数、整型参数、浮点型参数、日期型参数等。每一种参数类型定义数据生成格式,接口参数数据填充时按所述格式动态生成数据。

步骤S4.4,预定义断言规则。所述断言就是校验测试用例运行的实际结果和预期结果是否一致,如果不一致,系统将抛出异常提示信息,这个信息最终将记录到接口测试报告中。

步骤S5,按照不同的接口测试用例类型创建接口测试用例模板库。所述接口测试用例模板由python代码构成,模板内容结构分为前置条件部分、接口参数封装及接口参数数据填充部分、接口调用部分、接口返回内容断言。

模板类型分为:新增类正向接口测试用例模板、新增类非空校验测试用例模板、新增类重复性校验测试用例模板、新增类参数传入特殊字符校验测试用例模板、新增类参数传入类型校验测试用例模板、删除类不存在的值校验测试用例模板、查询类不存在的值测试用例验模板、查询条件及查询结果排序校验测试用例模板。

步骤S6,执行步骤S3构造的网络爬虫,获取被测WEB网站的所有接口信息。

步骤S7,将步骤S6爬取的接口信息中的接口类型传入步骤S4构造的接口测试规则引擎,获取测试用例生成规则,并依据该用例对应的接口测试用例模板,自动生成接口测试用例。

首先,获取前置条件、接口测试用例类型及断言规则。其次,按获取的接口测试用例类型集,依次从模板库中查找到预先定义的接口测试用例模板,将相应的规则信息、前置条件和断言规则自动替换到所述接口测试用例模板中,接口参数数据填充默认按爬虫爬取的参数数据填充,再按步骤S4.3中所定义的接口参数数据填充规则进行调整。

步骤S8,将步骤S7生成的接口测试用例属性以表格的形式存放于数据库。

接口测试用例属性,包括用例ID、用例名称、用例说明、接口类型、接口名称、参数、用例类型、执行结果等。同时将由接口测试用例模板中生成的接口测试用例以.py文件的形式存放于python工程项目的test_case目录中,每个文件以“test_”开头。

步骤S9,构建接口测试用例运行器和测试报告生成器。所述接口测试用例运行器采用Unittest测试套件来构建,使用unittest测试套件,加载test_case目录下所有的测试用例,并按指定范围执行,由测试报告生成器HtmlReport自动生成接口测试用例的测试报告。

例如,爬虫从swagger接口文档中爬到一个可以测试的模块“排班管理-班组”,里面包括8个接口。按照前述定义的接口测试方法和接口测试用例规则,一个接口将衍生出多种接口测试用例类型,比如“/drTeam/add新增数据”这个接口属于新增接口,它会被事先定义为包含“正向”、“非空校验”、“重复性校验”、“参数传入特殊字符校验”、“字符型参数传入数值型校验”、“参数长度超限校验”等6类接口测试用例类型。每一类接口测试用例类型事先定义好模板,比如“正向”类型的接口测试用例模板主要包含以下几部分内容:1)根据定义好的前置条件规则获取该接口用例对应的前置条件接口,并调用该接口,获取接口返回值(ID)。2)将前置条件接口返回值作为本接口参数传入本接口。3)按爬取的本接口参数填充参数值。4)运行本接口,获取接口返回值,所述接口返回值即测试用例的实际结果。5)根据本接口返回值中的ID获取本接口数据库所存值,所述数据库所存值即为测试用例预期结果。将获取到的数据库所存值和本接口返回值进行数据一致性对比,即实际结果与预期结果进行对比。

本发明还揭示了一种基于爬虫技术和规则引擎的接口测试用例自动生成系统,如图4所示,包括:爬虫装置、接口测试用例规则引擎装置、接口测试用例模板库装置、接口测试用例自动生成装置、接口测试用例存储装置、接口测试用例运行装置。

所述爬虫装置,用于获取接口文档管理平台Swagger的接口信息。包括业务模块名称、接口名称、接口Url地址、接口请求方法、接口请求参数,并将以上信息格式转化成所述系统规定的统一格式;

所述接口测试用例规则引擎装置,用于定义接口测试所需的业务流、测试用例规则、接口参数数据填充规则、断言规则,采用按接口类型自动匹配的方式来触发接口测试用例规则;

所述接口测试用例模板库装置,用于定义不同类型的接口测试用例内容的标准格式和组成部分;

所述接口测试用例自动生成装置,用于根据接口类型输入前述接口测试规则引擎和接口测试用例模板库,自动匹配到接口测试用例生成规则,按此规则自动生成接口测试用例,用例以python代码组成,并以“test_接口英文名.py”的形式存放于python工程项目中;

所述接口测试用例存储装置,对自动生成的接口测试用例按属性,以表格的形式存放于数据库;

所述接口测试用例运行装置,用于批量执行指定范围的接口测试用例,并自动生成接口测试报告。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。

相关技术
  • 基于爬虫技术和规则引擎的接口测试用例生成方法及系统
  • 一种基于接口描述的自动化测试用例生成与测试系统及其使用方法
技术分类

06120112346954