CN104778121A - 游戏程序的测试方法、装置及系统 - Google Patents
游戏程序的测试方法、装置及系统 Download PDFInfo
- Publication number
- CN104778121A CN104778121A CN201510134351.6A CN201510134351A CN104778121A CN 104778121 A CN104778121 A CN 104778121A CN 201510134351 A CN201510134351 A CN 201510134351A CN 104778121 A CN104778121 A CN 104778121A
- Authority
- CN
- China
- Prior art keywords
- assembly
- instruction
- identification code
- test
- module
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种游戏程序的测试方法、装置及系统。所述游戏程序的测试方法包括:运行游戏程序;所述游戏程序包括游戏场景中的所有组件;接收测试单元发送的第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;对所述识别码对应的组件执行测试操作。采用本发明实施例,能够提高游戏程序的测试效率和准确率。
Description
技术领域
本发明涉及移动通信技术领域,尤其涉及一种游戏程序的测试方法、装置及系统。
背景技术
在手机游戏中,由于各种组件都是以画图的方式绘制出来,而不是普通应用程序中的原生(native)组件,导致手机游戏测试技术非常缺乏。
在现有技术中,手机游戏的测试一般是基于图像识别的方式来进行的,例如Sikuli或airtest测试框架。测试装置需要不断获取手机屏幕的截图,然后在截图中寻找按钮组件相近的坐标位置,并将该坐标位置转换为手机屏幕上的坐标,然后,使用ADB(Android Debug Bridge,安卓调试桥)等方式来模拟点击屏幕上坐标的位置,从而完成对手机游戏的测试。
但是,这种依赖屏幕截图的测试方法,在不同的操作系统上、不同的浏览器中,甚至是不同的显示分辨率下,均需要独立维护一套图形源文件,使得维护成本高。而且,由于目前手机屏幕的分辨率越来越高,识别一个高分辨率手机的截屏需要较长时间,极大降低了测试效率。而且,这种测试方法的执行容错性差,如果在测试过程中出现测试程序逻辑之外的意外界面遮挡或焦点切换,如弹出窗口,则会对测试程序的执行造成影响。同时,容易受到游戏背景的干扰。在游戏场景中,经常有各种各样的背景变化和动画过程,这些变化元素经常会干扰图像的识别,降低识别的精确度,也会额外增加测试脚本的维护成本。
发明内容
本发明实施例提出一种游戏程序的测试方法、装置及系统,能够提高游戏程序的测试效率和准确率。
本发明实施例提供一种游戏程序的测试方法,包括:
运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
接收测试单元发送的第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
对所述识别码对应的组件执行测试操作。
进一步地,在所述接收测试单元发送的第一指令之前,还包括:
接收所述测试单元发送的组件获取指令;
根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;
将每个组件的识别码反馈给所述测试单元。
进一步地,所述组件获取指令包括指令识别码;
所述根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码,具体包括:
根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;
根据所述特征信息,计算每个组件的唯一的识别码。
进一步地,所述根据所述特征信息,计算每个组件的唯一的识别码,具体包括:
逐一判断每个组件的类型是否为内建类型;
若否,则获取所述组件的类型继承的内建类型;
根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;
根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
进一步地,在所述接收测试单元发送的第一指令之前,还包括:
接收用户发送的屏幕触摸指令;
根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;
将所述识别码发送给所述测试单元,并在屏幕中高亮所述组件的边缘。
优选地,所述测试指令包括点击指令;则所述对所述识别码对应的组件执行测试操作,具体包括:对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述对所述识别码对应的组件执行测试操作,具体包括:对所述识别码对应的组件执行滑动操作,使所述组件运行。
进一步地,所述游戏程序的测试方法还包括:
接收所述测试单元发送的第二指令;所述第二指令包括指令识别码;
根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
将所述测试结果反馈给所述测试单元。
本发明实施例还提供了另外一种游戏程序的测试方法,包括:
测试装置运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
客户端向服务器发送第一指令脚本;
所述服务器根据所述第一指令脚本,向所述测试装置发送第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
所述测试装置对所述第一指令中的识别码对应的组件执行测试操作。
进一步地,在所述客户端向服务器发送第一指令脚本之前,还包括:
所述客户端向所述服务器发送组件获取指令脚本;
所述服务器根据所述组件获取指令脚本,向所述测试装置发送组件获取指令;
所述测试装置根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;
所述测试装置将每个组件的识别码反馈给所述服务器;
所述服务器将每个组件的识别码反馈给所述客户端。
进一步地,所述组件获取指令包括指令识别码;
所述测试装置根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码,具体包括:
所述测试装置根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
所述测试装置遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;
所述测试装置根据所述特征信息,计算每个组件的唯一的识别码。
进一步地,所述测试装置根据所述特征信息,计算每个组件的唯一的识别码,具体包括:
逐一判断每个组件的类型是否为内建类型;
若否,则获取所述组件的类型继承的内建类型;
根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;
根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
进一步地,在所述客户端向服务器发送第一指令脚本之前,还包括:
所述测试装置接收用户发送的屏幕触摸指令;
所述测试装置根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
所述测试装置调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;
所述测试装置将所述识别码发送给所述服务器,并在屏幕中高亮所述组件的边缘;
所述服务器将所述识别码发送给所述客户端。
优选地,所述测试指令包括点击指令;则所述测试装置对所述识别码对应的组件执行测试操作,具体包括:所述测试装置对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述测试装置对所述识别码对应的组件执行测试操作,具体包括:所述测试装置对所述识别码对应的组件执行滑动操作,使所述组件运行。
进一步地,所述游戏程序的测试方法还包括:
所述客户端向所述服务器发送第二指令脚本;
所述服务器根据所述第二指令脚本,向所述测试装置发送第二指令;所述第二指令包括指令识别码;
所述测试装置根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
所述测试装置将所述测试结果反馈给所述服务器;
所述服务器将所述测试结果反馈给所述客户端。
本发明实施例还提供了一种测试装置,包括:
运行模块,用于运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
第一接收模块,用于接收测试单元发送的第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;以及,
执行模块,用于对所述识别码对应的组件执行测试操作。
进一步地,所述测试装置还包括:
第二接收模块,用于接收所述测试单元发送的组件获取指令;
第一调用模块,用于根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;以及,
第一反馈模块,用于将每个组件的识别码反馈给所述测试单元。
进一步地,所述组件获取指令包括指令识别码;
所述第一调用模块具体包括:
调用单元,用于根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历单元,用于遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;以及,
生成单元,用于根据所述特征信息,计算每个组件的唯一的识别码。
进一步地,所述生成单元具体包括:
内建类型判断子单元,用于逐一判断每个组件的类型是否为内建类型;若否,则获取所述组件的类型继承的内建类型;
计算函数调用子单元,用于根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;以及,
识别码计算子单元,用于根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
进一步地,所述测试装置还包括:
屏幕触摸指令接收模块,用于接收用户发送的屏幕触摸指令;
屏幕坐标获取模块,用于根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
识别码获取模块,用于调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;以及,
识别码发送模块,用于将所述识别码发送给所述测试单元,并在屏幕中高亮所述组件的边缘。
优选地,所述测试指令包括点击指令;则所述执行模块具体用于对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述执行模块具体用于对所述识别码对应的组件执行滑动操作,使所述组件运行。
进一步地,所述测试装置还包括:
第三接收模块,用于接收所述测试单元发送的第二指令;所述第二指令包括指令识别码;
第二调用模块,用于根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;以及,
第二反馈模块,用于将所述测试结果反馈给所述测试单元。
本发明实施例还提供了一种游戏程序的测试系统,包括客户端、服务器和测试装置;
所述客户端包括第一脚本发送模块;所述第一脚本发送模块用于向所述服务器发送第一指令脚本;
所述服务器包括第一指令发送模块;所述第一指令发送模块用于根据所述第一指令脚本,向所述测试装置发送第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
所述测试装置包括运行模块、第一接收模块和执行模块;
所述运行模块用于运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
所述第一接收模块用于接收服务器发送的第一指令;
所述执行模块用于对所述识别码对应的组件执行测试操作。
进一步地,所述客户端还包括第二脚本发送模块;所述第二脚本发送模块用于向所述服务器发送组件获取指令脚本;
所述服务器还包括第二指令发送模块;所述第二指令发送模块用于根据所述组件获取指令脚本,向所述测试装置发送组件获取指令;
所述测试装置还包括第二接收模块、第一调用模块和第一反馈模块;
所述第二接收模块用于接收所述服务器发送的组件获取指令;
所述第一调用模块用于根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;以及,
所述第一反馈模块用于将每个组件的识别码反馈给所述服务器;
并且,所述服务器还包括识别码反馈模块;所述识别码反馈模块用于将每个组件的识别码反馈给所述客户端。
进一步地,所述组件获取指令包括指令识别码;
所述测试装置的第一调用模块具体包括:
调用单元,用于根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历单元,用于遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;以及,
生成单元,用于根据所述特征信息,计算每个组件的唯一的识别码。
进一步地,所述第一调用模块的生成单元具体包括:
内建类型判断子单元,用于逐一判断每个组件的类型是否为内建类型;若否,则获取所述组件的类型继承的内建类型;
计算函数调用子单元,用于根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;以及,
识别码计算子单元,用于根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
进一步地,所述测试装置还包括屏幕触摸指令接收模块、屏幕坐标获取模块、识别码获取模块和组件高亮模块;
所述屏幕触摸指令接收模块用于接收用户发送的屏幕触摸指令;
所述屏幕坐标获取模块用于根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
所述识别码获取模块用于调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;以及,
所述组件高亮模块用于将所述识别码发送给所述服务器,并在屏幕中高亮所述组件的边缘;
所述服务器还包括识别码发送模块;所述识别码发送模块用于将将所述识别码发送给所述客户端。
优选地,所述测试指令包括点击指令;则所述测试装置的执行模块具体用于对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述测试装置的执行模块具体用于对所述识别码对应的组件执行滑动操作,使所述组件运行。
进一步地,所述客户端还包括第三脚本发送模块;所述第三脚本发送模块用于向所述服务器发送第二指令脚本;
所述服务器还包括第三指令发送模块;所述第三指令发送模块用于根据所述第二指令脚本,向所述测试装置发送第二指令;所述第二指令包括指令识别码;
所述测试装置还包括第三接收模块、第二调用模块和第二反馈模块;
所述第三接收模块用于接收所述服务器发送的第二指令;所述第二指令包括指令识别码;
所述第二调用模块用于根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
所述第二反馈模块用于将所述测试结果反馈给所述服务器;
并且,所述服务器还包括测试结果反馈模块;所述测试结果反馈模块用于将所述测试结果反馈给所述客户端。
实施本发明实施例,具有如下有益效果:
本发明实施例提供的游戏程序的测试方法、装置及系统,能够通过组件的识别码,精准获得所要测试的组件,提高测试的准确率,而且,相对于图像识别组件的测试来说,通过具有组件识别码的代码直接进行测试,提高了测试效率;利用游戏引擎提供的API(Application Programming Interface,应用程序编程接口),对游戏程序中的所有组件进行深度遍历,获得每个组件的详细信息,并根据组件不同的特征,计算每个组件的唯一识别码,有利于游戏程序中对组件的精准测试;通过用户在移动终端屏幕上对组件的触摸,将所触摸的组件的识别码发送给客户端,实现对组件的调试;利用API,还可实现游戏程序中更加复杂的测试,如FPS(Frames Per Second,每秒传输帧数)测试、GM(Game Manager,游戏管理员)测试等,具有更好的测试效果;设置服务器来转发客户端与测试装置之间的通信,提高测试的灵活性和便捷性。
附图说明
图1是本发明提供的游戏程序的测试方法的一个实施例的流程示意图;
图2是本发明提供的游戏程序的测试方法的另一个实施例的流程示意图;
图3是本发明提供的测试装置的一个实施例的结构示意图;
图4是本发明提供的游戏程序的测试系统的一个实施例的结构示意图;
图5是本发明提供的游戏程序的测试系统的另一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的游戏程序的测试方法的一个实施例的流程示意图,包括步骤S11至步骤S13,具体如下:
S11、运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
S12、接收测试单元发送的第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
S13、对所述识别码对应的组件执行测试操作。
在一个优选的实施方式中,在接收到所要测试的组件的识别码后,直接对识别码相应的组件执行测试操作。
在另一个优选的实施方式中,在接收到所要测试的组件的识别码后,遍历所有组件,并根据组件的特征信息调用计算函数来计算每个组件的实际识别码,并与所要测试的组件的识别码进行比较,获得与所要测试的组件的识别码相同的实际识别码,返回该实际识别码相应的组件执行测试操作。
需要说明的是,测试单元可以为服务器、计算机或嵌入游戏软件中的模块,则第一指令可以为服务器发送的程序、计算机发送的程序或游戏软件中的模块存储的程序。
其中,第一指令为测试人员编写的指令脚本,包括所要测试的组件的识别码及其相应的测试代码。在接收到第一指令后,解析第一指令,根据组件的识别码对相应的组件执行测试代码,使所述组件跳转或运行。
在对整个游戏程序进行测试时,第一指令可以为测试人员编写的一套完整的指令脚本,实现对游戏程序中的所有组件进行测试,即指令脚本包括每个组件的识别码及其测试代码。在接收到该指令脚本后,执行该指令脚本,根据指令脚本中的编写流程,分别对每个组件执行相应的测试操作,从而实现对整个游戏程序的测试。另外,每完成一个组件的测试操作后,向测试单元反馈成功标识,测试人员可根据反馈的成功标识了解游戏程序的测试状态和测试进度。
而且,在测试过程中,采用协程和事件循环的方式来进行测试。将指令脚本运行在主线程中,当测试代码需要等待时,协程主动挂起,主线程继续执行。当执行到满足指令脚本等待的条件时,事件循环恢复测试代码的运行。这样指令脚本中无需写入任何回调函数,实现了具有多线程效果的单线程测试,且无需考虑多线程同步问题,从而提高测试效率。
另外,在接收到指令脚本后,还会将指令脚本直接放在游戏的脚本解释器中运行,通过脚本语言自带的断言函数,如Assert类函数,验证该指令脚本是否正确。如果不正确,则会出现脚本错误,并将错误保存在日志文件中。
优选地,所述测试指令包括点击指令;则在所述步骤S3中,所述对所述识别码对应的组件执行测试操作,具体包括:对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则在所述步骤S3中,所述对所述识别码对应的组件执行测试操作,具体包括:对所述识别码对应的组件执行滑动操作,使所述组件运行。
另外,在实现对游戏程序中组件的点击或滑动操作测试的基础上,还可以对游戏程序进行更加复杂的测试,如Monkey测试,多个移动终端的同步测试,对组件操作的录制和回放等,从而有助于测试人员制定测试任务、批量回放测试任务,且能够实现游戏程序的自动测试、多个移动终端的同步测试,提高了测试效率,节省了测试时间。
需要说明的是,本实施例的游戏程序的测试方法由测试装置实现。若测试单元为嵌入游戏软件的模块,则所述测试装置和所述测试单元均可以部署在移动终端上,实现对移动终端上游戏程序的测试。若测试单元为服务器,则所述测试装置通过Socket与测试单元进行通讯,并根据测试单元发送的测试指令,实现对移动终端上游戏程序的测试。而且,服务器可以与多个部署有测试装置的移动终端连接,同时,对于不同移动终端可能具有的不同操作系统,如Android、iOS等,测试装置可进行不同的适配,从而实现对各种移动终端的批量测试。
进一步地,在所述接收测试单元发送的第一指令之前,还包括:
接收所述测试单元发送的组件获取指令;
根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;
将每个组件的识别码反馈给所述测试单元。
其中,所述组件获取指令包括指令识别码;
所述根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码,具体包括:
根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;
根据所述特征信息,计算每个组件的唯一的识别码。
其中,游戏程序中每个组件的识别码是通过调用游戏引擎(如Cocos2d-x)的API来实现的。测试人员预先配置每个指令识别码与其所要调用的API的对应关系表,在获取组件信息时,将指令识别码编写到组件获取指令中,测试装置在接收到组件获取指令后,根据其指令识别码查询API调用表,调用相应的API,即可获取所有组件的特征信息。每个组件的特征信息均不相同,包括组件的类型和内容等信息。其中,组件的内容为贴图纹理、图片名称等信息。利用组件的特征信息对组件进行编码,生成组件的唯一的识别码,用于辅助测试人员编写测试脚本。
进一步地,所述根据所述特征信息,计算每个组件的唯一的识别码,具体包括:
逐一判断每个组件的类型是否为内建类型;
若否,则获取所述组件的类型继承的内建类型;
根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;
根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
需要说明的是,一般根据组件的类型和内容来计算组件的唯一的识别码。不同类型的组件通过调用不同的计算函数来进行计算,但对于用户自定义的组件类型,即该组件类型不为引擎的内建类型,需要进行特殊处理。例如,某个组件继承自定义类型A,而自定义类型A的计算函数并未预先定义,则需要找到自定义类型A所继承的来自引擎中的内建类型B,或内建类型B的父类型C,进而查询预先配置的计算函数调用表调用类型B或类型C相应的计算函数来对该组件的识别码进行计算。其中,引擎不同,获取自定义类型所继承的内建类型的方法不同。对于unity3d引擎(使用C#脚本),可以通过C#的反射机制获取其继承的内建类型;对于cocos2d-x引擎(使用Lua脚本),可以通过Lua的元表(metatable)来获取其继承的内建类型。
进一步地,在所述接收测试单元发送的第一指令之前,还包括:
接收用户发送的屏幕触摸指令;
根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;
将所述识别码发送给所述测试单元,并在屏幕中高亮所述组件的边缘。
需要说明的是,测试人员还可以对游戏中的组件进行调试。在开启调试功能后,测试人员在移动终端的屏幕上触摸游戏中的组件,测试装置识别出触摸的屏幕坐标,从而获取位于该屏幕坐标处的组件,并根据组件的特征信息计算组件的识别码,或直接获取组件预先保存的识别码,并将识别码发送给测试单元实现对该组件的调试。若该屏幕坐标处有多个组件,则将组件进行排序,其中,位于屏幕最前面的组件排在第一个,并在屏幕中高亮位于屏幕最前面的组件的边缘。同时,录制测试人员的调试操作,并将调试操作转换为脚本语句发送给测试单元,便于测试人员对调试的脚本语句进行查看和修改。
进一步地,所述游戏程序的测试方法还包括:
接收所述测试单元发送的第二指令;所述第二指令包括指令识别码;
根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
将所述测试结果反馈给所述测试单元。
需要说明的是,通过调用游戏引擎的API,还可对游戏程序的FPS和GM指令等进行测试。测试人员将测试指令的指令识别码编写到指令脚本中,测试装置在接收到第二指令后,解析第二指令,并根据第二指令中的指令识别码,查询API调用表,从而调用相应API,即可获得所要测试的测试结果。其中,FPS测试可以实时获取游戏程序中精确的FPS数据,用于辅助性能测试。GM指令测试避免了传统的通过游戏聊天窗口输入GM指令的方式,而是将GM指令编写到指令脚本中,使得测试人员对GM指令的输入更加方便,且通过对多个移动终端进行GM指令测试,可以简化测试操作,提高测试效率。
本发明实施例提供的游戏程序的测试方法,能够通过组件的识别码,精准获得所要测试的组件,提高测试的准确率,而且,相对于图像识别组件的测试来说,通过具有组件识别码的代码直接进行测试,提高了测试效率;利用游戏引擎提供的API,对游戏程序中的所有组件进行深度遍历,获得每个组件的详细信息,并生成每个组件的唯一识别码,有利于游戏程序中对组件的精准测试;通过用户在移动终端屏幕上对组件的触摸,将所触摸的组件的识别码发送给客户端,实现对组件的调试;利用API,还可实现游戏程序中更加复杂的测试,如FPS测试、GM测试等,具有更好的测试效果。
参见图2,是本发明提供的游戏程序的测试方法的另一个实施例的流程示意图,包括步骤S21至步骤S24,具体如下:
S21、测试装置运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
S22、客户端向服务器发送第一指令脚本;
S23、所述服务器根据所述第一指令脚本,向所述测试装置发送第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
S24、所述测试装置对所述第一指令中的识别码对应的组件执行测试操作。
优选地,所述测试指令包括点击指令;则所述测试装置对所述识别码对应的组件执行测试操作,具体包括:所述测试装置对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述测试装置对所述识别码对应的组件执行测试操作,具体包括:所述测试装置对所述识别码对应的组件执行滑动操作,使所述组件运行。
需要说明的是,客户端为WEB页面的测试操作平台或GUI(Graphical UserInterface,图形用户界面)界面的测试操作平台,测试人员通过客户端编写指令脚本,并将指令脚本发送到服务器。服务器将指令脚本包装成完整的指令消息发送给相应的测试装置,使测试装置进行移动终端上游戏程序的测试,并将测试装置反馈的测试结果转发给客户端,客户端将测试结果以WEB的方式进行展示,测试人员通过浏览器即可查看测试结果。其中,指令脚本可通过HTTP(HTTP-Hypertext transfer protocol,超文本传送协议)方式或Socket方式发送到服务器,服务器中提供HTTP解析模块和Socket处理模块用于根据客户端不同的连接方式来解析接收到的指令脚本。
在具有多个客户端和多个移动终端时,客户端在发送指令脚本的同时还需发送客户端识别码和所要测试的移动终端识别码,服务器根据移动终端识别码将指令脚本发送给相应移动终端的测试装置上,以实现对所述移动终端中游戏程序的测试。测试装置测试完成后将测试结果反馈给服务器,服务器根据客户端识别码将测试结果转发给相应的客户端。其中,客户端识别码和移动终端识别码是服务器对连接的客户端和移动终端的编码。客户端在测试前向服务器发送移动终端信息获取指令,服务器将连接的所有移动终端信息及其对应的识别码反馈给客户端,使客户端选取所要测试的移动终端。另外,服务器负责所有装置的通信管理,包括客户端的连接、断开,以及客户端与测试装置的通信,在整个测试过程中,保证了消息转发的正确性和鲁棒性。同时,服务器的设置,提高测试的灵活性和便捷性。
另外,服务器通过Socket与测试装置进行通信,实现对移动终端的无线测试,避免因数据线问题局限了测试,同时,也有利于移动终端的批量测试。
进一步地,在所述客户端向服务器发送第一指令脚本之前,还包括:
所述客户端向所述服务器发送组件获取指令脚本;
所述服务器根据所述组件获取指令脚本,向所述测试装置发送组件获取指令;
所述测试装置根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;
所述测试装置将每个组件的识别码反馈给所述服务器;
所述服务器将每个组件的识别码反馈给所述客户端。
其中,所述组件获取指令包括指令识别码;
所述测试装置根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码,具体包括:
所述测试装置根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
所述测试装置遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;
所述测试装置根据所述特征信息,计算每个组件的唯一的识别码。
其中,指令识别码可以由测试人员自行设定,如设定为指令的名称。测试人员在编写组件获取指令脚本时,设定组件获取指令的名称为Tree,并编写到脚本中。测试装置在解析服务器发送的组建获取指令后,查询API调用表,对Tree对应的API进行调用即可。
需要说明的是,对游戏程序中的组件进行点击或滑动操作的测试为最基本的测试。测试人员还可在此测试的基础上编写更加复杂的指令脚本,如使测试装置进行Monkey测试,使所有与服务器连接的测试装置直接通信完成同步测试,对测试装置进行测试过程中的操作进行录制和回放等,从而大大提高测试效率。
进一步地,所述测试装置根据所述特征信息,计算每个组件的唯一的识别码,具体包括:
逐一判断每个组件的类型是否为内建类型;
若否,则获取所述组件的类型继承的内建类型;
根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;
根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
进一步地,在所述客户端向服务器发送第一指令脚本之前,还包括:
所述测试装置接收用户发送的屏幕触摸指令;
所述测试装置根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
所述测试装置调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;
所述测试装置将所述识别码发送给所述服务器,并在屏幕中高亮所述组件的边缘;
所述服务器将所述识别码发送给所述客户端。
进一步地,所述游戏程序的测试方法还包括:
所述客户端向所述服务器发送第二指令脚本;
所述服务器根据所述第二指令脚本,向所述测试装置发送第二指令;所述第二指令包括指令识别码;
所述测试装置根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
所述测试装置将所述测试结果反馈给所述服务器;
所述服务器将所述测试结果反馈给所述客户端。
需要说明的是,采用调用API的测试方法还可进行一些其他的测试,如GM指令测试、FPS测试等。测试人员直接将GM指令或FPS指令写入指令脚本中,测试装置通过相应的API实现GM测试或FPS测试,大大提高测试效率。
本发明实施例提供的游戏程序的测试方法,能够通过组件的识别码,精准获得所要测试的组件,提高测试的准确率,而且,相对于图像识别组件的测试来说,通过具有组件识别码的代码直接进行测试,提高了测试效率;利用游戏引擎提供的API,对游戏程序中的所有组件进行深度遍历,获得每个组件的详细信息,并生成每个组件的唯一识别码,有利于游戏程序中对组件的精准测试;通过用户在移动终端屏幕上对组件的触摸,将所触摸的组件的识别码发送给客户端,实现对组件的调试;利用API,还可实现游戏程序中更加复杂的测试,如FPS测试、GM测试等,具有更好的测试效果;设置服务器来转发客户端与测试装置之间的通信,提高测试的灵活性和便捷性。
相应的,本发明还提供一种测试装置和游戏程序的测试系统,能够实现上述实施例中的游戏程序的测试方法的所有流程。
参见图3,是本发明提供的测试装置的一个实施例的结构示意图,包括:
运行模块31,用于运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
第一接收模块32,用于接收测试单元发送的第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;以及,
执行模块33,用于对所述识别码对应的组件执行测试操作。
进一步地,所述测试装置还包括:
第二接收模块,用于接收所述测试单元发送的组件获取指令;
第一调用模块,用于根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;以及,
第一反馈模块,用于将每个组件的识别码反馈给所述测试单元。
进一步地,所述组件获取指令包括指令识别码;
所述第一调用模块具体包括:
调用单元,用于根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历单元,用于遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;以及,
生成单元,用于根据所述特征信息,计算每个组件的唯一的识别码。
进一步地,所述生成单元具体包括:
内建类型判断子单元,用于逐一判断每个组件的类型是否为内建类型;若否,则获取所述组件的类型继承的内建类型;
计算函数调用子单元,用于根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;以及,
识别码计算子单元,用于根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
进一步地,所述测试装置还包括:
屏幕触摸指令接收模块,用于接收用户发送的屏幕触摸指令;
屏幕坐标获取模块,用于根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
识别码获取模块,用于调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;以及,
识别码发送模块,用于将所述识别码发送给所述测试单元,并在屏幕中高亮所述组件的边缘。
优选地,所述测试指令包括点击指令;则所述执行模块具体用于对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述执行模块具体用于对所述识别码对应的组件执行滑动操作,使所述组件运行。
进一步地,所述测试装置还包括:
第三接收模块,用于接收所述测试单元发送的第二指令;所述第二指令包括指令识别码;
第二调用模块,用于根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;以及,
第二反馈模块,用于将所述测试结果反馈给所述测试单元。
本发明实施例提供的测试装置,能够通过组件的识别码,精准获得所要测试的组件,提高测试的准确率,而且,相对于图像识别组件的测试来说,通过具有组件识别码的代码直接进行测试,提高了测试效率;利用游戏引擎提供的API,对游戏程序中的所有组件进行深度遍历,获得每个组件的详细信息,并生成每个组件的唯一识别码,有利于游戏程序中对组件的精准测试;通过用户在移动终端屏幕上对组件的触摸,将所触摸的组件的识别码发送给客户端,实现对组件的调试;利用API,还可实现游戏程序中更加复杂的测试,如FPS测试、GM测试等,具有更好的测试效果。
参见图4,是本发明提供的游戏程序的测试系统的第一个实施例的结构示意图,包括客户端41、服务器42和测试装置43;
所述客户端41包括第一脚本发送模块411;所述第一脚本发送模块411用于向所述服务器42发送第一指令脚本;
所述服务器42包括第一指令发送模块421;所述第一指令发送模块421用于根据所述第一指令脚本,向所述测试装置43发送第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
所述测试装置43包括运行模块431、第一接收模块432和执行模块433;
所述运行模块431用于运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
所述第一接收模块432用于接收服务器42发送的第一指令;
所述执行模块433用于对所述识别码对应的组件执行测试操作。
进一步地,所述客户端41还包括第二脚本发送模块;所述第二脚本发送模块用于向所述服务器42发送组件获取指令脚本;
所述服务器42还包括第二指令发送模块;所述第二指令发送模块用于根据所述组件获取指令脚本,向所述测试装置43发送组件获取指令;
所述测试装置43还包括第二接收模块、第一调用模块和第一反馈模块;
所述第二接收模块用于接收所述服务器42发送的组件获取指令;
所述第一调用模块用于根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;以及,
所述第一反馈模块用于将每个组件的识别码反馈给所述服务器42;
并且,所述服务器42还包括识别码反馈模块;所述识别码反馈模块用于将每个组件的识别码反馈给所述客户端43。
进一步地,所述组件获取指令包括指令识别码;
所述测试装置43的第一调用模块具体包括:
调用单元,用于根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历单元,用于遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;以及,
生成单元,用于根据所述特征信息,计算每个组件的唯一的识别码。
进一步地,所述第一调用模块的生成单元具体包括:
内建类型判断子单元,用于逐一判断每个组件的类型是否为内建类型;若否,则获取所述组件的类型继承的内建类型;
计算函数调用子单元,用于根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;以及,
识别码计算子单元,用于根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
进一步地,所述测试装置43还包括屏幕触摸指令接收模块、屏幕坐标获取模块、识别码获取模块和组件高亮模块;
所述屏幕触摸指令接收模块用于接收用户发送的屏幕触摸指令;
所述屏幕坐标获取模块用于根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
所述识别码获取模块用于调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;以及,
所述组件高亮模块用于将所述识别码发送给所述服务器,并在屏幕中高亮所述组件的边缘;
所述服务器42还包括识别码发送模块;所述识别码发送模块用于将将所述识别码发送给所述客户端。
优选地,所述测试指令包括点击指令;则所述测试装置43的执行模块具体用于对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述测试装置43的执行模块具体用于对所述识别码对应的组件执行滑动操作,使所述组件运行。
进一步地,所述客户端41还包括第三脚本发送模块;所述第三脚本发送模块用于向所述服务器42发送第二指令脚本;
所述服务器42还包括第三指令发送模块;所述第三指令发送模块用于根据所述第二指令脚本,向所述测试装置43发送第二指令;所述第二指令包括指令识别码;
所述测试装置43还包括第三接收模块、第二调用模块和第二反馈模块;
所述第三接收模块用于接收所述服务器42发送的第二指令;所述第二指令包括指令识别码;
所述第二调用模块用于根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
所述第二反馈模块用于将所述测试结果反馈给所述服务器42;
并且,所述服务器42还包括测试结果反馈模块;所述测试结果反馈模块用于将所述测试结果反馈给所述客户端41。
参见图5,是本发明提供的游戏程序的测试系统的另一个实施例的结构示意图。
本实施例提供的游戏程序的测试系统包括客户端51、服务器52、第一测试装置53、第二测试装置54和第三测试装置55。其中,第一测试装置53、第二测试装置54和第三测试装置55分别部署在不同的移动终端上,且与服务器52连接。在测试游戏程序时,客户端51接入服务器52,向服务器发送指令脚本,以及第一测试装置53和第二测试装置54的识别码。服务器将指令脚本包装成测试指令,并发送到第一测试装置53和第二测试装置54,实现在第一测试装置53和第二测试装置54对游戏程序的测试。本发明实施例通过服务器来实现客户端和测试装置之间的通信,提高测试灵活性和便捷性,同时实现对移动终端的批量测试。
需要说明的是,本发明实施例仅以游戏程序的测试系统包括一个服务器,且该服务器分别与一个客户端和三个测试装置连接为例进行描述,但在具体实施当中,测试系统可以包括一个或多个服务器,每个服务器可与一个或多个客户端连接,也可与一个或多个测试装置连接,其服务器和测试装置的数量可以根据实际应用来配置。
本发明实施例提供的游戏程序的测试系统,能够通过组件的识别码,精准获得所要测试的组件,提高测试的准确率,而且,相对于图像识别组件的测试来说,通过具有组件识别码的代码直接进行测试,提高了测试效率;利用游戏引擎提供的API,对游戏程序中的所有组件进行深度遍历,获得每个组件的详细信息,并生成每个组件的唯一识别码,有利于游戏程序中对组件的精准测试;通过用户在移动终端屏幕上对组件的触摸,将所触摸的组件的识别码发送给客户端,实现对组件的调试;利用API,还可实现游戏程序中更加复杂的测试,如FPS测试、GM测试等,具有更好的测试效果;设置服务器来转发客户端与测试装置之间的通信,提高测试的灵活性和便捷性。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (28)
1.一种游戏程序的测试方法,其特征在于,包括:
运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
接收测试单元发送的第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
对所述识别码对应的组件执行测试操作。
2.如权利要求1所述的游戏程序的测试方法,其特征在于,在所述接收测试单元发送的第一指令之前,还包括:
接收所述测试单元发送的组件获取指令;
根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;
将每个组件的识别码反馈给所述测试单元。
3.如权利要求2所述的游戏程序的测试方法,其特征在于,所述组件获取指令包括指令识别码;
所述根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码,具体包括:
根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;
根据所述特征信息,计算每个组件的唯一的识别码。
4.如权利要求3所述的游戏程序的测试方法,其特征在于,所述根据所述特征信息,计算每个组件的唯一的识别码,具体包括:
逐一判断每个组件的类型是否为内建类型;
若否,则获取所述组件的类型继承的内建类型;
根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;
根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
5.如权利要求1所述的游戏程序的测试方法,其特征在于,在所述接收测试单元发送的第一指令之前,还包括:
接收用户发送的屏幕触摸指令;
根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;
将所述识别码发送给所述测试单元,并在屏幕中高亮所述组件的边缘。
6.如权利要求1所述的游戏程序的测试方法,其特征在于,所述测试指令包括点击指令;则所述对所述识别码对应的组件执行测试操作,具体包括:对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述对所述识别码对应的组件执行测试操作,具体包括:对所述识别码对应的组件执行滑动操作,使所述组件运行。
7.如权利要求1至6任一项所述的游戏程序的测试方法,其特征在于,所述游戏程序的测试方法还包括:
接收所述测试单元发送的第二指令;所述第二指令包括指令识别码;
根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
将所述测试结果反馈给所述测试单元。
8.一种游戏程序的测试方法,其特征在于,包括:
测试装置运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
客户端向服务器发送第一指令脚本;
所述服务器根据所述第一指令脚本,向所述测试装置发送第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
所述测试装置对所述第一指令中的识别码对应的组件执行测试操作。
9.如权利要求8所述的游戏程序的测试方法,其特征在于,在所述客户端向服务器发送第一指令脚本之前,还包括:
所述客户端向所述服务器发送组件获取指令脚本;
所述服务器根据所述组件获取指令脚本,向所述测试装置发送组件获取指令;
所述测试装置根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;
所述测试装置将每个组件的识别码反馈给所述服务器;
所述服务器将每个组件的识别码反馈给所述客户端。
10.如权利要求9所述的游戏程序的测试方法,其特征在于,所述组件获取指令包括指令识别码;
所述测试装置根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码,具体包括:
所述测试装置根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
所述测试装置遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;
所述测试装置根据所述特征信息,计算每个组件的唯一的识别码。
11.如权利要求10所述的游戏程序的测试方法,其特征在于,所述测试装置根据所述特征信息,计算每个组件的唯一的识别码,具体包括:
逐一判断每个组件的类型是否为内建类型;
若否,则获取所述组件的类型继承的内建类型;
根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;
根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
12.如权利要求8所述的游戏程序的测试方法,其特征在于,在所述客户端向服务器发送第一指令脚本之前,还包括:
所述测试装置接收用户发送的屏幕触摸指令;
所述测试装置根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
所述测试装置调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;
所述测试装置将所述识别码发送给所述服务器,并在屏幕中高亮所述组件的边缘;
所述服务器将所述识别码发送给所述客户端。
13.如权利要求8所述的游戏程序的测试方法,其特征在于,所述测试指令包括点击指令;则所述测试装置对所述识别码对应的组件执行测试操作,具体包括:所述测试装置对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述测试装置对所述识别码对应的组件执行测试操作,具体包括:所述测试装置对所述识别码对应的组件执行滑动操作,使所述组件运行。
14.如权利要求8至13任一项所述的游戏程序的测试方法,其特征在于,所述游戏程序的测试方法还包括:
所述客户端向所述服务器发送第二指令脚本;
所述服务器根据所述第二指令脚本,向所述测试装置发送第二指令;所述第二指令包括指令识别码;
所述测试装置根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
所述测试装置将所述测试结果反馈给所述服务器;
所述服务器将所述测试结果反馈给所述客户端。
15.一种测试装置,其特征在于,包括:
运行模块,用于运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
第一接收模块,用于接收测试单元发送的第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;以及,
执行模块,用于对所述识别码对应的组件执行测试操作。
16.如权利要求15所述的测试装置,其特征在于,所述测试装置还包括:
第二接收模块,用于接收所述测试单元发送的组件获取指令;
第一调用模块,用于根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;以及,
第一反馈模块,用于将每个组件的识别码反馈给所述测试单元。
17.如权利要求16所述的测试装置,其特征在于,所述组件获取指令包括指令识别码;
所述第一调用模块具体包括:
调用单元,用于根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历单元,用于遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;以及,
生成单元,用于根据所述特征信息,计算每个组件的唯一的识别码。
18.如权利要求17所述的测试装置,其特征在于,所述生成单元具体包括:
内建类型判断子单元,用于逐一判断每个组件的类型是否为内建类型;若否,则获取所述组件的类型继承的内建类型;
计算函数调用子单元,用于根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;以及,
识别码计算子单元,用于根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
19.如权利要求15所述的测试装置,其特征在于,所述测试装置还包括:
屏幕触摸指令接收模块,用于接收用户发送的屏幕触摸指令;
屏幕坐标获取模块,用于根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
识别码获取模块,用于调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;以及,
识别码发送模块,用于将所述识别码发送给所述测试单元,并在屏幕中高亮所述组件的边缘。
20.如权利要求15所述的测试装置,其特征在于,所述测试指令包括点击指令;则所述执行模块具体用于对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述执行模块具体用于对所述识别码对应的组件执行滑动操作,使所述组件运行。
21.如权利要求15至20任一项所述的测试装置,其特征在于,所述测试装置还包括:
第三接收模块,用于接收所述测试单元发送的第二指令;所述第二指令包括指令识别码;
第二调用模块,用于根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;以及,
第二反馈模块,用于将所述测试结果反馈给所述测试单元。
22.一种游戏程序的测试系统,其特征在于,包括客户端、服务器和测试装置;
所述客户端包括第一脚本发送模块;所述第一脚本发送模块用于向所述服务器发送第一指令脚本;
所述服务器包括第一指令发送模块;所述第一指令发送模块用于根据所述第一指令脚本,向所述测试装置发送第一指令;所述第一指令包括测试指令和所要测试的组件的识别码;
所述测试装置包括运行模块、第一接收模块和执行模块;
所述运行模块用于运行游戏程序;所述游戏程序包括游戏场景中的所有组件;
所述第一接收模块用于接收服务器发送的第一指令;
所述执行模块用于对所述识别码对应的组件执行测试操作。
23.如权利要求22所述的游戏程序的测试系统,其特征在于,所述客户端还包括第二脚本发送模块;所述第二脚本发送模块用于向所述服务器发送组件获取指令脚本;
所述服务器还包括第二指令发送模块;所述第二指令发送模块用于根据所述组件获取指令脚本,向所述测试装置发送组件获取指令;
所述测试装置还包括第二接收模块、第一调用模块和第一反馈模块;
所述第二接收模块用于接收所述服务器发送的组件获取指令;
所述第一调用模块用于根据所述组件获取指令,调用相应的应用程序编程接口API,获取每个组件的识别码;以及,
所述第一反馈模块用于将每个组件的识别码反馈给所述服务器;
并且,所述服务器还包括识别码反馈模块;所述识别码反馈模块用于将每个组件的识别码反馈给所述客户端。
24.如权利要求23所述的游戏程序的测试系统,其特征在于,所述组件获取指令包括指令识别码;
所述测试装置的第一调用模块具体包括:
调用单元,用于根据所述组件获取指令的指令识别码,查询预先配置的API调用表,调用所述指令识别码相应的API,获得所述游戏程序中的所有组件;所述API调用表为各个指令识别码与其所要调用的API的对应关系表;
遍历单元,用于遍历所有组件,获得每个组件的特征信息;所述特征信息包括组件的类型和内容;以及,
生成单元,用于根据所述特征信息,计算每个组件的唯一的识别码。
25.如权利要求24所述的游戏程序的测试系统,其特征在于,所述第一调用模块的生成单元具体包括:
内建类型判断子单元,用于逐一判断每个组件的类型是否为内建类型;若否,则获取所述组件的类型继承的内建类型;
计算函数调用子单元,用于根据所述内建类型,查询预先配置的计算函数调用表,调用所述内建类型相应的计算函数;所述计算函数调用表为各个内建类型与其所要调用的计算函数的对应关系表;以及,
识别码计算子单元,用于根据所述计算函数和组件的内容,计算每个组件的唯一的识别码。
26.如权利要求22所述的游戏程序的测试系统,其特征在于,所述测试装置还包括屏幕触摸指令接收模块、屏幕坐标获取模块、识别码获取模块和组件高亮模块;
所述屏幕触摸指令接收模块用于接收用户发送的屏幕触摸指令;
所述屏幕坐标获取模块用于根据所述屏幕触摸指令,获取所述用户触摸的屏幕坐标;
所述识别码获取模块用于调用触摸事件处理函数,获得位于所述屏幕坐标处的组件的识别码;以及,
所述组件高亮模块用于将所述识别码发送给所述服务器,并在屏幕中高亮所述组件的边缘;
所述服务器还包括识别码发送模块;所述识别码发送模块用于将所述识别码发送给所述客户端。
27.如权利要求22所述的游戏程序的测试系统,其特征在于,所述测试指令包括点击指令;则所述测试装置的执行模块具体用于对所述识别码对应的组件执行点击操作,使所述组件运行;
或者,所述测试指令包括滑动指令;则所述测试装置的执行模块具体用于对所述识别码对应的组件执行滑动操作,使所述组件运行。
28.如权利要求22至27任一项所述的游戏程序的测试系统,其特征在于,所述客户端还包括第三脚本发送模块;所述第三脚本发送模块用于向所述服务器发送第二指令脚本;
所述服务器还包括第三指令发送模块;所述第三指令发送模块用于根据所述第二指令脚本,向所述测试装置发送第二指令;所述第二指令包括指令识别码;
所述测试装置还包括第三接收模块、第二调用模块和第二反馈模块;
所述第三接收模块用于接收所述服务器发送的第二指令;所述第二指令包括指令识别码;
所述第二调用模块用于根据所述第二指令的指令识别码,查询所述API调用表,调用所述指令识别码相应的API,获得所述游戏程序的测试结果;
所述第二反馈模块用于将所述测试结果反馈给所述服务器;
并且,所述服务器还包括测试结果反馈模块;所述测试结果反馈模块用于将所述测试结果反馈给所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510134351.6A CN104778121B (zh) | 2015-03-25 | 2015-03-25 | 游戏程序的测试方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510134351.6A CN104778121B (zh) | 2015-03-25 | 2015-03-25 | 游戏程序的测试方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104778121A true CN104778121A (zh) | 2015-07-15 |
CN104778121B CN104778121B (zh) | 2018-09-18 |
Family
ID=53619600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510134351.6A Active CN104778121B (zh) | 2015-03-25 | 2015-03-25 | 游戏程序的测试方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778121B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105721239A (zh) * | 2016-01-18 | 2016-06-29 | 网易(杭州)网络有限公司 | 游戏测试方法、装置及游戏系统 |
CN105760308A (zh) * | 2016-03-31 | 2016-07-13 | 网易(杭州)网络有限公司 | 多客户端协同测试方法和装置 |
CN106021104A (zh) * | 2016-05-18 | 2016-10-12 | 网易(杭州)网络有限公司 | 测试网络游戏的方法、装置及游戏终端平台 |
CN106055470A (zh) * | 2016-05-19 | 2016-10-26 | 网易(杭州)网络有限公司 | 游戏程序的性能测试方法、装置及系统 |
CN106126423A (zh) * | 2016-06-27 | 2016-11-16 | 华为技术有限公司 | 游戏应用程序的测试方法、装置及系统 |
CN106371962A (zh) * | 2016-08-30 | 2017-02-01 | 广州广电运通金融电子股份有限公司 | 一种跨平台的驱动测试方法、装置及系统 |
CN106713571A (zh) * | 2015-08-20 | 2017-05-24 | 广州爱九游信息技术有限公司 | 一种测试游戏引擎应用的性能的移动终端及方法 |
CN106874197A (zh) * | 2017-02-08 | 2017-06-20 | 网易(杭州)网络有限公司 | 测试方法及装置 |
CN107015912A (zh) * | 2017-05-26 | 2017-08-04 | 网易(杭州)网络有限公司 | 实现远程调试的系统、方法、装置、及电子设备 |
CN107368410A (zh) * | 2017-06-14 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 游戏引擎的性能测试方法和装置、存储介质及电子装置 |
CN107688529A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 组件调试方法和装置 |
CN107748715A (zh) * | 2017-09-13 | 2018-03-02 | 福建天晴数码有限公司 | 基于Unity的纹理贴图配置信息检测方法及其系统 |
CN108335204A (zh) * | 2018-02-02 | 2018-07-27 | 上海量贝信息科技有限公司 | 一种量化交易回测方法及使用该方法的仿真api库或仿真程序 |
CN108376114A (zh) * | 2018-01-25 | 2018-08-07 | 珠海金山网络游戏科技有限公司 | 一种提高游戏测试效率的系统和方法 |
CN108415844A (zh) * | 2018-03-22 | 2018-08-17 | 北京奇虎科技有限公司 | 插件化调试方法及装置 |
CN109491911A (zh) * | 2018-11-08 | 2019-03-19 | 火烈鸟网络(广州)股份有限公司 | 游戏测试方法、装置以及存储介质 |
CN109979444A (zh) * | 2017-12-27 | 2019-07-05 | 深圳市优必选科技有限公司 | 一种语音指令自动化测试方法、终端以及装置 |
CN112732580A (zh) * | 2021-01-11 | 2021-04-30 | 珠海金山网络游戏科技有限公司 | 基于Unity的层级查找的自动化测试方法、装置及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110214107A1 (en) * | 2010-03-01 | 2011-09-01 | Experitest, Ltd. | Method and system for testing graphical user interfaces |
CN103186459A (zh) * | 2011-12-30 | 2013-07-03 | 迈普通信技术股份有限公司 | 基于脚本的java图形用户界面自动测试方法 |
CN103309797A (zh) * | 2012-03-09 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 用户界面自动化测试方法及装置 |
CN103365779A (zh) * | 2013-07-09 | 2013-10-23 | 广东欧珀移动通信有限公司 | 软件测试方法和系统 |
CN103377119A (zh) * | 2012-04-23 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种非标准控件自动化测试方法和装置 |
CN104268083A (zh) * | 2014-09-30 | 2015-01-07 | 上海联影医疗科技有限公司 | 软件自动化测试方法和装置 |
-
2015
- 2015-03-25 CN CN201510134351.6A patent/CN104778121B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110214107A1 (en) * | 2010-03-01 | 2011-09-01 | Experitest, Ltd. | Method and system for testing graphical user interfaces |
CN103186459A (zh) * | 2011-12-30 | 2013-07-03 | 迈普通信技术股份有限公司 | 基于脚本的java图形用户界面自动测试方法 |
CN103309797A (zh) * | 2012-03-09 | 2013-09-18 | 阿里巴巴集团控股有限公司 | 用户界面自动化测试方法及装置 |
CN103377119A (zh) * | 2012-04-23 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 一种非标准控件自动化测试方法和装置 |
CN103365779A (zh) * | 2013-07-09 | 2013-10-23 | 广东欧珀移动通信有限公司 | 软件测试方法和系统 |
CN104268083A (zh) * | 2014-09-30 | 2015-01-07 | 上海联影医疗科技有限公司 | 软件自动化测试方法和装置 |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106713571A (zh) * | 2015-08-20 | 2017-05-24 | 广州爱九游信息技术有限公司 | 一种测试游戏引擎应用的性能的移动终端及方法 |
CN105721239A (zh) * | 2016-01-18 | 2016-06-29 | 网易(杭州)网络有限公司 | 游戏测试方法、装置及游戏系统 |
CN105760308B (zh) * | 2016-03-31 | 2018-09-14 | 网易(杭州)网络有限公司 | 多客户端协同测试方法和装置 |
CN105760308A (zh) * | 2016-03-31 | 2016-07-13 | 网易(杭州)网络有限公司 | 多客户端协同测试方法和装置 |
CN106021104A (zh) * | 2016-05-18 | 2016-10-12 | 网易(杭州)网络有限公司 | 测试网络游戏的方法、装置及游戏终端平台 |
CN106021104B (zh) * | 2016-05-18 | 2018-10-16 | 网易(杭州)网络有限公司 | 测试网络游戏的方法、装置及游戏终端平台 |
CN106055470A (zh) * | 2016-05-19 | 2016-10-26 | 网易(杭州)网络有限公司 | 游戏程序的性能测试方法、装置及系统 |
CN106055470B (zh) * | 2016-05-19 | 2019-07-19 | 网易(杭州)网络有限公司 | 游戏程序的性能测试方法、装置及系统 |
CN106126423A (zh) * | 2016-06-27 | 2016-11-16 | 华为技术有限公司 | 游戏应用程序的测试方法、装置及系统 |
CN106126423B (zh) * | 2016-06-27 | 2018-10-19 | 华为技术有限公司 | 游戏应用程序的测试方法、装置及系统 |
CN106371962A (zh) * | 2016-08-30 | 2017-02-01 | 广州广电运通金融电子股份有限公司 | 一种跨平台的驱动测试方法、装置及系统 |
CN106371962B (zh) * | 2016-08-30 | 2019-01-01 | 广州广电运通金融电子股份有限公司 | 一种跨平台的驱动测试方法、装置及系统 |
CN106874197A (zh) * | 2017-02-08 | 2017-06-20 | 网易(杭州)网络有限公司 | 测试方法及装置 |
CN106874197B (zh) * | 2017-02-08 | 2020-05-05 | 网易(杭州)网络有限公司 | 测试方法及装置 |
CN107688529A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 组件调试方法和装置 |
CN107015912A (zh) * | 2017-05-26 | 2017-08-04 | 网易(杭州)网络有限公司 | 实现远程调试的系统、方法、装置、及电子设备 |
CN107368410A (zh) * | 2017-06-14 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 游戏引擎的性能测试方法和装置、存储介质及电子装置 |
CN107748715A (zh) * | 2017-09-13 | 2018-03-02 | 福建天晴数码有限公司 | 基于Unity的纹理贴图配置信息检测方法及其系统 |
CN109979444A (zh) * | 2017-12-27 | 2019-07-05 | 深圳市优必选科技有限公司 | 一种语音指令自动化测试方法、终端以及装置 |
CN108376114A (zh) * | 2018-01-25 | 2018-08-07 | 珠海金山网络游戏科技有限公司 | 一种提高游戏测试效率的系统和方法 |
CN108376114B (zh) * | 2018-01-25 | 2021-03-26 | 珠海金山网络游戏科技有限公司 | 一种提高游戏测试效率的系统和方法 |
CN108335204A (zh) * | 2018-02-02 | 2018-07-27 | 上海量贝信息科技有限公司 | 一种量化交易回测方法及使用该方法的仿真api库或仿真程序 |
CN108415844A (zh) * | 2018-03-22 | 2018-08-17 | 北京奇虎科技有限公司 | 插件化调试方法及装置 |
CN108415844B (zh) * | 2018-03-22 | 2022-03-08 | 北京奇虎科技有限公司 | 插件化调试方法及装置 |
CN109491911A (zh) * | 2018-11-08 | 2019-03-19 | 火烈鸟网络(广州)股份有限公司 | 游戏测试方法、装置以及存储介质 |
CN109491911B (zh) * | 2018-11-08 | 2021-12-21 | 火烈鸟网络(广州)股份有限公司 | 游戏测试方法、装置以及存储介质 |
CN112732580A (zh) * | 2021-01-11 | 2021-04-30 | 珠海金山网络游戏科技有限公司 | 基于Unity的层级查找的自动化测试方法、装置及介质 |
CN112732580B (zh) * | 2021-01-11 | 2024-07-02 | 珠海金山数字网络科技有限公司 | 基于Unity的层级查找的自动化测试方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104778121B (zh) | 2018-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104778121A (zh) | 游戏程序的测试方法、装置及系统 | |
CN108345531B (zh) | 一种测试方法、装置及系统 | |
CN102938800B (zh) | 一种无线通信质量自动测试系统以及方法 | |
CN103246606B (zh) | Esb平台的性能测试方法和系统 | |
CN104281520A (zh) | 跟踪和调试的方法、装置及系统 | |
CN109739656A (zh) | 接口数据模拟方法、装置、存储介质和电子设备 | |
CN103268289B (zh) | 在移动终端上录制应用测试脚本的方法和系统 | |
CN113722020B (zh) | 接口调用方法、装置和计算机可读存储介质 | |
CN110032512A (zh) | 一种小程序的调试方法、相关设备及终端 | |
CN109960621A (zh) | 一种基于大数据可视化监控平台的数据抽取方法 | |
CN110515854B (zh) | 应用程序异常的复现方法、装置和电子设备 | |
CN103455413A (zh) | 一种通讯终端交互场景测试数据处理方法、装置和系统 | |
CN111752843A (zh) | 用于确定影响面的方法、装置、电子设备及可读存储介质 | |
CN111831542B (zh) | Api应用调测方法及装置、存储介质 | |
CN104899046A (zh) | 一种多功能脚本运行方法和系统 | |
CN105338564B (zh) | 一种客户端适配方法、客户端、服务器以及系统 | |
CN107807841A (zh) | 服务器模拟方法、装置、设备及可读存储介质 | |
CN103678100B (zh) | 终端的应用自动化测试方法及其系统 | |
CN109840201B (zh) | Ui测试方法、装置、电子设备及计算机可读存储介质 | |
CN104902432A (zh) | 生成移动终端应用操作日志的方法和设备 | |
CN107818043A (zh) | 用于程序调试的方法和装置 | |
CN111817916B (zh) | 基于移动终端集群的测试方法、装置、设备和存储介质 | |
CN112685299A (zh) | 自动测试方法、装置、电子设备及可读存储介质 | |
CN109922484A (zh) | 一种测试方法和测试装置 | |
CN106302011A (zh) | 基于多端的测试方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |