CN115687161B - 基于扫描maven仓库自动生成接口测试用例的方法 - Google Patents
基于扫描maven仓库自动生成接口测试用例的方法 Download PDFInfo
- Publication number
- CN115687161B CN115687161B CN202211712995.5A CN202211712995A CN115687161B CN 115687161 B CN115687161 B CN 115687161B CN 202211712995 A CN202211712995 A CN 202211712995A CN 115687161 B CN115687161 B CN 115687161B
- Authority
- CN
- China
- Prior art keywords
- interface
- parameter
- request
- maven
- class
- 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
Links
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及软件测试技术领域,公开了基于扫描maven仓库自动生成接口测试用例的方法,本发明通过扫描maven仓库快速获取所有服务的所有接口,并基于抓取的接口定义系统自动生成接口自动化测试用例,可以在分钟级的时间完成上万接口的抓取和数万自动化用例编写,效率提升巨大;且可以通过控制输入maven仓库链接的具体目录控制爬取范围,实现全量,某个业务线下所有服务或者具体某个服务的接口抓取和覆盖,使用灵活;除了传入maven仓库地址外,没有其他额外人工操作,使用简单。通过解析比对获取所有增量接口和其参数定义,自动批量生成接口api健壮性测试用例,使用计算机代替人工达到了更加高效,场景覆盖更加全面的目的。
Description
技术领域
本发明涉及软件测试技术领域,具体涉及基于扫描maven仓库自动生成接口测试用例的方法。
背景技术
在当今软件行业盛行敏捷开发的大背景下,导致软件测试人员需要频繁回归历史功能,纯靠软件测试人员手工回归已经难以保证软件上线质量和迭代速度,所以自动化测试成为了各个软件公司不可却少的一部分。而在经典的自动化测试金子塔中(单元自动化测试,接口自动化测试,UI自动化测试)处于居中阶段的接口自动化测试是投入产出比最大的一种方式,所以被广泛应用于各个软件公司。
而在各种接口自动化测试实现方式中,都必须知道有那些接口,并针对这些接口一一编写接口自动化测试用例。而今大部分公司都至少有几十,上百个软件服务,甚至一些大型公司甚至能有几千上万个软件服务。而获取所有服务的所有接口,并再针对这些接口一一编写自动化测试用例,工作量巨大,这也是阻塞大部分公司接口自动化建设,自动化代码覆盖率上不去的主要原因;尤其是对应中大型公司几千上万的服务,需要重复该动作几千上万次效率低,成本大。
而且现有的接口测试用例必须获取该服务的源代码作为输入,获取服务的代码都是需要权限,当需要获取的服务源代码越多,设计的公司部门业务线越多,开通权限的流程就越复杂,并且存在安全风险。
此外,软件测试是整个软件生命周期中举足轻重的一环,而在各个软件测试经典模型中集成测试都是至关重要的,而集成测试的核心就是接口测试,所以接口测试做的效果如何直接关乎软件的质量。而接口测试中的一个核心目的就是测试接口的健壮性,如何高效高质做好接口健壮性测试是每个软件测试人员共同面临的问题。
发明内容
基于以上问题,本发明提供基于扫描maven仓库自动生成接口测试用例的方法,通过扫描maven仓库快速获取所有服务的所有接口,并进行接口版本diff获取增量变更接口,并基于抓取的接口定义系统自动为增量变更接口或全量接口生成接口自动化测试用例。
为解决上述技术问题,高效地完成接口测试,本发明所采用的技术方案是:
基于扫描maven仓库自动生成接口测试用例的方法,包括如下步骤:
步骤1、利用被测服务的maven坐标获取服务最新jar包;
步骤2、解析jar包,利用反射技术获取到类相关信息;
步骤3、根据类的相关信息,获取接口的请求方式、接口的请求路径、入参以及入参类型;
步骤4、根据接口的请求方式、接口的请求路径、接口的入参以及接口的入参类型,生成接口自动化测试用例。
进一步地,步骤1中,通过爬虫访问maven仓库地址,解析HTML页面获得所有可访问链接,遍历递归爬取输入maven仓库地址下的所有jar包链接。
进一步地,步骤1中,获取所述jar包链接时判断服务是否是快照版本,若是快照版本则获取最新版本jar包链接,若为非快照版本直接使用当前jar包链接。
进一步地,步骤2中,获取类相关信息的方法为:遍历已获取的jar包,解析jar包获取jar内所有的.class文件,加载所有的类到jvm中,利用反射技术获取到类相关信息。
进一步地,步骤3中的具体方法为:取出类上所有注解,判断是否包含Controller注解,取出包含controller注解的类,用反射技术取出类中所有的方法的注解,取RequestMapping注解的值,获得接口的请求方式和接口的请求路径;再通过反射技术获取接口的入参和接口的入参类型。
进一步地,步骤4中,通过服务域名映射配置文件自动匹配对应服务的域名,将域名加上接口的请求路径获取请求链接;输入用户自定义的参数生成规则,根据参数生成规则以及接口的入参类型自动生成参数值,组织得到请求体,通过请求链接加上请求体加上接口的请求方式自动生成一个接口自动化测试用例。
进一步地,为了高效高质做好接口健壮性测试,本发明还包括以下过程:通过服务的Maven坐标、接口的请求路径作为唯一联合主键去数据库接口信息表中查询,若查询不到历史版本接口则直接存入数据库,接口变更类型字段存为新增,版本号字段设为1;如果能查询到历史版本信息,比对入参类型和接口的请求方式是否有变更,若无变更则接口变更类型字段存为无变化;若有变更,接口变更类型字段存为变更,将版本号字段为1置为版本号字段0,新的接口信息插入数据库版本号1;
通过服务来查询所有版本号字段为1的接口,根据入参类型组装请求体入参名称并取参数值,每个参数值根据参数生成规则生成多个参数值,然后将入参名称和参数值进行笛卡尔积组合来生成该接口的多个参数场景,并生成该接口的多个参数场景的健壮性测试用例。
与现有技术相比,本发明的有益效果是:
1、本发明通过扫描maven仓库快速获取所有服务的所有接口,并基于抓取的接口定义系统自动生成接口自动化测试用例,可以在分钟级的时间完成上万接口的抓取和数万自动化用例编写,效率提升巨大;并且可以通过控制输入maven仓库链接的具体目录控制爬取范围,实现全量,某个业务线下所有服务或者具体某个服务的接口抓取和覆盖,使用灵活;除了传入maven仓库地址外,没有其他额外人工操作,一次性完成自动化测试用例,使用简单。
2、本发明的实施例中在生成自动化测试用例时特别地生成了健壮性测试用例,在生成接口版本diff功能使得测试人员甚至前端开发人员能够直观了解接口变更点更好的进行测试设计或者前端开发。
附图说明
图1为实施例1或2中基于扫描maven仓库自动生成接口测试用例流程图;
图2为实施例1中生成接口测试用例的方法流程图;
图3为实施例2中生成健壮性接口测试用例的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例1:
参见图1和图2,基于扫描maven仓库自动生成接口测试用例的方法,包括如下步骤:
包括如下步骤:
步骤1、利用被测服务的maven坐标获取服务最新jar包;
本实施例,可以通过爬虫访问maven仓库web地址,解析HTML页面获得所有可访问链接,遍历递归爬取输入maven仓库地址下的所有jar包链接。获取jar包链接时判断服务是否是快照版本,若是快照版本则通过maven-metadata.xml获取最新版本jar包链接,若为非快照版本直接使用当前jar包链接。
步骤2、解析jar包,利用反射技术获取到类相关信息;
本实施例中,通过遍历已下载的jar包,利用Java的jarFile类解析jar包获取jar内所有的.class文件,利用URLClassLoader加载所有的类到jvm中,利用反射技术获取到类相关信息。
步骤3、根据类的相关信息,获取接口的请求方式、接口的请求路径、入参以及入参类型;
本实施例中,步骤3的具体方法为:取出类上所有注解,判断是否包含Controller注解,取出包含controller注解的类,用反射技术取出类中所有的方法的注解,取RequestMapping注解的值,获得接口的请求方式和接口的请求路径;再通过反射技术获取接口的入参和接口的入参类型。
步骤4、根据接口的请求方式、接口的请求路径、接口的入参以及接口的入参类型,生成接口自动化测试用例。
本实施例中可以通过服务域名映射配置文件自动匹配对应服务的域名,将域名加上接口的请求路径获取请求链接;输入用户自定义的参数生成规则,根据参数生成规则以及接口的入参类型自动生成参数值,组织得到请求体,通过请求链接加上请求体加上接口的请求方式自动生成一个接口自动化测试用例。
在本实施例中,通过maven仓库地址爬取所有jar包下载链接通过jar包解析出请求路径,通过请求参数类型、请求路径、请求方式生成自动化测试用例。本实施例主要使用场景就是主流的Java spring web服务的HTTP接口,通过扫描maven仓库快速获取所有服务的所有接口,并基于抓取的接口定义系统自动生成接口自动化测试用例,可以在分钟级的时间完成上万接口的抓取和数万自动化用例编写,效率提升巨大;并且可以通过控制输入maven仓库链接的具体目录控制爬取范围,实现全量,某个业务线下所有服务或者具体某个服务的接口抓取和覆盖,使用灵活;除了传入maven仓库地址外,没有其他额外人工操作,一次性完成,使用简单。
实施例2
参见图1和图3,基于扫描maven仓库自动生成接口测试用例的方法,本实施例可以针对指定服务新增或变更接口自动批量生成接口健壮性混沌测试用例,具体步骤如下:
步骤1、利用被测服务的maven坐标获取服务最新jar包;
本实施例中,传入的maven坐标groupId、artifactId,通过拼接Maven仓库地址和坐标信息得到被测服务的Maven目录地址,通过爬虫访问该页面,判断是否是快照版本,快照版本爬取最新版本jar包链接,非快照版本爬取当前jar包链接;
步骤2、解析jar包,利用反射技术获取到类相关信息;
本实施例中,下载爬取的jar包链接;解析jar包,利用Java的jarFile类解析jar包获取jar内所有的.class文件,利用URLClassLoader加载所有的类到jvm中,利用反射技术获取到类相关信息;
步骤3、根据类的相关信息,获取接口的请求方式、接口的请求路径、入参以及入参类型;
本实施例中,取出类上所有注解,判断是否包含包含Controller注解,取出包含controller注解的类,用反射技术取出类中所有的方法的注解,取RequestMapping注解的值,可以获得接口的请求方式和接口的请求路径;再通过反射技术获取接口的入参和接口的入参类型。对于自定义参数类型,通过递归进行结构化拆解;
步骤4、根据接口的请求方式、接口的请求路径、接口的入参以及接口的入参类型,生成接口自动化测试用例。
本实施例生成得自动化测试用例为健壮性测试用例。具体过程如下:
(1)服务接口diff(对比):通过服务的Maven坐标、接口请求路径作为唯一联合主键去数据库接口信息表中查询,若查询不到历史版本接口则直接存入数据库,接口变更类型字段存为新增,版本号字段设为1(1代表最新版本,0代表历史版本);如果能查询到历史版本信息,比对参数信息(包括入参和入参类型)和请求方式是否有变更,若无,变更则接口变更类型存为无变化;若有变更,接口变更类型存为变更,将已在接口信息表里的版本信息为1的版本置为0(若同时存在版本号为0的历史版本则先删除,最多保留两个版本信息),新的接口信息插入数据库版本号1,参数信息是否变更和请求方式是否变更字段根据比对结果插入。例如接口变更可能是入参信息变更或者是请求方式变更,所以这里在接口版本是否变更的同时,还会进一步记录是入参变更了还是请求方式变更了,为后续针对性的生成测试用例提供依据。比如入参变化了,在生成测试用例时,就会针对性的对变化的入参生成测试用例;
(2)通过服务来查询所有版本号字段为1的接口,根据入参类型组装请求体入参名称并取参数值,每个参数值根据参数生成规则生成多个参数值,然后将入参名称和参数值进行笛卡尔积组合来生成该接口的多个参数场景,并生成该接口的多个参数场景的健壮性测试用例。
本实施例中,通过程序扫描Maven仓库jar包,解析比对获取所有增量接口和其参数定义,自动批量生成接口api健壮性测试用例的方式,使用计算机代替人工达到了更加高效,场景覆盖更加全面的目的。并且本实施例中接口版本diff功能使得测试人员甚至前端开发人员能够直观了解接口变更点更好的进行测试设计或者前端开发。
如上即为本发明的实施例。上述实施例以及实施例中的具体参数仅是为了清楚表述发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
Claims (4)
1.基于扫描maven仓库自动生成接口测试用例的方法,其特征在于,包括如下步骤:
步骤1、利用被测服务的maven坐标获取服务最新jar包;通过爬虫访问maven仓库地址,解析HTML页面获得所有可访问链接,遍历递归爬取输入maven仓库地址下的所有jar包链接;
步骤2、解析jar包,利用反射技术获取到类相关信息;
步骤3、根据类的相关信息,获取接口的请求方式、接口的请求路径、入参以及入参类型;
步骤4、根据接口的请求方式、接口的请求路径、接口的入参以及接口的入参类型,生成接口自动化测试用例;
步骤4中,通过服务域名映射配置文件自动匹配对应服务的域名,将域名加上接口的请求路径获取请求链接;输入用户自定义的参数生成规则,根据参数生成规则以及接口的入参类型自动生成参数值,组织得到请求体,通过请求链接加上请求体加上接口的请求方式自动生成一个接口自动化测试用例;
还包括以下过程:通过服务的Maven坐标、接口的请求路径作为唯一联合主键去数据库接口信息表中查询,若查询不到历史版本接口则直接存入数据库,接口变更类型字段存为新增,版本号字段设为1;如果能查询到历史版本信息,比对入参类型和接口的请求方式是否有变更,若无变更则接口变更类型字段存为无变化;若有变更,接口变更类型字段存为变更,将版本号字段为1置为版本号字段0,新的接口信息插入数据库版本号1;
通过服务来查询所有版本号字段为1的接口,根据入参类型组装请求体入参名称并取参数值,每个参数值根据参数生成规则生成多个参数值,然后将入参名称和参数值进行笛卡尔积组合来生成该接口的多个参数场景,并生成该接口的多个参数场景的健壮性测试用例。
2.根据权利要求1所述的基于扫描maven仓库自动生成接口测试用例的方法,其特征在于:步骤1中,获取所述jar包链接时判断服务是否是快照版本,若是快照版本则获取最新版本jar包链接,若为非快照版本直接使用当前jar包链接。
3.根据权利要求1所述的基于扫描maven仓库自动生成接口测试用例的方法,其特征在于:步骤2中,获取类相关信息的方法为:遍历已获取的jar包,解析jar包获取jar内所有的.class文件,加载所有的类到jvm中,利用反射技术获取到类相关信息。
4.根据权利要求3所述的基于扫描maven仓库自动生成接口测试用例的方法,其特征在于:步骤3中的具体方法为:取出类上所有注解,判断是否包含Controller注解,取出包含controller注解的类,用反射技术取出类中所有的方法的注解,取RequestMapping注解的值,获得接口的请求方式和接口的请求路径;再通过反射技术获取接口的入参和接口的入参类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211712995.5A CN115687161B (zh) | 2022-12-30 | 2022-12-30 | 基于扫描maven仓库自动生成接口测试用例的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211712995.5A CN115687161B (zh) | 2022-12-30 | 2022-12-30 | 基于扫描maven仓库自动生成接口测试用例的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115687161A CN115687161A (zh) | 2023-02-03 |
CN115687161B true CN115687161B (zh) | 2023-06-23 |
Family
ID=85056026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211712995.5A Active CN115687161B (zh) | 2022-12-30 | 2022-12-30 | 基于扫描maven仓库自动生成接口测试用例的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115687161B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117112413A (zh) * | 2023-08-18 | 2023-11-24 | 鱼快创领智能科技(南京)有限公司 | 一种自动生成接口测试用例的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109254907A (zh) * | 2018-08-03 | 2019-01-22 | 挖财网络技术有限公司 | 一种基于Java的接口测试报告生成方法及系统 |
KR20190094779A (ko) * | 2018-02-06 | 2019-08-14 | 엘에스산전 주식회사 | Plc 명령어 컴파일러 테스트케이스 자동 생성 장치 |
CN110232024A (zh) * | 2019-05-26 | 2019-09-13 | 必成汇(成都)科技有限公司 | 软件自动化测试框架及测试方法 |
CN110765018A (zh) * | 2019-10-25 | 2020-02-07 | 上海中通吉网络技术有限公司 | 接口自动化测试方法及设备 |
CN111752826A (zh) * | 2020-06-03 | 2020-10-09 | 五八有限公司 | 一种接口测试方法、装置、电子设备及存储介质 |
CN115373677A (zh) * | 2021-05-21 | 2022-11-22 | 京东科技控股股份有限公司 | 单元测试用例目标代码生成方法、装置、电子设备及计算机可读介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10133650B1 (en) * | 2017-10-10 | 2018-11-20 | Fujitsu Limited | Automated API parameter resolution and validation |
CN109062798A (zh) * | 2018-07-26 | 2018-12-21 | 浙江数链科技有限公司 | 一种基于Dubbo框架的测试方法与装置 |
CN109582588B (zh) * | 2018-12-25 | 2022-02-22 | 迈普通信技术股份有限公司 | 测试用例生成方法、装置及电子设备 |
CN111026634A (zh) * | 2019-09-27 | 2020-04-17 | 珠海随变科技有限公司 | 一种接口自动化测试系统、方法、装置及存储介质 |
CN111459801B (zh) * | 2020-03-09 | 2022-09-06 | 江苏苏宁物流有限公司 | Rsf远程服务接口功能测试方法、模块、计算机设备和存储介质 |
CN111737140B (zh) * | 2020-06-28 | 2024-08-27 | 深圳前海微众银行股份有限公司 | 接口自动化测试方法、装置、设备及计算机可读存储介质 |
CN112363953B (zh) * | 2020-12-09 | 2023-12-05 | 中材邦业(杭州)智能技术有限公司 | 基于爬虫技术和规则引擎的接口测试用例生成方法及系统 |
CN112988224B (zh) * | 2021-01-21 | 2024-06-25 | 中信银行股份有限公司 | 微服务框架的接口文件生成方法、电子设备及存储介质 |
-
2022
- 2022-12-30 CN CN202211712995.5A patent/CN115687161B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190094779A (ko) * | 2018-02-06 | 2019-08-14 | 엘에스산전 주식회사 | Plc 명령어 컴파일러 테스트케이스 자동 생성 장치 |
CN109254907A (zh) * | 2018-08-03 | 2019-01-22 | 挖财网络技术有限公司 | 一种基于Java的接口测试报告生成方法及系统 |
CN110232024A (zh) * | 2019-05-26 | 2019-09-13 | 必成汇(成都)科技有限公司 | 软件自动化测试框架及测试方法 |
CN110765018A (zh) * | 2019-10-25 | 2020-02-07 | 上海中通吉网络技术有限公司 | 接口自动化测试方法及设备 |
CN111752826A (zh) * | 2020-06-03 | 2020-10-09 | 五八有限公司 | 一种接口测试方法、装置、电子设备及存储介质 |
CN115373677A (zh) * | 2021-05-21 | 2022-11-22 | 京东科技控股股份有限公司 | 单元测试用例目标代码生成方法、装置、电子设备及计算机可读介质 |
Non-Patent Citations (2)
Title |
---|
S. Raemaekers 等.Semantic versioning and impact of breaking changes in the Maven repository.《Journal of Systems and Software》.2016,第129卷第140-158页. * |
李艳丽 等.一种分布式可视化Dubbo接口测试平台.《华东师范大学学报(自然科学版) 》.2019,(第4期),第120-132、143页. * |
Also Published As
Publication number | Publication date |
---|---|
CN115687161A (zh) | 2023-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11341155B2 (en) | Mapping instances of a dataset within a data management system | |
Mariani et al. | Compatibility and regression testing of COTS-component-based software | |
Zhang et al. | Analyzing and supporting adaptation of online code examples | |
US20080155335A1 (en) | Graphical analysis to detect process object anomalies | |
JP2003091432A (ja) | ソフトウェア評価システム、ソフトウェア評価ツール | |
CN112363953B (zh) | 基于爬虫技术和规则引擎的接口测试用例生成方法及系统 | |
CN115687161B (zh) | 基于扫描maven仓库自动生成接口测试用例的方法 | |
Sacramento et al. | Web application model generation through reverse engineering and UI pattern inferring | |
Liu et al. | Identifying and characterizing silently-evolved methods in the android API | |
CN110543427A (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN111796855A (zh) | 一种增量版本更新方法、装置、存储介质及计算机设备 | |
CN113626823B (zh) | 一种基于可达性分析的组件间交互威胁检测方法及装置 | |
CN117215959A (zh) | 软件测试方法、装置、设备及存储介质 | |
Tsai et al. | Scenario-based test case generation for state-based embedded systems | |
US11954014B2 (en) | Automated unit testing in a mainframe CICS environment | |
CN116578282A (zh) | 代码生成方法、装置、电子设备及介质 | |
US20050015264A1 (en) | Methods, systems, and a computer-readable medium for defining and evaluating business rules during runtime of a computer software application program | |
CN110321130B (zh) | 基于系统调用日志的不可重复编译定位方法 | |
CN114356783A (zh) | 单元测试代码自动生成方法、装置、存储介质及设备 | |
CN113282505A (zh) | 软件测试进度分析方法、装置、设备及存储介质 | |
CN114090461A (zh) | 安卓应用升级的安全性补丁检测方法 | |
CN113032254A (zh) | 测试覆盖情况的评估方法和装置 | |
Alshanqiti et al. | Towards dynamic reverse engineering visual contracts from java | |
CN113157664B (zh) | 基于分级标识的数据分级与授权方法和系统 | |
CN110297651A (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 |