基于扫描maven仓库自动生成接口测试用例的方法技术

技术编号:36574296 阅读:9 留言:0更新日期:2023-02-04 17:32
本发明专利技术涉及软件测试技术领域,公开了基于扫描maven仓库自动生成接口测试用例的方法,本发明专利技术通过扫描maven仓库快速获取所有服务的所有接口,并基于抓取的接口定义系统自动生成接口自动化测试用例,可以在分钟级的时间完成上万接口的抓取和数万自动化用例编写,效率提升巨大;且可以通过控制输入maven仓库链接的具体目录控制爬取范围,实现全量,某个业务线下所有服务或者具体某个服务的接口抓取和覆盖,使用灵活;除了传入maven仓库地址外,没有其他额外人工操作,使用简单。通过解析比对获取所有增量接口和其参数定义,自动批量生成接口api健壮性测试用例,使用计算机代替人工达到了更加高效,场景覆盖更加全面的目的。场景覆盖更加全面的目的。场景覆盖更加全面的目的。

【技术实现步骤摘要】
基于扫描maven仓库自动生成接口测试用例的方法


[0001]本专利技术涉及软件测试
,具体涉及基于扫描maven仓库自动生成接口测试用例的方法。

技术介绍

[0002]在当今软件行业盛行敏捷开发的大背景下,导致软件测试人员需要频繁回归历史功能,纯靠软件测试人员手工回归已经难以保证软件上线质量和迭代速度,所以自动化测试成为了各个软件公司不可却少的一部分。而在经典的自动化测试金子塔中(单元自动化测试,接口自动化测试,UI自动化测试)处于居中阶段的接口自动化测试是投入产出比最大的一种方式,所以被广泛应用于各个软件公司。
[0003]而在各种接口自动化测试实现方式中,都必须知道有那些接口,并针对这些接口一一编写接口自动化测试用例。而今大部分公司都至少有几十,上百个软件服务,甚至一些大型公司甚至能有几千上万个软件服务。而获取所有服务的所有接口,并再针对这些接口一一编写自动化测试用例,工作量巨大,这也是阻塞大部分公司接口自动化建设,自动化代码覆盖率上不去的主要原因;尤其是对应中大型公司几千上万的服务,需要重复该动作几千上万次效率低,成本大。
[0004]而且现有的接口测试用例必须获取该服务的源代码作为输入,获取服务的代码都是需要权限,当需要获取的服务源代码越多,设计的公司部门业务线越多,开通权限的流程就越复杂,并且存在安全风险。
[0005]此外,软件测试是整个软件生命周期中举足轻重的一环,而在各个软件测试经典模型中集成测试都是至关重要的,而集成测试的核心就是接口测试,所以接口测试做的效果如何直接关乎软件的质量。而接口测试中的一个核心目的就是测试接口的健壮性,如何高效高质做好接口健壮性测试是每个软件测试人员共同面临的问题。

技术实现思路

