游戏自动化测试方法及相关装置的制造方法

文档序号:10724796阅读:418来源:国知局
游戏自动化测试方法及相关装置的制造方法
【专利摘要】本发明实施例提供游戏自动化测试方法及相关装置。该方法包括:查找目标UI控件,确定目标UI控件在终端显示屏上的覆盖区域和当前顶点位置;根据当前顶点位置和覆盖区域,确定针对目标UI控件的操作事件;操作事件至少包括操作方式和在终端显示屏上的操作位置;通知终端执行操作事件,以实现对与操作位置对应的目标UI控件、采用操作方式进行操作。本发明实施例中的游戏自动化测试方法及相关装置可模拟人对游戏UI控件的触碰操作,进而实现在终端上操作游戏,对游戏进行自动化测试。
【专利说明】
游戏自动化测试方法及相关装置
技术领域
[0001]本发明涉及计算机应用技术领域,具体涉及游戏自动化测试方法及相关装置。
【背景技术】
[0002]目前市场上终端(例如PC机、智能终端)的种类非常之多,以安装有安卓操作系统的智能手机为例,其机型多达上千款,由于不同机型使用的硬件和软件都不一样,所以游戏在开发过程中以及上市之前都需要在主流机型上进行兼容性测试,以验证其能否正常运行。
[0003]传统测试方法是测试人员人工在不同的终端上操作游戏,这种测试方式耗费人力和时间。

【发明内容】

