移动终端游戏自动测试方法和装置的制造方法

文档序号:10512099阅读:228来源:国知局
移动终端游戏自动测试方法和装置的制造方法
【专利摘要】本发明提供一种移动终端游戏自动测试方法和装置,一种移动终端游戏自动测试方法包括:测试终端通过RPC调用移动终端上游戏进程的UI接口,获取所述游戏进程UI控件代码层的信息;所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作。本发明提供的移动终端游戏自动测试方法,提高了对移动终端游戏进行自动测试的精度,适用于对复杂游戏的测试。
【专利说明】
移动终端游戏自动测试方法和装置
技术领域
[0001]本发明实施例涉及互联网技术领域,尤其涉及一种移动终端游戏自动测试方法和
目.0
【背景技术】
[0002]随着移动通信技术的发展,移动终端已经成为人们不可获取的工具。人们不仅可以通过移动终端进行通信,还可以使用移动终端上网、办公、娱乐等。其中,由于移动终端具有便携性,移动终端上的游戏可以随时随地游玩,因此移动终端上的游戏已经有取代传统的PC端游戏的趋势,成为人们休闲娱乐的首选。
[0003]在移动终端游戏的开发过程中,需要对移动终端游戏进行各方面的测试。测试分为人工测试和自动测试两种方式,由于人工测试效率不高,因此移动终端游戏的开发商都致力于研究移动终端游戏的自动测试方法以提高测试效率。目前移动终端游戏的自动测试方法有几种,一种是依靠操作系统的厂商官方工具提供的UI控件及脚本逻辑接口,编写测试脚本调取接口获取UI控件实现自动测试;另一种是通过图像匹配识别用户界面(UserInterface,UI)控件位置,并通过调用控件所在坐标接口的方式自行编写测试用例脚本实现自动测试;再有就是移动终端调试工具包模拟人工方式对移动终端界面进行触碰操作实现自动测试。
[0004]但是目前的上述几种自动测试方法中,依靠操作系统的厂商官方工具提供的UI控件编写的测试用例仅能调取官方工具自带的UI控件类型,而一般游戏都不是使用官方工具提供的UI控件开发的,因此这种方法应用范围有限;基于图像匹配识别的自动测试方法受限于图像受干扰程度和识别准确度的限制,存在测试失败的情况,而且移动终端游戏的开发中UI迭代频率大,自动测试用例需要随着UI迭代更新维护匹配图像,测试用例的维护成本较高;而基于图像匹配识别的自动测试方法和采用移动终端调试工具包模拟人工方式对移动终端界面进行触碰操作的方法,都是基于屏幕的坐标信息实现自动测试的,难以满足逻辑较为复杂的游戏的自动测试。
[0005]综上所述,对于移动终端游戏的UI越来越丰富,游戏逻辑越来越复杂的发展趋势而言,目前的游戏自动测试方法已经不能满足自动测试的需求,如何完成移动终端设备游戏的自动测试,是目前亟待解决的问题。

【发明内容】

