CN110162310A - 应用程序生成方法及装置、插件接口测试方法及装置 - Google Patents
应用程序生成方法及装置、插件接口测试方法及装置 Download PDFInfo
- Publication number
- CN110162310A CN110162310A CN201810146262.7A CN201810146262A CN110162310A CN 110162310 A CN110162310 A CN 110162310A CN 201810146262 A CN201810146262 A CN 201810146262A CN 110162310 A CN110162310 A CN 110162310A
- Authority
- CN
- China
- Prior art keywords
- test
- interface
- plug
- unit
- measured
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
一种应用程序生成方法及装置、插件接口测试方法及装置、计算机设备及存储介质,应用程序生成方法包括:获取各插件的接口对应的测试用例;基于各所述测试用例,生成测试插件包;获取包括待测插件的应用程序安装包,并根据所述测试插件包以及所述应用程序安装包,生成目标应用程序包。采用本方法可为后续测试提供保障,提高测试效率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种应用程序生成方法及装置、插件接口测试方法及装置、计算机设备及存储介质。
背景技术
在应用程序开发过程中,为确保应用程序能正常和稳定运行,需在开发的不同阶段进行应用程序测试,其中,接口测试是应用程序开发过程中要进行的一个测试。接口测试是测试系统组件之间接口的一种测试,用于检测外部系统与系统之间以及内部各个子系统之间的交互点的正确性和稳定性,测试的重点在于检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
在进行应用程序开发过程中,为了提高开发效率,通过不同的特性团队(FT,Feature Team,面向最终用户交互完整价值的团队,为了能够高效的完成工作,团队成员通常在一起面对面办公,紧密合作,一起完成当前开发任务)各自负责开发对应的模块(可以是各自负责具有不同功能的插件),即在FT研发模式进行应用程序开发。针对一些需要其他模块触发接口的待测模块(例如,触发该待测模块接口的代码在其他模块中),在进行接口测试时,需要其他模块也完成开发后才能对待测模块进行接口测试。然而,在此研发模式下,各FT开发进度不一致,在待测模块开发完成后,触发其接口的其他模块未完成开发,此时不能进行测试,需要等待其他模块开发完成后才能进行测试,使测试严重滞后,导致测试效率低。
发明内容
基于此,有必要针对测试效率低的问题,提出一种应用程序生成方法及装置、插件接口测试方法及装置、计算机设备及存储介质。
一种应用程序生成方法,包括:
获取各插件的接口对应的测试用例;
基于所述测试用例,生成测试插件包;
获取包括待测插件的应用程序安装包,并根据所述测试插件包以及所述应用程序安装包,生成目标应用程序包。
一种应用程序生成装置,包括:
测试用例获取模块,用于获取各插件的接口对应的测试用例;
测试插件生成模块,用于基于各所述测试用例,生成测试插件包;
应用程序生成模块,用于获取包括待测插件的应用程序安装包,并根据所述测试插件包以及所述应用程序安装包,生成目标应用程序包。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取各插件的接口对应的测试用例;
基于各所述测试用例,生成测试插件包;
获取包括待测插件的应用程序安装包,并根据所述测试插件包以及所述应用程序安装包,生成目标应用程序包。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取各插件的接口对应的测试用例;
基于各所述测试用例,生成测试插件包;
获取包括待测插件的应用程序安装包,并根据所述测试插件包以及所述应用程序安装包,生成目标应用程序包。
一种插件接口测试方法,包括:
获取上述应用程序生成方法生成的所述目标应用程序包,并根据所述目标应用程序包安装对应的应用程序和测试插件;
获取插件接口测试请求,响应所述插件接口测试请求,执行所述测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。
一种插件接口测试装置,包括:
安装模块,用于获取上述应用程序生成装置生成的所述目标应用程序包,并根据所述目标应用程序包安装对应的应用程序和测试插件;
测试模块,用于获取插件接口测试请求,响应所述插件接口测试请求,执行所述测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取上述应用程序生成方法生成的所述目标应用程序包,并根据所述目标应用程序包安装对应的应用程序和测试插件;
获取插件接口测试请求,响应所述插件接口测试请求,执行所述测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取上述应用程序生成方法生成的所述目标应用程序包,并根据所述目标应用程序包安装对应的应用程序和测试插件;
获取插件接口测试请求,响应所述插件接口测试请求,执行所述测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。
上述应用程序生成方法及装置、计算机设备及存储介质,根据插件的接口的测试用例生成测试插件包,可为后续进行测试提供基础,利用测试插件包和应用程序安装包生成目标应用程序包。即应用程序安装包包括待测插件,上述测试插件包可提供测试所需的测试用例,后续对待测插件的接口进行测试时,可利用测试用例实现对待测插件的接口的测试,无需等待触发待测插件的其他插件开发完毕后才能进行测试,利用上述待测插件的接口对应的测试用例即可,如此可为后续待测插件测试提供包括测试用例的测试插件包,一旦待测插件开发完毕即可以此进行测试,为后续提高测试效率提供保障。
上述插件接口测试方法及装置、计算机设备及存储介质,利用上述应用程序生成方法生成的目标应用程序包,安装应用程序安装包对应的应用程序和测试插件包对应的测试插件,由于测试插件中包括测试用例,在获取到插件接口测试请求后,可根据测试用例进行测试,实现待测插件的接口的测试,获得测试结果。在测试过程中,无需依赖应用程序的其他模块,只需依赖测试插件,即使其他模块未开发完毕,可通过测试插件中的测试用例实现接口测试,提高测试效率。
附图说明
图1为一个实施例中插件接口测试方法的应用环境示意图;
图2为一个实施例中应用程序生成方法的流程示意图;
图3为一个实施例中插件接口测试方法的流程示意图;
图4为一个实施例中手机管家的运行原理图;
图5为一个实施例中测试框架示意图;
图6为待测插件的接口被动接受调用的方式的原理图;
图7为待测插件的接口主动查询的调用方式的原理图;
图8为模拟环境事件的测试原理图;
图9为测试插件功能列表界面图;
图10为接口权限测试界面图;
图11为模拟环境测试界面图;
图12为一个实施例中应用程序生成装置的模块示意图;
图13为一个实施例中插件接口测试装置的模块示意图;
图14为一个实施例中计算机设备的内部结构图。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本申请,并不限定本申请的保护范围。
如图1为一个实施例中插件接口测试方法的应用环境示意图,该插件接口测试方法应用于插件接口测试系统。对于移动终端应用程序,该插件接口测试系统包括第一终端10和第二终端20(即移动终端),第一终端10和第二终端20连接可通信。可在第一终端10生成测试插件包,并将测试插件包和待测插件对应的应用程序安装包进行打包处理得到目标应用程序包,即上述应用程序生成方法可应用于第一终端10中。上述插件接口测试方法可应用于第二终端20,第一终端10生成目标安应用程序包之后,第二终端20可获取该目标应用程序包,即可进行与应用程序安装包对应应用程序的安装以及与待测插件包对应的测试插件的安装,并在接收到插件接口测试请求后可进行接口测试获得测试结果。对于PC端应用程序,上述应用程序生成方法和上述插件接口测试方法可分别应用于第一终端10。
在一个实施例中,如图2所示,提供了一种插件接口测试方法。以该方法应用于图1中的第一终端10为例进行说明,包括如下步骤:
S210:获取各插件的接口对应的测试用例。
应用程序,是指为完成某项或多项特定工作的计算机程序,它运行在用户模式,可以和用户进行交互,具有可视的用户界面。对于应用程序,可包括各种插件(一个插件中可包括一个或至少两个功能模块)。插件,是一种遵循一定规范的应用程序接口编写出来的程序,其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行,因为插件需要调用原纯净系统提供的函数库或者数据。针对安卓操作系统,插件可以是一个apk文件(安卓安装包文件)。很多应用程序都有插件,插件种类多,例如在IE浏览器中,安装相关的插件后,能够直接调用插件程序,用于处理特定类型的文件。插件的定位是开发实现原纯净系统平台、应用软件平台不具备的功能的程序。
在应用程序开发过程中,在插件开发完成后,需要对该插件进行测试,以确保后续应用程序的稳定运行。对于应用程序,其可以包括多种插件,可以理解,上述各插件构成应用程序的部分功能。对其中插件间的接口进行测试,即对插件中与外部连接的接口进行测试。
测试用例,是指一组条件或变量,测试者根据它来确定应用程序或软件系统是否正确工作。在本实施例中,测试用例为对接口进行测试的用例。则预先需要根据应用程序对应的各插件的功能以及参数等信息,编写测试用例。例如,某应用程序中需要插件A实现两个数据的加法功能,则需要两个输入参数进行测试,测试其对两个输入参数的加法功能是否正确,则测试用例中需要包括两个输入参数的值。为了确保后续生成的测试插件包能适用于应用程序中各插件的测试,即使应用程序中可能存在还未开发完毕的插件,也需要获取应用程序中各插件的接口对应的测试用例。
S220:基于各测试用例,生成测试插件包。
在获取到各测试用例后,即可基于此生成测试插件包,不同插件的功能不仅相同,功能的实现依赖程序,测试插件包可以理解为具有测试功能的插件包,其中包括了各测试用例,测试插件中的测试用例则构成了测试插件功能的一部分。
S230:获取包括待测插件的应用程序安装包,并根据测试插件包以及应用程序安装包,生成目标应用程序包。
由于插件需要依赖其规定的平台,为使测试插件在后续正常运行,还需要获取应用程序安装包,需要说明的是,该应用程序安装包包括待测插件外,还需包括插件的宿主以及插件服务,其中,宿主,是指在计算机环境下,软件赖以生存的软件环境,又称为宿主环境(host environment),可以理解,宿主就是运行环境(即宿主程序)。插件服务即为插件提供的服务(可以理解为插件提供的数据总和,可以包括运行插件所需要调用的函数),插件服务运行在宿主环境中。如此,上述应用程序安装包安装后,可为待测插件和测试插件提供运行环境,以及提供运行插件所依赖的基础类(即上述运行插件所需要调用的函数)。需要说明的是,待测插件可以为上述各插件中的部分插件或全部插件,应用程序的各插件中只有部分插件开发完毕时,可将这些开发完的部分插件作为待测插件,对待测插件进行测试;应用程序中各插件均开发完毕时,可将各插件作为待测插件,对待测插件进行测试。
上述应用程序生成方法,根据插件的接口的测试用例生成测试插件包,可为后续进行测试提供基础,利用测试插件包和应用程序安装包生成目标应用程序包。即应用程序安装包包括待测插件,上述测试插件包可提供测试所需的测试用例,后续对待测插件的接口进行测试时,可利用测试用例实现对待测插件的接口的测试,无需等待触发待测插件的其他插件开发完毕后才能进行测试,利用上述待测插件的接口对应的测试用例即可,如此可为后续待测插件测试提供包括测试用例的测试插件包,一旦待测插件开发完毕即可以此进行测试,为后续提高测试效率提供保障。另外,在测试插件中维护测试用例,避免在待测插件中维护测试用例导致测试用例和待测插件的代码耦合高的问题,有利于测试用例的管理。
在一个实施例中,测试插件包还包括测试框架。
在生成测试插件包时,除了基于各测试用例外,还可封装一个测试框架。测试框架是测试开发过程中提取特定领域测试方法共性部分形成的体系结构,其作用在于在其基础上重用测试设计原则和测试经验,调整部分内容便可满足需求,可提高测试用例设计开发质量,降低成本,缩短时间。也可以理解,测试框架是提供给测试人员开发相应领域测试用例的测试分析设计工具,且测试框架可执行运行测试用例进行测试。
在生成测试插件包之前,先获取测试框架,基于测试框架和测试用例生成测试插件包,如此,生成的测试插件包中封装测试框架,在后续运行测试插件对待测插件进行测试时,可通过测试框架执行测试用例实现测试。
在一个实施例中,测试插件包还包括接口权限测试界面,接口权限测试界面包括各权限待测接口的信息。
即测试插件还封装有接口权限测试界面,后续测试过程中,可对其调用,实现接口权限测试界面的显示,进而可查看其显示的各权限待测接口的信息。其中,权限待测接口的信息可以是接口名称。权限待测接口可以理解为需要进行权限测试的接口。例如,插件中的一些接口的某个权限不开放(即不具有调用该接口的权限),而有些接口的某个权限开放(即具有调用该接口的权限),如此,则需要对上述权限待测接口的权限进行测试,若权限开放,则在进行测试时,该权限待测接口对应的插件会输出对应的测试信息。
在一个实施例中,测试插件包还包括模拟环境测试界面,模拟环境测试界面包括各模拟环境事件。
即测试插件还封装有模拟环境测试界面,后续测试过程中,可对其调用,实现模拟环境测试界面的展示,进而可查看其展示的各模拟环境事件。其中,模拟环境事件,是指通过虚拟对象模拟实际可能发生的事件。例如,在实际应用中,可能会发生病毒事件对插件造成威胁,若一个插件的功能是在有病毒事件时给出有病毒提示,无病毒时,则给出无病毒提示。则在测试该插件功能时,可模拟添加病毒事件,即添加病毒事件,例如,实际有病毒时,输入到该插件的参数的值1,即参数为1时表示有病毒事件,则上述添加病毒事件对应的参数值为1,传递给待测插件进行测试。如此,可检测该插件是否能在有病毒时正常给出病毒提示。另外,可模拟取消病毒事件,若无病毒时,输入到该插件的参数的值为0,则上述取消病毒事件对应的参数值为0,传递给待测插件进行测试。即各模拟环境事件分别对应有参数值,且模拟环境事件与插件对应,例如,插件A的功能是病毒提示,则插件A分别与添加病毒事件和取消病毒事件对应,具体地,各模拟环境事件有对应的标识,通过标识与对应的插件关联,形成模拟环境事件与插件的关联关系。又比如,插件B的功能是账号风险提示,则插件B分别与添加账号风险事件和取消账号风险事件对应。具体地,各模拟环境事件有对应的标识,通过标识与对应的插件关联,形成模拟环境事件与插件的关联关系。
在本实施例中,模拟环境事件包括但不限于添加病毒事件(模拟有病毒)、取消病毒事件、添加账号风险事件(模拟账号有风险)、取消账号风险事件、添加wifi(wireless-fidelity,无线保真)风险事件(模拟wifi有风险)、取消wifi风险事件以及添加垃圾可清理事件(模拟垃圾可清理,即某个插件的功能为清理垃圾,一般情况下,在接收到垃圾清理请求后会执行垃圾清理,为验证其是否能正确清理垃圾,可模拟垃圾可请求事件,将其对应的参数传递给插件,插件进行测试,若正确执行了垃圾清理,表示该插件的垃圾清理功能正常)等。
在一个实施例中,如图3所示,还提供一种插件接口测试方法,其特征在于,包括:
S310:获取通过上述应用程序生成方法生成的目标应用程序包,根据目标应用程序包中应用程序安装包安装对应的应用程序,并根据测试插件包安装测试插件。
在获取到目标应用程序包后,即可对其中应用程序安装包进行安装,实现应用程序的安装。并可根据测试插件包进行安装,实现测试插件的安装。例如,目标应用程序包中包括测试插件安装包X和应用程序安装包Y,则可根据测试插件包X安装对应的测试插件,根据应用程序安装包Y安装对应的应用程序。
S320:获取插件接口测试请求,响应插件接口测试请求,执行测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。
在测试插件包中包括测试用例,在获取到插件接口测试请求后响应,即可执行测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。具体地,执行测试用例后,待测插件有对应的输出的值,可根据待测插件输出的值与预设正确值进行比较,若输出的值与预设正确值相同,则确定待测插件通过测试,获得通过测试的结果,可给出通过测试的提示。若输出的值与预设正确值不同相同,则确定待测插件未通过测试,获得未通通过测试的结果,可给出未通过测试的提示。
例如,针对插件A,其功能为两个参数(可以是参数a和参数b)的加法,测试用例与该插件的功能对应,测试用例中有参数a的值和参数b的值,对该测试用例进行执行,则待测插件根据参数a的值和参数b的值会输出一个值c,d是a的值加b的值,为预设正确值,正常情况下,c和d相同。则将c和d进行比较,若相同,说明测试通过,否则测试未通过。
上述插件接口测试方法,利用上述应用程序生成方法生成的目标应用程序包,安装应用程序安装包对应的应用程序和测试插件包对应的测试插件,由于测试插件中包括测试用例,在获取到插件接口测试请求后,可根据测试用例进行测试,实现待测插件的接口的测试,获得测试结果。在测试过程中,无需依赖应用程序的其他模块,只需依赖测试插件,即使其他模块未开发完毕,可通过测试插件中的测试用例实现接口测试,提高测试效率。
在一个实施例中,测试插件包包括测试框架。
在本实施例中,获取插件接口测试请求,响应插件接口测试请求,执行测试插件中的测试用例,包括:获取插件接口测试请求,通过测试框架响应插件接口测试请求,执行测试插件中的测试用例对待测插件的接口进行测试,获得测试结果。
由于在测试插件中封装有测试框架,则可运行测试插件中的测试框架执行测试用例,无需单独开发测试apk,且避免了测试apk中的接口访问权限问题。
在一个实施例中,测试插件还可包括测试插件功能列表界面,其包括测试插件的各功能描述。各功能描述中包括插件接口测试,用户可对该功能描述进行选择,即可生成插件接口测试请求。可以理解,获取插件接口测试请求可以为通过响应对测试插件功能列表界面中各功能描述中插件接口测试的选择,获得插件接口测试请求。
在一个实施例中,通过测试插件获取插件接口测试请求之前,还包括:对测试插件中各测试用例进行选择,获得选定的测试用例;
执行测试插件中测试用例对待测插件的接口进行测试的方式为执行选定的测试用例,测试与选定的测试用例对应的待测插件的接口,获得测试结果。
对于应用程序,其对应的插件可以有多种,而在进行测试过程中,可能存在未开发完成的插件,而测试用例中包括了应用程序所包括的各插件的测试用例,此时,则需要对测试用例进行选择,即从测试插件中各测试用例进行选择,获得选定的测试用例,执行选定的测试用例,测试与选定的测试用例对应的待测插件的接口,获得测试结果。具体地,可将选定的测试用例设置于配置文件中,将配置文件置于执行插件接口测试方法的终端的存储卡中,测试框架在执行时从配置文件中读取选定的测试用例进行测试即可。
在一个实施例中,测试插件包还包括接口权限测试界面,接口权限测试界面包括各权限待测接口的信息。
在本实施例中,上述插件接口测试方法,还包括:获取针对接口权限测试界面的显示请求,响应显示请求显示接口权限测试界面;响应对各权限待测接口的选择操作,获得携带选定接口的权限标识的接口测试请求;响应接口测试请求,将选定接口的权限标识传输至待测插件,由待测插件执行选定接口的测试,或者,响应接口测试请求,在接收到待测插件对选定接口的询问请求时,将选定接口的权限标识传输至待测插件,由待测插件执行选定接口的权限标识对应的权限测试。
在待测插件输出与选定权限接口对应的测试信息时,确定具有调用选定权限接口对应的权限标识的权限。
例如,权限可以包括但不限于对存储卡的读写权限以及联网权限。任何一个权限有其对应的权限标识,根据权限标识可执行权限的测试。针对接口进行权限测试时,用户可对接口权限测试界面上的各权限待测接口的信息进行选择,且可输入选定接口对应的权限标识,例如,联网权限的标识为1,输入权限标识1,则表示需要进行联网权限的测试。响应对各权限待测接口的选择操作,即可获得携带选定接口的权限标识的接口测试请求。例如,接口权限测试界面上显示有权限待测接口e、权限待测接口f、权限待测接口g和权限待测接口h的信息,若需要对权限待测接口e的权限进行测试,则可在权限待测接口e对应的输入框内输入权限标识13,则可获得权限待测接口e对应的权限标识13,然后,可将选定接口的权限标识13传输至待测插件,由待测插件执行选定接口的测试,这是待测插件被动接受接口调用的方式。另外,待测插件可采用主动查询调用的方式,具体地,待测插件会发送询问请求,测试插件响应接口测试请求,在接收到待测插件对选定接口的询问请求时,将选定接口的权限标识传输至待测插件,由待测插件执行选定接口的测试。在待测插件输出与选定权限接口对应的测试信息时,确定具有调用选定权限接口的权限。例如,针对插件的联网权限测试,若其有对应的联网权限,则其会给出可以联网的信息。
在一个实施例中,所述测试插件包还包括模拟环境测试界面,所述模拟环境测试界面包括各模拟环境事件。
上述插件接口测试方法,还包括:获取针对模拟环境测试界面的展示请求,响应展示请求展示模拟环境测试界面;响应对各模拟环境事件的选择操作,获得携带选定模拟环境事件对应的参数值的模拟测试请求;响应模拟测试请求,将选定模拟环境事件对应的参数值传输至待测插件,由待测插件执行选定模拟环境事件的测试,或者,响应模拟测试请求,在接收到待测插件对选定模拟环境事件的询问请求时,将选定模拟环境事件对应的参数值传输至待测插件,由待测插件执行选定模拟环境事件的测试。
在待测插件输出与选定模拟环境事件对应的测试信息时,确定待测插件测试通过提示。
即在展示请求展示模拟环境测试界面后,即可在该界面上显示各模拟环境事件,用户对显示的各模拟环境事件进行选择,即可实现选定模拟环境事件的模拟。例如,对于病毒提示的待测插件,在显示的各模拟环境事件中选择添加病毒事件,添加病毒事件对应的参数值为1,则将其通过模拟测试请求传递给待测插件,待测插件根据参数值1进行测试,若待测插件能给出有病毒提示,则说明其能正常工作,通过测试,否则,则说明其不能实现病毒提示功能,未通过测试。如此可模拟环境进行测试,避免构建真实的环境导致测试成本高的问题。
应该理解的是,虽然图2-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以一个实施例对上述插件接口测试方法的流程加以具体说明。应用程序以手机管家(一款手机安全与管理应用程序,可包括病毒查杀、骚扰拦截、应用程序权限管理、手机防盗及安全防护、用户流量监控、空间清理、体检加速、应用程序管理等高端智能化功能)为例进行说明。其中,测试框架可以采用自动化测试框架,具体可采用testNG测试框架。
首先,在对手机管家软件进行开发过程中,手机管家将功能模块划分,同一插件中可以包括一个或多个功能模块(即功能模块以插件的形式展示),可以将不同插件划分到不同的业务团队,即FT,所以,手机管家研发模式为不同FT负责不同插件,即负责不同功能模块。如图4所示,为手机管家的运行原理图。即在操作系统上运行手机管家的宿主进程,在宿主进程上可运行测试插件(PiTest)、待测插件1、……、测试插件N。
(1)测试插件:维护测试用例以及封装有自动化测试框架。
在测试插件中维护测试用例、测试框架以及上述各种界面。待测插件1到测试插件N分别维护各自的功能逻辑代码,为用户提供产品功能。即测试插件和待测插件各自维护代码,测试用的测试用例和功能逻辑代码解耦,方便测试用例的管理。
将开源的testNG测试框架封装到测试插件,测试插件在安卓平台安装后,测试框架移植到安卓平台,方便手机管家插件间接口进行自动化测试。测试框架如图5所示,首先在操作系统上运行手机管家进程(宿主),在宿主上运行插件服务,为各插件提供基础类。测试框架层:可包括基于testNG实现测试的基础框架,通用工具包括数据库DAO、SP(ServiceProvider,服务提供商)服务以及日志存储等。测试控制层:通用测试用例的组合以及结果报告的选择,达到定制化的测试流程的目的。用户接口层:UI界面(UserInterface,用户界面)用于本地测试,命令行界面用于自动化测试调用。
(2)利用测试插件替代接口调用方,对待测插件进行调用,从而实现测试工作。有两种调用方式:待测插件被动接受调用以及待测插件主动查询调用。
被动接受的调用方式:待测插件的接口被动的接受测试插件的请求,收到请求后被测接口运行代码逻辑,生成输出值,并将其返回给测试插件,根据输出值得到测试结果。如图6所示,为待测插件的接口被动接受调用的方式的原理图。
主动查询的调用方式:待测插件的接口主动询问测试插件,测试插件返回参数数据给待测插件的接口,运行相应逻辑,得到测试结果。如图7所示,为待测插件的接口主动查询的调用方式的原理图。
(3)通常在所有业务开发完成后,模拟测试环境是非常费时费力的事情,特别是手机管家,模拟病毒、模拟账号风险以及模拟wifi风险等苛刻的环境更是难上加难。通过测试插件模拟环境事件,可有效进行测试。如图8所示,模拟环境事件的测试原理图。在测试待测插件的接口时,构造各种各样的风险和测试环境,需要耗费大量时间和人力以及对应的测试物资。通过使用本实施例中的测试插件,只需要通过测试插件调用对应待测插件的接口即可以验证接口是否正确。
在测试插件生成后,需要使用其进行测试时,将该测试插件打包进入管家包(即应用程序安装包),得到目标管家包即目标应用程序。在手机端安装管家包以及测试插件后,可以通过测试插件的相关界面来操作测试。不需要测试插件时,修改打包配置文件,即不选择测试插件,即可打包一个和用户使用类似的管家包,即面向用户的管家包。测试插件即插即用,不影响手机管家的逻辑代码,降低耦合。
不同于其他自动化测试框架,该测试框架封装于测试插件,可移植到android平台,需要自动化测试时候,在测试插件的界面中点击自动化测试即可,无需单独开发自动化测试apk,且避免了测试apk中的接口访问权限问题。
如图9所示,为测试插件功能列表界面图,可选择其显示的插件接口进行自动化测试,即执行测试用例,可得到测试结果。
如图10所示,为接口权限测试界面图,其中,显示了接口A、接口B、接口C和接口D的信息,以及每个接口后对应一个权限标识输入框,输入权限标识后并在对应的接口上点击,即可生成选定接口的权限标识的接口测试请求。例如,在接口A后输入权限标识13,并点击接口A对应的虚拟按键,即可生成对应的接口测试请求。待测插件得响应接口测试请求进行权限测试,并得到测试信息。只要在测试插件中编写好测试代码,就可以从测试界面手动填写参数,测试待测接口,方便直观。
如图11所示,为模拟环境测试界面图。其中包括了添加病毒事件、取消病毒事件、添加账号风险事件、取消账号风险事件、添加wifi风险事件、取消wifi风险事件以及添加垃圾可清理事件。即通过测试插件模拟上述模拟环境事件,减少测试成本。
在一个实施例中,如图12所示,提供一种应用程序生成装置,包括:
测试用例获取模块110,用于获取各插件的接口对应的测试用例;
测试插件生成模块120,用于基于各测试用例,生成测试插件包;
应用程序生成模块130,用于获取包括待测插件的应用程序安装包,并根据测试插件包以及应用程序安装包,生成目标应用程序包。
在一个实施例中,测试插件包还包括测试框架。
在一个实施例中,测试插件包还包括接口权限测试界面,接口权限测试界面包括各权限待测接口的信息。
在一个实施例中,测试插件包还包括模拟环境测试界面,模拟环境测试界面包括各模拟环境事件。
关于应用程序生成装置的具体限定可以参见上文中对于应用程序生成方法的限定,在此不再赘述。上述应用程序生成装置中的各个模块可全部或部分通过应用程序、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以应用程序形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,如图13所示,提供一种插件接口测试装置,包括:
安装模块210,用于获取通过权利要求10的应用程序生成装置生成的目标应用程序包,并根据目标应用程序包安装对应的应用程序和测试插件;
测试模块220,用于获取插件接口测试请求,响应插件接口测试请求,执行测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。
在一个实施例中,测试插件包包括测试框架;
测试模块,用于通过测试插件获取插件接口测试请求,通过测试框架响应插件接口测试请求,执行测试插件中的测试用例对待测插件的接口进行测试,获得测试结果。
在一个实施例中,还包括:用例选择模块,用于对测试插件中各测试用例进行选择,获得选定的测试用例;
测试模块,用于执行选定的测试用例,测试与选定的测试用例对应的待测插件的接口,获得测试结果。
在一个实施例中,测试插件包还包括接口权限测试界面,接口权限测试界面包括各权限待测接口的信息;
上述插件接口测试装置,还包括:
显示模块,用于获取针对接口权限测试界面的显示请求,响应显示请求显示接口权限测试界面;
接口测试请求获取模块,用于响应对各权限待测接口的选择操作,获得携带选定接口的权限标识的接口测试请求;
权限测试模块,用于响应接口测试请求,将选定接口的权限标识传输至待测插件,由待测插件执行选定接口的测试,或者,响应接口测试请求,在接收到待测插件对选定接口的询问请求时,将选定接口的标识传输至待测插件,由待测插件执行选定接口的测试;
权限确定模块,用于在待测插件输出与选定权限接口对应的测试信息时,确定具有调用选定权限接口的权限。
在一个实施例中,测试插件包还包括模拟环境测试界面,模拟环境测试界面包括各模拟环境事件;
上述插件接口测试装置,还包括:
展示模块,用于获取针对模拟环境测试界面的展示请求,响应展示请求展示模拟环境测试界面;
响应模块,用于响应对各模拟环境事件的选择操作,获得携带选定模拟环境事件对应的参数值的模拟测试请求;
模拟环境测试模块,用于响应模拟测试请求,将选定模拟环境事件对应的参数值传输至待测插件,由待测插件执行选定模拟环境事件的测试,或者,响应模拟测试请求,在接收到待测插件对选定模拟环境事件的询问请求时,将选定模拟环境事件对应的参数值传输至待测插件,由待测插件执行选定模拟环境事件的测试;
在待测插件输出与选定模拟环境事件对应的测试信息时,确定待测插件测试通过提示。
关于插件接口测试装置的具体限定可以参见上文中对于插件接口测试方法的限定,在此不再赘述。上述插件接口测试装置中的各个模块可全部或部分通过应用程序、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以应用程序形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是图1中的第一终端10或第二终端20,其内部结构图可以如图14所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用程序生成方法或插件接口测试方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器应用程序生成方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述应用程序生成方法的步骤。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述插件接口测试方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述插件接口测试方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种应用程序生成方法,其特征在于,包括:
获取各插件的接口对应的测试用例;
基于各所述测试用例,生成测试插件包;
获取包括待测插件的应用程序安装包,并根据所述测试插件包以及所述应用程序安装包,生成目标应用程序包。
2.根据权利要求1所述的应用程序生成方法,其特征在于,所述测试插件包还包括测试框架。
3.根据权利要求1或2所述的应用程序生成方法,其特征在于,所述测试插件包还包括接口权限测试界面,所述接口权限测试界面包括各权限待测接口的信息。
4.根据权利要求3所述的应用程序生成方法,其特征在于,所述测试插件包还包括模拟环境测试界面,所述模拟环境测试界面包括各模拟环境事件。
5.一种插件接口测试方法,其特征在于,包括:
获取通过权利要求1-4中任意一项方法生成的所述目标应用程序包,根据所述目标应用程序包中应用程序安装包安装对应的应用程序,并根据所述测试插件包安装测试插件;
获取插件接口测试请求,响应所述插件接口测试请求,执行所述测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。
6.根据权利要求5所述的插件接口测试方法,其特征在于,所述测试插件包包括测试框架;
所述获取插件接口测试请求,响应所述插件接口测试请求,执行所述测试插件中的测试用例,包括:
通过所述测试插件获取所述插件接口测试请求,通过所述测试框架响应所述插件接口测试请求,执行所述测试插件中的测试用例对所述待测插件的接口进行测试,获得测试结果。
7.根据权利要求5所述的插件接口测试方法,其特征在于,通过测试插件获取插件接口测试请求之前,还包括:对所述测试插件中各所述测试用例进行选择,获得选定的测试用例;
执行所述测试插件中测试用例对待测插件的接口进行测试的方式为执行所述选定的测试用例,测试与所述选定的测试用例对应的待测插件的接口,获得所述测试结果。
8.根据权利要求5所述的插件接口测试方法,其特征在于,所述测试插件包还包括接口权限测试界面,所述接口权限测试界面包括各权限待测接口的信息;
上述插件接口测试方法,还包括:
获取针对接口权限测试界面的显示请求,响应所述显示请求显示所述接口权限测试界面;
响应对各权限待测接口的选择操作,获得携带选定接口的权限标识的接口测试请求;
响应所述接口测试请求,将所述选定接口的权限标识传输至所述待测插件,由所述待测插件执行所述选定接口的测试,或者,响应所述接口测试请求,在接收到待测插件对所述选定接口的询问请求时,将所述选定接口的标识传输至所述待测插件,由所述待测插件执行所述选定接口的测试;
在所述待测插件输出与所述选定权限接口对应的测试信息时,确定具有调用所述选定权限接口的权限。
9.根据权利要求5所述的插件接口测试方法,其特征在于,所述测试插件包还包括模拟环境测试界面,所述模拟环境测试界面包括各模拟环境事件;
上述插件接口测试方法,还包括:
获取针对模拟环境测试界面的展示请求,响应所述展示请求展示所述模拟环境测试界面;
响应对各模拟环境事件的选择操作,获得携带选定模拟环境事件对应的参数值的模拟测试请求;
响应所述模拟测试请求,将所述选定模拟环境事件对应的参数值传输至所述待测插件,由所述待测插件执行所述选定模拟环境事件的测试,或者,响应所述模拟测试请求,在接收到待测插件对所述选定模拟环境事件的询问请求时,将所述选定模拟环境事件对应的参数值传输至所述待测插件,由所述待测插件执行所述选定模拟环境事件的测试;
在所述待测插件输出与所述选定模拟环境事件对应的测试信息时,确定所述待测插件测试通过提示。
10.一种应用程序生成装置,其特征在于,包括:
测试用例获取模块,用于获取各插件的接口对应的测试用例;
测试插件生成模块,用于基于各所述测试用例,生成测试插件包;
应用程序生成模块,用于获取包括待测插件的应用程序安装包,并根据所述测试插件包以及所述应用程序安装包,生成目标应用程序包。
11.一种插件接口测试装置,其特征在于,包括:
安装模块,用于获取通过权利要求10的应用程序生成装置生成的所述目标应用程序包,并根据所述目标应用程序包安装对应的应用程序和测试插件;
测试模块,用于获取插件接口测试请求,响应所述插件接口测试请求,执行所述测试插件中的测试用例,对待测插件的接口进行测试,获得测试结果。
12.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4中任意一项所述应用程序生成方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述权利要求1-4中任意一项所述应用程序生成方法的步骤。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求5-9中任意一项所述插件接口测试的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述权利要求5-9中任意一项所述插件接口测试的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810146262.7A CN110162310B (zh) | 2018-02-12 | 2018-02-12 | 插件接口测试方法及装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810146262.7A CN110162310B (zh) | 2018-02-12 | 2018-02-12 | 插件接口测试方法及装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110162310A true CN110162310A (zh) | 2019-08-23 |
CN110162310B CN110162310B (zh) | 2022-03-01 |
Family
ID=67635028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810146262.7A Active CN110162310B (zh) | 2018-02-12 | 2018-02-12 | 插件接口测试方法及装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110162310B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258571A (zh) * | 2020-02-11 | 2020-06-09 | 达闼科技(北京)有限公司 | 机器人应用程序开发方法、系统、装置及存储介质 |
CN112764796A (zh) * | 2019-11-05 | 2021-05-07 | 阿里巴巴集团控股有限公司 | 安装包生成系统 |
CN114461295A (zh) * | 2021-12-27 | 2022-05-10 | 上海交通大学四川研究院 | 基于插件共享的软件系统生成方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2400697A (en) * | 2003-04-17 | 2004-10-20 | Hewlett Packard Development Co | Testing a resource description framework (RDF) object |
CN103699477A (zh) * | 2012-09-27 | 2014-04-02 | 腾讯科技(深圳)有限公司 | 压力测试方法及终端 |
CN104809056A (zh) * | 2014-01-27 | 2015-07-29 | 阿里巴巴集团控股有限公司 | 一种接口测试代码的生成方法和装置 |
CN105138451A (zh) * | 2015-07-31 | 2015-12-09 | 百度在线网络技术(北京)有限公司 | 一种用于测试插件的功能的方法、装置和系统 |
CN106528425A (zh) * | 2016-11-18 | 2017-03-22 | 南京南瑞继保电气有限公司 | 一种用于微处理器的平台化插件自动测试方法 |
CN106933609A (zh) * | 2015-12-29 | 2017-07-07 | 北京五八信息技术有限公司 | Android应用程序安装包的生成方法及装置 |
CN107133169A (zh) * | 2017-04-26 | 2017-09-05 | 腾讯科技(深圳)有限公司 | 应用测试包生成方法及生成装置 |
-
2018
- 2018-02-12 CN CN201810146262.7A patent/CN110162310B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2400697A (en) * | 2003-04-17 | 2004-10-20 | Hewlett Packard Development Co | Testing a resource description framework (RDF) object |
CN103699477A (zh) * | 2012-09-27 | 2014-04-02 | 腾讯科技(深圳)有限公司 | 压力测试方法及终端 |
CN104809056A (zh) * | 2014-01-27 | 2015-07-29 | 阿里巴巴集团控股有限公司 | 一种接口测试代码的生成方法和装置 |
CN105138451A (zh) * | 2015-07-31 | 2015-12-09 | 百度在线网络技术(北京)有限公司 | 一种用于测试插件的功能的方法、装置和系统 |
CN106933609A (zh) * | 2015-12-29 | 2017-07-07 | 北京五八信息技术有限公司 | Android应用程序安装包的生成方法及装置 |
CN106528425A (zh) * | 2016-11-18 | 2017-03-22 | 南京南瑞继保电气有限公司 | 一种用于微处理器的平台化插件自动测试方法 |
CN107133169A (zh) * | 2017-04-26 | 2017-09-05 | 腾讯科技(深圳)有限公司 | 应用测试包生成方法及生成装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764796A (zh) * | 2019-11-05 | 2021-05-07 | 阿里巴巴集团控股有限公司 | 安装包生成系统 |
CN111258571A (zh) * | 2020-02-11 | 2020-06-09 | 达闼科技(北京)有限公司 | 机器人应用程序开发方法、系统、装置及存储介质 |
CN114461295A (zh) * | 2021-12-27 | 2022-05-10 | 上海交通大学四川研究院 | 基于插件共享的软件系统生成方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110162310B (zh) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107861870B (zh) | 接口测试及测试数据生成方法、装置、终端和存储介质 | |
CN109597374A (zh) | 用于调试的i/o虚拟化 | |
CN107832207A (zh) | 接口性能测试方法、装置、存储介质和计算机设备 | |
CN106294120A (zh) | 测试代码的方法、设备和计算机程序产品 | |
CN110162310A (zh) | 应用程序生成方法及装置、插件接口测试方法及装置 | |
CA2694303A1 (en) | Extensible execution language | |
CN107423181A (zh) | 一种统一存储设备的自动化测试方法及装置 | |
CN102968371B (zh) | 测试java api单元组件的方法及装置 | |
CN106648556A (zh) | 前后端集成开发测试的方法及装置 | |
CN108400978A (zh) | 漏洞检测方法、装置、计算机设备和存储介质 | |
WO2021218333A1 (zh) | 监管沙盒架构、监管方法、装置及存储介质 | |
US20160275000A1 (en) | System and method of automated application screen flow generation for detecting aberration in mobile application | |
CN111090581A (zh) | 智能合约测试方法、装置、计算机设备和存储介质 | |
CN112433944A (zh) | 业务测试方法、装置、计算机设备和存储介质 | |
CN103678104B (zh) | 基于数据的自动化测试方法及装置 | |
CN110134612A (zh) | Ui测试数据生成方法、装置、设备及可读存储介质 | |
CN110083535A (zh) | 一种软件测试方法及装置 | |
CN109558313A (zh) | 构建异常测试场景的方法及装置 | |
CN107220169B (zh) | 一种模拟服务器返回定制化数据的方法和设备 | |
US20130014066A1 (en) | Method and system for test vector generation | |
CN105760300B (zh) | 一种stk/utk业务的自动化测试方法及测试系统 | |
KR102173137B1 (ko) | 모바일 애플리케이션의 원격 테스트 서비스 제공 방법 | |
CN113051181A (zh) | 确定增量测试覆盖信息的方法、装置、设备和存储介质 | |
CN109947642A (zh) | 基于案例分类的自动化分层测试方法、装置及系统 | |
CN114936160A (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 |