[0004]有鉴于此,本发明实施例提供一种游戏自动化测试方法及相关装置,以实现游戏的自动化测试,节省人力和时间。
[0005]为实现上述目的,本发明实施例提供如下技术方案:
[0006]—种游戏自动化测试方法,所述游戏自动化测试方法包括:
[0007]查找目标UI控件;
[0008]确定目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置;
[0009]根据所述当前顶点位置和覆盖区域,确定针对所述目标UI控件的操作事件;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;
[0010]通知所述终端执行所述操作事件,以实现对与所述操作位置对应的目标UI控件、采用所述操作方式进行操作。
[0011 ] 一种游戏自动化测试装置,所述游戏自动化测试装置包括自动化测试模块,所述自动化测试模块包括:
[0012]查找单元,用于查找目标用户界面UI控件;
[0013]第一确定单元,用于确定所述目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置;
[0014]操作事件确定单元,用于根据所述当前顶点位置和覆盖区域,确定针对所述目标UI控件的操作事件;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;
[0015]通讯单元,用于通知所述终端执行所述操作事件,以实现对与所述操作位置对应的目标UI控件、采用所述操作方式进行操作。
[0016]—种服务器,用于对终端的游戏进行自动化测试;所述服务器至少包括处理器、存储器,其中,所述存储器中存储有自动化测试脚本;
[0017]所述处理器通过运行所述自动化测试脚本,至少执行下述操作:
[0018]确定目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置;
[0019]根据所述当前顶点位置和覆盖区域,确定针对所述目标UI控件的操作事件;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;
[0020]通知所述终端执行所述操作事件,以实现对与所述操作位置对应的目标UI控件、采用所述操作方式进行操作。
[0021 ] 一种游戏自动化测试方法,应用于终端,所述游戏自动化测试方法包括:
[0022]接收来自服务器或游戏自动化测试装置的、指示执行操作事件的通知;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;所述操作方式和操作位置是由所述服务器或游戏自动化测试装置根据所述UI控件的当前顶点位置和覆盖区域确定的;
[0023]根据所述通知,执行所述操作事件,以实现对与所述操作位置对应的UI控件、采用确定出的操作方式进行操作。
[0024]一种终端,其特征在于,包括:
[0025]通信单元,用于接收来自服务器或游戏自动化测试装置的、指示执行操作事件的通知;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;其中,所述操作方式和操作位置是由所述服务器或游戏自动化测试装置根据所述UI控件的当前顶点位置和覆盖区域确定的;
[0026]执行单元,用于根据所述通知,执行所述操作事件,以实现对与所述操作位置对应的UI控件、采用确定出的操作方式进行操作。
[0027]—种游戏自动化测试系统,包括上述的终端,以及,上述的服务器,或上述的游戏自动化测试装置。
[0028]由于人对游戏中UI控件的触碰操作,实际是对终端显示屏上的坐标点(位置)的操作,例如,点击某个UI控件,其实是点击了与该UI控件对应的坐标点。而本发明实施例中的游戏自动化测试方法及相关装置,获取欲操作的UI控件(目标UI控件)在终端显示屏上的覆盖区域和当前顶点位置,并据此确定出针对目标UI控件的操作事件。随后,通知终端执行操作事件。
[0029]由于所确定出的操作事件中包含操作方式和在终端显示屏上的操作位置,因此可模拟人对游戏UI控件的操作,进而实现在终端上操作游戏,对游戏进行自动化测试。在此过程中,并不需要人工在不同的终端上操作游戏,因此可节省人力和时间。
[0030]同时,本发明实施例中的游戏自动化测试方法及相关装置,是以目标UI控件为对象,确定目标UI控件在终端显示屏上的覆盖区域和当前顶点位置,也即,获取的是目标UI控件实时的顶点位置,结合覆盖区域,可实时定位目标UI控件真正的位置所在,而不受随机的弹出窗口、分辨率不同等的影响,实现自动化适配。
【附图说明】
[0031]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0032]图1为本发明实施例提供的服务器或终端的计算机架构示例图;
[0033]图2为本发明实施例提供的服务器与终端交互示意图;
[0034]图3为本发明实施例提供的游戏当前界面及UI控件树示意图;
[0035]图4a、4b,5_10为本发明实施例提供的游戏自动化测试方法示例性流程图;
[0036]图11、12为本发明实施例提供的游戏自动化测试装置或服务器的示例性结构图;
[0037]图13为本发明实施例提供的终端(或终端上的游戏自动化测试装置)的示例性结构图。
【具体实施方式】
[0038]本发明可能使用的技术名词、简写或缩写如下:
[0039]手游:手机游戏,相对于运行在PC机上的游戏而言,主要是指运行在终端及平台上的游戏;
[0040]游戏兼容性测试:由于市场上终端的种类非常之多,以安装有安卓操作系统的智能手机为例,其机型多达上千款,由于不同机型使用的硬件和软件都不一样,所以游戏在开发过程中以及上市之前都需要在主流机型上进行兼容性测试,以验证其能否正常运行,这便是游戏兼容性测试;
[0041 ] Unity引擎:Unity引擎是用于创建三维游戏、建筑可视化等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。目前市面上100%的游戏使用unity引擎制作;
[0042]U1:用户界面;
[0043]UI控件:用户界面控件,例如,请参见图3,图3左侧为一游戏界面,在该界面上有两个UI控件,即“与微信好友玩”按钮和“与QQ好友玩”按钮。实际上,UI控件是与图右所示的UI控件树上的某一 GameObject(节点)相对应。每一 UI控件对应UI控件树上的一个节点。UI控件对应的GameOb j e c t的名称即为UI控件的控件名称。
[0044]例如,“与QQ好友玩”按钮对应的节点的路径为:〃/Boot0b j/⑶IManager/Form_Login/LoginContainer/pnlMobileLogin/btnGroup/btnQQ〃。
[0045]其中,“与QQ好友玩”的控件名称是tnQQ,其父亲节点名称为btnGroup,而btnGroup的父亲节点是pnlMobiIeLogin,以此类推。
[0046]NGUI:Next-Gen UI kit,NGUI是Unity引擎上一套功能强大的UI和事件传递框架;
[0047]UGU1:与NGUI类似,UGUI是Unity官方出品的一套UI和事件传递框架。可用于创建按钮、滑动栏等UI控件,处理按钮对应的点击事件等;
[0048]WeTest平台:云端手机管理系统,管理实验室几百台手机。通过WeTest平台能够获取某一部手机的屏幕转向、长宽、截图等服务;WeTest平台可包括多个云端服务器。
[0049]SDK:软件开发包;
[0050]ADB:Android Debug Bridge,Google提供,android开发工具之一。主要的作用是,提供电脑和智能终端之间交互服务。通过USB线,电脑上的软件能够直接访问智能终端,连接智能终端。
[0051]本发明提供应用于服务器的游戏自动化测试方法、应用于服务器的游戏自动化测试装置、应用于终端的游戏自动化测试方法、应用于终端的游戏自动化测试装置、服务器、终端及游戏自动化测试系统。
[0052]游戏自动化测试系统可包括服务器和终端,服务器具体可为本地服务器或云端服务器。本地服务器可连接一台终端,云端服务器则可连接多台终端,终端中安装有待测试的游戏。
[0053]上述终端可为PC端,也可为智能终端,例如手机、ipad等。
[0054]图1示出了上述服务器或终端的一种通用计算机系统结构。
[0055]上述计算机系统可包括总线、处理器101、存储器102、通信接口103、输入设备104和输出设备105。处理器101、存储器102、通信接口 103、输入设备104和输出设备105通过总线相互连接。其中:
[0056]总线可包括一通路,在计算机系统各个部件之间传送信息。
[0057]处理器101可以是通用处理器,例如通用中央处理器(CPU)、网络处理器(NetworkProcessor,简称NP)、微处理器等,也可以是特定应用集成电路(applicat1n-specificintegrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0058]处理器101可包括主处理器,还可包括基带芯片、调制解调器等。
[0059]存储器102中保存有执行本发明技术方案的程序或脚本,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。脚本则通常以文本(如ASCII)保存,只在被调用时进行解释或编译。
[0000] 更具体的,存储器102可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory ,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
[0061]输入设备104可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
[0062]输出设备105可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
[0063]通信接口103可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
[0064]图2示出了游戏自动化测试系统的一种示例性结构,包括服务器和终端。
[0065]需要说明的是,图2示出的游戏自动化测试系统仅为包含了一台终端和一台本地服务器的示例,不应理解为游戏自动化测试系统仅限于包含一台终端和一台服务器。
[0066]游戏自动化测试系统可包含多个云端服务器,每一云端服务器可连接多台终端。
[0067]服务器中包含自动化测试装置/模块,由自动化测试装置/模块执行游戏自动化测试方法。
[0068]在一个示例中,服务器中存储有python脚本(游戏自动化测试脚本),通过运行python脚本,可实现自动化测试装置/模块的功能,执行上述游戏自动化测试方法。
[0069]此外,服务器中还可包含UI控件查看模块。在一个示例中,UI控件查看模块的功能可通过服务器中的CPU运行存储器存储的编辑探测程序实现。
[0070]终端中安装有游戏,为了配合服务器完成游戏自动化测试,上述游戏嵌入了WeTest SDK。
[0071]其中:
[0072]WeTest SDK可视为游戏的组件,可提供游戏控件(特别是UI控件)ID查询、控件位置查询、交互操作等(例如点击、长按、滑动等)。在游戏启动时,WeTest SDK随之启动,并会开启一个socket服务,监听来自Python脚本的请求。
[0073]当然,WeTestSDK是在自动化测试过程中安装在游戏中的。真正发行的游戏版本中不包含WeTest SDK。
[0074]Python脚本:可通过ADB与WeTest SDK通信。其功能可包含检查游戏当前界面,决定操作行为,判定执行结果。
[0075]UI控件查看模块:与图2中UI Automator功能类似,不同的是,UI Automator可查看安卓系统标准UI控件,而UI控件查看模块可用于查看使用Unity引擎开发的游戏中的UI控件,并且可以查看各个GameObject的相关属性。在开发Python脚本将使用到UI控件查看模块。
[0076]对于云端服务器,前述介绍了可连接多台终端。一台终端对应一个wetest服务进程,对应运行一次脚本。例如,云端服务器连接10台终端,则有10个wetest服务进程,脚本会运行1次。
[0077]下面将基于上面所述的本发明涉及的共性方面,对本发明实施例进一步详细说明。
[0078]先介绍自动化测试脚本的开发。
[0079]本发明实施例中的自动化测试脚本可包括多个类实现对象和自动化测试逻辑;
[0080]任一类实现对象定义了一种基础测试操作,例如点击、长按、滑动、截图、在截图上标记点击位置、性能数据采集、终端日志采集或crash(崩溃或者闪退)检测等。
[0081]而自动化测试逻辑定义了上述一种或多种基础测试操作的执行顺序、操作对象及执行条件。
[0082]前述提及的处理器运行所述自动化测试脚本,是通过自动化测试逻辑根据执行顺序、操作对象及执行条件调用相应的类实现对象实现的。
[0083]基础测试操作类似于裁剪、缝纫、钉扣子、锁扣眼等操作。而自动化测试逻辑类似于规定了何时(在什么条件下)裁剪,裁剪的是什么面料,何时(在什么条件下)缝纫,缝纫的部位是哪里,何时(在什么条件下)钉扣子,在什么部位钉扣子,何时(在什么条件下)锁扣目艮,在什么部位锁扣眼。
[0084]对于不同的游戏,自动化测试逻辑是不同的,而基础测试操作一般不变。基础测试操作一般不需要开发,可针对不同的游戏,对自动化测试逻辑进行开发设计。
[0085]在本发明中,自动化测试逻辑与具体实现(类实现对象)相分离。这样开发人员可仅关注自动化测试逻辑,而不用关注具体如何实现。例如,点击这一基础操作,测试人员可设计何时点击,而不用关注点击的具体实现方式是什么。
[0086]请参见图4a和图4b,开发自动化测试脚本的流程可包括:
[0087]401部分:服务器中的UI控件查看模块获取游戏的当前界面及当前界面对应的UI控件树,并显示在服务器的显示屏上。
[0088]在本实施例中,游戏具体可为由unity开发的游戏,例如手机游戏,或者可运行于PC端的游戏。
[0089]该部分可实现在PC机(服务器)上同步游戏当前画面和当前界面的UI控件树的目的。
[0090]在服务器显示的界面上可提供同步按钮,开发人员点击同步按钮,可实现同步游戏当前画面和UI控件树的目的,查看当前游戏控件状态。
[0091]更具体的,请参见图4b,是由服务器中的UI控件查看模块向游戏中的WeTest SDK发送同步请求,WeTest SDK返回游戏当前画面和UI控件树的方式来获取游戏的当前界面及UI控件树。
[0092]402部分:UI控件查看模块获取服务器的输入设备输入的位置信息。
[0093]上述输入设备一般为鼠标或键盘。在实际操作中,从开发人员角度看,其是使用鼠标或键盘选中服务器当前界面(已与游戏当前画面同步)中的UI控件,则UI控件查看模块可获取到鼠标或键盘输入的位置信息。
[0094]例如,请参见图3,开发人员点击了“与QQ好友玩“这个按钮,实际开发人员是点击了“与QQ好友玩“这个按钮所对应的坐标点(Xl,yl),则UI控件查看模块获取到了位置信息--坐标点(xl,yl)。
[0095]403部分:UI控件查看模块根据上述位置信息查找相对应的UI控件,得到查找结果O
[0096]在一个示例中,请参见图4b,UI控件查看模块可向游戏中的WeTest SDK发送查询请求(可包含位置信息),WeTest SDK返回查找结果。
[0097]更具体的,上述查找结果(也可称为UI控件信息)可包括UI控件的名称、路径、当前顶点位置和UI控件在终端显示屏上的覆盖区域。
[0098]上述顶点位置实为控件的左上角坐标,而覆盖区域具体为UI控件的长和宽。
[0099]需要说明的是,虽然UI控件在前台可被渲染成各种形状,例如圆形、椭圆等。但在后台,UI控件的形状为矩形。所以每一 UI控件均有左上角。而对于一个矩形,知道其左上角坐标,又知道其覆盖区域,则可唯一的确定该矩形所在的位置。
[0100]当前顶点位置和UI控件在终端显示屏上的覆盖区域可由WeTestSDK计算得到。
[0101]由于在开发时,开发人员并不知道UI控件的相关信息,只能通过位置查找定位UI控件在UI控件树上的节点,获取UI控件信息。
[0102]404部分:UI控件查看模块根据上述查找结果,在服务器的显示屏所显示的游戏当前界面上突出显示查找到的UI控件,同时,突出显示查找到的UI控件在UI控件树上对应的节点。
[0103]更具体的,UI控件查看模块可根据SDK反馈回来的UI控件的当前顶点位置和在终端显示屏上的覆盖区域,在服务器的显示屏所显示的游戏当前界面上突出显示UI控件。例如,请参见图3,用粗线方框突出显示“与QQ好友玩“这个按钮。当然,也可用红色圈圈起来。本领域技术人员可采用多种方式突出显示,在此不作赘述。
[0104]同时,UI控件查看模块可根据SDK反馈回来的UI控件的名称、路径,确定UI控件在UI控件树上对应的节点,从而在服务器的显示屏上突出显示该节点。例如,请参见图3,采用阴影框突出显示了节点。本领域技术人员可采用多种方式突出显示,在此不作赘述。
[0105]由于在开发时,开发人员并不知道所点击的UI控件的名称,突出显示是为了开发人员可以一目了然看到选中的UI控件,并看到其在UI控件树中的位置。这样,有助于开发人员更高效得编写自动化测试脚本。
[0106]405部分:服务器获取输入设备输入的编辑指令。
[0107]在一个示例中,服务器可部署编辑模块,以执行405部分和406部分。
[0108]上述编辑指令用于编辑自动化测试逻辑中基础测试操作的执行顺序、操作对象及执行条件的任意一种或任意组合。
[0109]编辑指令可以是基于所述第二查找结果生成的。
[0110]在实际中,在404部分获取到UI控件的名称/路径后,开发人员可将UI控件的名称/路径作为操作对象编写进自动化测试脚本中,以编辑自动化测试逻辑。
[0111]实际上,对于python脚本的任何操作及输入,都可认为下达了编辑指令。
[0112]406部分:服务器根据编辑指令编辑自动化测试逻辑。
[0113]请参见图5,下面实施例将以手游为例,详细介绍如何根据位置信息查找相对应的UI控件,得到查找结果(UI控件信息)。
[0114]500部分:开发人员点击服务器界面上的同步按钮。
[0115]501部分:UI控件查看模块与WeTest SDK建立socket连接,获取手游的当前界面和对应的UI控件树。
[0116]在一个示例中,是由服务器中的UI控件查看模块向手游中的WeTest SDK发送同步请求,WeTest SDK返回手游当前画面和UI控件树的方式,来获取手游的当前界面和UI控件树。
[0117]502部分:UI控件查看模块将获取的手游当前界面和UI控件树输出至服务器的显示屏,以显示手游当前界面和UI控件树。
[0118]503部分:开发人员点击服务器显示的手游当面界面上的UI控件,UI控件查看模块获取点击的坐标位置;
[0119]例如,请参见图3,开发人员点击了“与QQ好友玩“这个按钮,实际开发人员点击了服务器显示屏上的坐标点(xl,yl),则UI控件查看模块获取到的位置信息包括坐标点(xl,yl)。
[0120]504部分:UI控件查看模块获取智能终端的屏幕尺寸(可通过向andord手机发送adb shell命令行获取屏幕尺寸),将上述位置信息转换为智能终端显示屏的位置信息。
[0121]以Android手机为例,504部分实现的是将PC端(服务器)上的坐标点转换为Andro i d手机的坐标点。
[0122]505部分:UI控件查看模块将智能终端显示屏的位置信息传输给WeTest SDK。
[0123]在一个示例中,UI控件查看模块可向WeTest SDK发送查询消息,该查询消息中携带智能终端显示屏的位置信息。
[0124]506部分:WeTest SDK将接收到的智能终端显示屏的位置信息转化为unity坐标系下的位置信息。
[0125]以android系统为例,android坐标系与unity坐标系不同,android坐标系以屏幕左上角为坐标原点,unity坐标系以屏幕右下角为坐标原点。
[0126]由于WeTestSDK收到的是Android的屏幕坐标系下的位置信息(坐标),因此需要将该位置信息转化为Unity的屏幕坐标系下的位置信息(坐标)。
[0127]507部分:WeTest SDK查找unity坐标系下的坐标位置对应的UI控件(或UI控件树上的节点),返回UI控件信息(名称、路径、当前顶点位置和在智能终端显示屏上的覆盖区域)。
[0128]需要说明的是,手游的UI控件可由Unity引擎的NGUI或UGUI开发。[Ο? 29] 对于NGUI开发的控件,可通过反射调用UICamera.Raycast方法,获取当前坐标下对应的 GameOb j e c t。
[0130]对于UGUI开发的,可通过EventSystem.current.RaycastAl I ()方法,获取到当前坐标下的所有控件。如果RaycastAll返回多个控件,则返回第一个控件的信息。
[0131]因此,WeTest SDK可有两个版本,一个针对NGUI,一个针对UGUI。
[0132]508部分:UI控件查看模块根据上述查找结果,在服务器的显示屏所显示的手游当前界面上突出显示查找到的UI控件,同时,突出显示查找到的UI控件在UI控件树上对应的节点。
[0133]508部分与404部分相类似,在此不作赘述。
[0134]509部分:服务器获取输入设备输入的编辑指令。
[0135]510部分:服务器根据编辑指令编辑自动化测试逻辑。
[0136]509和510部分分别与前述的405和406部分相类似,在此不作赘述。
[0137]下面开始介绍游戏自动化测试流程。游戏自动化测试模拟的是人对UI控件的操作。
[0138]请参见图6,游戏自动化测试流程可包括:
[0139]600部分:服务器查找目标UI控件。
[0140]在一个示例中,可由服务器中的自动化测试模块执行600部分。
[0141 ]进一步的,自动化测试模块的功能可由服务器中的处理器运行自动化测试脚本来实现。
[0142]601部分:服务器确定目标UI控件在终端显示屏上的覆盖区域和当前顶点位置。
[0143]在一个示例中,可由服务器中的自动化测试模块执行601部分。
[0144]进一步的,自动化测试模块的功能可由服务器中的处理器运行自动化测试脚本来实现。
[0145]需要说明的是,在脚本上,一般三行执行一个操作,操作的操作对象可以一个UI控件,则这个UI控件就是目标UI控件。
[0146]当然,前述提及了,自动化测试脚本可执行多种基础测试操作,例如点击、长按、滑动、截图、在截图上标记点击位置、性能数据采集、终端日志采集或crash检测等。
[0147]对于截图、在截图上标记点击位置、性能数据采集、终端日志采集或crash检测等操作的操作对象可能不是UI控件,则可不用执行601部分。
[0148]此外,本实施例中的覆盖区域具体可包括UI控件的长和宽。
[0149]其顶点位置指UI控件左上角在终端显示屏上的坐标。
[0150]在一个示例中,上述覆盖区域和当前顶点位置可根据目标UI控件的唯一标识而确定。则在本发明其他实施例中,在601部分之前,还可执行查找目标UI控件在UI控件树上对应的节点,得到包含目标UI控件唯一标识的步骤。
[0151]602部分:服务器根据获取到的当前顶点位置和覆盖区域,确定针对目标UI控件的操作事件。
[0152]其中,操作事件至少可包括操作方式和在终端显示屏上的操作位置。
[0153]在一个示例中,针对目标UI控件的操作方式具体可为点击、长按或滑动。
[0154]当然,本领域技术人员可根据终端支持的操作方式进行灵活设计,在此不作赘述。
[0155]而操作位置(坐标),随着操作方式的不同,可为单个操作位置,也可为多个连续的操作位置。例如,点击、长按,一般是针对单个点的操作,对应单个操作位置,而滑动,则可对应多个连续的操作位置。
[0156]在一个示例中,可根据获取到的当前顶点位置和覆盖区域,计算出操作位置。需要说明的是,游戏自动化测试模拟的是人对UI控件的操作。
[0157]以人进行点击或长按为例,人一般是会点击或长按UI控件的中心部位。对于滑动UI控件也是如此。而在601部分获取到的是UI控件左上角的坐标,因此,需要计算操作位置。
[0158]在一个示例中,可由服务器中的自动化测试模块执行602部分。进一步的,自动化测试模块的功能可由服务器中的处理器运行自动化测试脚本来实现。
[0159]603部分:服务器通知终端执行操作事件。
[0160]在一个示例中,可由服务器中的自动化测试模块执行603部分。进一步的,自动化测试模块的功能可由服务器中的处理器运行自动化测试脚本来实现。
[0161]请同时参见图2,在一个示例中,可由自动化测试脚本(python脚本)通过ADB向游戏中的WeTest SDK发送通知。
[0162]则终端根据通知,执行上述操作事件,以实现对与操作位置对应的UI控件、采用确定出的操作方式进行操作。
[0163]可见,在本发明实施例中,可获取欲操作的UI控件(目标UI控件)在终端显示屏上的覆盖区域和当前顶点位置,并据此确定出针对目标UI控件的操作事件。之后,通知终端执行操作事件。
[0164]在PC机上,人可通过鼠标、键盘等输入设备进行点击、长按或滑动等操作,当然若PC机上的屏幕为触摸屏,也可通过触摸屏进行点击、长按或滑动等操作。
[0165]而在移动设备(智能终端)上,人一般通过触摸屏进行点击、长按或滑动等操作。
[0166]由于人对游戏中UI控件的操作,实际是对终端显示屏上的坐标点(位置)的操作,例如,点击某个UI控件,其实是点击了与该UI控件对应的坐标点。而本发明实施例所确定出的操作事件中,包含操作方式和在终端显示屏上的操作位置。因此,本发明实施例所提供的方案,可模拟人对游戏UI控件的触碰操作,实现在终端上操作游戏,对游戏进行自动化测试。
[0167]需要说明的是,现有游戏自动化测试技术主要通过录制坐标序列然后回放来操作游戏,以达到自动化测试的目的。其做法是:测试人员在终端上玩游戏,在玩游戏的过程中,应用程序会记录终端上哪些位置被触摸或是滑动了,记录下坐标位置以及当前手机的分辨率,生成操作记录。
[0168]之后,主机按时间顺序依次按操作记录中的坐标信息模拟触摸或是滑动的操作,达到模拟测试人员整个测试流程的目的。但其缺点是明显的:
[0169]缺点一,在现有自动化测试过程中,因为应用程序是按时间顺序依次按操作记录中的坐标信息模拟触摸或是滑动的操作,并不会去识别当前界面的UI控件,而是机械地按操作记录上操作记录的坐标点,因此,若出现非预期的界面(例如随机的弹出窗口),则后续的操作将可能完全错乱。
[0170]缺点二:账号状态不一样可能影响测试。因为不同状态的账号,进入游戏中的UI界面布局以及流程可能是不一样的,可能导致操作完全错乱,无法完全预期的测试流程。
[0171]缺点三:可能受分辨率影响,分辨率不同则同一UI控件所对应的坐标点会不同,机械地按操作记录上操作记录的坐标点,可能影响测试效果。
[0172]而本实施例所提供的自动化测试方式则可解决上述问题。因此,在本实施例中,首先是以目标UI控件为对象,确定目标UI控件在终端显示屏上的覆盖区域和当前顶点位置,也即,获取的是实时的顶点位置,结合覆盖区域,可定位目标UI控件实时、真正的位置所在。据此确定出的操作事件,可确实实现对终端游戏上的目标UI控件的操作。
[0173]因此,无论随机的弹出窗口,还是账号状态,还是分辨率,均不会影响到对目标UI控件的操作,真正实现自动化适配。
[0174]图7示出了游戏自动化测试的一种交互式流程,其可包括:
[0? 75] 700部分:服务器初始化python脚本;
[Ο?76]本文后续会介绍如何初始化python脚本。
[0177]701部分:服务器向终端发送目标UI控件的查询请求,以确定目标UI控件在游戏当前界面中是否存在。
[0178]在一个示例中,可由python脚本向终端的WeTest SDK发送目标UI控件的查询请求。
[0179]考虑到一个界面中,可能存在多个名称相同的GameObject,因此,可进行模糊查找。则上述查询请求可包含目标UI控件的相关信息作为查找条件,例如,目标UI控件的名称、目标UI控件中的文字、目标UI控件中的图片名称,以及目标UI控件对应的节点相对于父节点的位置中的任意一种或任意组合。
[0180]例如,以目标!]〗控件中的文字、目标U1控件中的图片名称,以及目标U1控件对应的节点相对于父节点的位置等为查找条件,令WeTest SDK进行模糊查找,查找出所有符合查找条件的UI控件。
[0181 ]例如,查找表达式/Boot0bj/ScrollRect[0]/Content/*{txt =手Q安卓大区,img= 11203}。其中,V”代表GameObject结构树中的一层,txt =表示UI中的文字内容,img =表示UI中的图片名称,[]表示当前节点在父节点中的位置从O开始。
[0182]702部分:终端查找目标UI控件在游戏当前界面的UI控件树上对应的节点,得到包含目标UI控件的唯一标识的查找结果并返回。
[0183]唯一标识可为InstanceID(对象名称),在一个界面里面,InstanceID能唯一标识一个节点。但InstanceID是暂时性的。
[0184]当然,如果目标UI控件在游戏的当前界面上不存在,则唯一标识可为NULL,或其他可表示唯一标识不存在的数值。
[0185]在一个示例中,可由游戏的WeTest SDK来执行702部分。
[0186]SDK首先会获取当前游戏中所有有效GameObject,然后遍历判断节点是否与目标UI控件的相关信息相匹配,全部查找完毕后,返回所有匹配的节点。
[0187]而服务器会将所有匹配的节点作为目标UI控件。
[0188]701和702部分是前述600部分的细化。
[0189]703部分:服务器根据目标UI控件的唯一标识,获取目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置。
[0190]在一个示例中,可由python脚本向终端的WeTest SDK发送位置查询请求。位置查询请求中包含702部分获取到的唯一标识。
[0191]则WeTest SDK根据该唯一标识确定上述覆盖区域和当前顶点位置并返回。
[0192]覆盖区域和当前顶点位置的相关内容可参见601部分,在此不作赘述。
[0193]704部分:服务器根据获取到的当前顶点位置和覆盖区域,确定针对目标UI控件的操作事件。
[0194]704部分与602部分相类似,在此不作赘述。
[0195]705部分:服务器通知终端执行操作事件。
[0196]705部分与603部分相类似,在此不作赘述。
[0197]706部分:终端根据通知,执行上述操作事件,以实现对与操作位置对应的UI控件、采用确定出的操作方式进行操作。
[0198]在一个示例中,可由终端中的执行单元来执行706部分。
[0199]具体的,可由终端中游戏的WeTestSDK来实现执行单元的功能。
[0200]假定,操作事件中的操作方式为点击,操作位置是坐标点(xl,yI),则WeTestSDK对终端显示屏上的坐标点(xl,yl)执行点击。
[0201]在本实施例中,对如何确定目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置进行了更为详细的描述,保证了游戏自动化测试的执行。
[0202]图8示出了游戏自动化测试的一种交互式流程,其可包括:
[0203]801 部分:连接WeTest SDK。
[0204]具体可参见下述1012或1021部分的介绍。
[0205]连接后,python脚本可与终端的WeTest SDK通信,通过交互完成前述实施例提及的获取游戏当前工作界面和UI控件树、查询唯一标识、通知执行操作事件等动作。
[0206]802部分:判断测试是否结束,若是,进入808部分,否则进入802部分;
[0207]803部分:查找目标UI控件,得到查找结果。
[0208]在一个示例中,服务器向终端发送目标UI控件的查询请求。终端查找目标UI控件在游戏当前界面的UI控件树上对应的节点,得到包含目标UI控件的唯一标识的查找结果并返回。
[0209]具体细节请参见前述701和702部分,在此不作赘述。
[0210]804部分:判断目标UI控件是否在游戏当前界面上存在,若存在,进入805部分,否则进入807部分;
[0211 ] 805部分:服务器根据目标UI控件的唯一标识,获取目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置。
[0212]805部分与703部分相类似,在此不作赘述。
[0213]806部分:服务器根据获取到的当前顶点位置和覆盖区域,确定针对目标UI控件的操作事件,通知终端执行操作事件。
[0214]详细情况可参见602和603部分,在此不作赘述。
[0215]807部分:触发执行不存在处理逻辑。
[0216]本领域技术人员可根据需要灵活设计不存在处理逻辑。例如,可设计不存在处理逻辑为退出,或者采集性能数据等。
[0217]808部分:结束。
[0218]下面将重点介绍python脚本初始化。可在执行游戏自动化测试时进行初始化。
[0219 ] 请参见图9,初始化过程可包括如下步骤:
[0220]901部分:通过环境变量的有无确定当前的运行环境。
[0221]前已述及,服务器可为本地服务器和云端服务器。本地服务器对应的运行环境为本地环境;云端测服务器对应的运行环境为云端环境。
[0222]在云端服务器存储有环境变量WPYSCRIPTS_MODE,其内容可为“Cloud”,用于云端环境。而本地服务器并未存储有环境变量。
[0223]为了迎合两种运行环境,自动化测试脚本中包括针对不同运行环境的实现类。
[0224]902部分:建立本地或云端服务器的网络端口与终端的网络监听端口的映射关系。
[0225]本地或云端服务器通过网络端口与终端的网络监听端口进行通讯。前述提及的python脚本与WeTest SDK的通讯,需要通过网络端口与网络监听端口进行。
[0226]903部分:根据当前的运行环境选择相应的实现类,创建相应的类实现对象。
[0227]具体的,若运行环境为云端环境,则从选择自动化测试脚本中针对云端运行环境的实现类,创建相应的类实现对象。反之,从选择自动化测试脚本中针对本地运行环境的实现类,创建相应的类实现对象。
[0228]图10示出了初始化的一种更具体的实现方式。图10所示实施例以智能终端为例,主要细化了建立本地或云端服务器的网络端口与智能终端的网络监听端口的映射关系的操作。包括:
[0229]1000部分:环境变量是否存在,如果是,进入1011部分,如果否进入9021部分;
[0230]关于环境变量的具体内容可参见901部分,在此不作赘述。
[0231 ] 1011部分:phthon脚本与wetest平台的wetest服务进程建立连接。
[0232]前述提及了,运行在云端服务器的一个wetest服务进程对应一部终端。wetest月艮务进程跟手机是绑定的。脚本通过连接wetest服务进程,可利用wetest服务进程去做游戏自动化测试。
[0233]1012部分:python脚本向wetest平台请求建立云端服务器的第一网络端口与智能终端的第一网络监听端口(SDK端口)之间的映射关系,wetest平台建立映射关系后,把第一网络端口的端口号返回给python脚本。
[0234]需要说明的是,无论是服务器,还是智能终端,端口数可达数万。而端口号6000以上的端口,一般不会被使用到。
[0235]则可动态随机选择不常用的端口号1024-65535作为SDK端口,例如27018。
[0236]当然,开发人员也可将智能终端的27018端口号作为SDK端口的端口号编辑进python 脚本。
[0237]建立映射关系后,python脚本可通过第一网络端口和第一网络监听端口,与智能终端的WeTest SDK通信,通过交互完成前述实施例提及的获取游戏(手游)当前工作界面和UI控件树、查询唯一标识、通知执行操作事件等动作。
[0238]1013部分:python脚本向wetest平台请求建立云端服务器的第二网络端口与智能终端的第二网络监听端口(UIAutomator端口)之间的映射关系,wetest平台建立映射关系后,把第二网络端口的端口号返回给python脚本。
[0239]建立映射关系后,python脚本可通过第二网络端口和第二网络监听端口,与智能终端的UIAutomator服务通讯,通过交互完成前述实施例提及的获取屏幕尺寸等操作,也可通过UIAutomator查询标准UI控件。
[0240]第一、第二只用于区分。
[0241 ] 1014部分:Python脚本创建云端的类实现对象。
[0242]需要强调的是,此部分对测试逻辑开发者来说是透明的。提供给测试逻辑开发者的Python脚本里面已经包含了云端的类实现对象。
[0243]1021部分:python脚本通过ADB服务,将本地服务器的第一网络端口与智能终端的第一网络监听端口(SDK端口)之间的映射关系。
[0244]建立映射关系后,python脚本可通过第一网络端口和第一网络监听端口,与智能终端的WeTest SDK通信,通过交互完成前述实施例提及的获取游戏当前工作界面和UI控件树、查询唯一标识、通知执行操作事件等动作。
[0245]由于是本地运行环境,可将服务器的第一网络端口的端口号固定为40018,将智能终端的27018端口号作为SDK端口号编辑进python脚本。
[0246]当然,也可在动态随机选择不常用的端口号1024-65535作为SDK端口。
[0247 ] 1022部分:Py thon脚本通过ADB服务,将UIAutomator服务安装到智能终端上,并启动UIAutomator服务。
[0248]1023部分:通过ADB服务,python脚本建立本地服务器的第二网络端口与智能终端的第二网络监听端口(UIAutomator端口)之间的映射关系。
[0249]由于是本地运行环境,可将服务器的第二网络端口的端口号固定为19008,将智能终端的9008端口号作为UIAutomator端口的端口号编辑进python脚本。
[0250]1024部分:创建本地的类实现对象。
[0251]需要说明的是,在本地环境下,一般不需要支持截图、在截图上标记点击位置、性能数据采集、终端日志采集或crash检测,而在云端环境,则需要支持上述操作。因此,本实施例会基于不同的运行环境,来创造不同的类实现对象。
[0252]由于同时支持在本地或云端运行,开发测试人员编写完python脚本后,可在本地实现回放。本地回放调试成功,可直接上传至平台,在平台运行。
[0253]图11示出了上述实施例中所涉及的游戏自动化测试装置1100(应用于服务器)或服务器的一种可能的结构示意图,包括游戏自动化测试模块I,其中:
[0254]自动化测试模块I可包括:
[0255]第一确定单元1101,用于确定目标UI控件在终端显示屏上的覆盖区域和当前顶点位置;
[0256]操作事件确定单元1102,用于根据所述当前顶点位置和覆盖区域,确定针对所述目标UI控件的操作事件;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;
[0257]通讯单元1103,用于通知所述终端执行所述操作事件,以实现对与所述操作位置对应的目标UI控件、采用所述操作方式进行操作。
[0258]查找单元1104,用于在所述第一确定单元1101确定目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置之前,查找所述目标UI控件。
[0259]更具体的,查找单元1104可查找目标UI控件在所述游戏当面画面的用户界面UI控件树上对应的节点,得到第一查找结果。
[0260]所述第一查找结果包含与所述目标UI控件对应的唯一标识;其中,所述UI控件树包含多个节点,每一UI控件对应UI控件树上的一个节点,所述节点对应一个唯一标识。相关细节请参见本文前述记载,在此不作赘述。
[0261 ]在本发明其他实施例中,请参见图12a,上述游戏自动化测试装置1100还可包括UI控件查看模块2和编辑模块3。
[0262]在开发自动化测试模块I时,UI控件查看模块2可用于:
[0263]获取所述游戏的当前界面及所述游戏当前界面的UI控件树,并显示在所述服务器的显示屏上;获取所述服务器的输入设备输入的位置信息;根据所述位置信息查找相对应的UI控件,得到第二查找结果,所述第二查找结果包括查找到的UI控件的名称、路径、当前顶点位置和在所述终端显示屏上的覆盖区域;根据所述第二查找结果,在所述服务器的显示屏所显示的当前界面上突出显示所述查找到的UI控件,同时,突出显示所述查找到的UI控件在所述UI控件树上对应的节点;
[0264]编辑模块3可用于:获取所述服务器的输入设备输入的编辑指令;所述编辑指令是基于所述第二查找结果生成的;根据所述编辑指令编辑所述自动化测试模块I。
[0265]其中,第一确定单元1101可用于执行图6所示的601部分、图7所示的700-703部分。
[0266]操作事件确定单元1102可用于执行图6所示的602部分、图7所示的704部分、图8所示的806部分。
[0267]通讯单元1103可用于执行图6所示的603部分、图7所示的705部分、图8所示的801部分。
[0268]查找单元1104可用于执行图6所示的600部分、图7所示的701部分。
[0269]从整个自动化测试模块角度,自动化测试模块I可用于执行图6所示的600-603部分、图7所示的700-705部分、图8所示的801-807部分。
[0270]UI控件查看模块2可用于执行图4所示的401-404部分,图5所示的501-505,508部分。
[0271]编辑模块3可用于执行图4a所示的405-406部分、图5所示509-510部分。
[0272]在本发明其他实施例中,请参见图12b,上述游戏自动化测试装置1100还可包括初始化模块4,用于进行初始化。
[0273]初始化模块4可用于执行图9所示的901-903部分、图10所示1000-1024部分。
[0274]图13示出了上述实施例中所涉及的终端(或终端上的游戏自动化测试装置)1300的一种可能的结构示意图。其可包括:
[0275]通信单元1301,用于接收来自服务器或游戏自动化测试装置的、指示执行操作事件的通知;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;其中,所述操作方式和操作位置是由所述服务器或游戏自动化测试装置根据所述UI控件的当前顶点位置和覆盖区域确定的;
[0276]执行单元1302,用于根据所述通知,执行所述操作事件,以实现对与所述操作位置对应的UI控件、采用确定出的操作方式进行操作。
[0277]其中,通信单元1301可用于支持终端(或终端上的游戏自动化测试装置)与其他装置进行通信。例如,用于支持终端(或终端上的游戏自动化测试装置)与图4b,5_7中示出的其他装置进行通信。
[0278]执行单元1302可用于执行图7所示的706部分,此外,执行单元1302还可执行图7所示的702、703部分、图5所示的506-507部分,以及图4b所示的WeTest SDK的操作。
[0279]上述所有实施例所涉及的服务器/终端的另一种可能的结构示意图楞参见图1,包括:
[0280]总线、处理器101、存储器102、通信接口103、输入设备104和输出设备105。处理器101、存储器102、通信接口 103、输入设备104和输出设备105通过总线相互连接。其中:
[0281 ]总线可包括一通路,在计算机系统各个部件之间传送信息。
[0282]处理器101可以是通用处理器,例如通用中央处理器(CPU)、网络处理器(NetworkProcessor,简称NP)、微处理器等,也可以是特定应用集成电路(applicat1n-specificintegrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0283]处理器101可包括主处理器,终端的处理器还可包括基带芯片、调制解调器等。
[0284]存储器102中保存有执行本发明技术方案的程序或脚本,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。脚本则通常以文本(如ASCII)保存,只在被调用时进行解释或编译。
[0285]更具体的,存储器102可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory ,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
[0286]输入设备104可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
[0287]输出设备105可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
[0288]通信接口103可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
[0289]服务器的控制器/处理器可用于执行图4a、4b,5_8中涉及服务器的处理过程和/或用于本申请所描述的技术的其他过程。控制器/处理器也可用于实现前述自动化测试模块
1、UI控件查看模块2、编辑模块3和初始化模块4的功能。
[0290]服务器的通信接口则用于支持服务器与其他装置进行通信。例如,用于支持服务器与图4a、4b,5-8中示出的其他装置进行通信。
[0291]终端的控制器/处理器可用于执行图4a、4b,5_8中涉及终端的处理过程和/或用于本申请所描述的技术的其他过程。控制器/处理器也可用于实现前述执行单元1302的功能。
[0292]服务器的通信接口则用于支持终端与其他装置进行通信。例如,用于支持服务器与图4a、4b,5-8中示出的其他装置进行通信。
[0293]可以理解的是,图1仅仅示出了服务器/终端的简化设计。在实际应用中,服务器/终端可以包含任意数量的发射器,接收器,处理器,控制器,存储器,通信接口等,而所有可以实现本发明的服务器/终端都在本发明的保护范围之内。
[0294]本发明实施例还要求保护游戏自动化测试系统,其可包括上述所有实施例中的终端以及上述服务器,或包括上述所有实施例中的终端及游戏自动化测试装置。
[0295]结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于用户设备中。
[0296]本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0297]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
【主权项】
1.一种游戏自动化测试方法,其特征在于,所述游戏自动化测试方法包括: 查找目标UI控件; 确定所述目标UI控件在终端显示屏上的覆盖区域和当前顶点位置; 根据所述当前顶点位置和覆盖区域,确定针对所述目标UI控件的操作事件;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置; 通知所述终端执行所述操作事件,以实现对与所述操作位置对应的目标UI控件、采用所述操作方式进行操作。2.如权利要求1所述的方法,其特征在于,所述查找目标UI控件包括: 查找所述目标UI控件在所述游戏当面画面的用户界面UI控件树上对应的节点,得到第一查找结果;所述第一查找结果包含与所述目标UI控件对应的唯一标识; 其中,所述UI控件树包含多个节点,所述游戏当面画画中的每一UI控件对应所述UI控件树上的一个节点,所述节点对应一个唯一标识。3.如权利要求2所述方法,其特征在于,所述查找所述目标UI控件在所述游戏当面画面的UI控件树上对应的节点包括: 根据所述目标UI控件的相关信息,搜索所述目标UI控件在所述UI控件树上对应的节占.V , 其中,所述相关信息包括所述目标UI控件的名称、所述目标UI控件中的文字、所述目标UI控件中的图片名称,以及所述目标UI控件对应的节点相对于父节点的位置中的任意一种或任意组合。4.如权利要求2所述的方法,其特征在于,所述确定目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置包括: 根据所述目标UI控件对应的唯一标识,获取所述目标UI控件在所述终端显示屏上的覆盖区域和当前顶点位置。5.如权利要求1-4任一项所述的方法,其特征在于,所述服务器上存储有自动化测试脚本,所述游戏自动化测试方法中的各个步骤,是由所述服务器的处理器通过运行所述自动化测试脚本执行的。6.如权利要求5所述的方法,其特征在于,还包括:开发所述自动化测试脚本。7.如权利要求6所述的方法,其特征在于, 所述自动化测试脚本包括多个类实现对象和针对所述游戏的自动化测试逻辑; 任一所述类实现对象定义了一种基础测试操作; 所述自动化测试逻辑定义了所述基础测试操作的执行顺序、操作对象及执行条件;所述运行所述自动化测试脚本是通过所述自动化测试逻辑根据所述执行顺序、操作对象及执行条件调用相应的类实现对象实现的。8.如权利要求7所述的方法,其特征在于,所述基础测试操作为点击、长按、滑动、截图、在截图上标记点击位置、性能数据采集、终端日志采集或crash检测。9.如权利要求7或8所述的方法,其特征在于,所述开发所述自动化测试脚本包括: 获取所述游戏的当前界面及所述当前界面对应的UI控件树,并显示在所述服务器的显示屏上; 获取所述服务器的输入设备输入的位置信息; 根据所述位置信息查找相对应的UI控件,得到第二查找结果,所述第二查找结果包括查找到的UI控件的名称、路径、当前顶点位置和所述查找到的UI控件在所述终端显示屏上的覆盖区域; 根据所述第二查找结果,在所述服务器的显示屏所显示的当前界面上突出显示所述查找到的UI控件,同时,突出显示所述查找到的UI控件在所述UI控件树上对应的节点。10.如权利要求9所述的方法,其特征在于,所述开发所述自动化测试脚本还包括: 获取所述服务器的输入设备输入的编辑指令;所述编辑指令用于编辑自动化测试逻辑中基础测试操作的执行顺序、操作对象及执行条件的任意一种或任意组合,所述编辑指令是基于所述第二查找结果生成的; 根据所述编辑指令编辑所述自动化测试逻辑。11.如权利要求9所述的方法,其特征在于,所述根据所述位置信息查找相对应的UI控件,得到第二查找结果包括: 将所述输入设备输入的位置信息转换为所述终端显示屏的位置信息; 将所述显示屏的位置信息发送给所述终端,以便所述终端根据所述显示屏的位置信息查找相对应的UI控件并返回所述第二查找结果; 接收所述第二查找结果。12.如权利要求8所述的方法,其特征在于,所述游戏自动化测试方法还包括:进行初始化。13.如权利要求12所述的方法,其特征在于,所述服务器为云端服务器或本地服务器,所述初始化包括: 通过环境变量的有无确定当前的运行环境;其中,云端服务器存储有环境变量,而本地服务器并未存储有环境变量;本地服务器对应的运行环境为本地环境;云端测服务器对应的运行环境为云端环境;所述自动化测试脚本包括针对不同运行环境的实现类; 建立本地或云端服务器的网络端口与终端的网络监听端口的映射关系;所述本地或云端游戏检测服务器通过所述网络端口与终端的网络监听端口进行通讯; 根据当前的运行环境选择相应的实现类,创建相应的类实现对象。14.一种游戏自动化测试装置,其特征在于,所述游戏自动化测试装置包括自动化测试模块,所述自动化测试模块包括: 查找单元,用于查找目标用户界面UI控件; 第一确定单元,用于确定所述目标UI控件在终端显示屏上的覆盖区域和当前顶点位置; 操作事件确定单元,用于根据所述当前顶点位置和覆盖区域,确定针对所述目标UI控件的操作事件;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置; 通讯单元,用于通知所述终端执行所述操作事件,以实现对与所述操作位置对应的目标UI控件、采用所述操作方式进行操作。15.如权利要求14所述的装置,其特征在于,在查找目标UI控件方面,所述查找单元用于: 查找所述目标UI控件在所述游戏当面画面的用户界面UI控件树上对应的节点,得到第一查找结果;所述第一查找结果包含与所述目标UI控件对应的唯一标识;其中,所述UI控件树包含多个节点,每一UI控件对应UI控件树上的一个节点,所述节点对应一个唯一标识。16.如权利要求14所述的装置,其特征在于,在查找所述目标UI控件在所述游戏的UI控件树上对应的节点的方面,所述查找单元用于: 根据所述目标UI控件的相关信息,搜索所述目标UI控件在所述UI控件树上对应的节占.V , 所述相关信息包括所述目标UI控件的名称、所述目标UI控件中的文字、所述目标UI控件中的图片名称,以及所述目标UI控件对应的节点相对于父节点的位置中的任意一种或任意组合。17.如权利要求14-16任一项所述的装置,其特征在于,还包括UI控件查看模块和编辑模块,在开发所述自动化测试模块时,所述UI控件查看模块用于: 获取所述游戏的当前界面及所述游戏当前界面的UI控件树,并显示在所述服务器的显示屏上; 获取所述服务器的输入设备输入的位置信息; 根据所述位置信息查找相对应的UI控件,得到第二查找结果,所述第二查找结果包括查找到的UI控件的名称、路径、当前顶点位置和在所述终端显示屏上的覆盖区域; 根据所述第二查找结果,在所述服务器的显示屏所显示的当前界面上突出显示所述查找到的UI控件,同时,突出显示所述查找到的UI控件在所述UI控件树上对应的节点; 所述编辑模块用于: 获取所述服务器的输入设备输入的编辑指令;所述编辑指令是基于所述第二查找结果生成的; 根据所述编辑指令编辑所述自动化测试模块。18.如权利要求17所述的装置,其特征在于,在所述根据所述位置信息查找相对应的UI控件,得到第二查找结果的方面,所述UI控件查看模块用于: 将所述输入设备输入的位置信息转换为所述终端显示屏的位置信息; 将所述显示屏的位置信息发送给所述终端,以便所述终端根据所述显示屏的位置信息查找相对应的UI控件并返回所述第二查找结果; 接收所述第二查找结果。19.一种游戏自动化测试方法,其特征在于,应用于终端,所述游戏自动化测试方法包括: 接收来自服务器或游戏自动化测试装置的、指示执行操作事件的通知;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;所述操作方式和操作位置是由所述服务器或游戏自动化测试装置根据所述UI控件的当前顶点位置和覆盖区域确定的; 根据所述通知,执行所述操作事件,以实现对与所述操作位置对应的UI控件、采用确定出的操作方式进行操作。20.如权利要求19所述的方法,其特征在于,在接收来自服务器或游戏自动化测试装置的、指示执行操作事件的通知之前,还包括: 接收来自服务器或手游自动化测试装置的针对所述目标UI控件的查找请求; 查找所述目标UI控件在所述游戏当面画面的UI控件树上对应的节点,得到第一查找结果;所述第一查找结果包含与所述目标UI控件对应的唯一标识;其中,所述UI控件树包含多个节点,所述游戏当面画画中的每一UI控件对应所述UI控件树上的一个节点,所述节点对应一个唯一标识; 向所述服务器或游戏自动化测试装置返回所述第一查找结果。21.如权利要求20所述的方法,其特征在于, 所述目标UI控件的查找请求包含所述目标UI控件的相关信息,其中,所述相关信息包括所述目标UI控件对应的名称、所述目标UI控件中的文字、所述目标UI控件中的图片名称,以及所述目标UI控件对应的节点相对于父节点的位置中的任意一种或任意组合; 所述查找所述目标UI控件在所述游戏当面画面的UI控件树上对应的节点包括: 根据所述目标UI控件的相关信息,搜索所述目标UI控件在所述UI控件树上对应的节点。22.如权利要求21所述的方法,其特征在于,还包括: 接收查询请求,所述查询请求包含终端显示屏的位置信息; 根据所述终端显示屏的位置信息查找相对应的UI控件并返回第二查找结果;所述第二查找结果包括查找到的UI控件的名称、路径、当前顶点位置和所述查找到的UI控件在所述终端显示屏上的覆盖区域。23.如权利要求22所述的方法,其特征在于,所述根据所述终端显示屏的位置信息查找相对应的UI控件包括: 将所述显示屏的位置信息转换成unity坐标系下的位置信息; 根据转换得到的unity坐标系下的位置信息查找相对应的UI控件。24.一种终端,其特征在于,包括: 通信单元,用于接收来自服务器或游戏自动化测试装置的、指示执行操作事件的通知;所述操作事件至少包括操作方式和在所述终端显示屏上的操作位置;其中,所述操作方式和操作位置是由所述服务器或游戏自动化测试装置根据所述UI控件的当前顶点位置和覆盖区域确定的; 执行单元,用于根据所述通知,执行所述操作事件,以实现对与所述操作位置对应的UI控件、采用确定出的操作方式进行操作。25.一种游戏自动化测试系统,其特征在于,包括如权利要求23所述的终端,以及,如权利要求14-18所述的服务器。
【文档编号】G06F11/36GK106095666SQ201610388475
【公开日】2016年11月9日
【申请日】2016年6月2日 公开号201610388475.1, CN 106095666 A, CN 106095666A, CN 201610388475, CN-A-106095666, CN106095666 A, CN106095666A, CN201610388475, CN201610388475.1
【发明人】方亮, 荆彦青, 许敏华, 孙大伟, 杨君, 张伟, 蔡怡峰, 施晓廉
【申请人】腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1