CN106339302B - 客户端的测试方法和装置 - Google Patents
客户端的测试方法和装置 Download PDFInfo
- Publication number
- CN106339302B CN106339302B CN201610701017.9A CN201610701017A CN106339302B CN 106339302 B CN106339302 B CN 106339302B CN 201610701017 A CN201610701017 A CN 201610701017A CN 106339302 B CN106339302 B CN 106339302B
- Authority
- CN
- China
- Prior art keywords
- data
- test
- client
- behavior
- target
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种客户端的测试方法和装置。其中,该方法包括:获取用于对待测试客户端进行测试的第一测试数据,其中,第一测试数据按照第一数据协议进行封装;在第一测试数据中插入目标数据,得到第二测试数据,其中,插入的目标数据按照第二数据协议进行封装,第一数据协议和第二数据协议为不相同的数据协议;将第二测试数据发送至待测试客户端中进行测试。本发明解决了现有技术中无法对客户端进行乱序测试的技术问题。
Description
技术领域
本发明涉及测试领域,具体而言,涉及一种客户端的测试方法和装置。
背景技术
现有技术中,为了确定客户端的抗压能力,会对客户端进行相关的压力测试。特别是游戏领域中,会在最大同屏人数情况下对客户端进行抗压能力的测试,进而,发现客户端的容错能力和异常问题。
现有技术中对客户端进行压力测试的方法如图1所示,首先启动游戏服务器,然后,启动多个游戏机器人的程序,控制游戏机器人登录到游戏服务器中,并聚集在指定的一个场景内,接下来,用户手动登录游戏客户端,控制游戏角色的视角移动到大量游戏机器人聚集的场景内,并通过第三方软件进行性能数据的采集,同时持续观察游戏客户端的表现。
现有技术中对客户端进行性能测试的方案无法覆盖到客户端的异常情况、无法触发客户端崩溃。因为大量游戏机器人在同一场景内收发的协议都是模拟游戏玩家实现的,都是正确的协议数据内容。也就是说,现有技术中的测试方案无法伪造协议、无法发现客户端崩溃的问题、同时需要人工去持续观察客户端表象。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种客户端的测试方法和装置,以至少解决现有技术中无法对客户端进行乱序测试的技术问题。
根据本发明实施例的一个方面,提供了一种客户端的测试方法,包括:获取用于对待测试客户端进行测试的第一测试数据,其中,所述第一测试数据按照第一数据协议进行封装;在所述第一测试数据中插入目标数据,得到第二测试数据,其中,插入的所述目标数据按照第二数据协议进行封装,所述第一数据协议和所述第二数据协议为不相同的数据协议;将所述第二测试数据发送至所述待测试客户端中进行测试。
根据本发明实施例的另一方面,还提供了一种客户端的测试装置,包括:获取单元,用于获取用于对待测试客户端进行测试的第一测试数据,其中,所述第一测试数据按照第一数据协议进行封装;插入单元,用于在所述第一测试数据中插入目标数据,得到第二测试数据,其中,插入的所述目标数据按照第二数据协议进行封装,所述第一数据协议和所述第二数据协议为不相同的数据协议;发送单元,用于将所述第二测试数据发送至所述待测试客户端中进行测试。
在本发明实施例中,采用获取用于对待测试客户端进行测试的第一测试数据,其中,所述第一测试数据按照第一数据协议进行封装;在所述第一测试数据中插入目标数据,得到第二测试数据,其中,插入的所述目标数据按照第二数据协议进行封装,所述第一数据协议和所述第二数据协议为不相同的数据协议;将所述第二测试数据发送至所述待测试客户端中进行测试的方式,通过在获取到待测试客户端的第一测试数据之后,在第一测试数据中插入目标数据,以使发送至待测试客户端的测试数据为乱序数据,待测试客户端在接收到第二测试数据之后,可以根据测试结果确定待测试客户端是否瘫痪,达到了对客户端进行乱序测试的目的,从而实现了通过对待测试客户端进行乱序测试来确定待测试客户端的健壮性的技术效果,进而解决了现有技术中无法对客户端进行乱序测试的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的一种客户端测试方法的示意图;
图2是根据本发明实施例的客户端测试方法的硬件环境的示意图;
图3是根据本发明实施例的客户端的测试方法的流程图;
图4是根据本发明实施例的客户端的测试方法的示意图;
图5是根据本发明实施例的一种数据表的示意图;
图6是根据本发明实施例的一种行为内插入目标数据的示意图;
图7是根据本发明实施例的一种行为间插入目标数据的示意图;
图8是根据本发明实施例的另一种客户端的测试方法的流程图;
图9是根据本发明实施例的一种客户端的测试装置的示意图;
图10是根据本发明实施例的一种服务器的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请涉及到的专业术语的解释:
压力测试:也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。
乱序测试:类似随机测试和Monkey测试,是指在正常行为之外的测试行为,主要以伪造非法协议格式和打乱协议先后顺序来实现。
游戏协议:网络游戏客户端和服务器直接进行通信的结构化格式的数据。
游戏机器人:是以游戏核心玩法为行为,通过人工智能AI去驱动的程序;能够模拟用户的行为进行游戏内的各种操作,从而实现功能上覆盖度和对程序压力上的覆盖度。
游戏服务器:这里俗称为游戏软件服务器,是一种支持高并发和高逻辑处理的服务器程序;能够处理高并发的登录,处理批量用户的游戏逻辑,实现用户间信息传递的一种高效率高难度的程序软件。
实施例1
根据本发明实施例,提供了一种可以通过本申请装置实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种客户端的测试方法。
可选地,在本实施例中,上述客户端的测试方法可以应用于如图2所示的终端202和服务器204所构成的硬件环境中。如图2所示,终端202通过网络与服务器204进行连接,上述网络包括但不限于:移动通信网络、广域网、城域网或局域网,终端202可以是手机终端,也可以是PC终端、笔记本终端或平板电脑终端。
图2中示出的硬件环境系统的主要工作原理是:
在本发明实施例中,终端202中安装有待测试客户端,其中,待测试客户端可以为任一款游戏的客户端,或者即时通信客户端等。在对待测试客户端进行测试时,大多是基于服务器204的测试。因此,在对待测试客户端进行测试时,服务器204会向待测试客户端发送第一测试数据,并通过第一测试数据对待测试客户端进行测试。但是,发明人发现,通过上述方法对待测试客户端进行测试时,不能伪造协议,因此,也就不能发现待测试客户端崩溃的问题。因此,在此基础上,在服务器204向待测试客户端发送第一测试数据时,在第一测试数据中插入目标数据,其中,目标数据按照第二数据协议进行封装,第一测试数据按照第一数据协议进行封装,第一数据协议和第二数据协议为不相同的协议。通过在第一测试数据中插入目标数据,就可以构造乱序数据,以实现对待测试客户端进行乱序测试。
需要说明的是,在本发明实施例中,如果上述服务器204为游戏服务器,则可以通过游戏机器人来模拟服务器204向待测试客户端发送第二测试数据。
图3是根据本发明实施例的客户端的测试方法的流程图,以下结合图3对本发明实施例所提供的客户端的测试方法做具体介绍,如图3所示,该客户端的测试方法主要包括如下步骤S302至步骤S306:
步骤S302,获取用于对待测试客户端进行测试的第一测试数据,其中,第一测试数据按照第一数据协议进行封装。
在本发明实施例中,待测试客户端可以为任一款游戏的客户端,或者即时通信客户端等。如果待测试客户端为任一款游戏的客户端,则上述第一测试数据可以为“正常攻击行为”的测试数据包,其中,该“正常攻击行为”的测试数据包可以通过TCP协议或者UDP协议进行封装。
步骤S304,在第一测试数据中插入目标数据,得到第二测试数据,其中,插入的目标数据按照第二数据协议进行封装,第一数据协议和第二数据协议为不相同的数据协议。
在本发明实施例中,服务器在获取到用于对待测试客户端进行测试的第一测试数据之后,为了构造乱序数据,可以在第一测试数据中插入目标数据,得到插入之后的测试数据,即第二测试数据。
需要说明的是,在本发明实施例中,第一测试数据通过第一数据协议进行封装,目标数据通过第二数据协议进行封装,其中,第一数据协议和第二数据协议为不相同的协议。假设第一测试数据通过TCP协议进行封装,则目标数据就通过UDP协议进行封装;假设第一测试数据通过UDP协议进行封装,则目标数据就通过TCP协议进行封装。
进一步需要说明的是,插入至第一测试数据中的目标数据可以为任意的数据,例如,如果第一测试数据可以为“正常攻击行为”的测试数据包,那么目标数据就可以为“移动行为”的测试数据包。
步骤S306,将第二测试数据发送至待测试客户端中进行测试。
在本发明实施例中,在构造好上述第二测试数据之后,就可以将第二测试数据发送至待测试客户端中进行测试。
需要说明的是,在本发明实施例中,由于发送至待测试客户端的数据为乱序数据,一般情况下,待测试客户端默认是不会处理伪造的乱序数据的。因此,在本发明实施例中,通过钩子(HOOK)调用客户端的数据收发函数,通过调用的数据收发函数去处理伪造出来的乱序数据,从而达到对待测试客户端进行健壮性测试的目的。
进一步需要说明的是,在本发明实施例中,可以通过人工智能AI行为树来构造上述乱序数据(即,第二测试数据)。行为树为树状的行为结构,包括根节点,分支和子节点。例如,对于某游戏中的士兵,该行为树的根节点包括三个分支,该三个分支分别对应三个大的行为:巡逻、攻击和逃跑,对于每个大的行为,可能还包括小的行为,也就是说,巡逻还包括多个分支,每个分支对应一个巡逻下的小行为。因此,通过上述方法构建出的树即为行为树。
具体地,如图4所示,服务器可以在数据表(即,协议配置文件)中查找目标数据,其中,数据表用于存储目标数据和目标数据的标识信息,服务器在查找到目标数据的情况下,将目标数据插入至第一测试数据,得到第二测试数据,即通过AI行为树构造协议数据(即,上述第二测试数据)。最后,将构造好的第二测试数据发送至待测试客户端中进行测试。在待测试客户端中进行测试时,可以通过HOOK调用数据收发函数来处理伪造的第二测试数据,从而达到健壮性测试的目的。
如图5所示的即为一种数据表,在该数据表为EXCEL格式的数据表,在该数据表中包括待测试客户端能够收发的所有协议格式。在对待测试客户端进行测试时,可以通过程序代码将EXCEL格式的数据表加载到内存中,然后,AI行为树会自动生成所有的协议格式数据包,其中,数据包中包括正确数据和错误数值。
在本发明实施例中,通过在获取到待测试客户端的第一测试数据之后,在第一测试数据中插入目标数据,以使发送至待测试客户端的测试数据为乱序数据,待测试客户端在接收到第二测试数据之后,可以根据测试结果确定待测试客户端是否瘫痪,达到了对客户端进行乱序测试的目的,从而实现了通过对待测试客户端进行乱序测试来确定待测试客户端的健壮性的技术效果,进而解决了现有技术中无法对客户端进行乱序测试的技术问题。
在本发明的一个可选实施方式中,获取用于对待测试客户端进行测试的第一测试数据包括:获取用于对待测试客户端的第一行为进行测试的第一测试数据;以及在第一测试数据中插入目标数据,得到第二测试数据包括:在第一测试数据中插入用于执行第二行为的目标数据。
在对待测试客户端进行测试的过程中,是对待测试客户端的行为进行测试,因此,在本发明实施例中,第一测试数据为用于对待测试客户端的第一行为进行测试的数据,目标数据为用于执行第二行为的数据,也可以理解为,目标数据为用于对待测试客户端的第二行为进行测试的数据。
在本发明实施例中,在将目标数据插入至第一测试数据中时,可以按照行为内和行为间两种方式进行插入,其中,行为内是指在一个行为的多个数据包中插入目标数据,行为间是指在多个行为的数据包之间插入目标数据,下面将行为内和行为间进行详细介绍。
方式一:行为内随机协议测试功能
第一行为的数量为一个,在此情况下,在第一测试数据中插入目标数据,具体为:获取第一行为的第一数据包的第一发送时序,其中,第一数据包的数量为多个,然后,根据第一发送时序确定第一数据包之间的发送间隔,其中,发送间隔至少为一个,接下来,将目标数据插入至目标发送间隔,其中,目标发送间隔为第一数据包之间的发送间隔中的至少一个间隔。
行为内随机协议测试功能是指在同一个行为过程中,插入其它的随机数据,也就是说,在第一行为内插入目标数据。由于第一行为中可能包括多个数据包。因此,在第一行为中插入目标数据时,可以首先获取第一行为的一个或多个第一数据包的第一发送时序,然后,根据第一发送时序将目标数据插入至一个或多个第一数据包中。
例如,第一行为对应三个第一数据包,即数据包a、数据包b和数据包c,并且第一发送时序为a→b→c。通过第一发送时序可知,a和b之间存在一个发送间隔,b和c之间存在一个发送间隔,此时,可以在上述两个发送间隔插入目标数据,例如,在服务器在发送数据包a之后,就发送插入的数据包d,并继续发送数据包b,并在发送数据包b之后,发送插入的数据包e,然后,继续发送数据包c。通过上述方法发送至待测试客户端中的第二测试数据即为乱序的数据。
具体地,如图6所示,假设,第一行为即“攻击行为”,此时,数据包a、数据包b和数据包c分别是“攻击行为”中的三个时序数据包(即,第一数据包)。如图6所示,在一个正常的攻击流程中,服务器按照a→b→c的时序顺序向待测试客户端发送数据包。
本发明实施例中,会在上述正常的攻击流程的时序中,插入多个目标数据,用来测试客户端处理异常情况的能力。如图6所示,在数据包a和数据包b之间插入目标数据1,并在数据包b和数据包c之间插入目标数据2,其中,插入的目标数据1和目标数据2可以为相同的数据,或者不相同的数据,进一步地,目标数据1的封装协议与目标数据2的封装协议可以为相同的协议或者不相同的协议。
在通过上述构造得到第二测试数据之后,就可以将第二测试数据发送至待测试客户端中进行测试。具体地,可以通过HOOK调用数据收发函数,通过该收发函数处理上述第二测试数据,并得到测试结果,进而,通过测试结果判断待测试客户端是否崩溃。
方式二:行为间随机协议测试功能
第一行为的数量为多个,在此情况下,在第一测试数据中插入目标数据,得到第二测试数据,具体为:获取多个第一行为的第二数据包的第二发送时序,其中,第二数据包的数量为多个,并且每个第一行为对应一个或多个第二数据包,然后,根据第二发送时序确定第二数据包之间的行为间隔,其中,行为间隔至少为一个,接下来,将目标数据插入至目标行为间隔,其中,目标行为间隔为第二数据包之间的行为间隔中的至少一个间隔。
行为间随机协议测试功能是指在多个行为过程中,插入其它的随机数据,也就是说,在多个第一行为内插入目标数据。由于每个第一行为可能包括一个或多个第二数据包,因此,在插入目标数据时,可以首先获取第二数据包的第二发送时序,进而,根据第二发送时序将目标数据插入至第一测试数据中。
例如,第一行为包括三个,分别为:攻击行为、移动行为和聊天行为,并且攻击行为的第二数据包1、移动行为的第二数据包2和聊天行为的第二数据包3的发送时序为:第二数据包1→第二数据包2→第二数据包3。通过第二发送时序可知,第二数据包1和第二数据包2之间存在一个行为间隔,第二数据包2和第二数据包3之间存在一个行为间隔。此时,可以在上述两个行为间隔插入目标数据,例如,在服务器在发送第二数据包1之后,就发送插入的目标数据3,并继续发送第二数据包2,并在发送第二数据包2之后,发送插入的目标数据4,然后,继续发送第二数据包3。通过上述方法发送至待测试客户端中的第二测试数据即为乱序的数据。
具体地,如图7所示,在图7中,第一行为即“攻击行为”、“移动行为”和“聊天行为”,其中,数据包a1、数据包b1和数据包c1分别是“攻击行为”、“移动行为”和“聊天行为”的第二数据包。在一个流程中,服务器按照数据包a1→数据包b1→数据包c1的时序顺序向待测试客户端发送数据包。
本发明实施例中,会在上述正常的攻击流程的时序中,插入多个目标数据,构造乱序数据,并通过乱序数据测试客户端处理异常情况的能力。如图7所示,在数据包a1和数据包b2之间插入目标数据3,并在数据包b1和数据包c1之间插入目标数据4,其中,插入的目标数据3和目标数据4可以为相同的数据,或者不相同的数据,进一步地,目标数据3的封装协议与目标数据4的封装协议可以为相同的协议或者不相同的协议。
在通过上述构造得到第二测试数据之后,就可以将第二测试数据发送至待测试客户端中进行测试。具体地,可以通过HOOK调用数据收发函数,通过该收发函数处理上述第二测试数据,并得到测试结果,进而,通过测试结果判断待测试客户端是否崩溃。
图8是根据本发明实施例的另一种客户端的测试方法的流程图,以下结合图8对本发明实施例所提供的客户端的测试方法做具体介绍,如图8所示,该客户端的测试方法主要包括如下步骤S801至步骤S805:
步骤S801,获取版本和编译测试文件;
步骤S802,启动待测试客户端;
步骤S803,控制待测试客户端所控制的角色进入游戏场景;
步骤S804,对待测试客户端进行乱序测试;
步骤S805,获取测试结果。
在本发明实施例中,待测试客户端以游戏客户端为例进行说明。在获取编译测试文件或程序之后,就可以启动待测试客户端(即,游戏客户端),并控制游戏客户端所控制的角色进入游戏场景中。进入游戏场景中之后,就可以通过游戏机器人模拟游戏服务器,向游戏客户端发送第一测试数据,并对游戏客户端进行乱序测试,在对游戏客户端进行乱序测试时,通过AI行为树构建第二测试数据,并将构建的第二测试数据发送至游戏客户端中进行测试,并根据测试结果判断游戏客户端是否崩溃,其中,构建第二测试的方法在上述实施例中已经进行描述,此处不再赘述。
本发明提供的客户端的测试方法可以应用在PC上的游戏客户端。例如,在游戏运行过程中,可以通过上述方法对游戏客户端进行测试,并记录客户端的性能数据,同时还有一个守护进程来监控客户端是否崩溃;在对总体测试完成后,用户可以查看客户端的综合性能数据和崩溃数据。
例如,发明人采用本发明提供的客户端的测试方法针对某个游戏对客户端进行健壮性测试,在测试过程中发现了部分客户端处于崩溃时的镜像映射文件(dump文件)。在dump文件中,有很清晰详细的函数堆栈信息,有助于客户端问题的快速定位和修复。在一次客户端健壮性测试周期内,通常会发生几十次crash现象,同时产生几十个dump文件,这些问题都是人工测试无法发现的。通过上述方法对游戏客户端进行测试之后,对于游戏的发布,使得正式环境上的游戏客户端crash率长期低于某个数值,;例如,低于3%,降低了客户端处于崩溃状态的几率。
综上,在本发明实施例中,通过上述方法对客户端进行测试时,能发现大量的崩溃(crash)风险,显著降低客户端崩溃率,特别是游戏客户端的崩溃率;进一步地,能够显著提高客户端的容错能力,对于游戏客户端,能够减少游戏内逻辑出错的可能性;进一步地,还能够显著提高客户端的承载能力,尤其是游戏客户端的承载能力。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述客户端的测试方法的客户端的测试装置,该客户端的测试装置主要用于执行本发明实施例上述内容所提供的客户端的测试方法,以下对本发明实施例所提供的客户端的测试装置做具体介绍:
图9是根据本发明实施例的一种客户端的测试装置的示意图,如图9所示,该客户端的测试装置主要包括获取单元901、插入单元902和发送单元903,其中,
获取单元901,用于获取用于对待测试客户端进行测试的第一测试数据,其中,第一测试数据按照第一数据协议进行封装。
在本发明实施例中,待测试客户端可以为任一款游戏的客户端,或者即时通信客户端等。如果待测试客户端为任一款游戏的客户端,则上述第一测试数据可以为“正常攻击行为”的测试数据包,其中,该“正常攻击行为”的测试数据包可以通过TCP协议或者UDP协议进行封装。
插入单元902,用于在第一测试数据中插入目标数据,得到第二测试数据,其中,插入的目标数据按照第二数据协议进行封装,第一数据协议和第二数据协议为不相同的数据协议;
在本发明实施例中,服务器在获取到用于对待测试客户端进行测试的第一测试数据之后,为了构造乱序数据,可以在第一测试数据中插入目标数据,得到插入之后的测试数据,即第二测试数据。
需要说明的是,在本发明实施例中,第一测试数据通过第一数据协议进行封装,目标数据通过第二数据协议进行封装,其中,第一数据协议和第二数据协议为不相同的协议。假设第一测试数据通过TCP协议进行封装,则目标数据就通过UDP协议进行封装;假设第一测试数据通过UDP协议进行封装,则目标数据就通过TCP协议进行封装。
进一步地需要说明的是,插入至第一测试数据中的目标数据可以为任意的数据,例如,如果第一测试数据可以为“正常攻击行为”的测试数据包,那么目标数据就可以为“移动行为”的测试数据包。
发送单元903,用于将第二测试数据发送至待测试客户端中进行测试。
在本发明实施例中,在构造好上述第二测试数据之后,就可以将第二测试数据发送至待测试客户端中进行测试。
需要说明的是,在本发明实施例中,由于发送至待测试客户端的数据为乱序数据,一般情况下,待测试客户端默认是不会处理伪造的乱序数据的。因此,在本发明实施例中,通过钩子(HOOK)调用客户端的数据收发函数,通过调用的数据收发函数去处理伪造出来的乱序数据,从而达到对待测试客户端进行健壮性测试的目的。
进一步地需要说明的是,在本发明实施例中,可以通过人工智能AI行为树来构造上述乱序数据(即,第二测试数据)。行为树为树状的行为结构,包括根节点,分支和子节点。例如,对于某游戏中的士兵,该行为树的根节点包括三个分支,该三个分支分别对应三个大的行为:巡逻、攻击和逃跑,对于每个大的行为,可能还包括小的行为,也就是说,巡逻还包括多个分支,每个分支对应一个巡逻下的小行为。因此,通过上述方法构建出的树即为行为树。
具体地,如上述图4所示,服务器可以在数据表(即,协议配置文件)中查找目标数据,其中,数据表用于存储目标数据和目标数据的标识信息,服务器在查找到目标数据的情况下,将目标数据插入至第一测试数据,得到第二测试数据,即通过AI行为树构造协议数据(即,上述第二测试数据)。最后,将构造好的第二测试数据发送至待测试客户端中进行测试。在待测试客户端中进行测试时,可以通过HOOK调用数据收发函数来处理伪造的第二测试数据,从而达到健壮性测试的目的。
如上述图5所示的即为一种数据表,在该数据表为EXCEL格式的数据表,在该数据表中包括待测试客户端能够收发的所有协议格式。在对待测试客户端进行测试时,可以通过程序代码将EXCEL格式的数据表加载到内存中,然后,AI行为树会自动生成所有的协议格式数据包,其中,数据包中包括正确数据和错误数值。
在本发明实施例中,通过在获取到待测试客户端的第一测试数据之后,在第一测试数据中插入目标数据,以使发送至待测试客户端的测试数据为乱序数据,待测试客户端在接收到第二测试数据之后,可以根据测试结果确定待测试客户端是否瘫痪,达到了对客户端进行乱序测试的目的,从而实现了通过对待测试客户端进行乱序测试来确定待测试客户端的健壮性的技术效果,进而解决了现有技术中无法对客户端进行乱序测试的技术问题。
作为一个可选的实施方式,获取单元包括:第一获取模块,用于获取用于对待测试客户端的第一行为进行测试的第一测试数据;插入单元包括:第一插入模块,用于在第一测试数据中插入用于执行第二行为的目标数据。
在对待测试客户端进行测试的过程中,是对待测试客户端的行为进行测试,因此,在本发明实施例中,第一测试数据为用于对待测试客户端的第一行为进行测试的数据,目标数据为用于执行第二行为的数据,也可以理解为,目标数据为用于对待测试客户端的第二行为进行测试的数据。
在本发明实施例中,在将目标数据插入至第一测试数据中时,可以按照行为内和行为间两种方式进行插入,其中,行为内是指在一个行为的多个数据包中插入目标数据,行为间是指在多个行为的数据包之间插入目标数据,下面将行为内和行为间进行详细介绍。
方式一:行为内随机协议测试功能
作为一个可选的实施方式,第一行为的数量为一个,插入单元包括:第二获取模块,用于获取第一行为的第一数据包的第一发送时序,其中,第一数据包的数量为多个;第一确定单元,用于根据第一发送时序确定第一数据包之间的发送间隔,其中,发送间隔至少为一个;第二插入模块,用于将目标数据插入至目标发送间隔,其中,目标发送间隔为第一数据包之间的发送间隔中的至少一个间隔。
行为内随机协议测试功能是指在同一个行为过程中,插入其它的随机数据,也就是说,在第一行为内插入目标数据。由于第一行为中可能包括多个数据包。因此,在第一行为中插入目标数据时,可以首先获取第一行为的一个或多个第一数据包的第一发送时序,然后,根据第一发送时序将目标数据插入至一个或多个第一数据包中。
例如,第一行为对应三个第一数据包,即数据包a、数据包b和数据包c,并且第一发送时序为a→b→c。通过第一发送时序可知,a和b之间存在一个发送间隔,b和c之间存在一个发送间隔,此时,可以在上述两个发送间隔插入目标数据,例如,在服务器在发送数据包a之后,就发送插入的数据包d,并继续发送数据包b,并在发送数据包b之后,发送插入的数据包e,然后,继续发送数据包c。通过上述方法发送至待测试客户端中的第二测试数据即为乱序的数据。
具体地,如上述图6所示,在上述图6中,第一行为即“攻击行为”,并且,数据包a、数据包b和数据包c分别是“攻击行为”中的三个时序数据包(即,第一数据包)。如上述图6所示,在一个正常的攻击流程中,服务器按照a→b→c的时序顺序向待测试客户端发送数据包。
本发明实施例中,会在上述正常的攻击流程的时序中,插入多个目标数据,用来测试客户端处理异常情况的能力。如图6所示,在数据包a和数据包b之间插入目标数据1,并在数据包b和数据包c之间插入目标数据2,其中,插入的目标数据1和目标数据2可以为相同的数据,或者不相同的数据,进一步地,目标数据1的封装协议与目标数据2的封装协议可以为相同的协议或者不相同的协议。
在通过上述构造得到第二测试数据之后,就可以将第二测试数据发送至待测试客户端中进行测试。具体地,可以通过HOOK调用数据收发函数,通过该收发函数处理上述第二测试数据,并得到测试结果,进而,通过测试结果判断待测试客户端是否崩溃。
方式二:行为间随机协议测试功能
作为一个可选的实施方式,第一行为的数量为多个,插入单元包括:第三获取模块,用于获取多个第一行为的第二数据包的第二发送时序,其中,第二数据包的数量为多个,并且每个第一行为对应一个或多个第二数据包;第二确定单元,用于根据第二发送时序确定第二数据包之间的行为间隔,其中,行为间隔至少为一个;第三插入模块,用于将目标数据插入至目标行为间隔,其中,目标行为间隔为第二数据包之间的行为间隔中的至少一个间隔。
行为间随机协议测试功能是指在多个行为过程中,插入其它的随机数据,也就是说,在多个第一行为内插入目标数据。由于每个第一行为可能包括一个或多个第二数据包,因此,在插入目标数据时,可以首先获取第二数据包的第二发送时序,进而,根据第二发送时序将目标数据插入至第一测试数据中。
例如,第一行为包括三个,分别为:攻击行为、移动行为和聊天行为,并且攻击行为的第二数据包1、移动行为的第二数据包2和聊天行为的第二数据包3的发送时序为:第二数据包1→第二数据包2→第二数据包3。通过第二发送时序可知,第二数据包1和第二数据包2之间存在一个行为间隔,第二数据包2和第二数据包3之间存在一个行为间隔。此时,可以在上述两个行为间隔插入目标数据,例如,在服务器在发送第二数据包1之后,就发送插入的目标数据3,并继续发送第二数据包2,并在发送第二数据包2之后,发送插入的目标数据4,然后,继续发送第二数据包3。通过上述方法发送至待测试客户端中的第二测试数据即为乱序的数据。
具体地,如图7所示,在图7中,第一行为即“攻击行为”、“移动行为”和“聊天行为”,其中,数据包a1、数据包b1和数据包c1分别是“攻击行为”、“移动行为”和“聊天行为”的第二数据包。在一个流程中,服务器按照数据包a1→数据包b1→数据包c1的时序顺序向待测试客户端发送数据包。
本发明实施例中,会在上述正常的攻击流程的时序中,插入多个目标数据,用来测试客户端处理异常情况的能力。如图7所示,在数据包a1和数据包b2之间插入目标数据3,并在数据包b1和数据包c1之间插入目标数据4,其中,插入的目标数据3和目标数据4可以为相同的数据,或者不相同的数据,进一步地,目标数据3的封装协议与目标数据4的封装协议可以为相同的协议或者不相同的协议。
在通过上述构造得到第二测试数据之后,就可以将第二测试数据发送至待测试客户端中进行测试。具体地,可以通过HOOK调用数据收发函数,通过该收发函数处理上述第二测试数据,并得到测试结果,进而,通过测试结果判断待测试客户端是否崩溃。
作为一个可选的实施方式,插入单元包括:查找模块,用于在数据表中查找目标数据,其中,数据表用于存储目标数据和目标数据的标识信息;第三插入模块,用于在查找到目标数据的情况下,将目标数据插入至第一测试数据。
实施例3
根据本发明实施例,还提供了一种用于实施上述客户端的测试方法的服务器。
图10是根据本发明实施例的一种服务器的结构框图,该服务器可以包括:一个或多个(图中仅示出一个)处理器1001、存储器1003、以及传输装置1005,如图10所示,该服务器还可以包括输入输出设备1007。
其中,存储器1003可用于存储软件程序以及模块,如本发明实施例中的客户端的测试方法和装置对应的程序指令/模块,处理器1001通过运行存储在存储器1003内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的客户端的测试方法。存储器1003可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1003可进一步包括相对于处理器1001远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置1005用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1005包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置805为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器1003用于存储应用程序。
处理器1001可以通过传输装置1005调用存储器1003存储的应用程序,以执行下述步骤:
获取用于对待测试客户端进行测试的第一测试数据,其中,第一测试数据按照第一数据协议进行封装;在第一测试数据中插入目标数据,得到第二测试数据,其中,插入的目标数据按照第二数据协议进行封装,第一数据协议和第二数据协议为不相同的数据协议;将第二测试数据发送至待测试客户端中进行测试。
处理器1001还用于执行下述步骤:获取用于对待测试客户端进行测试的第一测试数据包括:获取用于对待测试客户端的第一行为进行测试的第一测试数据;在第一测试数据中插入目标数据,得到第二测试数据包括:在第一测试数据中插入用于执行第二行为的目标数据。
处理器1001还用于执行下述步骤:获取第一行为的第一数据包的第一发送时序,其中,第一数据包的数量为多个;根据第一发送时序确定第一数据包之间的发送间隔,其中,发送间隔至少为一个;将目标数据插入至目标发送间隔,其中,目标发送间隔为第一数据包之间的发送间隔中的至少一个间隔。
第一行为的数量为多个,处理器801还用于执行下述步骤:获取多个第一行为的第二数据包的第二发送时序,其中,第二数据包的数量为多个,并且每个第一行为对应一个或多个第二数据包;根据第二发送时序确定第二数据包之间的行为间隔,其中,行为间隔至少为一个;将目标数据插入至目标行为间隔,其中,目标行为间隔为第二数据包之间的行为间隔中的至少一个间隔。
处理器1001还用于执行下述步骤:在数据表中查找目标数据,其中,数据表用于存储目标数据和目标数据的标识信息;在查找到目标数据的情况下,将目标数据插入至第一测试数据。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的客户端的测试方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,获取用于对待测试客户端进行测试的第一测试数据,其中,第一测试数据按照第一数据协议进行封装;
S2,在第一测试数据中插入目标数据,得到第二测试数据,其中,插入的目标数据按照第二数据协议进行封装,第一数据协议和第二数据协议为不相同的数据协议;
S3,将第二测试数据发送至待测试客户端中进行测试。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种客户端的测试方法,其特征在于,包括:
获取用于对待测试客户端进行测试的第一测试数据,其中,所述第一测试数据按照第一数据协议进行封装;
在所述第一测试数据中插入目标数据,得到第二测试数据,其中,插入的所述目标数据按照第二数据协议进行封装,所述第一数据协议和所述第二数据协议为不相同的数据协议;
将所述第二测试数据发送至所述待测试客户端中进行测试。
2.根据权利要求1所述的方法,其特征在于,
获取用于对待测试客户端进行测试的第一测试数据包括:获取用于对所述待测试客户端的第一行为进行测试的第一测试数据;
在所述第一测试数据中插入目标数据,得到第二测试数据包括:在所述第一测试数据中插入用于执行第二行为的目标数据。
3.根据权利要求2所述的方法,其特征在于,所述第一行为的数量为一个,在所述第一测试数据中插入目标数据包括:
获取所述第一测试数据的第一数据包的第一发送时序,其中,所述第一数据包的数量为多个;
根据所述第一发送时序确定所述第一数据包之间的发送间隔,其中,所述发送间隔至少为一个;
将所述目标数据插入至目标发送间隔,其中,所述目标发送间隔为所述第一数据包之间的所述发送间隔中的至少一个间隔。
4.根据权利要求2或3所述的方法,其特征在于,所述第一行为的数量为多个,在所述第一测试数据中插入目标数据,得到第二测试数据包括:
获取所述第一测试数据的第二数据包的第二发送时序,其中,所述第二数据包的数量为多个,并且每个所述第一行为对应一个或多个所述第二数据包;
根据所述第二发送时序确定所述第二数据包之间的行为间隔,其中,所述行为间隔至少为一个;
将所述目标数据插入至目标行为间隔,其中,目标行为间隔为所述第二数据包之间的所述行为间隔中的至少一个间隔。
5.根据权利要求1所述的方法,其特征在于,在所述第一测试数据中插入目标数据包括:
在数据表中查找所述目标数据,其中,所述数据表用于存储所述目标数据和所述目标数据的标识信息;
在查找到所述目标数据的情况下,将所述目标数据插入至所述第一测试数据。
6.一种客户端的测试装置,其特征在于,包括:
获取单元,用于获取用于对待测试客户端进行测试的第一测试数据,其中,所述第一测试数据按照第一数据协议进行封装;
插入单元,用于在所述第一测试数据中插入目标数据,得到第二测试数据,其中,插入的所述目标数据按照第二数据协议进行封装,所述第一数据协议和所述第二数据协议为不相同的数据协议;
发送单元,用于将所述第二测试数据发送至所述待测试客户端中进行测试。
7.根据权利要求6所述的装置,其特征在于,
所述获取单元包括:第一获取模块,用于获取用于对所述待测试客户端的第一行为进行测试的第一测试数据;
所述插入单元包括:第一插入模块,用于在所述第一测试数据中插入用于执行第二行为的目标数据。
8.根据权利要求7所述的装置,其特征在于,所述第一行为的数量为一个,所述插入单元包括:
第二获取模块,用于获取所述第一测试数据的第一数据包的第一发送时序,其中,所述第一数据包的数量为多个;
第一确定单元,用于根据所述第一发送时序确定所述第一数据包之间的发送间隔,其中,所述发送间隔至少为一个;
第二插入模块,用于将所述目标数据插入至目标发送间隔,其中,所述目标发送间隔为所述第一数据包之间的所述发送间隔中的至少一个间隔。
9.根据权利要求7或8所述的装置,其特征在于,所述第一行为的数量为多个,所述插入单元包括:
第三获取模块,用于获取所述第一测试数据的第二数据包的第二发送时序,其中,所述第二数据包的数量为多个,并且每个所述第一行为对应一个或多个所述第二数据包;
第二确定单元,用于根据所述第二发送时序确定所述第二数据包之间的行为间隔,其中,所述行为间隔至少为一个;
第三插入模块,用于将所述目标数据插入至目标行为间隔,其中,目标行为间隔为所述第二数据包之间的所述行为间隔中的至少一个间隔。
10.根据权利要求6所述的装置,其特征在于,所述插入单元包括:
查找模块,用于在数据表中查找所述目标数据,其中,所述数据表用于存储所述目标数据和所述目标数据的标识信息;
第三插入模块,用于在查找到所述目标数据的情况下,将所述目标数据插入至所述第一测试数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610701017.9A CN106339302B (zh) | 2016-08-22 | 2016-08-22 | 客户端的测试方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610701017.9A CN106339302B (zh) | 2016-08-22 | 2016-08-22 | 客户端的测试方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106339302A CN106339302A (zh) | 2017-01-18 |
CN106339302B true CN106339302B (zh) | 2019-02-26 |
Family
ID=57825407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610701017.9A Active CN106339302B (zh) | 2016-08-22 | 2016-08-22 | 客户端的测试方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106339302B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106899441B (zh) * | 2017-03-16 | 2019-09-03 | 网易(杭州)网络有限公司 | 故障节点定位方法及系统 |
CN107080945B (zh) * | 2017-05-11 | 2020-12-22 | 网易(杭州)网络有限公司 | 测试游戏中人工智能行为的方法、装置及电子设备 |
CN109857650B (zh) * | 2019-01-14 | 2022-07-01 | 珠海金山网络游戏科技有限公司 | 一种游戏性能监听方法及系统 |
CN110688301B (zh) * | 2019-08-22 | 2021-03-02 | 浙江口碑网络技术有限公司 | 服务器测试方法、装置、存储介质及计算机设备 |
CN113708993A (zh) * | 2021-08-13 | 2021-11-26 | 视联动力信息技术股份有限公司 | 一种异常状态测试方法、装置、终端设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506380B (zh) * | 2014-12-16 | 2018-07-13 | 北京星河亮点技术股份有限公司 | 基于协议分析仪的移动终端数据业务性能测试方法及系统 |
CN105868111B (zh) * | 2016-03-29 | 2018-07-03 | 网易(杭州)网络有限公司 | 移动终端游戏自动测试方法和装置 |
-
2016
- 2016-08-22 CN CN201610701017.9A patent/CN106339302B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106339302A (zh) | 2017-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106339302B (zh) | 客户端的测试方法和装置 | |
US8667119B2 (en) | System and method for re-generating packet load for load test | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
CN107302488A (zh) | 虚拟物品的分配方法、系统及服务器 | |
CN107943707A (zh) | 行为树的测试方法、装置和存储介质以及终端 | |
CN110363286A (zh) | 神经网络模型的生成方法及装置 | |
CN107103089A (zh) | 对象的匹配方法和装置 | |
CN105793860A (zh) | 反调试方法 | |
CN110233798A (zh) | 数据处理方法、装置及系统 | |
CN110152290A (zh) | 游戏运行方法和装置、存储介质及电子装置 | |
CN108829868A (zh) | 数据显示方法和装置、存储介质及电子装置 | |
CN107528818A (zh) | 媒体文件的数据处理方法和装置 | |
CN109460361A (zh) | 性能测试方法和装置、存储介质及电子装置 | |
CN107391219A (zh) | 函数编译方法和装置 | |
CN105791246A (zh) | 验证信息的验证方法、装置及系统 | |
CN110347593A (zh) | 流程测试方法及装置 | |
CN111228807B (zh) | 虚拟操作对象的控制方法和装置、存储介质及电子装置 | |
CN106693365A (zh) | 一种游戏对象快速传送方法和装置 | |
CN108553904B (zh) | 一种游戏匹配方法、装置、电子设备及介质 | |
CN108654088A (zh) | 程序调试方法和装置、存储介质及电子装置 | |
CN104796451B (zh) | 用于互联网应用的数据处理方法和装置 | |
CN110781084B (zh) | 卡顿识别参数确定方法和装置、存储介质及电子装置 | |
CN105320555B (zh) | 在终端上执行任务的方法及装置 | |
CN106294146B (zh) | 参数替换测试方法及装置 | |
CN108710514A (zh) | 对象跳转控制方法和装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |