CN111435328A - 应用测试方法、装置、电子设备及可读存储介质 - Google Patents
应用测试方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN111435328A CN111435328A CN201910031784.7A CN201910031784A CN111435328A CN 111435328 A CN111435328 A CN 111435328A CN 201910031784 A CN201910031784 A CN 201910031784A CN 111435328 A CN111435328 A CN 111435328A
- Authority
- CN
- China
- Prior art keywords
- target
- application
- test
- dynamic library
- installation package
- 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
Images
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/3684—Test management for test design, e.g. generating new test cases
-
- 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
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
技术领域
本发明涉及应用测试技术领域,更具体地,涉及一种应用测试方法、装置、电子设备及可读存储介质。
背景技术
应用是向用户提供特定应用服务的计算机程序或软件产品。应用的开发、维护或升级,都离不开应用的测试。
随着人们对应用服务的需求日益多样化和复杂化,应用的测试需求也日益多样化以及复杂化。虽然开发人员可以使用一些操作***提供的测试框架,对支持该操作***的应用进行自动化测试,例如,通过iOS***提供的自动化测试框架对iOS应用进行自动化测试,以节省测试所需的人力以及时间成本,但是,这些操作***的测试框架通常受限操作***本身设定的限制,只能实施简单的测试操作,例如模拟外部点击操作、简单的文本输入或者简单的控件识别等,只能满足基础的测试需求,而无法针对应用所具有的应用特性进行性能测试以及精准的控件识别,无法与应用深入联动获取多样化的测试数据进行分析,难以满足实际的应用测试需求。
发明内容
本发明的一个目的是提供一种用于测试应用的新技术方案。
根据本发明的第一方面,提供了一种应用测试方法,其中,包括:
根据用于执行应用测试任务的目标测试框架,获取与所述目标测试框架对应的目标动态库;
根据所述目标动态库以及目标应用的原始安装包,生成包括所述目标动态库的、用于安装目标应用的目标安装包;
根据所述目标安装包安装所述目标应用,使得启动运行所述目标应用时,所述目标测试框架被同时启动运行,执行所述应用测试任务。
可选地,所述根据所述目标动态库以及目标应用的原始安装包,生成包括所述目标动态库的、用于安装目标应用的目标安装包的步骤包括:
对所述原始安装包进行解压缩处理,得到所述目标应用的可执行文件;
将所述目标动态库与所述目标应用的可执行文件关联;
根据关联后的所述目标动态库与所述目标应用的可执行文件,重新进行打包处理,得到所述目标安装包。
可选地,所述将所述目标动态库与所述目标应用的可执行文件关联的步骤包括:
将所述目标动态库,设置在与所述目标应用的可执行文件相同的文件目录下;
在所述目标应用的可执行文件写入所述目标动态库的动态库信息。
可选地,所述在所述目标应用的可执行文件写入所述目标动态库的动态库信息的步骤包括:
根据所述目标应用的可执行文件的文件结构,读取所述可执行文件内容,确定与执行加载相关的加载内容段位置;
在所述加载内容段位置,以符合所述目标应用的可执行文件的内容格式,写入所述动态库信息。
可选地,所述应用测试任务至少包括触摸测试任务、脚本测试任务、函数调用监测任务以及内存监控任务四者其中之一;
所述触摸测试任务是通过与测试的应用对应的操作***提供的测试接口,触发随机的操作事件;
所述脚本测试任务是根据在测试的应用启动时接收的外部启动命令指示的脚本下载地址,下载对应的测试脚本并根据所述测试脚本执行测试;
所述函数调用监测任务是监测获取测试的应用调用不同的应用函数的调用时长;
所述内存监控任务是测试获取测试的应用的内存使用数据。
可选地,所述目标测试框架还用于记录执行所述应用测试任务过程中出现的测试异常数据。
可选地,所述方法还包括:
获取所述目标测试框架执行所述应用测试任务得到的测试数据;
根据所述测试数据生成对应的测试结果报告,以展示给用户。
根据本发明的第二方面,提供过一种应用测试装置,包括:
动态库获取单元,用于根据用于执行应用测试任务的目标测试框架,获取与所述目标测试框架对应的目标动态库;
安装包生成单元,用于根据所述目标动态库以及目标应用的原始安装包,生成包括所述目标动态库的、用于安装目标应用的目标安装包;
测试执行单元,用于根据所述目标安装包安装所述目标应用,使得启动运行所述目标应用时,所述目标测试框架被同时启动运行,执行所述应用测试任务。
根据本发明的第三方面,提供一种电子设备,其中,包括:
存储器,用于存储可执行的指令;
处理器,用于根据所述可执行的指令的控制,运行所述电子设备执行如本发明的第一方面所述的应用测试方法。
根据本发明的第四方面,提供一种可读存储介质,其中,所述可读存储介质存储有可被计算机读取并运行的计算机程序,所述计算机程序用于在被所述计算机运行时,执行如本发明的第一方面的应用测试方法。
根据本公开的一个实施例,通过获取与执行应用测试任务的目标测试框架对应的目标动态库,根据目标动态库与目标应用的原始安装包,生成包括目标动态库的、用于安装目标应用的目标安装包,根据目标安装包安装目标应用后,在启动运行目标应用时,目标测试框架会被同时启动运行,执行应用测试任务,以此赋予目标测试框架与目标应用相同的权限,基于目标测试框架实施应用测试,能突破操作***设定的限制,针对应用所具有的应用特性进行性能测试以及精准的控件识别,高效地获取与测试的应用深入联动获取丰富多样的测试数据,满足实际的应用测试需求。同时,目标测试框架具有通用的应用测试能力,可普遍适用于任意应用的测试,避免应用开发者针对应用测试进行定制化开发,提高测试效率。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是显示可用于实现本发明的实施例的电子设备1000的硬件配置的例子的框图。
图2示出了本发明的实施例的应用测试方法的流程图。
图3示出了本发明的实施例的应用测试装置的框图。
图4示出了本发明的实施例的应用测试装置的框图。
图5示出了本发明的实施例的应用测试方法的例子的示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是示出可以实现本发明的实施例的电子设备1000的硬件配置的框图。
电子设备1000可以是便携式电脑、台式计算机、手机、平板电脑等。如图1所示,电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够进行有线或无线通信,具体地可以包括Wifi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
图1所示的电子设备仅仅是说明性的并且决不意味着对本发明、其应用或使用的任何限制。应用于本发明的实施例中,电子设备1000的所述存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以执行本发明实施例提供的任意一项应用测试方法。本领域技术人员应当理解,尽管在图1中对电子设备1000示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,电子设备1000只涉及处理器1100和存储装置1200。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
本发明实施例的总体构思,是提供一种应用测试方法,通过获取与执行应用测试任务的目标测试框架对应的目标动态库,根据目标动态库与目标应用的原始安装包,生成包括目标动态库的、用于安装目标应用的目标安装包,根据目标安装包安装目标应用后,在启动运行目标应用时,目标测试框架会被同时启动运行,执行应用测试任务,以此赋予目标测试框架与目标应用相同的权限,基于目标测试框架实施应用测试,能突破操作***设定的限制,针对应用所具有的应用特性进行性能测试以及精准的控件识别,高效地获取与测试的应用深入联动获取丰富多样的测试数据,满足实际的应用测试需求。同时,目标测试框架具有通用的应用测试能力,可普遍适用于任意应用的测试,避免应用开发者针对应用测试进行定制化开发,提高测试效率。
<实施例>
<方法>
在本实施例中,提供一种应用测试方法。该应用可以是任意能向用户提供特定的应用服务的计算机程序或者软件产品。例如,应用可以是手机上运行的手机应用(APP)。
如图2所示,应用测试方法包括:步骤S2100-S2300。
步骤S2100,根据用于执行应用测试任务的目标测试框架,获取与目标测试框架对应的目标动态库。
应用测试任务可以根据具体测试需求或测试场景设置具体的测试任务内容。例如,应用测试任务至少包括触摸测试任务、脚本测试任务、函数调用监测任务以及内存监控任务四者其中之一。
触摸测试任务是通过与测试的应用对应的操作***提供的测试接口,触发随机的操作事件。
测试的应用对应的操作***,是测试的应用所基于的操作***,例如,可以是Android***或iOS***。通常操作***会提供对应的测试接口,可以应用开发者触发对应的操作事件,来获取应用被用户操作使用对应的测试结果。该操作事件可以包括触摸事件、点击事件、滑动事件等等。例如,iOS***提供IOKit这个接口以触发触摸事件。在本实施例中,触摸测试任务可以由目标测试框架通过操作***提供的测试接口,触发随机的操作事件,可以模拟各种随机的操作事件实施自动化测试,深入联动应用来获取丰富多样的测试数据。
脚本测试任务是根据在测试的应用启动时接收的外部启动命令指示的脚本下载地址,下载对应的测试脚本后根据所述测试脚本执行测试。
在本实施例中,用于执行测试任务的目标测试框架可以结合后续步骤,实现与测试的应用同时启动运行,具有与测试的应用相同的权限,通过目标测试框架在测试的应用启动时,接收外部启动命令指示的脚本加载地址,下载对应的测试脚本后,并根据测试脚本,直接执行测试的应用的现有的函数,实现执行脚本测试任务,提供基于脚本配置的自动化测试方式,提升测试灵活度以及测试效率。
函数调用监测任务是监测获取测试的应用调用不同的应用函数的调用时长。在本实施例中,可以通过目标测试框架,监测所测试的应用调用应用函数的应用接口,在测试的应用调用任意一个的应用函数,先拦截调用应用函数的应用接口,开始记录开始调用时间,然后放行调用应用函数,等应用函数调用结束后,记录结束调用时间,对应得到该应用函数调用时长,以此监测获取测试的应用调用不同的应用函数的调用时长,执行函数调用监测任务,深入联动应用来获取丰富多样的测试数据。
内存监控任务是测试获取测试的应用的内存使用数据。在本实施例中,可以通过目标测试框架,收集测试的应用在每个时间单位内的内存数使用数据并保存,以执行内存监控任务,深入联动应用来获取丰富多样的测试数据。
应当理解的是,在本实施例中,目标测试框架可以用于执行应用测试任务,但目标测试框架并不局限于只具有执行某个特定的应用测试任务的测试能力。本实施中的目标测试框架是可以对任意应用所具有的应用特性进行性能测试以及精准的控件识别的测试框架,即是可以支持执行通用的应用测试任务的测试框架,能结合后续步骤,具有通用的应用测试能力,普遍适用于任意应用的测试,避免应用开发者针对应用测试进行定制化开发,提高测试效率。
动态库是指动态链接库(Dynamic Link Library,DLL)。动态库是一个包含可由多个程序同时使用的代码和数据的库。动态库不是可执行文件,但动态库中可以包括一个或多个已被编译、链接并与使用它们的进程分开存储的函数,以支持进程通过调用动态库,实现调用不属于其可执行代码的函数。由此动态库可以支持被多个应用同时访问,有助于共享数据和内容。不同的操作***支持不同类型的动态库,例如,Windows***下动态库为.dll后缀的文件,在linux***下动态库为.so后缀的文件,在iOS***下动态库为dylib后缀.的文件等等。
在本实施例中,可以通过对目标测试框架进行编译,获取与目标测试框架对应的目标动态库,以便结合后续步骤,生成包括目标动态库的、用于安装目标应用的目标安装包,在根据目标安装包安装目标应用后,在启动运行目标应用时,目标测试框架会被同时启动运行,执行应用测试任务,以此赋予目标测试框架与目标应用相同的权限,基于目标测试框架实施应用测试,能突破操作***设定的限制,针对应用所具有的应用特性进行性能测试以及精准的控件识别,满足实际的应用测试需求。
在获取目标动态库之后,进入:
步骤S2200,根据目标动态库以及目标应用的原始安装包,生成包括目标动态库的、用于安装目标应用的目标安装包。
目标应用的原始安装包可以由目标应用的开发者或者对目标应用具有测试需求的用户提供。
通过生成包括目标动态库的、用于安装目标应用的目标安装包,可以结合后续步骤,在根据目标安装包安装目标应用后,在启动运行目标应用时,目标测试框架会被同时启动运行,执行应用测试任务,以此赋予目标测试框架与目标应用相同的权限,基于目标测试框架实施应用测试,能突破操作***设定的限制,针对应用所具有的应用特性进行性能测试以及精准的控件识别,满足实际的应用测试需求。
在一个例子中,步骤S2200可以包括:步骤S2210-S2230。
步骤S2210,对原始安装包进行解压缩处理,得到目标应用的可执行文件。
目标应用的原始安装包是目标应用原有的、用于安装目标应用的安装包。对目标应用的原始安装包进行解压缩处理,可以得到目标应用的可执行文件。目标应用的可执行文件是可以被目标应用所基于的操作***加载执行的文件。
在实际应用中,目标应用的原始安装包在解压缩处理后,除了可以得到目标应用的可行性文件之外,通常还可以得到一些其他文件,例如应用相关的描述文件等等,在此不再过多说明。
步骤S2220,将目标动态库与目标应用的可执行文件关联。
通过将目标动态库与目标应用的可执行文件关联,可以结合后续步骤,在目标应用被启动运行时,与目标动态库对应的目标测试框架也被同时启动运行,令目标测试框架具有与目标应用相同的权限。该相同权限包括但不限于调用目标应用所能调用的操作***提供的各种接口、调用目标应用所调用的应用函数、获取目标应用各种运行状态等。
具体的一个例子中,将目标动态库与目标应用的可执行文件关联的步骤包括:步骤S2221-S2222。
步骤S2221,将目标动态库,设置在与目标应用的可执行文件相同的文件目录下。
目标应用的可执行文件,是目标应用的原始安装包进行解压缩处理得到,对应会保存在对应的文件目录下。在将目标应用的原始安装包进行解压缩处理后,可以对应得到目标应用的可执行文件的文件目录,可以将目标动态库通过复制、剪切等方式,设置在与目标应用的可执行文件相同的文件目录下。
步骤S2222,在目标应用的可执行文件写入目标动态库的动态库信息。
动态库信息可以是动态库的相关属性信息。在本例中,动态库信息至少包括对应的动态库所具有动态库名称以及动态库版本。动态库信息还可根据具体的应用需求或者应用场景包括其他内容,例如,可以包括动态库信息的信息长度、动态库名称在动态库信息中的位置等。
在本例中,在目标应用的可执行文件写入目标动态库的动态库信息的步骤可以包括:步骤S22201-S22202。
步骤S22201,根据目标应用的可执行文件的文件结构,读取可执行文件内容,确定与执行加载相关的加载内容段位置。
目标应用的可执行文件具有对应的文件结构。该文件结构是用于描述对应的文件的不同类型的内容所在的位置的相关结构信息。
目标应用的可执行文件的文件结构可以根据目标应用所基于的操作***的相关说明获取,例如,基于iOS操作***的应用的可执行文件的文件结构,可以通过iOS操作***提供的相关说明中获取。
可执行文件是可以***作***加载运行的文件,可执行文件中通常会包括与执行加载相关的加载内容段。根据目标应用的可执行文件的文件结构,可以确定与执行加载相关的加载内容段位置。例如,基于iOS***的应用的可执行文件中,基于iOS***的应用的可执行文件中,执行加载相关的加载内容段是Load Commands这一段内容,根据iOS操作***的相关说明,可以获取基于iOS***的应用的可执行文件的文件结构,确定iOS***的应用的可执行文件中、Load Commands这一段内容所在的加载内容段位置。
步骤S22202,在加载内容段位置,以符合目标应用的可执行文件的内容格式,写入动态库信息。
在加载内容段位置,以符合目标应用的可执行文件的内容格式写入动态库信息,可以实现目标应用的可执行文件***作***执行时,与目标应用的可执行文件保存在相同的文件目录下的目标动态库被关联调用执行,使得目标应用启动运行时,与具有动态库信息的目标动态库对应的目标测试框架也被启动运行,赋予目标测试框架与目标应用相同的权限。
以目标应用是基于iOS***的应用为例,加载内容段位置是目标应用的可执行文件中Load Commands这一段内容所在的位置,在确定加载内容段位置后,假设目标动态库为test.dylib,以符合iOS***的应用文件的内容格式,将动态库信息通过一条LC_LOAD_DYLB信息写入目标应用的可执行文件中Load Commands这一段内容所在的位置,具体的LC_LOAD_DYLB信息的具体内容如下:
Command LC_LOAD_DYLIB Command Size 72 Str Offset 28 Current Version1.0.0 Compatibility Version 1.0.0 Name test.dylib;
其中,Command Size是整个LC_LOAD_DYLIB的总长度,本例中取值是72;StrOffset是在整个LC_LOAD_DYLIB中目标动态库的动态库名称的起始位置,本例中取值是28;Current Version是目标动态库的当前动态库版本,本例中是1.0.0;CompatibilityVersion是目标动态库最低兼容的操作***版本,本例中是1.0.0,即iOS操作***1.0.0版本;Name是目标动态库的动态库名称,本例中是test.dylib。
在将目标动态库与目标应用的可执行文件关联之后,进入:
步骤S2230,根据关联后的目标动态库与目标应用的可执行文件,重新进行打包处理,得到目标安装包。
在本例中,重新进行打包处理可以包括重新压缩处理、重新签名处理,通过对关联后的目标动态库与目标应用的可执行文件重新进行打包处理,得到目标安装包。该目标安装包是新的可以用于安装目标应用的安装包,并且该目标安装包中包括与目标测试框架对应的目标动态库,使得在根据目标安装包安装的目标应用被启动运行时,与目标动态库对应的目标测试框架也被同时启动运行,令目标测试框架具有与目标应用相同的权限。
在生成包括目标动态库的、用于安装目标应用的目标安装包之后,进入:
步骤S2300,根据目标安装包安装目标应用,使得启动运行目标应用时,目标测试框架被同时启动运行,执行应用测试任务。
目标测试框架具体执行应用测试任务的步骤,根据应用测试任务的具体内容不同而不同。应用测试任务可以包括的相关内容在上文已经举例描述,在此不再赘述。
目标安装包中包括与目标测试框架对应的目标动态库,在根据目标安装包安装目标应用后,在启动运行目标应用的同时,目标测试框架也会被启动运行执行应用测试任务,令目标测试框架具有与目标应用相同的权限,能突破操作***设定的限制实施自动化测试,实现针对应用所具有的应用特性进行性能测试以及精准的控件识别,满足实际的应用测试需求。
并且,基于目标测试框架所具有的与目标应用相同的权限,基于目标测试框架执行应用测试任务,相对于操作***提供的测试框架,可以更高效地获取测试数据。以目标应用是基于iOS***的应用为例,通过iOS***提供的测试框架对应用测试时,点击速度的极限是0.2秒点击一次,而通过本实施例中提供的与动态库对应的目标测试框架,在实际测试中,可以达到0.01秒点击一次的速度,此外,目标测试框架获取UI树(人机交互的树形控件)的速度,在实际测试中也比iOS***提供的测试框架的速度快100倍。
此外,通过本实施例的应用测试方法,对于目标应用的开发者或者对目标应用具有测试需求的用户,仅需提供目标应用的原始安装包,无需额外的嵌入软件开发工具包或者其他额外的定制化开发工作,就能实现获取本实施例中的包括与目标应用框架对应的目标动态库的目标安装包,基于目标安装包安装目标应用后,就可以由目标应用框架执行自动化的应用测试,接入简单,可推广性较高。
在本实施例中,目标应用框架还可以用于记录执行应用测试任务过程中出现的测试异常数据。该测试异常数据可以包括执行应用测试任务过程中,测试的应用出现应用崩溃、目标测试框架自行运行出现的崩溃等等测试异常相关的数据。通过目标测试框架获取测试异常数据,可以进一步丰富目标测试框架执行应用测试任务获取的测试数据,更精准地满足实际的应用测试需求。
在本实施例中,在步骤S2300之后,还可以包括:步骤S2400-S2500。
步骤S2400,获取目标测试框架执行应用测试任务得到的测试数据。
测试数据可以包括目标测试框架在执行应用测试任务过程中产生的测试过程数据、测试异常数据以及执行应用测试任务得到的测试结果数据。
目标测试框架可以在执行应用测试任务时,将产生的测试数据逐一保存在本地以供获取。
步骤S2500,根据测试数据生成对应的测试结果报告,以展示给用户。
测试结果报告是根据测试数据,通过预设的报告格式生成的、可以通过文字、图表、数字等形式展示的报告。预设的报告格式可以根据具体的测试分析需求或者展示需求设置。
在本例中,可以通过本地的处理资源,对测试数据分析处理,生成对应的测试结果报告,也通过将测试数据发送给建立有通信交互的、具有数据处理能力的设备(例如云服务器、测试服务器等)进行处理,得到返回的测试结果报告。
在本例中,测试结果报告可以通过预设的测试结果界面展示,或者以网页形式展示测试结果报告。
根据测试数据生成对应的测试结果报告,可以展示给用户,给予用户更直观的测试结果。
<应用测试装置>
在本实施例中,提供一种应用测试装置3000,如图3所示,包括:动态库获取单元3100、安装包生成单元3200以及测试执行单元3300,用于实施本实施例中提供的应用测试方法,在此不再赘述。
动态库获取单元3100,用于根据用于执行应用测试任务的目标测试框架,获取与目标测试框架对应的目标动态库。
可选地,所述应用测试任务至少包括触摸测试任务、脚本测试任务、函数调用监测任务以及内存监控任务四者其中之一;
所述触摸测试任务是通过与测试的应用对应的操作***提供的测试接口,触发随机的操作事件;
所述脚本测试任务是根据在测试的应用启动时接收的外部启动命令指示的脚本下载地址,下载对应的测试脚本并根据所述测试脚本执行测试;
所述函数调用监测任务是监测获取测试的应用调用不同的应用函数的调用时长;
所述内存监控任务是测试获取测试的应用的内存使用数据。
安装包生成单元3200,用于根据目标动态库以及目标应用的原始安装包,生成包括目标动态库的、用于安装目标应用的目标安装包。
可选地,安装包生成单元3200包括:
用于对所述原始安装包进行解压缩处理,得到所述目标应用的可执行文件的装置;
用于将所述目标动态库与所述目标应用的可执行文件关联的装置;
用于根据关联后的所述目标动态库与所述目标应用的可执行文件,重新进行打包处理,得到所述目标安装包的装置。
所述用于将所述目标动态库与所述目标应用的可执行文件关联的装置还用于:
将所述目标动态库,设置在与所述目标应用的可执行文件相同的文件目录下;
在所述目标应用的可执行文件写入所述目标动态库的动态库信息;
其中,所述动态库信息至少包括对应的动态库所具有动态库名称以及动态库版本。
所述用于将所述目标动态库与所述目标应用的可执行文件关联的装置用于实施的在所述目标应用的可执行文件写入所述目标动态库的动态库信息的步骤包括:
根据所述目标应用的可执行文件的文件结构,读取所述可执行文件内容,确定与执行加载相关的加载内容段位置;
在所述加载内容段位置,以符合所述目标应用的可执行文件的内容格式,写入所述动态库信息。
测试执行单元3300,用于根据目标安装包安装目标应用,使得启动运行目标应用时,目标测试框架被同时启动运行,执行应用测试任务。
可选地,所述目标测试框架还用于记录执行所述应用测试任务过程中出现的测试异常数据。
可选地,所述应用测试装置3000还包括:
用于获取所述目标测试框架执行所述应用测试任务得到的测试数据的装置;
用于根据所述测试数据生成对应的测试结果报告,以展示给用户的装置。
本领域技术人员应当明白,可以通过各种方式来实现应用测试装置3000。例如,可以通过指令配置处理器来实现应用测试装置3000。例如,可以将指令存储在ROM中,并且当启动设备时,将指令从ROM读取到可编程器件中来实现应用测试装置3000。例如,可以将应用测试装置3000固化到专用器件(例如ASIC)中。可以将应用测试装置3000分成相互独立的单元,或者可以将它们合并在一起实现。应用测试装置3000可以通过上述各种实现方式中的一种来实现,或者可以通过上述各种实现方式中的两种或更多种方式的组合来实现。
在本实施例中,应用测试装置3000可以是实施本实施例中的应用测试方法的、具有客户端和服务端的应用测试***,应用测试装置3000也可以是设置在应用测试平台中的一个或多个功能模块、或者可以被应用测试平台耦合的插件、补丁或者嵌入件等。
<电子设备>
在本实施例中,还提供一种电子设备4000,如图4所示,包括:
存储器4100,用于存储可执行的指令;
处理器4200,用于根据所述可执行的指令的控制,运行所述电子设备4000执行如本实施例所述的应用测试方法。
在本实施例中,电子设备4000可以是手机、掌上电脑、平板电脑、笔记本电脑、台式电脑等终端设备。电子设备4000也可以是云端服务器、刀片服务器等数据处理设备。电子设备4000还可以是由一个或多个终端设备以及数据处理设备得到的组合。具体的一个例子中,电子设备4000可以是安装有实施提供实施应用测试的测试平台的一个或多个设备。
电子设备4000还可以包括其他的装置,例如,如图1所示的电子设备1000,还可以包括输入装置等。
<可读存储介质>
在本实施例中,还提供一种可读存储介质5000,可读存储介质5000存储有可被计算机读取并运行的计算机程序,所述计算机程序用于在被所述计算机运行时,执行如本实施例所述的应用测试方法。
在本实施例中,可读存储介质5000可以是可以保持和存储由指令执行设备使用的指令的有形设备。可读存储介质5000例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。可读存储介质5000的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的可读存储介质5000不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
<例子>
以下将结合图5进一步举例本实施例中提供的应用测试方法,该应用测试方法通过应用测试平台实施,该应用测试平台可以是如图3所示的应用测试装置3000或者如图4所示的电子设备4000,还可以是上述可读存储介质5000中存储的计算机程序。
在本例中,应用测试平台提供用于执行应用测试任务的目标测试框架。
该应用测试方法如图5所示,包括:步骤S501-S514。
步骤S501,编译目标测试框架得到目标动态库。
在本例中,假设目标动态库可以是iOS***支持的动态库,名称是test.dylib。
步骤S502,接收用户上传目标应用的原始安装包。
在本例中,假设目标应用是基于iOS***的应用。
步骤S503,对目标应用的原始安装包进行解压缩,得到目标应用的可执行文件。
步骤S504,将目标动态库复制到目标应用的可执行文件所在的文件目录下。
步骤S505,将目标动态库的动态库信息,以符合目标应用的可执行文件的内容格式,添加到目标应用的可执行文件的加载内容段中。
在本例中,加载内容段位置是目标应用的可执行文件中Load Commands这一段内容所在的位置,将动态库信息通过一条LC_LOAD_DYLB信息写入目标应用的可执行文件中Load Commands这一段内容所在的位置,具体的LC_LOAD_DYLB信息的具体内容如下:
Command LC_LOAD_DYLIB Command Size 72 Str Offset 28 Current Version1.0.0 Compatibility Version 1.0.0 Name test.dylib;
其中,Command Size是整个LC_LOAD_DYLIB的总长度,本例中取值是72;StrOffset是在整个LC_LOAD_DYLIB中目标动态库的动态库名称的起始位置,本例中取值是28;Current Version是目标动态库的当前动态库版本,本例中是1.0.0;CompatibilityVersion是目标动态库最低兼容的操作***版本,本例中是1.0.0,即iOS操作***1.0.0版本;Name是目标动态库的动态库名称,本例中是test.dylib。
步骤S506,将目标应用的可执行文件以及目标动态库重新打包得到目标安装包。
步骤S507,根据目标安装包安装目标应用。
步骤S508,启动运行目标应用,目标测试框架被同时启动运行。
步骤S509,通过目标测试框架执行应用测试任务。
应用测试任务可以根据具体的测试场景或者测试需求设置,在本例中可以包括触摸测试任务、脚本测试任务、函数调用监测任务以及内存监控任务等。
步骤S510,通过目标测试框架获记录执行所述应用测试任务过程中出现的测试异常数据。
步骤S511,通过目标测试框架获取执行应用测试任务得到的测试结果数据。
步骤S512,接收目标测试框架发送的测试异常数据以及测试结果数据。
步骤S513,根据测试异常数据以及测试结果数据,生成测试报告。
步骤S514,以网页形式展示测试报告。
在本例中,应用开发者可以无需额外的定制化开发,仅需上传待测应用的原始安装包,通过应用测试平台,就能突破操作***设定的限制实施自动化的应用测试,针对应用所具有的应用特性进行性能测试以及精准的控件识别,能突破操作***设定的限制,针对应用所具有的应用特性进行性能测试以及精准的控件识别,满足实际的应用测试需求,并提高测试效率。
以上已经结合附图和例子说明本实施例,在本实施例中,提供一种应用测试方法、装置、电子设备及可读存储介质,通过获取与执行应用测试任务的目标测试框架对应的目标动态库,根据目标动态库与目标应用的原始安装包,生成包括目标动态库的、用于安装目标应用的目标安装包,根据目标安装包安装目标应用后,在启动运行目标应用时,目标测试框架会被同时启动运行,执行应用测试任务,以此赋予目标测试框架与目标应用相同的权限,基于目标测试框架实施应用测试,能突破操作***设定的限制,针对应用所具有的应用特性进行性能测试以及精准的控件识别,高效地获取与测试的应用深入联动获取丰富多样的测试数据,满足实际的应用测试需求。同时,目标测试框架具有通用的应用测试能力,可普遍适用于任意应用的测试,避免应用开发者针对应用测试进行定制化开发,提高测试效率。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (10)
1.一种应用测试方法,其中,包括:
根据用于执行应用测试任务的目标测试框架,获取与所述目标测试框架对应的目标动态库;
根据所述目标动态库以及目标应用的原始安装包,生成包括所述目标动态库的、用于安装目标应用的目标安装包;
根据所述目标安装包安装所述目标应用,使得启动运行所述目标应用时,所述目标测试框架被同时启动运行,执行所述应用测试任务。
2.根据权利要求1所述的方法,其中,所述根据所述目标动态库以及目标应用的原始安装包,生成包括所述目标动态库的、用于安装目标应用的目标安装包的步骤包括:
对所述原始安装包进行解压缩处理,得到所述目标应用的可执行文件;
将所述目标动态库与所述目标应用的可执行文件关联;
根据关联后的所述目标动态库与所述目标应用的可执行文件,重新进行打包处理,得到所述目标安装包。
3.根据权利要求2所述的方法,其中,所述将所述目标动态库与所述目标应用的可执行文件关联的步骤包括:
将所述目标动态库,设置在与所述目标应用的可执行文件相同的文件目录下;
在所述目标应用的可执行文件写入所述目标动态库的动态库信息。
4.根据权利要求3所述的方法,其中,所述在所述目标应用的可执行文件写入所述目标动态库的动态库信息的步骤包括:
根据所述目标应用的可执行文件的文件结构,读取所述可执行文件内容,确定与执行加载相关的加载内容段位置;
在所述加载内容段位置,以符合所述目标应用的可执行文件的内容格式,写入所述动态库信息。
5.根据权利要求1所述的方法,其中,
所述应用测试任务至少包括触摸测试任务、脚本测试任务、函数调用监测任务以及内存监控任务四者其中之一;
所述触摸测试任务是通过与测试的应用对应的操作***提供的测试接口,触发随机的操作事件;
所述脚本测试任务是根据在测试的应用启动时接收的外部启动命令指示的脚本下载地址,下载对应的测试脚本并根据所述测试脚本执行测试;
所述函数调用监测任务是监测获取测试的应用调用不同的应用函数的调用时长;
所述内存监控任务是测试获取测试的应用的内存使用数据。
6.根据权利要求1所述的方法,其中,
所述目标测试框架还用于记录执行所述应用测试任务过程中出现的测试异常数据。
7.根据权利要求1所述的方法,其中,还包括:
获取所述目标测试框架执行所述应用测试任务得到的测试数据;
根据所述测试数据生成对应的测试结果报告,以展示给用户。
8.一种应用测试装置,其中,包括:
动态库获取单元,用于根据用于执行应用测试任务的目标测试框架,获取与所述目标测试框架对应的目标动态库;
安装包生成单元,用于根据所述目标动态库以及目标应用的原始安装包,生成包括所述目标动态库的、用于安装目标应用的目标安装包;
测试执行单元,用于根据所述目标安装包安装所述目标应用,使得启动运行所述目标应用时,所述目标测试框架被同时启动运行,执行所述应用测试任务。
9.一种电子设备,其中,包括:
存储器,用于存储可执行的指令;
处理器,用于根据所述可执行的指令的控制,运行所述电子设备执行如权利要求1-8所述的应用测试方法。
10.一种可读存储介质,其中,所述可读存储介质存储有可被计算机读取并运行的计算机程序,所述计算机程序用于在被所述计算机运行时,执行如权利要求1-8所述的应用测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910031784.7A CN111435328B (zh) | 2019-01-14 | 2019-01-14 | 应用测试方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910031784.7A CN111435328B (zh) | 2019-01-14 | 2019-01-14 | 应用测试方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111435328A true CN111435328A (zh) | 2020-07-21 |
CN111435328B CN111435328B (zh) | 2023-05-05 |
Family
ID=71580470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910031784.7A Active CN111435328B (zh) | 2019-01-14 | 2019-01-14 | 应用测试方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111435328B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052146A (zh) * | 2020-07-24 | 2020-12-08 | 北京奇艺世纪科技有限公司 | 页面帧率测试方法、应用的安装文件生成方法及装置 |
CN113127374A (zh) * | 2021-05-19 | 2021-07-16 | 支付宝(杭州)信息技术有限公司 | 应用于iOS设备的应用程序测试方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120317564A1 (en) * | 2011-06-10 | 2012-12-13 | Andrew Hei-Yin Lee | Automated modification of pre-generated msi packaged applications |
US20160188317A1 (en) * | 2014-12-29 | 2016-06-30 | Paul Hilliar | Over-the-air-provisioning of application library |
CN108415739A (zh) * | 2018-02-28 | 2018-08-17 | 腾讯科技(深圳)有限公司 | 一种动态链接库函数的钩挂方法、装置和存储介质 |
CN108595327A (zh) * | 2018-04-16 | 2018-09-28 | 深圳市腾讯网络信息技术有限公司 | 应用执行脚本的方法、应用测试方法、装置和计算机设备 |
CN108681473A (zh) * | 2018-05-18 | 2018-10-19 | 广州酷狗计算机科技有限公司 | 应用程序生成、运行方法、装置、计算机设备和存储介质 |
CN108920359A (zh) * | 2018-06-06 | 2018-11-30 | 腾讯科技(成都)有限公司 | 应用程序的测试方法、装置、存储介质和电子装置 |
-
2019
- 2019-01-14 CN CN201910031784.7A patent/CN111435328B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120317564A1 (en) * | 2011-06-10 | 2012-12-13 | Andrew Hei-Yin Lee | Automated modification of pre-generated msi packaged applications |
US20160188317A1 (en) * | 2014-12-29 | 2016-06-30 | Paul Hilliar | Over-the-air-provisioning of application library |
CN108415739A (zh) * | 2018-02-28 | 2018-08-17 | 腾讯科技(深圳)有限公司 | 一种动态链接库函数的钩挂方法、装置和存储介质 |
CN108595327A (zh) * | 2018-04-16 | 2018-09-28 | 深圳市腾讯网络信息技术有限公司 | 应用执行脚本的方法、应用测试方法、装置和计算机设备 |
CN108681473A (zh) * | 2018-05-18 | 2018-10-19 | 广州酷狗计算机科技有限公司 | 应用程序生成、运行方法、装置、计算机设备和存储介质 |
CN108920359A (zh) * | 2018-06-06 | 2018-11-30 | 腾讯科技(成都)有限公司 | 应用程序的测试方法、装置、存储介质和电子装置 |
Non-Patent Citations (1)
Title |
---|
黄奕;曾凡平;曹青;: "基于库函数动态跟踪的Fuzzing测试方法" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052146A (zh) * | 2020-07-24 | 2020-12-08 | 北京奇艺世纪科技有限公司 | 页面帧率测试方法、应用的安装文件生成方法及装置 |
CN113127374A (zh) * | 2021-05-19 | 2021-07-16 | 支付宝(杭州)信息技术有限公司 | 应用于iOS设备的应用程序测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111435328B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10120784B2 (en) | Test case generation for uncovered code paths | |
KR102150774B1 (ko) | 단말기 애플리케이션을 로딩하기 위한 방법 및 장치 | |
CN107451162B (zh) | 网络资源访问设备、混合设备及方法 | |
CN106569900A (zh) | 应用程序处理方法和装置 | |
CN104572042A (zh) | 移动终端设备的跨平台中间件装置及其实现方法 | |
CN110489179B (zh) | 获取调用栈栈帧函数签名的方法、装置、介质和设备 | |
CN111708557B (zh) | 更新配置文件的方法、设备及存储介质 | |
CN110531962A (zh) | 小程序的开发处理方法、设备及计算机可读存储介质 | |
CN110795353B (zh) | 快应用的调试方法、装置、设备及存储介质 | |
CN107679113A (zh) | 轻应用的获取方法、设备及电子设备 | |
CN110489165B (zh) | 获取调用栈栈帧指令偏移的方法、装置、介质和设备 | |
CN110275704A (zh) | 页面数据处理方法和装置,存储介质和电子设备 | |
CN113377365B (zh) | 代码显示方法、装置、设备、计算机可读存储介质及产品 | |
CN110597564A (zh) | 一种安装包构建和业务组件加载方法、装置、终端设备 | |
CN111338925A (zh) | 小程序测试方法及装置、***、电子设备和存储介质 | |
CN111435328B (zh) | 应用测试方法、装置、电子设备及可读存储介质 | |
CN113360379B (zh) | 程序测试环境创建方法和程序测试环境创建装置 | |
CN110442499A (zh) | 测试、提高页面响应性能的方法和装置、终端设备 | |
CN111427738B (zh) | 展示方法、应用监控模块、字节码增强模块及展示*** | |
CN110865818B (zh) | 应用关联域名的检测方法、装置及电子设备 | |
CN112764796A (zh) | 安装包生成*** | |
CN107391354B (zh) | 自动监测终端性能的方法及***、存储装置 | |
CN109669715A (zh) | 应用程序动态更新方法、设备及存储介质 | |
CN111162960B (zh) | 启动调试面板的方法和服务器 | |
CN114745313A (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 |