CN116010232A - 游戏测试方法及相关装置 - Google Patents
游戏测试方法及相关装置 Download PDFInfo
- Publication number
- CN116010232A CN116010232A CN202111231952.0A CN202111231952A CN116010232A CN 116010232 A CN116010232 A CN 116010232A CN 202111231952 A CN202111231952 A CN 202111231952A CN 116010232 A CN116010232 A CN 116010232A
- Authority
- CN
- China
- Prior art keywords
- game
- data packet
- image data
- attribute field
- mirror image
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请的实施例提供了一种游戏测试方法及相关装置,该方法包括:在游戏运行时对游戏进行录制,以获取与数据包对应的镜像数据包,其中,所述数据包是所述游戏从服务端接收到的,所述游戏根据所述数据包进行响应;将所述镜像数据包保存至本地文件中;通过所述游戏对所述本地文件中的所述镜像数据包进行回放,以使所述游戏根据所述镜像数据包进行响应;在回放过程中对所述游戏进行测试。本申请实施例的技术方案可以准确、精细地模拟真人进行自动化测试,在需要多真人测试的场景下能显著减少人力投入,并提高测试效率;同时,整个方案不需要对客户端和后台做任何修改,能快速覆盖新场景测试;另外,方案适用于PVE等各种游戏模式,通用性和易用性强。
Description
技术领域
本申请涉及软件测试技术领域,具体而言,涉及一种游戏测试方法及相关装置。
背景技术
当前,在对游戏进行测试时,需要针对每个游戏场景单独设计和开发相应的游戏测试逻辑,不仅需要投入大量的人力成本,而且通用性较差,无法快速覆盖对新场景的测试,也不适用于某些特定的游戏模式,导致测试效率十分低下。
发明内容
本申请的实施例提供了一种游戏测试方法及相关装置,进而至少在一定程度上可以降低测试成本并提高测试效率和测试的通用性。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种游戏测试方法,所述方法包括:在游戏运行时对游戏进行录制,以获取与数据包对应的镜像数据包,其中,所述数据包是所述游戏从服务端接收到的,所述游戏根据所述数据包进行响应;将所述镜像数据包保存至本地文件中;通过所述游戏对所述本地文件中的所述镜像数据包进行回放,以使所述游戏根据所述镜像数据包进行响应;在回放过程中对所述游戏进行测试。
根据本申请实施例的一个方面,提供了一种游戏测试装置,所述装置包括:录制单元,用于在游戏运行时对游戏进行录制,以获取与数据包对应的镜像数据包,其中,所述数据包是所述游戏从服务端接收到的,所述游戏根据所述数据包进行响应;保存单元,用于将所述镜像数据包保存至本地文件中;回放单元,用于通过所述游戏对所述本地文件中的所述镜像数据包进行回放,以使所述游戏根据所述镜像数据包进行响应;测试单元,用于在回放过程中对所述游戏进行测试。
在本申请的一些实施例中,基于前述方案,所述录制单元配置为:在游戏运行时根据接收到的第一管理员指令对游戏进行录制;在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,所述回放单元还用于:根据接收到的第二管理员指令读取所述本地文件,得到所述镜像数据包。
在本申请的一些实施例中,基于前述方案,所述保存单元配置为:根据接收到的第三管理员指令,停止对所述游戏进行录制,并将所述镜像数据包保存至本地文件中。
在本申请的一些实施例中,基于前述方案,所述回放单元配置为:根据接收到的第二管理员指令停止接收来自所述服务端的数据包,并读取所述本地文件,得到所述镜像数据包。
在本申请的一些实施例中,基于前述方案,所述数据包为指定协议下的数据包,在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,所述回放单元还用于:获取所述游戏中协议对象的属性字段,作为第一属性字段,并将所述第一属性字段保存至所述本地文件中;所述回放单元配置为:读取所述本地文件,得到所述第一属性字段;获取当前版本游戏的属性字段,作为第二属性字段;将所述第一属性字段和所述第二属性字段进行对比,确定所述第二属性字段是否包含新增属性字段,其中,所述新增属性字段为与所述第一属性字段不相同的属性字段;在通过所述当前版本游戏对所述镜像数据包进行回放时,根据所述第二属性字段中包含新增属性字段,向所述当前版本游戏中输入所述新增属性字段对应的预定属性值。
在本申请的一些实施例中,基于前述方案,所述回放单元配置为:通过反射机制获取所述游戏中协议对象的属性字段,作为第一属性字段;通过反射机制获取当前版本游戏的属性字段,作为第二属性字段。
在本申请的一些实施例中,基于前述方案,所述保存单元配置为:将所述镜像数据包保存至内存中;从所述内存中取出所述镜像数据包,并将所述镜像数据包保存至本地文件中;在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,所述回放单元还用于:将所述本地文件读取到内存中,得到所述镜像数据包。
在本申请的一些实施例中,基于前述方案,所述保存单元配置为:对所述镜像数据包进行序列化,以保存至本地文件中;在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,所述回放单元还用于:对所述本地文件进行反序列化,得到所述镜像数据包。
在本申请的一些实施例中,基于前述方案,所述游戏为游戏客户端或者游戏引擎的编辑器环境。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的游戏测试方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的游戏测试方法。
在本申请的一些实施例所提供的技术方案中,通过在游戏运行时以镜像方式获得并保存游戏所接收到的数据包,不影响游戏的正常运行;当一局游戏结束之后,通过游戏对镜像数据包进行回放,在回放过程中对游戏进行测试即可。因此,本申请实施例的技术方案是对真实游戏中的数据包进行录制的,进而在测试时也是基于实际场景下的数据包进行测试,可以准确、精细地模拟真人进行自动化测试,在需要多真人测试的场景下能显著减少人力投入,并可以提高测试效率;同时,整个方案不需要对客户端和后台做出任何修改,能快速覆盖新场景测试;另外,此方案适用于PVE等传统测试方式无法适用的游戏模式,而且实现简单,通用性和易用性较强。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本申请实施例的技术方案的示例性***架构的示意图;
图2示出了根据本申请的一个实施例的游戏测试方法的流程图;
图3示出了根据本申请的一个实施例的图2中步骤250之前步骤以及步骤210的细节的流程图;
图4示出了根据本申请的一个实施例的图3中步骤220的细节的流程图;
图5示出了根据本申请的一个实施例的应用游戏测试方法的流程示意图;
图6示出了根据本申请的一个实施例的录制架构的示意图;
图7示出了根据本申请的一个实施例的回放架构的示意图;
图8示出了根据本申请的一个实施例的图2中步骤250之前步骤以及步骤250的细节的流程图;
图9示出了根据本申请的一个实施例的游戏测试装置的框图;
图10示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
游戏测试是完成一个游戏项目不可缺少的环节,无论是PC端的游戏还是移动设备端的游戏均需要进行测试,并通过测试后才能上线。在相关技术中,存在下列游戏测试的方案:
1、基于行为树的AI(Artificial Intelligence,人工智能):开发人员设计一套不同于游戏逻辑的完整的AI行为树代码,运行在游戏后台,并向前端同步AI的状态信息。这个方案只用在单局的非主角色机器人上,用来和主角色进行交互,不适合用在主角色身上。
该方案至少存在以下缺点:
(1)实现复杂,整个逻辑独立于游戏逻辑,需要重新设计和实现。
(2)运行在后台,独立于客户端,客户端无法使用这套框架。
(3)这套框架直接编译在版本中,修改成本很高。
2、基于GAutomator的坐标打点自动化:这是应用比较广泛的FPS First-personShooting,第一人称射击)游戏的局内自动化方案,基于unity自动化组件GAutomator开发,局内设定主角色在行走中的坐标点,坐标点串联成一条行走路径,并实现在行走过程中的战斗和避障等逻辑。这个方案需要二次封装游戏接口,如行走和避障、检测敌人和射击等行为逻辑,封装成接口供GAutomator调用,从而实现局内自动化。
该方案则至少存在以下缺点:
(1)行走和战斗等逻辑都要自定义开发实现,局内操作很难精细化。
(2)执行效率较低,和真人操作差异很大,不适合客户端性能测试。
(3)不利于PVE等游戏模式使用。
为此,本申请首先提供了一种游戏测试方法。本申请实施例提供的游戏测试方法可以克服上述缺陷。本申请实施例提供的游戏测试方法不仅可以对游戏实现更加精细和准确地测试,不需要额外实现行走和战斗逻辑,也解决了坐标打点自动化方案不适用于PVE等游戏模式的问题,通用性强,同时,方案时执行和真人测试一样,测试效果能够媲美真人测试,适用于客户端性能测试。
图1示出了可以应用本申请实施例的技术方案的示例性***架构的示意图。
如图1所示,***架构可以包括移动设备(如图1中所示第一移动设备101、第二移动设备102和第三移动设备103)、个人计算机104和云端105。各移动设备与个人计算机104之间,个人计算机104与云端105之间均通过通信链路相连接,通过通信链路可以进行数据传输。在本申请实施例中,移动设备为本申请提供的一种游戏测试方法的执行终端,且移动设备是可以由游戏的开发人员或测试人员使用的,各移动设备的型号可以相同,也可以不同。当本申请提供的游戏测试方法应用于图1所示的***架构中时,一个过程可以是这样的:首先,测试人员在至少一个移动设备安装需要测试的游戏的客户端程序,该客户端程序中嵌入了能够实现本申请实施例提供的游戏测试方法的程序代码;接着,测试人员打开游戏的客户端程序,进入单局游戏,客户端程序根据在其中嵌入的程序代码对游戏进行录制,以镜像的方式获取客户端程序在运行时获得的数据包,并将数据包保存至本地;然后,在单局游戏结束后,结束录制;随后,嵌入的程序代码可以使客户端程序对数据包进行回放操作,在此过程中,对客户端程序进行测试,个人计算机104上的测试程序可以获得由移动设备发送的测试结果,个人计算机104可以对测试结果进行显示;最后,个人计算机104还可以对各移动设备上报的测试结果进行统计、分析等后续操作。
在本申请的一个实施例中,测试人员在游戏的客户端程序中输入开启录制的指令之后,客户端程序开始进行录制;测试人员在游戏的客户端程序中输入开始回放的指令之后,客户端程序开始进行回放操作。
在本申请的一个实施例中,在单局游戏结束后,结束录制也是客户端程序根据测试人员输入的结束录制的指令而进行的。
在本申请的一个实施例中,各移动设备与个人计算机104的连接方式为WIFI或者USB(Universal Serial Bus,通用串行总线)。
在本申请的一个实施例中,客户端程序获得的数据包是先被保存至内存中,再保存至本地文件中。
应该理解,图1中的移动设备和个人计算机的数目仅仅是示意性的。根据实现需要,可以具有任意数目的移动设备和个人计算机。比如个人计算机104可以是多个计算机组成的计算机集群等。
需要说明的是,图1示出的仅为本申请的一个实施例,虽然在图1实施例中测试结果是由移动设备发送至个人计算机104的,但在本申请的其他实施例中,还可以直接在移动设备上安装相应的测试程序,并通过测试程序的显示界面直接在移动设备上显示测试结果;虽然在图1实施例中移动设备为智能手机,但在本申请的其他实施例中,移动设备还可以是平板电脑、智能手表、游戏机等其他类型的终端设备,移动设备甚至还可以是笔记本电脑。虽然在图1实施例中,测试结果是发送至个人计算机104的,但在本申请的其他实施例中,还可以向其他类型的终端设备(如服务器)发送测试结果,甚至还可以不发送测试结果,直接由测试人员观察测试结果。本申请实施例对此不作任何限定,本申请的保护范围也不应因此而受到任何限制。
并且,易于理解,本申请实施例所提供的游戏测试方法一般由移动设备执行,相应地,游戏测试装置一般设置于移动设备中。但是,在本申请的其它实施例中,台式计算机等固定式设备也可以与移动设备具有相似的功能,从而执行本申请实施例所提供的游戏测试的方案。
可以通过服务器对基于本申请实施例提供的游戏测试方法获得的测试结果进行汇总。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例可以应用于云计算技术中,具体地,可以通过云计算技术来收集对各个终端设备上的游戏进行测试获得的测试结果。云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用***能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务))平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作***)、存储设备、网络设备。
按照逻辑功能划分,在IaaS(Infrastructure as a Service,基础设施即服务)层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、***器等。一般来说,SaaS和PaaS相对于IaaS是上层。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2示出了根据本申请的一个实施例的游戏测试方法的流程图,该游戏测试方法可以由具有运算、存储及显示功能的设备来执行,比如可以是图1中所示的移动设备。参照图2所示,该游戏测试方法至少可以包括以下步骤:
在步骤210中,在游戏运行时对游戏进行录制,以获取与数据包对应的镜像数据包,其中,数据包是游戏从服务端接收到的,游戏根据数据包进行响应。
此处的游戏可以是基于各种游戏引擎开发的游戏,比如可以是基于Unity游戏引擎开发的游戏。Unity是一套跨平台的游戏引擎,可用于开发Windows、MacOS、Linux平台的单机游戏,也可用于开发使用ios、Android等***的移动设备端的游戏。游戏根据数据包进行响应是指画面的加载、游戏对象的显示等游戏的运行流程是基于数据包进行的。
游戏运行时,测试人员可以操作游戏,进入特定的游戏模式或者游戏场景,比如进入特定的一局游戏,进而实现对游戏与服务端交互时获得的数据包的录制。
在本申请的一个实施例中,游戏为游戏客户端或者游戏引擎的编辑器环境。
具体地,当游戏引擎为Unity时,游戏可以为Unity编辑器环境。游戏客户端可以是手机上运行的游戏应用。
服务端可以是游戏服务器,游戏可以是任何能够与服务端相交互的网络游戏。比如,根据游戏所部署的终端进行区分,此处的游戏既可以是PC(Personal Computer,个人计算机)端的游戏,还是***;根据游戏的类型进行划分,此处的游戏可以是FPS(First-person Shooting,第一人称射击)类游戏等。游戏中可以包含一种或多种游戏模式,比如可以包含PVE(player versus environment,玩家对战环境)模式。在这里,FPS类游戏是第一人称射击类游戏,在这类游戏内以玩家的主观视角来进行射击和操作,是具有很强的沉浸效果的游戏;PVE是一种游戏模式,区别于多人对战模式(PVP),PVE模式偏向于做任务通关,此游戏模式下关卡较多,每个关卡有固定的通关条件。
在本申请的一个实施例中,游戏测试方法是通过插件的方式实现的。
具体地,可以在需要测试的游戏所在的终端安装一个插件,通过插件执行本申请实施例提供的游戏测试方法。在本申请实施例中,插件可以方便地部署在各个需要进行游戏测试的终端上,便于应用到对其他游戏的测试中,大大提高了本申请实施例提供的方案的通用性。
镜像数据包是所对应的数据包的镜像,即一个数据包和与之对应的镜像数据包是相同的数据包。
可以在游戏中设置一个录制模块,在对游戏进行录制时,游戏从服务端不断接收数据包,同时向录制模块镜像传输对应的镜像数据包。
当然,在本申请的其他实施例中,录制模块还可以设置在游戏之外并可与游戏进行通信的其他位置。
在步骤220中,将镜像数据包保存至本地文件中。
本地文件是用来保存镜像数据包和对镜像数据包进行回放的原始数据文件。本地文件可以是本地游戏目录下的Bin文件,也可以是其他各种能够通过反序列化的方式读取的文件。
当游戏为PC端的游戏时,本地文件可以存储在硬盘中。
在本申请的一个实施例中,数据包是对游戏从服务端接收到的原始数据包进行解析得到的。
游戏和服务端之间以一定的网络协议进行通信,两者之间传输的原始数据包是通过封装生成的,所以需要通过解析得到有效的数据包,当对包含镜像数据包的本地文件进行回放时,就无需进行原始数据包的解析操作了。可以在游戏中设置一个能够解析网路协议包的网路模块,这里的网路协议包可以是原始数据包。
当然,在本申请的其他实施例中,数据包可以就是游戏从服务端接收到的原始数据包。由于游戏中可以设置网路模块,因而,即使将原始数据包对应的镜像数据包保存至本地文件中,也可以实现对本地文件的正常解析。
在步骤250中,通过游戏对本地文件中的镜像数据包进行回放,以使游戏根据镜像数据包进行响应。
通过游戏对镜像数据包进行回放是指根据镜像数据包重新执行游戏的流程。
对本地文件进行读取操作,可以得到镜像数据包。如前所述,游戏根据数据包进行响应,而镜像数据包和数据包是相同的,因此,游戏也可以根据镜像数据包进行响应。游戏进行响应比如可以进行行走、战斗等操作。
在本申请的一个实施例中,将镜像数据包保存至本地文件中,包括:将镜像数据包保存至内存中;从内存中取出镜像数据包,并将镜像数据包保存至本地文件中;在通过游戏对本地文件中的镜像数据包进行回放之前,还包括:将本地文件读取到内存中,得到镜像数据包。
在本申请实施例中,通过以内存为中介进行镜像数据包的保存及读取操作,大大提高了对镜像数据包的存取速度。
在本申请的一个实施例中,将镜像数据包保存至本地文件中,包括:对镜像数据包进行序列化,以保存至本地文件中;在通过游戏对本地文件中的镜像数据包进行回放之前,还包括:对本地文件进行反序列化,得到镜像数据包。
在本申请实施例中,通过以序列化和反序列化的方式对镜像数据包进行存取操作,简化了对镜像数据包的处理过程。
在步骤260中,在回放过程中对游戏进行测试。
回放过程即为游戏的运行和操作过程。在回放过程中可以对游戏进行自动化性能测试、自动化冒烟测试、自动化局内逻辑功能测试等各种类型的测试。
读取本地文件以及对镜像数据包进行回放的时间可以与对游戏进行录制的时间之间间隔较长时间。比如,可以在第一天对游戏进行录制,并在第二天对镜像数据包进行回放。
图3示出了根据本申请的一个实施例的图2中步骤250之前步骤以及步骤210的细节的流程图。如图3所示,包括以下步骤:
在步骤210'中,在游戏运行时根据接收到的第一管理员指令对游戏进行录制。
测试人员在游戏中输入第一管理员指令,可以触发游戏执行对游戏的录制操作。
在步骤230中,根据接收到的第二管理员指令读取本地文件,得到镜像数据包。
测试人员在游戏中输入第二管理员指令,可以触发游戏执行读取本地文件以及根据镜像数据包进行的操作。
在本申请的一个实施例中,根据接收到的第二管理员指令读取本地文件,得到镜像数据包,包括:根据接收到的第二管理员指令停止接收来自服务端的数据包,并读取本地文件,得到镜像数据包。
由于在得到镜像数据包之后,游戏是对镜像数据包进行回放的;此时若游戏继续接收来自服务端的数据包,则可能会使游戏运行错误。在本申请实施例中,通过在读取本地文件之前停止接收来自服务端的数据包,保证了游戏回放可以正常有序进行。
图4示出了根据本申请的一个实施例的图3中步骤220的细节的流程图。请参照如图4所示,步骤220具体可以包括以下步骤:
在步骤220'中,根据接收到的第三管理员指令,停止对游戏进行录制,并将镜像数据包保存至本地文件中。
测试人员在游戏中输入第三管理员指令,可以触发结束对游戏的录制操作。
第一管理员指令、第二管理员指令以及第三管理员指令可以是不同的管理员指令。此处的管理员指令即为GM(Game Master,***)指令,其可以通过游戏中的人机交互界面进行输入,比如,游戏中可以设置游戏大厅,游戏大厅中包含聊天框,可以通过聊天框输入GM指令,进而使游戏接收到GM指令,游戏可以根据GM指令自动识别并执行相应的操作。
GM指令是游戏客户端代码实现的一种调试命令,用来创建测试所需要的条件,比如快速添加机器人、快速增加金币、开启或关闭某种调试开关等。GM指令是游戏管理人员才能够了解和输入的指令,而无论是游戏开发人员还是游戏测试人员也均为游戏管理人员。本申请实施例中,通过根据GM指令触发对游戏的录制、停止对游戏的录制以及对本地文件的回放等操作,可以在不影响游戏本身功能的同时更灵活地对游戏进行测试,同时由于普通人无法获得GM指令,因此还可以保证使用这些功能的安全性。
虽然在上述实施例是通过GM指令触发对游戏的录制、停止对游戏的录制以及对本地文件的回放等操作的,但这些操作还可以根据设置的程序以各种策略进行触发,还可以通过GM指令与程序相结合的方式进行触发。比如,可以在指定时刻触发对游戏的录制,在录制指定时长之后,停止对游戏的录制,并在录制结束之后,自动对本地文件进行回放。
在本申请的一个实施例中,在游戏运行时对游戏进行录制,包括:在一局游戏开始前根据接收到的第一管理员指令对游戏进行录制;将镜像数据包保存至本地文件中,包括:当本局游戏结束时,停止对游戏进行录制,并将镜像数据包保存至本地文件中。
具体地,在PVE模式的游戏中,一局游戏可以是游戏中的一关,游戏中可以设置匹配机制,在匹配机制下,多玩家可以通过进行匹配共同进入一局游戏。在本申请实施例中,通过以局为单位对游戏进行录制,保证了游戏测试的灵活性。
虽然在上述实施例中,将镜像数据包保存至本地文件中是在停止对游戏进行录制之后才进行的,但在本申请的其他实施例中,还可以通过其他方式进行镜像数据包的保存。比如可以每当获取到一个镜像数据包就进行保存,再比如,可以每当获取到的镜像数据包的数量达到指定数量就进行保存,或者每当获取到的镜像数据包的大小达到指定文件大小就进行保存等。
图5示出了根据本申请的一个实施例的应用游戏测试方法的流程示意图。如图5所示,具体可以包括以下步骤:
1、启动游戏。
测试人员打开游戏的客户端程序。
2、根据GM指令,开启录制。
游戏的客户端程序根据GM指令发起录制流程。
3、进入单局。
通过在游戏内匹配,进入单局游戏。此时网路模块会获得数据包,并向录制模块镜像传输一份数据包。
4、局内战斗。
游戏进入单局后正常游戏,此时因为录制模块是镜像传输的数据包,所以不会影响游戏主线程执行。
5、退出单局。
单局游戏结束,退出。
6、根据GM指令,结束录制。
再次输入GM指令,游戏的客户端程序根据GM指令停止录制流程,录制模块自动将数据包保存到本地的bin文件中。
7、根据GM指令,回放bin文件。
对bin文件中数据包进行回放,此时,会重新从进入单局的步骤开始进入游戏流程。
8、结束。
图6示出了根据本申请的一个实施例的录制架构的示意图。请参见图6所示,首先,游戏客户端的主线程运行,通过GameNetClient.Tick进入主线程中的Tick,游戏客户端的网络模块会循环监听协议事件。接着,通过RecordState.Record接收到用于启动录制流程的GM指令;然后,通过GameNetClient.OnDataReceived接收来自服务器的协议包,在接收到来自服务器的协议包后,会解析这个协议包,得到协议数据packData,同时通过RecordManager.Record开辟一段内存,把协议数据packData保存到内存数组中,再把这个内存数据保存到bin文件(一个手机本地的文件)中,接着就可以回放bin文件了。在此过程中,由于协议数据仅仅是二次转发,游戏主线程仍然可以继续处理协议包,所以录制过程不会对游戏主线程产生影响。
图7示出了根据本申请的一个实施例的回放架构的示意图。请参见图7所示,回放也在客户端实现,在游戏客户端的主线程运行过程中,其网路模块循环监听协议事件。当通过RecordState.Replay使用GM指令开启回放功能时,游戏客户端的网路模块会停止接收来自服务器的协议包。同时游戏客户端会通过RecordManager.TickReplay读取在录制阶段保存下来的bin文件,把协议数据读到内存中,然后在主线程的Tick中不断地***这些协议数据,模拟游戏客户端接收到服务器协议包的流程,并调用协议响应事件。这样,就可以把原来录下来的协议包完整地在游戏客户端回放出来。
图8示出了根据本申请的一个实施例的图2中步骤250之前步骤以及步骤250的细节的流程图。在图8实施例中,数据包为指定协议下的数据包,这里的协议为了游戏客户端和后台服务器进行数据交互和通信而实现的一种通信方式,在协议中传输用户的移动位置、武器装备、血量和生存状态等信息。如图8所示,可以包括以下步骤:
在步骤240中,获取游戏中协议对象的属性字段,作为第一属性字段,并将第一属性字段保存至本地文件中。
在本申请的其他实施例中,还可以将第一属性字段保存至其他位置。
图2实施例中步骤250具体可以包括以下步骤:
在步骤251中,读取本地文件,得到第一属性字段。
由于第一属性字段被保存至本地文件中,因此,可以通过读取本地文件来获得第一属性字段。第一属性字段可以包括多个属性字段的一类属性字段。
在步骤252中,获取当前版本游戏的属性字段,作为第二属性字段。
在本申请的一个实施例中,获取游戏中协议对象的属性字段,作为第一属性字段,包括:通过反射机制获取游戏中协议对象的属性字段,作为第一属性字段;获取当前版本游戏的属性字段,作为第二属性字段,包括:通过反射机制获取当前版本游戏的属性字段,作为第二属性字段。
第二属性字段与第一属性字段类似,也可以包括多个属性字段,其中可以包括第一属性字段。
具体地,可以通过C#语言提供的反射机制来获取属性字段。C#语言提供的反射机制是C#编程语言的一种技术框架,通过反射机制,可以获取程序代码内部的接口、类、方法、字段、属性等信息,还能动态创建出类的实例并执行其中的方法。本申请实施例是通过反射机制获取对象的属性。
在步骤253中,将第一属性字段和第二属性字段进行对比,确定第二属性字段是否包含新增属性字段,其中,新增属性字段为与第一属性字段不相同的属性字段。
新增属性字段对应的预定属性值可以是0,也可以是其他各种不影响游戏测试的属性值。
在步骤254中,在通过当前版本游戏对镜像数据包进行回放时,根据第二属性字段中包含新增属性字段,向当前版本游戏中输入新增属性字段对应的预定属性值。
当第二属性字段中不包含新增属性字段时,不用向当前版本游戏中输入新增属性字段对应的预定属性值,即不需要执行步骤254。
当前版本游戏和进行游戏录制时的游戏的版本可能是不同的,比如协议会发生变化,协议字段也可能发生改变,此时,若只根据本地文件进行回放,容易导致因解析协议出错而出现客户端卡死或崩溃的情况;在本申请实施例中,通过在对镜像数据包进行回放之前,提前判断当前版本游戏的属性字段中是否包含新增字段,在当前版本游戏的属性字段中包含新增字段的情况下,向当前版本游戏传输相应的属性值;避免了因游戏版本问题导致的解析失败的情况,拓展了整体方案的应用场景,也提高了方案的兼容性。
在本申请的一个实施例中,在读取本地文件,得到第一属性字段之前,所述方法还包括:获取对游戏进行录制时游戏的第一版本号和当前版本游戏的第二版本号;判断第一版本号和第二版本号是否一致,其中,在第一版本号和第二版本号不一致的情况下,执行读取本地文件得到第一属性字段的步骤及之后的步骤。
游戏的版本号可以从本地日志中获取。游戏的第一版本号可以在对游戏进行录制时保存至本地文件中,当然,在本申请的其他实施例中,游戏的第一版本号还可以在其他时刻保存在其他位置中。
由于属性字段可能比较多,因此属性字段的获取和对比是比较消耗计算资源的。在本申请实施例中,通过在获取第一属性字段和第二属性字段之前,先判断当前版本游戏的版本号与进行游戏录制时游戏的版本号是否一致,只有在两者不一致的情况下,才从本地文件及当前版本游戏中获取属性字段,并进行属性字段的比对,因此可以在当前版本游戏的版本号与进行游戏录制时游戏的版本号一致的情况下直接跳过属性字段的获取和对比环节,在一定程度上提高了计算效率,节约了计算开销。
综上所述,根据本申请实施例提供的游戏测试方法,可以应用于基于unity的***项目中,并产生了以下效果:
(1)实现手机环境的模拟真人操作,在需要多真人测试的场景下能减少人力投入;
(2)能对游戏局内场景进行真人冒烟自动化测试和客户端性能测试,提高测试效率;
(3)快速覆盖新场景测试,不需要对客户端和后台做出任何修改;
(4)适用于PVE等游戏模式,测试范围更广,效率更高;
(5)当前应用在国服使命召唤手游的客户端性能测试和每日冒烟测试场景中,至少可以节省6人日每版本。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的游戏测试方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的游戏测试方法的实施例。
图9示出了根据本申请的一个实施例的游戏测试装置的框图。
参照图9所示,根据本申请的一个实施例的游戏测试装置900,包括:录制单元910、保存单元920、回放单元930和测试单元940。
其中,录制单元910用于在游戏运行时对游戏进行录制,以获取与数据包对应的镜像数据包,其中,所述数据包是所述游戏从服务端接收到的,所述游戏根据所述数据包进行响应;保存单元920用于将所述镜像数据包保存至本地文件中;回放单元930用于通过所述游戏对所述本地文件中的所述镜像数据包进行回放,以使所述游戏根据所述镜像数据包进行响应;测试单元940用于在回放过程中对所述游戏进行测试。
在本申请的一些实施例中,基于前述方案,录制单元910配置为:在游戏运行时根据接收到的第一管理员指令对游戏进行录制;在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,回放单元930还用于:根据接收到的第二管理员指令读取所述本地文件,得到所述镜像数据包。
在本申请的一些实施例中,基于前述方案,保存单元920配置为:根据接收到的第三管理员指令,停止对所述游戏进行录制,并将所述镜像数据包保存至本地文件中。
在本申请的一些实施例中,基于前述方案,回放单元930配置为:根据接收到的第二管理员指令停止接收来自所述服务端的数据包,并读取所述本地文件,得到所述镜像数据包。
在本申请的一些实施例中,基于前述方案,所述数据包为指定协议下的数据包,在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,回放单元930还用于:获取所述游戏中协议对象的属性字段,作为第一属性字段,并将所述第一属性字段保存至所述本地文件中;回放单元930配置为:读取所述本地文件,得到所述第一属性字段;获取当前版本游戏的属性字段,作为第二属性字段;将所述第一属性字段和所述第二属性字段进行对比,确定所述第二属性字段是否包含新增属性字段,其中,所述新增属性字段为与所述第一属性字段不相同的属性字段;在通过所述当前版本游戏对所述镜像数据包进行回放时,根据所述第二属性字段中包含新增属性字段,向所述当前版本游戏中输入所述新增属性字段对应的预定属性值。
在本申请的一些实施例中,基于前述方案,回放单元930配置为:通过反射机制获取所述游戏中协议对象的属性字段,作为第一属性字段;通过反射机制获取当前版本游戏的属性字段,作为第二属性字段。
在本申请的一些实施例中,基于前述方案,保存单元920配置为:将所述镜像数据包保存至内存中;从所述内存中取出所述镜像数据包,并将所述镜像数据包保存至本地文件中;在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,回放单元930还用于:将所述本地文件读取到内存中,得到所述镜像数据包。
在本申请的一些实施例中,基于前述方案,保存单元920配置为:对所述镜像数据包进行序列化,以保存至本地文件中;在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,回放单元930还用于:对所述本地文件进行反序列化,得到所述镜像数据包。
在本申请的一些实施例中,基于前述方案,所述游戏为游戏客户端或者游戏引擎的编辑器环境。
图10示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
需要说明的是,图10示出的电子设备的计算机***1000仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图10所示,计算机***1000包括中央处理单元(Central Processing Unit,CPU)1001,其可以根据存储在只读存储器(Read-Only Memory,ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(Random Access Memory,RAM)1003中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1003中,还存储有***操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(Input/Output,I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(CPU)1001执行时,执行本申请的***中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种游戏测试方法,其特征在于,所述方法包括:
在游戏运行时对游戏进行录制,以获取与数据包对应的镜像数据包,其中,所述数据包是所述游戏从服务端接收到的,所述游戏根据所述数据包进行响应;
将所述镜像数据包保存至本地文件中;
通过所述游戏对所述本地文件中的所述镜像数据包进行回放,以使所述游戏根据所述镜像数据包进行响应;
在回放过程中对所述游戏进行测试。
2.根据权利要求1所述的游戏测试方法,其特征在于,所述在游戏运行时对游戏进行录制,包括:
在游戏运行时根据接收到的第一管理员指令对游戏进行录制;
在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,所述方法还包括:
根据接收到的第二管理员指令读取所述本地文件,得到所述镜像数据包。
3.根据权利要求2所述的游戏测试方法,其特征在于,所述将所述镜像数据包保存至本地文件中,包括:
根据接收到的第三管理员指令,停止对所述游戏进行录制,并将所述镜像数据包保存至本地文件中。
4.根据权利要求2所述的游戏测试方法,其特征在于,所述根据接收到的第二管理员指令读取所述本地文件,得到所述镜像数据包,包括:
根据接收到的第二管理员指令停止接收来自所述服务端的数据包,并读取所述本地文件,得到所述镜像数据包。
5.根据权利要求1所述的游戏测试方法,其特征在于,所述数据包为指定协议下的数据包,在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,所述方法还包括:
获取所述游戏中协议对象的属性字段,作为第一属性字段,并将所述第一属性字段保存至所述本地文件中;
所述通过所述游戏对所述本地文件中的所述镜像数据包进行回放,包括:
读取所述本地文件,得到所述第一属性字段;
获取当前版本游戏的属性字段,作为第二属性字段;
将所述第一属性字段和所述第二属性字段进行对比,确定所述第二属性字段是否包含新增属性字段,其中,所述新增属性字段为与所述第一属性字段不相同的属性字段;
在通过所述当前版本游戏对所述镜像数据包进行回放时,根据所述第二属性字段中包含新增属性字段,向所述当前版本游戏中输入所述新增属性字段对应的预定属性值。
6.根据权利要求5所述的游戏测试方法,其特征在于,所述获取所述游戏中协议对象的属性字段,作为第一属性字段,包括:
通过反射机制获取所述游戏中协议对象的属性字段,作为第一属性字段;
所述获取当前版本游戏的属性字段,作为第二属性字段,包括:
通过反射机制获取当前版本游戏的属性字段,作为第二属性字段。
7.根据权利要求1所述的游戏测试方法,其特征在于,所述将所述镜像数据包保存至本地文件中,包括:
将所述镜像数据包保存至内存中;
从所述内存中取出所述镜像数据包,并将所述镜像数据包保存至本地文件中;
在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,所述方法还包括:
将所述本地文件读取到内存中,得到所述镜像数据包。
8.根据权利要求1所述的游戏测试方法,其特征在于,所述将所述镜像数据包保存至本地文件中,包括:
对所述镜像数据包进行序列化,以保存至本地文件中;
在通过所述游戏对所述本地文件中的所述镜像数据包进行回放之前,所述方法还包括:
对所述本地文件进行反序列化,得到所述镜像数据包。
9.根据权利要求1-8任意一项所述的游戏测试方法,其特征在于,所述游戏为游戏客户端或者游戏引擎的编辑器环境。
10.一种游戏测试装置,其特征在于,所述装置包括:
录制单元,用于在游戏运行时对游戏进行录制,以获取与数据包对应的镜像数据包,其中,所述数据包是所述游戏从服务端接收到的,所述游戏根据所述数据包进行响应;
保存单元,用于将所述镜像数据包保存至本地文件中;
回放单元,用于通过所述游戏对所述本地文件中的所述镜像数据包进行回放,以使所述游戏根据所述镜像数据包进行响应;
测试单元,用于在回放过程中对所述游戏进行测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111231952.0A CN116010232A (zh) | 2021-10-21 | 2021-10-21 | 游戏测试方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111231952.0A CN116010232A (zh) | 2021-10-21 | 2021-10-21 | 游戏测试方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010232A true CN116010232A (zh) | 2023-04-25 |
Family
ID=86036005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111231952.0A Pending CN116010232A (zh) | 2021-10-21 | 2021-10-21 | 游戏测试方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010232A (zh) |
-
2021
- 2021-10-21 CN CN202111231952.0A patent/CN116010232A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10282280B1 (en) | Automated scalable video game testing system | |
US10628294B2 (en) | Mock services for software infrastructures | |
US10016689B2 (en) | Synchronized video with in game telemetry | |
US11455231B2 (en) | Testing as a service for cloud gaming | |
CN110781085B (zh) | 一种游戏自动化测试方法、装置、终端和计算机存储介质 | |
US9104814B1 (en) | System and method for integrated testing of a virtual space | |
CN111773665B (zh) | 基于游戏平台的数据处理方法及平台、装置 | |
CN109408393B (zh) | 应用测试方法、装置及设备和计算机可读存储介质 | |
US20090198484A1 (en) | Scalable automated empirical testing of media files on media players | |
CN110013672B (zh) | 用于机器运行的游戏的自动化测试的方法、设备、装置以及计算机可读存储介质 | |
CN109966742B (zh) | 游戏运行中获取渲染性能数据的方法及装置 | |
CN112882930B (zh) | 自动化测试方法、装置、存储介质及电子设备 | |
CN111330280A (zh) | 游戏中的数据处理方法、装置、存储介质与电子设备 | |
CN114191822B (zh) | 一种测试方法、装置、计算机设备、存储介质和产品 | |
CN112214405A (zh) | 一种软件测试方法、装置、电子设备和可读存储介质 | |
CN114979029B (zh) | 一种虚拟机器人的控制方法、装置、设备及存储介质 | |
CN115510454A (zh) | 游戏测试方法、装置、电子设备及存储介质 | |
CN112546622A (zh) | 应用中实现游戏直播的方法、装置、存储介质及计算机设备 | |
CN114741695A (zh) | 一种恶意代码监控方法、装置、电子设备及存储介质 | |
CN110737900B (zh) | 网页功能测试方法及装置、服务器和计算机可读存储介质 | |
CN109985387B (zh) | 自动化测试方法和装置 | |
CN116010232A (zh) | 游戏测试方法及相关装置 | |
US10191722B1 (en) | Event synchronization for development computing system | |
US20240091643A1 (en) | Method and apparatus for controlling virtual objects in game, and electronic device and storage medium | |
US20140235358A1 (en) | Role clearing method, device and system for emulator game |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40085619 Country of ref document: HK |