[0006]本发明实施例提供一种移动终端游戏自动测试方法和装置,用于在进行移动终端游戏的自动测试时,提高对移动终端上游戏进行自动测试的精度。
[0007]本发明实施例提供一种移动终端游戏自动测试方法和装置,包括:
[0008]测试终端通过RPC调用移动终端上游戏进程的UI接口,获取所述游戏进程UI控件代码层的信息;
[0009]所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作;
[0010]所述测试终端通过RPC获取所述游戏进程在运行过程中的测试数据。
[0011]本发明实施例还提供一种移动终端游戏自动测试装置,包括:
[0012]RPC调用模块,用于通过RPC调用移动终端上游戏进程的UI接口,获取所述游戏进程UI控件代码层的信息;
[0013]测试执行模块,用于所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作;
[0014]所述RPC调用模块还用于通过RPC获取所述游戏进程在运行过程中的测试数据。
[0015]本发明实施例提供的移动终端游戏自动测试方法和装置中,测试终端通过RPC调用移动终端上游戏进程的UI接口,获取游戏进程UI控件代码层的信息,并按照预设测试脚本,根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作,从而可以通过RPC获取游戏进程在运行过程中的测试数据,完成对移动终端上游戏的自动测试,由于测试终端控制移动终端在屏幕界面上进行模拟操作的UI控件信息是通过RPC获取的UI控件代码层信息,因此本实施例提供的移动终端游戏自动测试方法可以精确地对移动终端进行模拟触碰操作,从而提高对移动终端上游戏进行自动测试的精度,能够适应移动终端上游戏UI越来越复杂的发展趋势。
【附图说明】
[0016]图1为本发明实施例提供的移动终端游戏自动测试方法实施例一的流程图;
[0017]图2为本发明实施例提供的移动终端游戏自动测试方法实施例二的流程图;
[0018]图3为本发明实施例提供的移动终端游戏自动测试方法实施例三的流程图;
[0019]图4为本实施例提供的移动终端游戏自动测试方法的系统拓扑结构示意图;
[0020]图5为同步RPC调用的流程图;
[0021]图6为异步RPC调用的流程图;
[0022]图7为本发明实施例提供的移动终端游戏自动测试装置实施例一的结构示意图;
[0023]图8为本发明实施例提供的移动终端游戏自动测试装置实施例二的结构示意图。
【具体实施方式】
[0024]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0025]在对移动终端上游戏进行自动测试时,需要将移动终端与一台用于测试的测试终端连接,在测试终端上安装与移动终端相匹配的测试工具,并按照所需测试的游戏性能编写相应的测试用例,通过与移动终端相匹配的测试工具完成测试用例中需要测试的各操作,并在测试终端上获取移动终端上游戏进程运行时的各种测试数据。
[0026]目前在对移动终端上游戏进行自动测试时,测试用例是按照游戏当前开发的UI编写的,测试终端通过测试工具对游戏进程进行的操作也都是根据测试用例中描述的UI控件的位置,测试终端通过图像匹配识别的方式识别游戏进程中UI控件的位置,并对移动终端的触控屏幕进行模拟触碰操作。但是在游戏开发过程中,UI迭代频率很大,为了保证游戏的新鲜度,在游戏的版本更新过程中,UI也会发生迭代更新。而一旦游戏的UI发生了变化,上述自动测试方法中的测试用例则需要重新编写,导致测试用例的维护成本很高,也影响开发进度。
[0027]为了解决对移动终端上游戏的自动测试中存在的问题,本发明实施例提供一种移动终端游戏自动测试方法、装置和系统,通过在移动终端和测试终端之间建立连接,测试终端通过远程过程调用协议(Remote Procedure Call Protocol,RPC)获取移动终端上的游戏进程的UI代码层信息,并根据获取到的UI代码层信息对移动终端的游戏进程进行操作,测试终端在此过程中获取游戏进程在运行过程中的相关数据,从而完成对移动终端上游戏的测试。避免对测试用例的频繁维护。
[0028]在本发明实施例中,测试终端可以为台式电脑、笔记本电脑等,移动终端可以为手机、平板电脑等便携式移动终端。
[0029]图1为本发明实施例提供的移动终端游戏自动测试方法实施例一的流程图,如图1所示,本实施例的方法包括:
[0030]步骤SlOl,测试终端通过RPC调用移动终端上游戏进程的UI接口,获取游戏进程UI控件代码层的信息。
[0031]具体地,本实施例提供的移动终端游戏自动测试方法中,在测试终端和移动终端之间建立一个用于进行RPC调用的连接,测试终端可以通过RPC调用移动终端上游戏进程的UI接口,通过该UI接口,测试终端可以获取游戏进程UI控件代码层的信息。通过UI代码层的信息确定UI控件的位置相比于通过图像匹配的方式确定UI控件的位置更加准确和稳定。
[0032]该游戏进程UI控件代码层的信息例如是游戏进程的UI控件的位置、大小、类型、控件标识、名称、所属界面等信息。
[0033]步骤S102,测试终端按照预设测试移动终端游戏自动测试方法中脚本,根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作。
[0034]具体地,在测试终端中,需要事先编写好对移动终端上游戏的自动测试用例脚本,测试终端在获取到游戏进程UI代码层信息后,即可根据自动测试用例脚本中描述的各项操作,控制移动终端在屏幕界面上进行模拟触碰操作,从而实现对移动终端上游戏的自动测试。该模拟触碰操作例如可以是点击、拖曳、图像截屏等操作。
[0035]由于通过UI代码层的信息确定的UI控件的位置相比于通过图像匹配的方式确定的UI控件的位置更加准确和稳定,因此通过UI代码层的信息控制移动终端在屏幕界面上进行模拟触碰操作也更加准确。在移动终端游戏画面越来越丰富的情况下,通过上述方法将能够完成对移动终端上游戏的更精确测试。
[0036]步骤S103,测试终端通过RPC获取游戏进程在运行过程中的测试数据。
[0037]具体地,在测试终端控制移动终端在屏幕上进行模拟触碰操作后,移动终端上的游戏进程将进行相应的反应,此时,测试终端可以在测试终端和移动终端之间用于进行RPC调用的连接上,通过RPC获取游戏进程在运行过程中的相应测试数据。
[0038]在实施通过RPC获取游戏进程UI控件代码层的信息,并依次执行测试终端中预设的自动测试方法中脚本的步骤后,测试终端通过RPC获取的所有测试数据即为本次自动测试的测试结果。通过分析这些测试数据即可得到移动终端上游戏的性能。
[0039]本实施例提供的移动终端游戏自动测试方法中,测试终端通过RPC调用移动终端上游戏进程的UI接口,获取游戏进程UI控件代码层的信息,并按照预设测试脚本,根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作,从而可以通过RPC获取游戏进程在运行过程中的测试数据,完成对移动终端上游戏的自动测试,由于测试终端控制移动终端在屏幕界面上进行模拟操作的UI控件信息是通过RPC获取的UI控件代码层信息,因此本实施例提供的移动终端游戏自动测试方法可以精确地对移动终端进行模拟触碰操作,从而提高对移动终端上游戏进行自动测试的精度,能够适应移动终端上游戏UI越来越复杂的发展趋势。
[0040]图2为本发明实施例提供的移动终端游戏自动测试方法实施例二的流程图,如图2所示,本实施例的方法包括:
[0041]步骤S201,测试终端通过RPC调用移动终端上游戏进程的UI接口,获取游戏进程UI控件代码层的信息;所述测试终端按照预设测试移动终端游戏自动测试方法中脚本,根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作。
[0042]步骤S202,测试终端通过RPC调用移动终端上游戏进程的调试接口,控制游戏进程执行测试脚本中的测试逻辑指令。
[0043]步骤S203,测试终端通过RPC获取游戏进程在运行过程中的测试数据。
[0044]在图1所示实施例中,测试终端可以通过RPC调用,获取移动终端上游戏进程UI控件代码层的信息,并通过模拟触碰操作的方式对游戏进程进行控制。但这种方式仅能模拟用户在移动终端上对游戏的操作,对游戏进程进行简单测试。而移动终端上的游戏内容越来越丰富,游戏的操作越来越复杂,仅依靠模拟触碰操作的方式可能无法对游戏进行全面的测试。例如在三维(3Dimens1ns,3d)即时战斗游戏中,需要控制游戏中的角色进入副本关卡,再移动到有怪物的地方,然后通过点击屏幕来控制游戏中的角色进行战斗。对这样复杂的测试而言,仅通通过模拟触碰方式在移动终端的屏幕界面上进行操作是难以完成的。
[0045]因此,本实施例提供的移动终端游戏自动测试方法在图1所示实施例的基础上,进一步地,测试终端还可以通过RPC调用移动终端上游戏进程的调试接口,通过该调试接口向游戏进程发送测试逻辑指令,使游戏进程完成相应的逻辑处理。其中,测试终端是向游戏进程发送的测试逻辑指令是测试终端中的测试脚本中预设好的。通过游戏进程的调试接口,可以直接对游戏进程进行逻辑控制,使游戏进程完成一些很难通过触碰操作完成的功能,或者是无法通过触碰操作完成的功能。这样就可以丰富对游戏进行自动测试的测试内容,能够完成对多重度游戏复杂的自动测试需求。
[0046]具体而言,在不同的游戏类型中,测试终端控制游戏进程执行的测试逻辑指令,可以为不同内容。例如在角色扮演类游戏中,测试终端可以通过调用游戏调试接口调用修改游戏内主角的各种属性,包括等级、经验值、金钱等;在闯关类游戏中,测试终端可以通过调用游戏调试接口调用开启任意条件类型的战斗关卡、在关卡内创建所需怪物类型的怪物等。再结合图1所示实施例中所示的通过RPC调用移动终端上游戏进程的UI接口,获取游戏进程UI控件代码层的信息,并根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作。从而可以在通过测试逻辑指令调用修改后的游戏进程中完成模拟用户触碰操作的测试。
[0047]而目前针对移动终端游戏的各种自动测试方案中,仅能基于屏幕的坐标信息实现模拟触碰操作完成自动测试。对于一些复杂的测试需求,例如测试游戏中角色与特定怪物的对战结果,目前基于屏幕坐标信息模拟触碰操作的自动测试方案需要控制游戏中角色耗费较长时间在游戏中寻找特定怪物,才能完成该测试,而一般对于这种对战结果的测试需要重复执行多次,那么基于屏幕坐标信息模拟触碰操作的自动测试方案需要耗费较多时间在寻找特定怪物上,测试效率很低。而通过调试接口向游戏进程发送测试逻辑指令,可以在游戏进程中主动创建所需的特定怪物,从仅需通过模拟触碰操作控制游戏中角色与该创建的特定怪物对战,即可得到对战结果。根据测试需求重复多次创建该特定怪物,那么仅需重复控制游戏角色与该特定怪物对战即可完成对该对战结果的测试,这将能够节约寻找特定怪物的时间,大大提高了测试效率。
[0048]为了实现图1或图2所示实施例提供的移动终端游戏自动测试方法,在测试终端和移动终端之间需要建立相应的连接。由于测试终端要通过RPC调用移动终端上游戏进程的UI接口以及获取游戏进程在运行过程中的测试数据,或者通过RPC调用移动终端上游戏进程的调试接口。因此在测试终端和移动终端之间,需要建立一个支持RPC的连接。另外,测试终端还需要根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作,而通过RPC是无法完成控制移动终端进行模拟触碰操作的,那么就还需要在测试终端和移动终端之间建立支持控制移动终端在屏幕界面进行模拟触碰操作的连接。
[0049]在本发明实施例中,在测试终端和移动终端之间建立两个连接,分别是传输控制协议(Transmiss1n Control Protocol,TCP)连接和有线数据连接。其中由于在测试过程中,测试终端和移动终端之间需要通过RPC频繁交互数据,因此需要测试终端和移动终端之间的连接可靠。而TCP连接在建立后,可以一直保持连接状态,在测试过程中通过TCP连接传输数据可以保证数据不丢失。因此在本实施例中,测试终端和移动终端之间的RPC调用都可以在TCP连接上进行。
[0050]而在测试终端和移动终端之间建立有线数据连接是由于目前的移动终端操作系统开发商都提供了相应的调试工具包,例如苹果公司的1s系统采用开源工具appium,谷歌公司的Android系统采用官方工具adb。测试终端可以通过测试终端和移动终端之间的有线数据连接对移动终端的屏幕界面进行模拟触碰操作。一般地,该有线数据连接为通用串行数据总线(Universal Serial Bus,USB)连接,本发明下述各实施例中也以有线数据连接为USB连接为例进行说明。因此在测试终端和移动终端之间建立有线数据连接后,并在测试终端上安装与移动终端的操作系统相对应的调试工具包,测试终端即可实现根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作。需要说明的是,测试终端上进行自动测试所使用的测试脚本也需要根据移动终端操作系统对应的调试工具包编写。
[0051]再考虑到TCP连接是基于固定IP的连接,而测试终端和移动终端的IP地址是通过其连接的路由器获取的。但在通过TCP连接进行RPC调用时,需要测试终端和移动终端都具有固定的IP地址,因此在建立测试终端和移动终端之间的TCP连接时,需要在另一台固定IP地址的服务器上搭建一个TCP网络服务器模块。测试终端和移动终端上均配置有TCP网络客户端模块,这样测试终端和移动终端即可通过服务器上的TCP网络服务器模块实现TCP连接。固IP地址的TCP网络服务器管理测试终端和移动终端的网络连接,管理双方的通信,并完成对双方通信网络包的转发。
[0052]在图1或图2所示实施例中,测试终端在控制移动终端上的游戏进程执行了相应操作后,将通过RPC获取游戏进程在运行过程中的测试数据。而这个测试数据可以包括:游戏进程在运行过程中的性能参数以及游戏进程在运行过程中的相关信息。
[0053]其中,游戏进程在运行过程中的性能参数包括:游戏进程在运行过程中的帧率、内存占用、游戏渲染面片数、游戏渲染贴图数、三角面片数。在测试终端的测试脚本中,可以设置一些判断条件,可根据获取到的性能参数确定下一步所执行的操作。同时,该性能参数也同时保存至内存中,当测试脚本执行完毕,测试终端将获取到的性能参数保存至后台数据库,以便测试人员在前台查看相关测试结果。
[0054]游戏进程在运行过程中的相关信息,包括:游戏进程在运行过程中的备份信息和/或游戏进程在运行过程中的截图。游戏进程在运行过程中产生的备份(dump)信息也可以通过RPC发送给测试终端,测试终端将该备份信息保存至内存中,备份信息是测试的重要参考数据。当测试脚本执行完毕,测试终端将获取到的备份信息保存至后台数据库,以便测试人员在前台查看相关测试结果。测试过程中测试终端通过移动终端屏幕操作工具提供的调用接口可获取移动终端的屏幕截图,测试终端可以将获取到的屏幕截图保存到测试中断本地存储器。当测试脚本执行完毕,测试终端将获取到的屏幕截图保存至后台数据库,以便测试人员在前台查看相关测试结果。
[0055]也就是说,在测试脚本执行完毕后,测试中断可以将在测试过程中收集到的测试数据,包括性能参数、备份信息、屏幕截图等均保存至后台数据库,那么测试人员可以通前台查看这些测试结果,从而确定游戏进程测试的结果。测试终端可以通过超文本传输协议(HyperText Transfer Protocol,HTTP)请求将测试数据发送至万维网(web)后台数据库,从而使测试人员通过web前台查看相关测试结果。
[0056]根据测试脚本对游戏进程进行测试的不同测试操作需求,可以将测试脚本的操作分为同步调用操作和异步调用操作。其中同步调用操作是指在该操作执行后,测试终端接收到游戏进程对于该操作的响应消息后,才可执行该操作的后续操作。而异步调用操作是指在该操作执行后,测试终端无需等待接收游戏进程对于该操作的响应消息,而可以继续执行该操作的后续操作。
[0057]具体地,对于测试终端按照预设测试脚本,根据UI控件代码层的信息控制移动终端的屏幕界面进行模拟触碰操作而言。若游戏进程UI控件代码层的信息对应的脚本操作为同步调用操作,则在测试终端根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作时,测试终端暂停控制移动终端执行测试脚本中所述同步调用操作后的操作,直到测试终端通过RPC获取所述同步调用操作的返回消息。若游戏进程UI控件代码层的信息对应的脚本操作为异步调用操作,则在测试终端根据UI控件代码层的信息控制移动终端在屏幕界面进行模拟触碰操作时,测试终端继续控制移动终端执行测试脚本中所述异步调用操作后的操作。
[0058]对于测试终端通过RPC调用移动终端上游戏进程的调试接口,控制游戏进程执行测试脚本中的测试逻辑指令而言。若测试逻辑指令对应的脚本操作为同步调用操作,则在测试终端控制游戏进程执行测试脚本中的测试逻辑指令时,测试终端暂停控制移动终端执行测试脚本中所述同步调用操作后的操作,直到测试终端通过RPC获取同步调用操作的返回消息。若测试逻辑指令对应的脚本操作为异步调用操作,则在测试终端控制游戏进程执行测试脚本中的测试逻辑指令时,测试终端继续控制移动终端执行测试脚本中异步调用操作后的操作。
[0059]上述同步调用操作例如是在闯关类游戏中,测试终端通过RPC调用移动终端上游戏进程的调试接口,开启游戏中的关卡。而测试终端中的测试脚本中下一步的操作应是对应于游戏角色在开启后的关卡中的行动,那么测试终端就需要等待游戏进程通过RPC返回关卡开启成功的响应消息后,才能继续执行测试脚本中的后续操作,否则测试脚本的执行将出现错误。
[0060]上述异步调用操作例如是测试终端需要通过RPC周期性获取游戏进行运行过程中的性能参数,而在此过程中,测试脚本的后续操作不会由于性能参数未返回而产生影响。那么测试终端就可以继续执行测试脚本中的后续操作。
[0061]上述各实施例对本发明提供的移动终端游戏自动测试方法进行了概括性说明,下面以一个具体实施例对本发明提供移动终端游戏自动测试方法进行进一步说明。
[0062]图3为本发明实施例提供的移动终端游戏自动测试方法实施例三的流程图。
[0063]在执行本实施例所示移动终端游戏自动测试方法之前,需要在测试终端上进行相应配置。首先,需要在测试终端上编写测试脚本,测试脚本一般以脚本语言实现,例如采用python脚本语言编写。并且需要在测试终端上配置与需测试移动终端对应的调试工具包。若待测试的移动终端采用Android系统,则需要在测试终端上安装Android官方提供的调试工具包ADB工具;若待测试的移动终端采用1S系统,那么测试终端的操作系统必须为Mac系统,并安装好开源调试工具appium。无论是ADB工具还是appium工具,都有相应的python库可以安装,并提供调试接口供测试脚本调用。调试工具可实现的主要功能包括:测试终端屏幕的点击、拖曳、图像截屏,游戏进程启动、关闭。
[0064]另外,还需要在固定IP的服务器上搭建一个TCP网络服务器模块,该TCP网络服务器模块用于为测试终端和移动终端提供TCP连接服务。
[0065]游戏软件的调试(debug)版都会允许在游戏代码内加入调试模块,调试模块主要是实现一些调试和测试辅助功能逻辑结构。在本实施例中,游戏软件代码调试模块中需要加入一个TCP网络客户端(c I i ent)模块。在游戏软件启动时,TCP网络客户端模块就会启动并与固定IP的服务器上的TCP网络服务器模块建立连接。
[0066]另外,还需要将测试终端与移动终端通过USB接口连接。
[0067]图4为本实施例提供的移动终端游戏自动测试方法的系统拓扑结构示意图。如图所示,测试用例41为测试终端上实现自动测试的功能模块。其中包括测试脚本模块42、TCP客户端模块43和调试工具命令接口库模块44。游戏进程45在测试终端上运行,包括调试模块46、TCP客户端模块47和设备消息响应模块48。测试用例41中的TCP客户端模块43和游戏进程45中的TCP客户端模块47通过TCP服务器49建立TCP连接。测试用例41中的调试工具命令接口库模块44通过测试终端上安装的调试工具包40与游戏进程中的设备消息响应模块48建立USB连接。
[0068]如图所示,本实施例提供的移动终端游戏自动测试方法包括:
[0069]步骤S301,在测试终端和移动终端之间建立USB连接和TCP连接。
[0070]其中,只要测试终端和移动终端之间通过USB接口连接,即可建立USB连接。测试终端和移动终端之间通过固定IP的服务器建立TCP连接。在测试终端上,测试用例41执行两个进程,一个是用于测试用例41中测试脚本执行的主进程,另一个是测试用例41与游戏进程进行通信的TCP网络客户端线程。
[0071 ] 步骤S302,测试终端进行测试脚本初始化工作,启动TCP客户端模块43,通过TCP客户端模块43连接TCP服务器49,并通过调试工具包40启动移动终端上的游戏进程45。
[0072]当移动终端上的游戏进程45启动后,游戏进程45中的TCP客户端模块47就会启动,并通过TCP客户端模块47连接TCP服务器49。
[0073]步骤S303,测试终端和移动终端之间通过TCP服务器绑定通信关系。
[0074]测试用例41中的TCP客户端模块43连接上TCP服务器49后,TCP客户端模块43发送测试用例41相应的标识给TCP服务器49标识此TCP客户端模块43为测试用例41,完成在TCP服务器49上的注册登录。游戏进程45中的TCP客户端模块47连接上TCP服务器49后,TCP客户端模块47发送游戏进程45相应的标识给TCP服务器49标识此TCP客户端模块47为游戏进程45,发送游戏进程45所在移动终端的唯一标识设备序列号(Unique Device Identifier,UDID)给TCP服务器49,完成在TCP服务器49上的注册登录,TCP服务器49建立UDID和TCP客户端模块47的字典索引。测试用例41中的TCP客户端模块43登录后周期性向TCP服务器49发送要通信绑定的移动终端的UDID标识,TCP服务器49收到通信绑定请求后通过请求的UDID标识索引游戏进程45中的TCP客户端模块47,索引不到则表示游戏进程45中的TCP客户端模块47尚未连接上TCP服务器49,回复测试用例41中的TCP客户端模块43绑定通信失败消息。测试用例41中的TCP客户端模块43收到绑定失败消息继续周期性发送绑定请求。游戏进程45中的TCP客户端模块47登录TCP服务器49后,TCP服务器49收到绑定请求,通过UDID索引到游戏进程45中的TCP客户端模块47后,在测试用例41和游戏进程45之间建立通信绑定关系,开通测试用例41中的TCP客户端模块43和游戏进程45中的TCP客户端模块47间的通信。
[0075]步骤S304,测试终端执行自动测试流程。
[0076]自动测试过程中,测试用例41通过TCP客户端模块43周期性向游戏进程45发送RPC请求,请求游戏进程发送游戏进程45运行过程中的关键性能参数,包括游戏进程45当前内存占用、运行帧率、贴图数、三角面片数等性能参数。游戏进程45运行过程中只要检测到产生dump信息,测试用例41就通过RPC调用相关收集dump信息的接口,测试用例41收集保存dump信息。
[0077]测试脚本模块42通过TCP客户端模块43发送RPC请求给游戏进程45获取当前UI各控件信息,包括控件位置、大小、类型、控件标识、名称、所属界面等。测试脚本模块42判断游戏进程45当前UI控件信息,根据测试监本中的测试逻辑执行移动终屏幕上的触碰操作,触碰操作的实现通过测试脚本模块42调用调试工具包40操作移动终端屏幕界面,界面操作包括点击、拖拽等。调试工具包40还可以截取当前移动终端屏幕图像,测试脚本模块42测试过程可以根据需要采集当前游戏屏幕截图,作为测试参考数据。
[0078]测试脚本模块42还可通过TCP客户端模块43发送RPC请求给游戏进程45调用游戏调试接口,通过让游戏进程45执行相关调试测试指令逻辑,辅助实现自动测试流程。
[0079]本实施例中所有测试用例41和游戏进程45间的通信全部以RPC的方式调用双方的函数接口实现。本实施例中RPC调用方式分为两种:
[0080]一种是同步RPC调用。测试用例41的测试脚本模块42调用RPC函数请求调用游戏进程45中调试接口,RPC函数接口必须等到游戏进程45返回RPC请求回复后,RPC函数的执行才返回结束,否则在超时时间范围内测试脚本执行过程被中断,并一直轮询等待RPC请求回复,超出超时时间还未收到回复则认为是游戏测试过程发生异常。
[0081 ]图5为同步RPC调用的流程图,具体的同步RPC实施步骤包括:
[0082] 步骤S501,测试用例中的测试脚本调用RPC接口,传入要调用的游戏进程调试接口名和调用参数,发送RPC请求,然后中断用例执行线程,定时轮询RPC回复消息。
[0083 ] 步骤S502,RPC调用请求内容通过网络发包协议处理生成网络协议包。
[0084]步骤S503,网络包通过网络模块发送给后台TCP服务器。
[0085]步骤S504,TCP服务器转发网络包给游戏进程。
[0086]步骤S505,游戏进程里的网络模块将收到的网络包进行收包协议处理。
[0087]步骤S506,收包处理解析出协议中要调用的游戏进程调用接口和参数,调用相应的调试接口。
[0088]步骤S507,调试接口执行相应的调试内容,并按接口要求返回回复信息。
[0089]步骤S508,回复信息通过网络发包协议处理生成网络协议包。
[0090]步骤S509,网络包通过网络模块发送给后台TCP服务器。
[0091 ]步骤S510,TCP服务器转发网络包给测试用例。
[0092]步骤S511,测试用例里的网络模块收到网络包进行收包协议处理。
[0093]步骤S512,收包处理解析出协议中RPC返回消息,RPC调用接口收到返回消息,结束轮询,恢复线程执行。
[0094]另一种是异步调用。测试用例41的测试脚本模块42调用RPC函数请求调用游戏进程中调试接口,RPC函数调用游戏进程调试接口后,等待回复事件加入回复等待列表,RPC函数接口马上结束返回,测试用例41执行线程继续执行。
[0095]图6为异步RPC调用的流程图,具体的异步RPC实施步骤包括:
[0096]步骤S601,发送RPC请求,将本次请求的回复回调事件加入RPC回复等待队列。
[0097]步骤S602,测试用例中的测试脚本调用RPC接口,传入要调用的游戏进程调试接口名和调用参数,发送RPC请求,发送完请求,RPC调用接口马上返回。
[0098]步骤S603?S612与步骤S502?S511步骤内容一致。
[0099]S6013,收包处理解析出协议中RPC返回消息,在消息回复队列里回调对应的消息回调接口,处理消息回复操作。
[0100]本实施例中常用的同步RPC调用包括:测试用例41中的测试脚本模块42向游戏进程45查询当前UI界面信息、游戏内角色数据、当前副本游戏进度、关卡内战斗胜败等。本实施例中常用的异步RPC调用包括:测试用例41周期性向游戏进程45请求返回性能参数数据、一些游戏进程45调试接口进行辅助测试的调用等。
[0101 ] 步骤S305,测试用例41中的测试脚本模块42中的测试脚本执行完后,测试脚本模块42调用调试工具包40关闭游戏进程接口,关闭游戏进程45。
[0102]游戏进程45结束,测试用例41与游戏进程45断开网络通信连接。测试用例41停止收集游戏进程性能参数数据和dump信息。测试用例41整理测试过程收集到的运行日志、性能参数、游戏截图、dump信息,并通过http请求发送到web后台服务器数据库保存,保存完毕即可在web前台查看到测试数据。
[0103]本发明例提供的移动设备游戏自动测试方法,通过TCP网络通信方式提供了测试终端上的测试用例和移动终端上的游戏进程所间的RPC相互调用,实现了测试用例和游戏进程之间在游戏逻辑上的信息交互,可以适应更多重度游戏需求复杂的自动测试需求。本发明同时支持传统的自动测试方法里对游戏界面进行操作的测试方式,并且本发明实施例中的进行界面操作时的参考信息来自RPC请求获取游戏进行游戏UI界面逻辑信息,相比仅使用图像匹配方式的UI界面信息获取方式在测试过程中更准确和稳定。本实施例同时支持在测试过程中通过RPC请求实时获取游戏进程中性能参数信息和dump信息,能直接从游戏进程获取重要的测试辅助信息,协助测试结果的判断。
[0104]图7为本发明实施例提供的移动终端游戏自动测试装置实施例一的结构示意图,如图7所示,本实施例提供的移动终端游戏自动测试装置包括:
[0105]RPC调用模块71,用于通过RPC调用移动终端上游戏进程的UI接口,获取所述游戏进程UI控件代码层的信息。
[0106]测试执行模块72,用于所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作。
[0107]RPC调用模块71还用于通过RPC获取所述游戏进程在运行过程中的测试数据。
[0108]本实施例提供的移动终端游戏自动测试装置用于执行图1所示实施例的方法步骤,其实现原理和技术效果类似,此处不再赘述。
[0109]进一步地,在图7所示实施例的基础上,RPC调用模块71,还用于通过RPC调用所述移动终端上游戏进程的调试接口,控制所述游戏进程执行所述测试脚本中的测试逻辑指令。
[0110]图8为本发明实施例提供的移动终端游戏自动测试装置实施例二的结构示意图,本实施例提供的移动终端游戏自动测试装置在图7的基础上,还包括连接建立模块73。
[0111]连接建立模块73,用于与所述移动终端建立TCP连接以及有线数据连接。
[0112]RPC调用模块71,具体用于在所述TCP连接上通过RPC调用所述移动终端上游戏进程的UI接口 ;在所述TCP连接上通过RPC调用所述移动终端上游戏进程的调试接口 ;
[0113]测试执行模块72,具体用于按照预设测试脚本,在所述有线数据连接上根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作。
[0114]进一步地,在图8所示实施例的基础上,连接建立模块73,具体用于和所述移动终端通过固定IP的服务器建立TCP连接。
[0115]进一步地,在图7或图8所示实施例的基础上,测试执行模块72,具体用于使用与所述移动终端匹配的调试工具,按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作。
[0116]进一步地,在图7或图8所示实施例的基础上,测试执行模块72,具体用于若所述游戏进程UI控件代码层的信息对应的脚本操作为同步调用操作,则在根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作时,暂停控制所述移动终端执行所述测试脚本中所述同步调用操作后的操作,直到所述测试终端通过RPC获取所述同步调用操作的返回消息;若所述游戏进程UI控件代码层的信息对应的脚本操作为异步调用操作,则在根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作时,继续控制所述移动终端执行所述测试脚本中所述异步调用操作后的操作。
[0117]进一步地,在图7或图8所示实施例的基础上,测试执行模块72,具体用于若所述测试逻辑指令对应的脚本操作为同步调用操作,则在控制所述游戏进程执行所述测试脚本中的测试逻辑指令时,暂停控制所述移动终端执行所述测试脚本中所述同步调用操作后的操作,直到所述测试终端通过RPC获取所述同步调用操作的返回消息;若所述测试逻辑指令对应的脚本操作为异步调用操作,则在控制所述游戏进程执行所述测试脚本中的测试逻辑指令时,继续控制所述移动终端执行所述测试脚本中所述异步调用操作后的操作。
[0118]进一步地,在图7或图8所示实施例的基础上,所述游戏进程在运行过程中的测试数据,包括:所述测试终端通过RPC获取所述游戏进程在运行过程中的性能参数和/或所述游戏进程在运行过程中的相关信息。
[0119]进一步地,在图7或图8所示实施例的基础上,所述游戏进程在运行过程中的性能参数,包括:所述游戏进程在运行过程中的帧率、内存占用、游戏渲染面片数、游戏渲染贴图数、三角面片数。所述游戏进程在运行过程中的相关信息,包括:所述游戏进程在运行过程中的备份信息和/或所述游戏进程在运行过程中的截图。
[0120]进一步地,在图7或图8所示实施例的基础上,所述UI控件代码层的信息包括:所述游戏进程的UI控件的位置、大小、类型、控件标识、名称、所属界面。
[0121 ]进一步地,在图7或图8所示实施例的基础上,本实施例提供的移动终端游戏自动测试装置还可以包括数据发送模块,用于将所述游戏进程在运行过程中的测试数据发送至后台数据库,所述后台数据库用于保存从前台查看的测试数据。数据发送模块与RPC调用模块71和测试执行模块72,分别连接。
[0122]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【主权项】
1.一种移动终端游戏自动测试方法,其特征在于,包括: 测试终端通过远程过程调用协议RPC调用移动终端上游戏进程的用户界面UI接口,获取所述游戏进程UI控件代码层的信息;所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作;所述测试终端通过RPC获取所述游戏进程在运行过程中的测试数据。2.根据权利要求1所述的方法,其特征在于,还包括: 所述测试终端通过RPC调用所述移动终端上游戏进程的调试接口,控制所述游戏进程执行所述测试脚本中的测试逻辑指令。3.根据权利要求1或2所述的方法,其特征在于,所述测试终端通过RPC调用移动终端上游戏进程的UI接口之前,还包括: 所述测试终端与所述移动终端建立传输控制协议TCP连接以及有线数据连接; 所述测试终端通过RPC调用移动终端上游戏进程的UI接口,包括: 所述测试终端在所述TCP连接上通过RPC调用所述移动终端上游戏进程的UI接口; 所述测试终端通过RPC调用移动终端上游戏进程的调试接口,包括: 所述测试终端在所述TCP连接上通过RPC调用所述移动终端上游戏进程的调试接口;所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作,包括: 所述测试终端按照预设测试脚本,在所述有线数据连接上根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作。4.根据权利要求3所述的方法,其特征在于,所述测试终端与所述移动终端建立TCP连接,包括: 所述测试终端和所述移动终端通过固定IP的服务器建立TCP连接。5.根据权利要求1所述的方法,其特征在于,所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息对所述移动终端屏幕界面进行模拟触碰操作,包括: 所述测试终端使用与所述移动终端匹配的调试工具,按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作。6.根据权利要求1所述的方法,其特征在于,所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端的屏幕界面进行模拟触碰操作,包括: 若所述游戏进程UI控件代码层的信息对应的脚本操作为同步调用操作,则在所述测试终端根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作时,所述测试终端暂停控制所述移动终端执行所述测试脚本中所述同步调用操作后的操作,直到所述测试终端通过RPC获取所述同步调用操作的返回消息; 若所述游戏进程UI控件代码层的信息对应的脚本操作为异步调用操作,则在所述测试终端根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作时,所述测试终端继续控制所述移动终端执行所述测试脚本中所述异步调用操作后的操作。7.根据权利要求2所述的方法,其特征在于,所述测试终端通过RPC调用移动终端上游戏进程的调试接口,控制所述游戏进程执行所述测试脚本中的测试逻辑指令,包括: 若所述测试逻辑指令对应的脚本操作为同步调用操作,则在所述测试终端控制所述游戏进程执行所述测试脚本中的测试逻辑指令时,所述测试终端暂停控制所述移动终端执行所述测试脚本中所述同步调用操作后的操作,直到所述测试终端通过RPC获取所述同步调用操作的返回消息; 若所述测试逻辑指令对应的脚本操作为异步调用操作,则在所述测试终端控制所述游戏进程执行所述测试脚本中的测试逻辑指令时,所述测试终端继续控制所述移动终端执行所述测试脚本中所述异步调用操作后的操作。8.根据权利要求1?7任一项所述的方法,其特征在于,所述游戏进程在运行过程中的测试数据,包括:所述测试终端通过RPC获取所述游戏进程在运行过程中的性能参数和/或所述游戏进程在运行过程中的相关信息。9.根据权利要求8所述的方法,其特征在于,所述游戏进程在运行过程中的性能参数,包括:所述游戏进程在运行过程中的帧率、内存占用、游戏渲染面片数、游戏渲染贴图数、三角面片数; 所述游戏进程在运行过程中的相关信息,包括:所述游戏进程在运行过程中的备份信息和/或所述游戏进程在运行过程中的截图。10.根据权利要求1?7任一项所述的方法,其特征在于,所述UI控件代码层的信息包括:所述游戏进程的UI控件的位置、大小、类型、控件标识、名称、所属界面。11.根据权利要求1?7任一项所述的方法,其特征在于,还包括:所述测试终端将所述游戏进程在运行过程中的测试数据发送至后台数据库,所述后台数据库用于保存从前台查看的测试数据。12.一种移动终端游戏自动测试装置,其特征在于,包括: 远程过程调用协议RPC调用模块,用于通过RPC调用移动终端上游戏进程的用户界面UI接口,获取所述游戏进程UI控件代码层的信息; 测试执行模块,用于所述测试终端按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作; 所述RPC调用模块还用于通过RPC获取所述游戏进程在运行过程中的测试数据。13.根据权利要求12所述的装置,其特征在于,所述RPC调用模块还用于通过RPC调用所述移动终端上游戏进程的调试接口,控制所述游戏进程执行所述测试脚本中的测试逻辑指令。14.根据权利要求13所述的装置,其特征在于,还包括:连接建立模块,用于与所述移动终端建立传输控制协议TCP连接以及有线数据连接; 所述RPC调用模块,具体用于在所述TCP连接上通过RPC调用所述移动终端上游戏进程的UI接口 ;在所述TCP连接上通过RPC调用所述移动终端上游戏进程的调试接口 ; 所述测试执行模块,具体用于按照预设测试脚本,在所述有线数据连接上根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作。15.根据权利要求14所述的装置,其特征在于,所述连接建立模块,具体用于和所述移动终端通过固定IP的服务器建立TCP连接。16.根据权利要求12所述的装置,其特征在于,所述测试执行模块,具体用于使用与所述移动终端匹配的调试工具,按照预设测试脚本,根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作。17.根据权利要求12所述的装置,其特征在于,所述测试执行模块,具体用于若所述游戏进程UI控件代码层的信息对应的脚本操作为同步调用操作,则在根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作时,暂停控制所述移动终端执行所述测试脚本中所述同步调用操作后的操作,直到所述测试终端通过RPC获取所述同步调用操作的返回消息;若所述游戏进程UI控件代码层的信息对应的脚本操作为异步调用操作,则在根据所述UI控件代码层的信息控制所述移动终端在屏幕界面进行模拟触碰操作时,继续控制所述移动终端执行所述测试脚本中所述异步调用操作后的操作。18.根据权利要求13所述的装置,其特征在于,所述测试执行模块,具体用于若所述测试逻辑指令对应的脚本操作为同步调用操作,则在控制所述游戏进程执行所述测试脚本中的测试逻辑指令时,暂停控制所述移动终端执行所述测试脚本中所述同步调用操作后的操作,直到所述测试终端通过RPC获取所述同步调用操作的返回消息;若所述测试逻辑指令对应的脚本操作为异步调用操作,则在控制所述游戏进程执行所述测试脚本中的测试逻辑指令时,继续控制所述移动终端执行所述测试脚本中所述异步调用操作后的操作。19.根据权利要求12?18任一项所述的装置,其特征在于,所述游戏进程在运行过程中的测试数据,包括:所述测试终端通过RPC获取所述游戏进程在运行过程中的性能参数和/或所述游戏进程在运行过程中的相关信息。20.根据权利要求19所述的装置,其特征在于,所述游戏进程在运行过程中的性能参数,包括:所述游戏进程在运行过程中的帧率、内存占用、游戏渲染面片数、游戏渲染贴图数、三角面片数; 所述游戏进程在运行过程中的相关信息,包括:所述游戏进程在运行过程中的备份信息和/或所述游戏进程在运行过程中的截图。21.根据权利要求12?18任一项所述的装置,其特征在于,所述UI控件代码层的信息包括:所述游戏进程的UI控件的位置、大小、类型、控件标识、名称、所属界面。22.根据权利要求12?18任一项所述的装置,其特征在于,还包括:数据发送模块,用于将所述游戏进程在运行过程中的测试数据发送至后台数据库,所述后台数据库用于保存从前台查看的测试数据。
【文档编号】G06F11/36GK105868111SQ201610186545
【公开日】2016年8月17日
【申请日】2016年3月29日
【发明人】吴炜峰
【申请人】网易(杭州)网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1