[0006]基于以上问题,本专利技术提供基于扫描maven仓库自动生成接口测试用例的方法,通过扫描maven仓库快速获取所有服务的所有接口,并进行接口版本diff获取增量变更接口,并基于抓取的接口定义系统自动为增量变更接口或全量接口生成接口自动化测试用例。
[0007]为解决上述技术问题,高效地完成接口测试,本专利技术所采用的技术方案是:基于扫描maven仓库自动生成接口测试用例的方法,包括如下步骤:步骤1、利用被测服务的maven坐标获取服务最新jar包;步骤2、解析jar包,利用反射技术获取到类相关信息;步骤3、根据类的相关信息,获取接口的请求方式、接口的请求路径、入参以及入参类型;步骤4、根据接口的请求方式、接口的请求路径、接口的入参以及接口的入参类型,生成接口自动化测试用例。
[0008]进一步地,步骤1中,通过爬虫访问maven仓库地址,解析HTML页面获得所有可访问链接,遍历递归爬取输入maven仓库地址下的所有jar包链接。
[0009]进一步地,步骤1中,获取所述jar包链接时判断服务是否是快照版本,若是快照版本则获取最新版本jar包链接,若为非快照版本直接使用当前jar包链接。
[0010]进一步地,步骤2中,获取类相关信息的方法为:遍历已获取的jar包,解析jar包获取jar内所有的.class文件,加载所有的类到jvm中,利用反射技术获取到类相关信息。
[0011]进一步地,步骤3中的具体方法为:取出类上所有注解,判断是否包含Controller注解,取出包含controller注解的类,用反射技术取出类中所有的方法的注解,取RequestMapping注解的值,获得接口的请求方式和接口的请求路径;再通过反射技术获取接口的入参和接口的入参类型。
[0012]进一步地,步骤4中,通过服务域名映射配置文件自动匹配对应服务的域名,将域名加上接口的请求路径获取请求链接;输入用户自定义的参数生成规则,根据参数生成规则以及接口的入参类型自动生成参数值,组织得到请求体,通过请求链接加上请求体加上接口的请求方式自动生成一个接口自动化测试用例。
[0013]进一步地,为了高效高质做好接口健壮性测试,本专利技术还包括以下过程:通过服务的Maven坐标、接口的请求路径作为唯一联合主键去数据库接口信息表中查询,若查询不到历史版本接口则直接存入数据库,接口变更类型字段存为新增,版本号字段设为1;如果能查询到历史版本信息,比对入参类型和接口的请求方式是否有变更,若无变更则接口变更类型字段存为无变化;若有变更,接口变更类型字段存为变更,将版本号字段为1置为版本号字段0,新的接口信息插入数据库版本号1;通过服务来查询所有版本号字段为1的接口,根据入参类型组装请求体入参名称并取参数值,每个参数值根据参数生成规则生成多个参数值,然后将入参名称和参数值进行笛卡尔积组合来生成该接口的多个参数场景,并生成该接口的多个参数场景的健壮性测试用例。
[0014]与现有技术相比,本专利技术的有益效果是:1、本专利技术通过扫描maven仓库快速获取所有服务的所有接口,并基于抓取的接口定义系统自动生成接口自动化测试用例,可以在分钟级的时间完成上万接口的抓取和数万自动化用例编写,效率提升巨大;并且可以通过控制输入maven仓库链接的具体目录控制爬取范围,实现全量,某个业务线下所有服务或者具体某个服务的接口抓取和覆盖,使用灵活;除了传入maven仓库地址外,没有其他额外人工操作,一次性完成自动化测试用例,使用简单。
[0015]2、本专利技术的实施例中在生成自动化测试用例时特别地生成了健壮性测试用例,在生成接口版本diff功能使得测试人员甚至前端开发人员能够直观了解接口变更点更好的进行测试设计或者前端开发。
附图说明
[0016]图1为实施例1或2中基于扫描maven仓库自动生成接口测试用例流程图;图2为实施例1中生成接口测试用例的方法流程图;图3为实施例2中生成健壮性接口测试用例的方法流程图。
具体实施方式
[0017]为使本专利技术的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本专利技术作进一步的详细说明,本专利技术的示意性实施方式及其说明仅用于解释本专利技术,并不作为对本专利技术的限定。
[0018]实施例1:参见图1和图2,基于扫描maven仓库自动生成接口测试用例的方法,包括如下步骤:包括如下步骤:步骤1、利用被测服务的maven坐标获取服务最新jar包;本实施例,可以通过爬虫访问maven仓库web地址,解析HTML页面获得所有可访问链接,遍历递归爬取输入maven仓库地址下的所有jar包链接。获取jar包链接时判断服务是否是快照版本,若是快照版本则通过maven

metadata.xml获取最新版本jar包链接,若为非快照版本直接使用当前jar包链接。
[0019]步骤2、解析jar包,利用反射技术获取到类相关信息;本实施例中,通过遍历已下载的jar包,利用Java的jarFile类解析jar包获取jar内所有的.class文件,利用URLClassLoader加载所有的类到jvm中,利用反射技术获取到类相关信息。
[0020]步骤3、根据类的相关信息,获取接口的请求方式、接口的请求路径、本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于扫描maven仓库自动生成接口测试用例的方法,其特征在于,包括如下步骤:步骤1、利用被测服务的maven坐标获取服务最新jar包;步骤2、解析jar包,利用反射技术获取到类相关信息;步骤3、根据类的相关信息,获取接口的请求方式、接口的请求路径、入参以及入参类型;步骤4、根据接口的请求方式、接口的请求路径、接口的入参以及接口的入参类型,生成接口自动化测试用例。2.根据权利要求1所述的基于扫描maven仓库自动生成接口测试用例的方法,其特征在于:步骤1中,通过爬虫访问maven仓库地址,解析HTML页面获得所有可访问链接,遍历递归爬取输入maven仓库地址下的所有jar包链接。3.根据权利要求2所述的基于扫描maven仓库自动生成接口测试用例的方法,其特征在于:步骤1中,获取所述jar包链接时判断服务是否是快照版本,若是快照版本则获取最新版本jar包链接,若为非快照版本直接使用当前jar包链接。4.根据权利要求1所述的基于扫描maven仓库自动生成接口测试用例的方法,其特征在于:步骤2中,获取类相关信息的方法为:遍历已获取的jar包,解析jar包获取jar内所有的.class文件,加载所有的类到jvm中,利用反射技术获取到类相关信息。5.根据权利要求4所述的基于扫描maven仓库自动生成接口测试用例的方法,其特征在于:步骤3中的具体方法为:取出类上所有注解,判断是否包含Controller注解,取出包含controll...

【专利技术属性】
技术研发人员:蒋滔赵杰杨芳芳李悦林强云
申请(专利权)人:云筑信息科技成都有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1