CN114253824A - 游戏兼容性测试方法及系统 - Google Patents
游戏兼容性测试方法及系统 Download PDFInfo
- Publication number
- CN114253824A CN114253824A CN202011001136.6A CN202011001136A CN114253824A CN 114253824 A CN114253824 A CN 114253824A CN 202011001136 A CN202011001136 A CN 202011001136A CN 114253824 A CN114253824 A CN 114253824A
- Authority
- CN
- China
- Prior art keywords
- game
- test
- tested
- testing
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 585
- 238000000034 method Methods 0.000 claims abstract description 54
- 230000002452 interceptive effect Effects 0.000 claims abstract description 28
- 230000003993 interaction Effects 0.000 claims description 51
- 239000011159 matrix material Substances 0.000 claims description 31
- 230000006399 behavior Effects 0.000 claims description 27
- 230000002159 abnormal effect Effects 0.000 claims description 14
- 238000003860 storage Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 230000005856 abnormality Effects 0.000 claims description 5
- 230000002547 anomalous effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 22
- 238000013515 script Methods 0.000 description 17
- 230000007246 mechanism Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000006854 communication Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 241000703231 Githopsis Species 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 241000282326 Felis catus Species 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 102100035115 Testin Human genes 0.000 description 1
- 101710070533 Testin Proteins 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种游戏兼容性测试方法及系统,该方法包括:获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。本发明实施例通过调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,能够快速自动地执行所述测试用例,并获取测试结果,极大地提高了所述兼容性测试的准确率。
Description
技术领域
本发明涉及游戏测试技术领域,具体涉及一种游戏兼容性测试方法及系统。
背景技术
随着越来越多的游戏厂商进行手机游戏的开发,手机游戏的种类也越来越多。由于安卓(Android)系统的碎片化和异形屏设备(例如:水滴屏、曲面屏等)的多样化,使得游戏在不同类型的移动终端上需要实现不同类型的游戏材质、贴图的动态加载和屏幕的适配,以便提供最佳的游戏体验。于是,在游戏开发的过程中,需要对游戏在Android终端设备上运行的兼容性测试。
然,现有的兼容性测试由于设备性能及屏幕的差异化,测试任务在分发到不同的设备上后,可能因为交互坐标的计算不精准或网络传输不稳定导致交互失败。故,如何在进行游戏兼容性测试时,提高兼容性测试的准确率,成为本领域技术人员亟待解决的问题。
发明内容
本发明的目的在于提供一种游戏兼容性测试方法、系统、计算机设备及可读存储介质,用于解决现有技术中游戏兼容性测试准确率低的缺陷。
根据本发明的一个方面,提供了一种游戏兼容性测试方法,该方法包括如下步骤:
获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;
根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。
可选地,所述测试框架包括基于图像识别的测试框架,所述根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,包括:
当所述测试用例为使用图像识别的测试用例时,调用所述基于图像识别的测试框架,并启动截图服务进行截图,得到第一图像;
扫描所述第一图像和预设图像元素,并将所述第一图像与所述预设图像元素进行匹配,以根据匹配结果判断所述第一图像中是否存在所述预设图像元素,其中,所述预设图像元素包括游戏菜单或游戏角色;
当所述第一图像中存在所述预设图像元素时,则判断所述预设图像元素为游戏目标,并获取所述游戏目标的中间位置坐标;
通过所述测试框架对与所述中间位置坐标对应的像素点执行对应的交互行为,实现与所述游戏目标的交互,以根据所述交互对所述待测试游戏进行兼容性测试。
可选地,所述获取所述游戏目标的中间位置坐标,包括:
获取所述预设图像元素中心位置在预设图像中的实际坐标、所述预设图像对应设备的第一分辨率及所述待测试设备的第二分辨率;
所述测试框架根据所述实际坐标和所述第一分辨率,计算所述预设图像元素中心位置的相对坐标;
根据所述相对坐标和所述第二分辨率计算所述预设图像元素中心位置在所述待测试设备中的绝对坐标,得到所述中间位置坐标。
可选地,所述方法还包括:
当执行所述测试用例时,对所述待测试设备的屏幕进行截图,得到截图图像;
判断所述截图图像是否存在异常,并输出截图测试结果,所述异常包括:黑边或黑屏。
可选地,所述判断所述截图图像是否存在异常,并输出截图测试结果,包括:
将所述截图图像以矩阵的方式读取至内存,其中,所述矩阵中存储有所述截图图像中每个像素的坐标以及对应的RGB信息。
扫描所述截图图像的所有像素以获取所述截图图像中所有像素对应的RGB信息,并根据所述RGB信息判断所述截图图像是否出现黑边或者黑屏,得到所述截图测试结果;
输出所述截图测试结果。
可选地,所述扫描所述截图图像的所有像素以获取所述截图图像中的所有像素对应的RGB信息,并根据所述RGB信息判断所述截图图像是否出现黑边或者黑屏,包括:
扫描所述截图图像的所有像素,并根据所述RGB信息统计所述矩阵中所有黑色像素出现的次数占所述所有像素的第一百分比;
当所述第一百分比大于第一预设值时,则判断所述截图图像存在黑屏。
可选地,所述扫描所述截图图像的所有像素以获取所述截图图像中的所有像素对应的RGB信息,并根据所述RGB信息判断所述截图图像是否出现黑边或者黑屏,还包括:
以预设扫描方向扫描所述所有像素的RGB信息,所述预设扫描方向包括上下左右扫描方向;
当所述矩阵的行或者列出现连续黑色像素的个数超过第二预设值时,则判断所述矩阵的行或者列为黑边;
统计所述黑边的数量占所述矩阵的总行数或者总列数的第二百分比;
当所述第二百分比大于第三预设值时,则判断所述截图图像存在黑边。
为了实现上述目的,本发明还提供一种游戏兼容性测试系统,所述系统包括服务器、至少一个终端设备及至少一个待测试设备,所述服务器包括测试场景配置模块,每个终端设备包括测试设备调度模块和测试用例执行模块,其中:
所述测试场景配置模块用于创建测试任务,并获取与所述测试任务对应的所述至少一个待测试设备、待测试游戏及测试用例,通过MQ消息队列将所述测试任务的消息报文发送至所述至少一个终端设备的测试设备调度模块,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;
所述测试设备调度模块通过所述MQ消息队列接收所述消息报文,并对所述消息报文进行解析,根据解析结果调用对应的测试用例执行模块,并将所述测试任务分发至所述待测试设备;
所述测试用例执行模块获取所述测试任务,并根据所述测试任务调用对应的测试框架获取交互坐标,并根据所述交互坐标在所述待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,并将测试结果发送至对应的终端设备;
所述至少一个终端设备接收对应的测试结果,并将所述测试结果发送至所述服务器;
所述服务器接收所述测试结果,并根据所述测试结果生成测试报告。
为了实现上述目的,本发明还提供一种游戏兼容性测试系统,该系统具体包括以下组成部分:
获取模块,用于获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;
测试模块,用于根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。
为了实现上述目的,本发明还提供一种计算机设备,该计算机设备具体包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述介绍的游戏兼容性测试方法的步骤。
为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述介绍的游戏兼容性测试方法的步骤。
本发明提供的游戏兼容性测试方法、系统、计算机设备及可读存储介质,根据获取的测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,能够快速自动地执行所述测试用例,并获取测试结果,极大地提高了所述兼容性测试的准确率。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本公开实施例提供的游戏兼容性测试方法的一种可选的应用环境图;
图2为本公开实施例提供的游戏兼容性测试方法的一种可选的流程示意图;
图3为所述图2中步骤S102的一种可选的具体流程示意图;
图4为所述图3中步骤S204的一种可选的具体流程示意图;
图5为本发明实施例提供的游戏兼容性测试方法的另一种可选的具体流程示意图;
图6为所述图5中步骤S402的一种可选的具体流程示意图;
图7为所述图6中步骤S502的一种可选的具体流程示意图;
图8为一示例性的截图图像存在黑屏的效果图;
图9为所述图6中步骤S502的另一种可选的具体流程示意图;
图10为一示例性的截图图像存在黑边的效果图;
图11为本公开实施例提供的游戏兼容性测试方法的另一种可选的具体流程示意图;
图12为本公开实施例提供的游戏兼容性测试方法的另一种可选的具体流程示意图;
图13为视频流渲染效果图;
图14为本公开实施例提供的游戏兼容性测试系统的一种可选的程序模块示意图;
图15为本公开实施例提供的一种可选的消息报文示意图;
图16是测试设备调度模块与操作平台的通信流程示意图;
图17为本公开实施例提供的游戏兼容性测试系统的另一种可选的程序模块示意图;
图18为本公开实施例提供的计算机设备的一种可选的硬件架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在网络游戏测试中,通常需要进行一系列兼容性测试活动,目的是为了验证目标网络游戏客户端能否在市面上各大碎片化的设备上完美的运行游戏客户端,同时设备能够渲染出客户端期望的游戏模型及游戏场景等游戏内容,为市场上目标玩家提供良好的游戏体验,以及发现客户端在不同设备上可能存在的兼容性问题和崩溃或无法加载以及加载失败或资源丢失导致的黑屏等兼容性问题。而且在开发和优化的过程中,需要持续的迭代验证。目前的游戏兼容性测试一般通过以下三种方式进行:
一、通过内部渠道组织内部员工进行发布前的兼容性测试。通过采用这种方式,虽然玩家与服务端的交互真实,但是其成本巨大、过程不可控,结果难以度量。
二、通过组织外部资深玩家进入企业内部,在指定的时间和地点完成指定的游戏操作,以进行发布前的兼容性测试。然而,这种方式周期较长,成本巨大,同时对游戏项目的保密性支持较差,难以长期重复执行。
三、通过采购第三方的众包测试服务,例如:Testin或TestBird,把测试行为通过众包的方式交予第三方公司及个人,第三方公司及个人通过众多但分散的设备进行兼容性测试。通过采用这种方式虽然也可以达成测试目的,但成本较高,同时因为无法把控测试过程及结果,无法预知第三方测试设备的设备状态,第三方众包公司及个人也无法保证每次测试都能进行同样的测试行为,无法做到严格重复执行相同操作,结果不具备足够科学的参考性。
而对于现有的游戏在Android终端设备上执行自动化测试方式,具体有如下3种方式:
1、录制回放模式:先把Android终端设备都连接到同一台个人计算机(PersonalComputer,PC)上,而后设定一个Android终端设备作为主终端机,通过调试工具向主终端机发送getevent命令,使得主终端机执行该命令,而后PC通过监听来获取并解析getevent命令输出,然后将输出发送至其他从属终端设备中,完成兼容性自动化测试;
2、使用脚本自动化行为模拟模式,由脚本驱动Android终端设备进行自动化测试,而后在脚本中在指定界面进行截屏,和事先已上传至服务端的基准图片进行比对,然后根据比对结果判断是否兼容;
3、使用脚本自动化行为模拟模式,由自动化测试平台进行任务分发,分发至海量设备中进行测试,而后收集设备的失败截图、异常截图等信息并上传至测试平台,生成测试报告。
然而,第1种方式由于通用串行总线(Universal Serial Bus,USB)集线器(HUB)的限制,无法模拟大量的设备,且由于模拟行为是通过录制getevent操作的坐标来完成,对于复杂的交互(例如:单指拖动或多指缩小及多指放大),也无法模拟完成;第2种方式中的图片比对需要人工进行比较,无法做到自动识别游戏是否在该Android终端设备是否完美适配,且由于网络和设备性能及屏幕的差异化,在交互失败后没有自动化重试机制,也没有抓取Android终端设备的崩溃日志和全程操作截图,无法评估什么步骤以及什么测试场景下出现问题;第3种方式中对兼容性测试的场景考虑不足,无法自动判断是否屏幕已适配,且无法检测出异常的原因。
为了解决上述缺陷,下面结合附图对本发明提供的游戏兼容性测试方法进行详细说明。
图1为本发明游戏兼容性测试方法的一种可选的应用环境图,包括至少用户、至少一个服务器、至少一个客户端和至少一个待测试设备(包括待测试设备A、待测试设备B…待测试设备N)。图1中仅示出一个用户、一个服务器和一个客户端为例进行说明。所述客户端可以包括但不限于windows客户端和/或Linux客户端。所述服务器和所述客户端可以通过消息队列遥测传输协议(Message Queuing Telemetry Transport,MQTT)进行通信。所述客户端可以通过接入具有若干USB口的USB HUB装置,以通过所述USB HUB装置与所述至少一个待测试设备进行通信。所述至少一个待测试设备可以通过接口接入所述USB HUB装置,实现与所述客户端的数据交互,所述接口可以为,例如,Type-C接口或Micro-USB接口。所述待测试设备可以为任意安装有Android系统的移动设备,包括但不限于不同品牌或不同屏幕的手机或平板电脑。所述服务器和客户端构成测试平台。需要说明的是,所述服务器和所述客户端处于同一子网内,以便进行通信。
实施例一
图2为本发明游戏兼容性测试方法的一种可选的流程示意图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定,下面以图1中所述待测试设备为执行主体进行示例性描述。
如图2所示,该方法具体包括以下步骤:
步骤S100:获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件。
步骤S102:根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。
具体地,所述测试用例可以为基于图像识别的兼容性自动化测试用例或基于控件识别的兼容性自动化测试用例。当所述测试用例为所述基于图像识别的兼容性自动化测试用例时,则调用基于图像识别的测试框架。当所述测试用例为所述基于控件识别的兼容性自动化测试用例时,则调用基于控件识别的测试框架。当调用对应的测试框架后,所述测试框架获取所述待测试设备的交互坐标,并根据所述交互坐标对所述待测试游戏进行兼容性测试,并得到测试结果。
在示例性的实施例中,如图3所示,所述步骤S102还可以包括步骤S200~S206。
步骤S200:当所述测试用例为使用图像识别的测试用例时,调用所述基于图像识别的测试框架,并启动截图服务进行截图,得到第一图像。
具体地,调用所述基于图像识别的测试框架时,则通过安卓调试桥(AndroidDebug Bridge,ADB)启动所述待测试设备上的截图服务,例如,截图服务P1,并对截图得到的第一图像。
步骤S202:扫描所述第一图像和预设图像元素,并将所述第一图像与所述预设图像元素进行匹配,以根据匹配结果判断所述第一图像中是否存在所述预设图像元素,其中,所述预设图像元素包括游戏菜单或游戏角色。
具体地,将截图得到的所述第一图像与测试脚本中的预设图像元素T1进行全图扫描或者模板匹配,并获得匹配结果,所述匹配结果包括所述第一图像中存在所述预设图像元素T1或者所述第一图像中不存在所述预设图像元素T1。示例性地,通过匹配算法将所述第一图像与预设游戏菜单或者预设游戏角色等可交互元素进行匹配,以根据匹配结果判断所述第一图像中是否存在所述预设游戏菜单或者所述预设游戏角色。
在示例性的实施例中,在将截图得到的所述第一图像与测试脚本中的预设图像元素T1进行全图扫描或者模板匹配之前,还需要将所述第一图像和所述预设图像元素转化为对应的灰度图,然后通过预设算法,例如:快速最近邻算法(Fast Library forApproximate Nearest Neighbors,FLANN),将所述灰度图进行匹配,最后采用预设的模板匹配算法和特征匹配算法进行匹配,以得到的匹配结果。
步骤S204:当所述第一图像中存在所述预设图像元素时,则判断所述预设图像元素为所述游戏目标,并获取所述游戏目标的中间位置坐标。
具体地,当所述第一图像中存在所述预设图像元素时,则代表所述第一图像中存在可交互元素,可通过获取所述可交互元素的中间位置坐标执行交互行为。
在示例性的实施例中,如图4所示,所述步骤S204中获取所述游戏目标的中间位置坐标可以包括步骤S300~步骤S304。
步骤S300:获取所述预设图像元素中心位置在预设图像中的实际坐标、所述预设图像对应设备的第一分辨率及所述待测试设备的第二分辨率。
步骤S302:所述测试框架根据所述实际坐标和所述第一分辨率,计算所述预设图像元素中心位置的相对坐标。
具体地,若所述预设图像元素中心位置在所述预设图像中的实际坐标为(X,Y),所述预设图像对应设备的第一分辨率为(W1,H1),则所述预设图像元素中心位置的相对坐标的计算公式为:
X_R=X/W1;
Y_R=Y/H1;
其中,X_R表示所述预设图像元素中心位置的相对坐标的横坐标,Y_R表示所述预设图像元素中心位置的相对坐标的纵坐标。
步骤S304:根据所述相对坐标和所述第二分辨率计算所述预设图像元素中心位置在所述待测试设备中的绝对坐标,得到所述中间位置坐标。
具体地,结合上述相对坐标的计算公式,若所述第二分辨率为(W2,H2),则所述预设图像元素中心位置在所述待测试设备中的绝对坐标的计算公式为:
X_T=X_R*W2;
Y_T=Y_R/H2;
其中,X_T表示所述预设图像元素中心位置的绝对坐标的横坐标,Y_T表示所述预设图像元素中心位置的绝对坐标的纵坐标。
示例性地,若所述待测试设备的第二分辨率为1440*960,则X_T=X_R*1440,Y_T=Y_R*960。
若在不同分辨率待测试设备下使用相同的绝对坐标,所述测试用例极其不稳定,导致所述测试用例在不同分辨率待测试设备中运行失败。本方法通过计算所述预设图像元素的相对坐标,然后根据所述相对坐标分别计算不同分辨率待测试设备的绝对坐标,实现所述预设图像元素在不同分辨率待测试设备下的适配,从而极大地提高所述待测试用例在不同分辨率设备中运行的成功率以及游戏兼容性测试的准确率。
步骤S206:通过所述测试框架对与所述中间位置坐标对应的像素点执行对应的交互行为,实现与游戏目标的交互,以根据所述交互对所述待测试游戏进行兼容性测试,所述交互行为包括但不限于:点击、拖拽、移动和/或缩放等。
具体地,当获取所述游戏目标的中间位置坐标后,则通过所述测试框架实现模拟用户的点击、拖拽和/或移动等具体操作行为,实现与所述游戏目标的交互。所述测试框架可以通过发送相应的行为给所述待测试设备,以完成模拟玩家的行为模拟。具体地,可以基于预设接口发送预设报文,以完成对应用户行为的模拟。例如:当用户需要在所述待测试设备上的100 200像素点进行单指按压时,则发送如下报文:
d 0 100 200 50
c
u
c
其中,d表示按下,用于模拟设备上点击的操作;0表示索引,并向第一个坐标发送指令;50表示按压屏幕的力度;d 0 100 200 50表示在(100,200)的坐标下以50的力度进行按压屏幕;第一个c表示提交行为,并提交上一条报文;u表示弹起按压屏幕行为;第二个c表示提交按压屏幕行为。
通过上述报文完成了一个模拟手指按压屏幕坐标的行为,所述测试框架通过获取待交互的游戏元素,而后通过预设接口发送报文至预设服务器。所述预设服务器接收到所述报文后,解析所述报文,并注入相应的交互行为至Android系统的/dev/input/event文件中,最后由所述Android系统本身完成例如点击、拖拽和/或移动等交互行为。
在另一示例性的实施例中,当所述第一图像中不存在所述预设图像元素时,则重新进行截图,得到第二图像,并重新扫描所述第二图像和所述预设图像元素,并将所述第二图像与所述预设图像元素进行匹配。若在匹配过程中的预设时间内所述第二图像中均不存在所述预设图像元素,则启动重试机制,以重新启动所述待测试游戏或者重置所述测试用例状态,并重新执行所述测试用例。若重试预设次数均失败,则判断所述测试用例测试失败。在另一示例性的实施例中,所述测试用例中添加了人工介入方案,当所述第一图像中不存在所述预设图像元素时,所述测试用例执行模块将主动挂起测试用例执行状态等待人工介入,在人工介入完成自动化测试用例无法交互的游戏场景后,人工设置当前用例状态为继续执行,则自动化测试用例将会继续执行。本发明实施例通过引入测试失败重试机制和人工介入机制,可以确保所述测试更稳定地执行。
在另一示例性的实施例中,当所述测试用例为使用控件识别的测试用例时,则调用所述基于控件识别的测试框架,也即调用所述待测试游戏的预设测试后门,以通过所述测试后门启动传输控制协议(Transmission Control Protocol,TCP)服务器(Server),并接收远程调用(Remote Procedure Call,RPC)。当所述基于控件识别的测试框架发起寻找所述待测试游戏中预设游戏元素的操作时,所述基于控件识别的测试框架发送Dump RPC远程调用指令至所述测试后门的TCP Server,所述TCP Server解析所述Dump RPC远程调用指令,并根据解析结果调用所述测试后门的Dump方法。通过深度优先搜索的递归算法获取所述待测试游戏的控件树的控件及相关属性,并将所述控件和所述相关属性发送至所述测试框架。
在实际应用中,所述基于控件识别的测试框架可以为BlueCup的侵入式测试框架,是基于网易开源的Poco的二次封装。所述Poco由两个主要组件组成:PocoSDK和Poco测试框架。在所述BlueCup的使用场景中,首先需要将PocoSDK导入到游戏引擎(Unity)的工程中,并挂载在游戏项目的System或主摄像机这类从头至尾都存活的游戏对象中,确保游戏进行的整个过程中,所述PocoSDK的PocoManager对象都不被所述Unity引擎销毁。所述PocoSDK本质上是一个测试后门,其原理是在游戏启动时启动一个异步TCP服务器,用于接收所述测试框架发起的RPC远程调用,在接收到了所述RPC远程调用后,所述TCP服务器会调用启动时已经注册的方法,并返回json报文至所述测试框架。例如,需要获取到整个游戏当前场景的所有游戏对象的属性,那么所述测试框架发起一个称之为Dump的RPC远程调用,PocoManager注册的异步TCP服务器接收到Dump的RPC调用后,基于当前挂载的游戏对象进行递归的父节点查找,直到找到控件树的根对象。而后使用深度优先遍历获取控件树根节点下所有的GameObject对象和对象属性,并通过jsonrpc返回给所述测试框架。所述测试框架则通过对象属性中的Pos属性获取所述对象在所述待测试设备的X轴和Y轴进行相对坐标的计算,而后调用minitouch(也即测试用例交互模块)完成交互。
需要说明的是,无论是基于图像识别的测试框架还是基于控件识别的测试框架,不同之处仅仅限于寻找所述待测试游戏内的游戏对象交互目标的方法不同。对于测试框架而言,和所述游戏对象的交互方式有以下两种方式:基于ADB发送键盘事件(key event)和基于操作系统的事件注入。
基于ADB发送所述key event是使用ADB模拟发送Android虚拟按键实现模拟用户输入的目标,由所述ADB发送所述虚拟按键至所述待测试设备。基于操作系统的事件注入,是把需要交互的行为,以所述操作系统可以识别的方式,写入到/dev/input/event文件中,由所述操作系统自行发送相关行为给所述待测试设备以完成所述交互行为。
在示例性的实施例中,如图5所示,所述方法还可以包括步骤S400和步骤S402:
步骤S400:当执行所述测试用例时,对所述待测试设备的屏幕进行截图,得到截图图像。
步骤S402:判断所述截图图像是否存在异常,并输出截图测试结果,所述异常包括:黑边或黑屏。
具体地,在所述测试用例执行期间,每隔预设时间,例如,启动一个线程,每隔1秒对所述待测试设备进行截图,并记录所述待测试设备的屏幕数据,用于后续判断所述待测试游戏在所述待测试设备中是否有黑边或者有黑屏。当所述兼容性自动化测试用例结束之后,遍历所有的截图图像,并对每个截图图像进行黑边和黑屏的判断,以自动化的诊断所述待测试游戏是否完美适配所述待测试设备的屏幕。本发明实施例通过采用截图的方式,可以自动、快速地判断所述待测试游戏与所述待测试设备的屏幕是否兼容,并极大地提高所述待测试游戏兼容性测试的测试效率。
在示例性的实施例中,如图6所示,所述步骤S402可以包括步骤S500~S504。
步骤S500:将所述截图图像以矩阵的方式读取至内存中,其中,所述矩阵中存储有所述截图图像中每个像素的坐标以及对应的RGB信息。其中,R代表红色分量、G代表绿色分量及B代表蓝色分量。
具体地,通过将所述截图图像以矩阵的方式读取至内存中,可以直观地获取所述截图图像中每个像素的坐标以及每个像素对应的RGB信息。示例性地,所述矩阵可以为三维矩阵,包括每个像素的横坐标、纵坐标以及RGB信息。
步骤S502:扫描所述截图图像的所有像素以获取所述截图图像中所有像素对应的RGB信息,并根据所述RGB信息判断所述截图图像是否出现黑边或者黑屏,得到所述截图测试结果。
具体地,通过获取所述截图图像中所有像素的RGB信息,以统计所述截图图像中黑色像素的分布情况,并根据统计结果判断所述截图图像是否出现黑边或者黑屏,进而得到所述截图测试结果。
在示例性的实施例中,如图7所示,所述步骤S502可以包括步骤S600~S602。
步骤S600:扫描所述截图图像的所有像素,并根据所述RGB信息统计所述矩阵中所有黑色像素出现的次数占所述所有像素的第一百分比。
步骤S602:当所述第一百分比大于第一预设值时,则判断所述截图图像存在黑屏。
具体地,通过统计所述矩阵中所有黑色像素出现的次数占所述所有像素个数的第一百分比,判断所述截图图像是否存在黑屏。也即根据所述截图图像中黑色像素的分布情况判断所述截图图像是否存在黑屏。示例性地,若第一预设值为40%,当所述第一百分比大于40%时,则判断所述截图图像存在黑屏。如图8所示,为一示例性的截图图像存在黑屏的效果图。通过本发明实施例可以自动、精确地判断是否出现黑屏的异常情况。
在另一示例性的实施例中,如图9所示,所述步骤S502还可以包括步骤S700~S706。
步骤S700:以预设扫描方向扫描所有像素的RGB信息,所述预设扫描方向包括上下左右扫描方向。
步骤S702:当所述矩阵的行或者列出现连续黑色像素的个数超过第二预设值时,则判断所述矩阵的行或者列为黑边。
步骤S704:统计所述黑边的数量占所述矩阵的总行数或者总列数的第二百分比。
步骤S706:当所述第二百分比等于或大于第三预设值时,则判断所述截图图像存在黑边。
具体地,当进行黑边的判断时,分别从屏幕的四个方向(包括上下左右四个方向),向内扫描,并记录每行或者每列(其中,左右两侧的扫描单位为行,上下两侧的扫描单位为列)出现连续黑色像素的个数,并根据连续黑色像素的个数判断所述截图图像是否存在黑边。例如,第二预设值为6,若连续黑色像素的个数为0,则判断该行不是黑边;若连续黑色像素的个数为7,则认为该行是黑边。若第三预设值为10%,当黑边的数量占所述矩阵的总行数或者总列数的第二百分比为10%以上时,则判断所述截图图像存在黑边,否则判断所述截图图像不存在黑边。如图10所示,为一示例性的截图图像存在黑边的效果图。通过本发明实施例可以自动、精确地判断是否出现黑边的异常情况。
步骤S504:输出所述截图测试结果。
本发明实施例根据矩阵中的RGB信息判断所述截图图像是否出现黑边或者黑屏,能够快速、精确地判断所述截图图像是否存在黑边或者黑屏等异常情况,极大地提高了所述截图图像异常的判断效率以及精确度。
在示例性的实施例中,如图11所示,所述方法还可以包括步骤S800~S804。
步骤S800:当执行所述测试用例失败后,获取与所述待测试游戏同包名的进程是否存活。
步骤S802:当未存活时,则判断所述待测试游戏崩溃,并对ADB日志进行截取。
步骤S804:将所述ADB日志发送至终端设备,以使所述终端设备将所述ADB日志发送至服务器。
具体地,若在游戏测试过程中所述待测试游戏崩溃,则与所述待测试游戏相关的所有的进程均应处于未存活状态,故,当所述测试用例执行失败后,可通过判断与所述待测试游戏同包名的进程是否存活以确定所述待测试游戏是否崩溃。当判断所述待测试游戏崩溃时,截取ADB日志,然后将所述ADB日志发送至所述服务器,以便于后续问题的排查。通过本发明实施例,可以自动且快速地确定所述待测试游戏是否崩溃。
在另一示例性的实施例中,当执行所述测试用例失败后,还可以通过人工介入操作,以提高所述测试用例失败后重新执行所述测试用例的成功率。具体包括:当当前测试用例执行失败后,发送对应的异常信息至所述测试框架;当所述测试框架获取到所述异常信息后,轮询预设数据库中的预设字段(例如,字段F1),若所述预设字段的值为第四预设值(例如,x),则挂起所述测试用例,直至所述预设字段为“继续/重试/结束”,并根据所述预设字段相应的值继续执行。示例性地,如图12所示,为本发明实施例提供的游戏兼容性测试方法的另一种可选的具体流程示意图。当当前测试用例在执行时,由于网络抖动,使得所述当前测试用例执行失败,则通知MQ并发送Error的异常信息至所述测试框架,此时所述当前测试用例被挂起,等待人工干预结果。所述用户可通过操作平台在浏览器上进行手动操作,以设置所述当前测试用例的执行状态。若所述用户设置继续所述测试用例,则所述操作平台根据所述用户设置将所述预设字段的值设为“继续”;当所述测试框架轮询到所述预设字段的值时,执行“继续”执行下一步的自动化操作,直至完成所述测试用例。若所述用户设置重试所述测试用例,相应地,所述测试框架重新对所述测试用例执行重试机制,并重置所述预设字段的值为“重试”。若所述用户设置结束所述测试用例,则所述测试框架发送异常信息,并重置所述预设字段的值为“结束”,并结束所述测试用例。
本发明实施例还可以在Web网页上对所述待测试设备进行控制。由于所述测试用例加入了“人工介入”操作功能,故本发明实施例还提供一种在Web网页上操作待测试设备的方法,具体为:通过minicap(也即视频流截取模块)开启TCP Server,所述TCP Server抓取所述待测试设备上的/dev/graphics/fb0,从所述/dev/graphics/fb0获取帧缓冲(FrameBuffer)数据,然后通过所述TCP Server将所述帧缓冲数据直接返回至客户端。所述minicap是一种高速截图工具,通过所述高速截图工具可以不断的传输图片信息并在所述Web网页上绘制,实现实时视频流,例如,每秒截20-30帧图片。所述/dev/graphics/fb0表示图像设备文件,用于为应用层提供控制显存的接口。在本发明实施例中,所述Web网页开启全双工通信协议(WebSocket)直接和所述TCP Server连接,获取所述TCP Server实时推送的视频流,并绘制在所述Web网页上。然后在所述Web网页上嵌入一个DIV,并在所述DIV中嵌入一个图像(image),通过WebSocket客户端(Client)从所述minicap服务器获取所述FrameBuffer数据并转换成Blob图像,实时且不断替换图像的源地址(Source,Src)的方式实现实时渲染视频流至所述Web网页,示例性的渲染效果如图13。当接收到所述用户在所述DIV上进行点击或者操作时,通过监听所述视频流渲染所述DIV的onMouseDown、onMouseUp、onMouseMove、onMouseLeave事件来监听所述用户对所述待测试设备的实时操作。通过上述事件监听所述用户对所述DIV中的操作并记录操作坐标和操作行为,并对所述坐标进行转换,最后转换成所述minitouch的报文,并发送至所述minitouch Server,完成例如点击、拖动等交互模拟。
在另一示例性的实施例中,在所述测试用例执行过程中,还开启性能数据采集,并开启预设线程,所述线程定期通过ADB命令对所述待测试设备进行性能数据的采集,所述性能数据可以包括内存数据、网络数据及CPU占用。例如:通过“dumpsys meminfo”命令获取所述内存数据;通过“cat/proc/${pid}/net/dev|grep wlan”命令获取所述网络数据、通过“/proc/stat/${pid}”命令获取所述CPU占用等。
本发明实施例提供的游戏兼容性测试方法,根据获取的测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标对所述待测试游戏执行所述测试用例执行所述测试用例,能够快速自动地执行所述测试用例,并获取测试结果,极大地提高了所述兼容性测试的准确率。
实施例二
如图14所示,为本发明实施例提供的一种示例性的游戏兼容性测试系统的一种可选的程序模块示意图,所述游戏兼容性测试系统,包括服务器、至少一个终端设备(图14中仅以终端设备1和终端设备2为例进行说明)及至少一个待测试设备(图14中以待测试设备A~F及待测试设备G~N为例进行说明),所述服务器包括测试场景配置模块,每个终端设备包括测试设备调度模块和测试用例执行模块。所述服务器可以为具有交互界面的服务器,例如:用户通过所述交互界面的操作平台对所述测试场景进行配置,或者所述用户可以读取所述交互界面的操作平台显示的测试结果。所述服务器可以为一台服务器,也可以为由多台服务器组成的服务器集群。
测试场景配置模块用于创建测试任务,并获取与所述测试任务对应的所述至少一个待测试设备、待测试游戏及测试用例,通过MQ消息队列将所述测试任务的消息报文发送至所述测试设备调度模块,所述测试用例包括对所述待测试游戏执行的至少一个操作事件。所述测试场景配置模块与所述测试设备调度模块的交互过程,按照预设协议规则以所述测试任务的形式描述,例如:当用户通过所述操作平台下发一个测试任务至2台待测试设备中,则发起的消息报文如图15。需要说明的是,所述测试用例为所述测试任务的具体描述。所述测试场景配置模块通过创建所述测试任务,然后将所述测试任务分发至所述至少一台待测试设备,并监控所述测试用例的执行过程。
在示例性的实施例中,所述服务器还可以包括测试用例管理模块,用于对所述测试用例进行管理,例如:所述测试用例的新建、修改和删除等。
在实际应用中,在所述测试场景配置模块创建测试任务之前,还需要进行测试用例的添加,具体包括:新建一个游戏项目及至少一个游戏模块,然后对所述至少一个游戏模块进行测试脚本的编写,所述测试脚本中包括对应的测试用例信息;当所述测试脚本编写结束后,将所述测试脚本提交至版本控制系统(Subversion,SVN)的指定路径中,预先挂载在所述SVN中的钩子(Hook)脚本对所述测试脚本中的测试用例信息进行解析,以获取所述测试脚本的具体内容;根据所述具体内容建立所述测试用例,并将所述测试用例绑定至对应的游戏模块中。
所述钩子的解析流程如下:
首先,所有的测试脚本均基于内部自研的测试框架BlueCup开发,该框架提供了一个基类ActionBase,在该类中暴露了一个run方法,测试脚本需要继承自ActionBase基类,并在run方法中实现自己的测试行为;
其次,在完成了所述测试用例的编写之后,将所述测试用例对应的python脚本提交至所述SVN指定的某些路径;
最后,在提交之后,预先挂载在SVN上的Hook函数会解析提交的文件,并读取其中的内容,判断是否有python脚本,如果有,则判断是否继承自BlueCup并实现了run方法如果有,则再解析相关数据,并在所述测试平台(在本发明中,所述测试平台可以为iggCloud平台)对应的数据库测试用例表,例如,iggTestCaseTable,中插入一条数据,完成自动化测试用例的自动化添加。
在所述测试用例已经存在之后,上传所述待测试游戏,然后建立一个兼容性测试任务,并为所述兼容性测试任务选择待测试游戏,便于后续所述调度模块分发任务,所述测试设备调度模块从指定位置下载游戏安装程序。在选择完所述待测试游戏之后,选择所述待测试游戏需要运行的兼容性测试的模块,所述测试设备调度模块调用所述游戏模块绑定的测试用例。最后,为所述测试任务选定需要执行兼容性测试的设备机型,便于所述测试设备调度模块下发任务指定的设备中,完成所述兼容性测试。
所述测试设备调度模块通过所述MQ消息队列接收所述消息报文,并对所述消息报文进行解析,根据解析结果调用对应的测试用例执行模块,并将所述测试任务分发至对应的待测试设备。
所述测试设备调度模块根据解析结果调用对应的测试用例执行模块,并将所述测试任务分发至对应的待测试设备执行所述测试用例以进行所述待测试游戏的兼容性测试,包括:根据所述标识号查询所述待测试设备的设备状态,其中,所述设备状态包括空闲状态或忙碌状态;当所述待测试设备处于空闲状态时,则将所述测试任务分发至所述待测试设备进行所述待测试游戏的兼容性测试;当所述待测试设备处于忙碌状态时,则挂起所述测试任务,并当所述待测试设备处于空闲状态时,再将所述测试任务分发至所述待测试设备进行所述待测试游戏的兼容性测试。当然,当所述待测试设备处于忙碌状态(也即所述待测试设备被占用)时,所述测试设备调度模块还将所述待测试设备被占用的信息发送至服务器并通过所述操作平台显示。
具体地,在所述测试设备调度模块启动之前,需要提前启动所述消息队列(Message Queue,MQ)。所述消息队列提供一种“订阅、发布”模型,所述测试设备调度模块基于所述“订阅、发布”模型与所述服务器进行消息通信和数据交互。
如图16是测试设备调度模块与操作平台的通信流程示意图。当用户通过所述操作平台启动时,发布预设“测试任务”主题至所述消息队列,所述测试设备调度模块从所述消息队列订阅所述“测试任务”主题。当所述服务器向所述“测试任务”主题发布测试任务的消息时,所述消息队列同步推送所述测试任务的消息至所有订阅了所述“测试任务”主题的订阅者,即推送所述测试任务的消息至订阅了所述“测试任务”主题的所有测试设备调度模块。所述测试设备调度模块在接收到所述测试任务的消息后,解析所述消息报文,得到所述测试任务的消息中的设备序列号(Serial Number,SN),并通过测试用例执行模块执行所述测试任务,至此完成所述测试任务的分发。所述测试用例执行模块根据解析出的设备SN号,通过ADB命令和接入至USB HUB的待测试设备,以在所述待测试设备上执行所述测试任务。
当所述终端设备的测试设备调度模块启动时,所述测试设备调度模块作为发布者发布多个“测试状态”主题至所述消息队列,所述操作平台启动时作为一个订阅者订阅所述“测试状态”主题。当指定的测试任务被下发至所述待测试设备时,所述待测试设备的测试用例执行模块在所述待测试设备上执行所述测试任务。当然,在所述测试用例执行模块执行所述测试任务前,所述测试设备调度模块发送对应的待测试设备被占用的消息至所述“测试状态”主题,然后,所述消息队列发送所述消息至订阅了所述“测试状态”主题的操作平台,所述操作平台在web页面上显示所述待测试设备被占用的信息,至此完成整个通信流程。当然,除了“测试状态”主题之外,还可以包括“任务状态”等其他主题,以传递不同的消息至所述操作平台,完成所述操作平台和所述测试设备调度模块的所有功能的数据交互。通过如图10的描述,本领域的技术人员可以清楚地知道,上述内容中所述至少一个终端设备指的是与所述操作平台互为订阅者和互为发布者的终端设备。
本发明实施例中所述测试设备调度模块基于消息中间件,由于所述消息中间件最多支持4096个TCP连接,每个连接可以是一台Windows PC,每台PC可以接入20台待测试设备。若需要横向扩展,仅需部署1台PC,安装所述测试设备调度模块于所述PC中,并接入USBHUB和20台待测试设备即可完成所述待测试设备的扩展。所述测试设备调度模块通过自动检测设备的SN号,并自动获取所述待测试设备的硬件信息,并上传至服务器,通过所述测试设备调度模块使得待测试设备的扩展省时省力,除硬件接入之外,无需过多人工介入。
所述测试用例执行模块获取所述测试任务,并根据所述测试任务调用对应的测试框架获取交互坐标,并根据所述交互坐标在所述待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,并将测试结果发送至对应的终端设备。由于所述测试用例为所述测试任务的具体描述形式,故当所述测试用例执行模块获取到所述测试任务时,相当于所述测试用例执行模块获取到对应的测试用例以及待测试游戏。所述测试用例执行模块的具体实现过程如上述实施例一中描述的技术方案,在此不作赘述。所述测试用例执行模块根据获取的测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标对所述待测试游戏执行所述测试用例,能够快速自动地执行所述测试用例,并获取测试结果,极大地提高了所述兼容性测试的准确率。
所述至少一个终端设备接收对应的测试结果,并将所述测试结果发送至所述服务器。
所述服务器接收所述测试结果,并根据所述测试结果生成测试报告。
需要说明的是,所述服务器还可以包括测试数据收集模块,用于接收所述测试结果,并根据所述测试结果进行统计和结构化处理得到测试报告,然后将所述测试报告通过网页和CSV等方式显示在所述操作平台,以供所述用户查看。
实施例三
基于上述实施例一中提供的游戏兼容性测试方法,本实施例中还提供一种游戏兼容性测试系统,所述游戏兼容性测试系统可以应用于计算机设备。具体地,图17示出了该游戏兼容性测试系统的可选的结构框图,该游戏兼容性测试系统被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合描述游戏兼容性测试系统在存储介质中的执行过程,以下描述将具体介绍本实施例各程序模块的功能。
如图17所示,游戏兼容性测试系统具体包括以下组成部分:
获取模块201,用于获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件。
测试模块202,用于根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。
具体地,所述测试用例可以为基于图像识别的兼容性自动化测试用例或基于控件识别的兼容性自动化测试用例。当所述测试用例为所述基于图像识别的兼容性自动化测试用例时,则调用基于图像识别的测试框架。当所述测试用例为所述基于控件识别的兼容性自动化测试用例时,则调用基于控件识别的测试框架。当调用对应的测试框架后,所述测试框架获取所述待测试设备的交互坐标,并根据所述交互坐标对所述待测试游戏进行兼容性测试,并得到测试结果。
在示例性的实施例中,所述测试模块202可以用于当所述测试用例为使用图像识别的测试用例时,调用所述基于图像识别的测试框架,并启动截图服务进行截图,得到第一图像。
在示例性的实施例中,所述测试模块202还可以用于扫描所述第一图像和预设图像元素,并将所述第一图像与所述预设图像元素进行匹配,以根据匹配结果判断所述第一图像中是否存在所述预设图像元素,其中,所述预设图像元素包括游戏菜单或游戏角色。
在示例性的实施例中,所述测试模块202还可以用于当所述第一图像中存在所述预设图像元素时,则判断所述预设图像元素为所述游戏目标,并获取所述游戏目标的中间位置坐标。
在示例性的实施例中,所述测试模块202还可以用于:
获取所述预设图像元素中心位置在预设图像中的实际坐标、所述预设图像对应设备的第一分辨率及所述待测试设备的第二分辨率;所述测试框架根据所述实际坐标和所述第一分辨率,计算所述预设图像元素中心位置的相对坐标。
在示例性的实施例中,所述测试模块202还可以用于根据所述相对坐标和所述第二分辨率计算所述预设图像元素中心位置在所述待测试设备中的绝对坐标,得到所述中间位置坐标。
在示例性的实施例中,所述测试模块202还可以用于通过所述测试框架对与所述中间位置坐标对应的像素点执行对应的交互行为,实现与游戏目标的交互,以根据所述交互对所述待测试游戏进行兼容性测试,所述交互行为包括但不限于:点击、拖拽、移动和/或缩放等。
在另一示例性的实施例中,当所述第一图像中不存在所述预设图像元素时,则重新进行截图,得到第二图像,并重新扫描所述第二图像和所述预设图像元素,并将所述第二图像与所述预设图像元素进行匹配。若在匹配过程中的预设时间内所述第二图像中均不存在所述预设图像元素,则启动重试机制,以重新启动所述待测试游戏或者重置所述测试用例状态,并重新执行所述测试用例。若重试预设次数均失败,则判断所述测试用例测试失败。在另一示例性的实施例中,所述测试用例中添加了人工介入方案,当所述第一图像中不存在所述预设图像元素时,所述测试用例执行模块将主动挂起测试用例执行状态等待人工介入,在人工介入完成自动化测试用例无法交互的游戏场景后,人工设置当前用例状态为继续执行,则自动化测试用例将会继续执行。本发明实施例通过引入测试失败重试机制和人工介入机制,可以确保所述测试更稳定地执行。
在另一示例性的实施例中,当所述测试用例为使用控件识别的测试用例时,则调用所述基于控件识别的测试框架,也即调用所述待测试游戏的预设测试后门,以通过所述测试后门启动传输控制协议(Transmission Control Protocol,TCP)服务器(Server),并接收远程调用(Remote Procedure Call,RPC)。当所述基于控件识别的测试框架发起寻找所述待测试游戏中预设游戏元素的操作时,所述基于控件识别的测试框架发送Dump RPC远程调用指令至所述测试后门的TCP Server,所述TCP Server解析所述Dump RPC远程调用指令,并根据解析结果调用所述测试后门的Dump方法。通过深度优先搜索的递归算法获取所述待测试游戏的控件树的控件及相关属性,并将所述控件和所述相关属性发送至所述测试框架。
在示例性的实施例中,所述游戏兼容性测试系统还可以包括截图模块以及判断模块。
所述截图模块,用于当执行所述测试用例时,对所述待测试设备的屏幕进行截图,得到截图图像。
所述判断模块,用于判断所述截图图像是否存在异常,并输出截图测试结果,所述异常包括:黑边或黑屏。
在示例性的实施例中,所述判断模块可以包括读取单元、判断单元及输出单元。
所述读取单元,用于将所述截图图像以矩阵的方式读取至内存中,其中,所述矩阵中存储有所述截图图像中每个像素的坐标以及对应的RGB信息。其中,R代表红色分量、G代表绿色分量及B代表蓝色分量。
所述判断单元,用于扫描所述截图图像的所有像素以获取所述截图图像中所有像素对应的RGB信息,并根据所述RGB信息判断所述截图图像是否出现黑边或者黑屏,得到所述截图测试结果。
所述判断单元,具体用于扫描所述截图图像的所有像素,并根据所述RGB信息统计所述矩阵中所有黑色像素出现的次数占所述所有像素的第一百分比;当所述第一百分比大于第一预设值时,则判断所述截图图像存在黑屏。
所述判断单元,还具体用于以预设扫描方向扫描所有像素的RGB信息,所述预设扫描方向包括上下左右扫描方向;当所述矩阵的行或者列出现连续黑色像素的个数超过第二预设值时,则判断所述矩阵的行或者列为黑边;统计所述黑边的数量占所述矩阵的总行数或者总列数的第二百分比;当所述第二百分比等于或大于第三预设值时,则判断所述截图图像存在黑边。
所述输出单元,用于输出所述截图测试结果。
本发明实施例根据矩阵中的RGB信息判断所述截图图像是否出现黑边或者黑屏,能够快速、精确地判断所述截图图像是否存在黑边或者黑屏等异常情况,极大地提高了所述截图图像异常的判断效率以及精确度。
在示例性的实施例中,所述游戏兼容性测试系统还可以包括崩溃处理模块,用于:
当执行所述测试用例失败后,获取与所述待测试游戏同包名的进程是否存活;当未存活时,则判断所述待测试游戏崩溃,并对ADB日志进行截取;将所述ADB日志发送至终端设备,以使所述终端设备将所述ADB日志发送至服务器。
在另一示例性的实施例中,当执行所述测试用例失败后,还可以通过人为操作,以提高所述测试用例失败后重新执行所述测试用例的成功率,所述人为操作可以包括继续、重试或结束。具体包括:当当前测试用例执行失败后,发送对应的异常信息至所述测试框架;当所述测试框架获取到所述异常信息后,轮询预设数据库中的预设字段(例如,字段F1),若所述预设字段的值为第四预设值(例如,x),则挂起所述测试用例,直至所述预设字段为“继续/重试/结束”,并根据所述预设字段相应的值继续执行。示例性地,当当前测试用例在执行时,由于网络抖动,使得所述当前测试用例执行失败,则发送Error的异常信息至所述测试框架,此时所述当前测试用例被挂起,所述用户可通过操作平台在浏览器上进行手动操作,以设置所述当前测试用例的执行状态。若所述用户设置继续所述测试用例,则所述操作平台根据所述用户设置将所述预设字段的值设为“继续”;当所述测试框架轮询到所述预设字段的值时,执行“继续”执行下一步的自动化操作,直至完成所述测试用例。若所述用户设置重试所述测试用例,相应地,所述测试框架重新对所述测试用例执行重试机制,并重置所述预设字段的值为“重试”。若所述用户设置结束所述测试用例,则所述测试框架发送异常信息,并重置所述预设字段的值为“结束”,并结束所述测试用例。
在另一示例性的实施例中,在所述测试用例执行过程中,还开启性能数据采集,并开启预设线程,所述线程定期通过ADB命令对所述待测试设备进行性能数据的采集,所述性能数据可以包括内存数据、网络数据及CPU占用。例如:通过“dumpsys meminfo”命令获取所述内存数据;通过“cat/proc/${pid}/net/dev|grep wlan”命令获取所述网络数据、通过“/proc/stat/${pid}”命令获取所述CPU占用等。
本发明实施例提供的游戏兼容性测试系统,根据获取的测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标对所述待测试游戏执行所述测试用例执行所述测试用例,能够快速自动地执行所述测试用例,并获取测试结果,极大地提高了所述兼容性测试的准确率。
实施例四
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图18所示,本实施例的计算机设备30至少包括但不限于:可通过系统总线相互通信连接的存储器301、处理器302。需要指出的是,图18仅示出了具有组件301-302的计算机设备30,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器301(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器301可以是计算机设备30的内部存储单元,例如该计算机设备30的硬盘或内存。在另一些实施例中,存储器301也可以是计算机设备30的外部存储设备,例如该计算机设备30上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器301还可以既包括计算机设备30的内部存储单元也包括其外部存储设备。在本实施例中,存储器301通常用于存储安装于计算机设备30的操作系统和各类应用软件,例如上述实施例的游戏兼容性测试系统的程序代码等。此外,存储器301还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器302在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器302通常用于控制计算机设备30的总体操作。
具体的,在本实施例中,处理器302用于执行处理器302中存储的游戏兼容性测试方法的程序,所述游戏兼容性测试方法的程序被执行时实现如下步骤:
获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;
根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。
上述方法步骤的具体实施例过程可参见上述实施例一,本实施例在此不再赘述。
实施例五
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;
根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。
上述方法步骤的具体实施例过程可参见上述实施例一,本实施例在此不再重复赘述。
本实施例提供的计算机设备及可读存储介质,根据获取的测试用例调用对应的测试框架执行所述测试用例,能够快速自动地执行所述测试用例,并获取测试结果,极大地提高了所述待测试游戏的测试效率。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (11)
1.一种游戏兼容性测试方法,其特征在于,所述方法包括:
获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;
根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。
2.如权利要求1所述的游戏兼容性测试方法,其特征在于,所述测试框架包括基于图像识别的测试框架,所述根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,包括:
当所述测试用例为使用图像识别的测试用例时,调用所述基于图像识别的测试框架,并启动截图服务进行截图,得到第一图像;
扫描所述第一图像和预设图像元素,并将所述第一图像与所述预设图像元素进行匹配,以根据匹配结果判断所述第一图像中是否存在所述预设图像元素,其中,所述预设图像元素包括游戏菜单或游戏角色;
当所述第一图像中存在所述预设图像元素时,则判断所述预设图像元素为游戏目标,并获取所述游戏目标的中间位置坐标;
通过所述测试框架对与所述中间位置坐标对应的像素点执行对应的交互行为,实现与所述游戏目标的交互,以根据所述交互对所述待测试游戏进行兼容性测试。
3.如权利要求2所述的游戏兼容性测试方法,其特征在于,所述获取所述游戏目标的中间位置坐标,包括:
获取所述预设图像元素中心位置在预设图像中的实际坐标、所述预设图像对应设备的第一分辨率及所述待测试设备的第二分辨率;
所述测试框架根据所述实际坐标和所述第一分辨率,计算所述预设图像元素中心位置的相对坐标;
根据所述相对坐标和所述第二分辨率计算所述预设图像元素中心位置在所述待测试设备中的绝对坐标,得到所述中间位置坐标。
4.如权利要求1所述的游戏兼容性测试方法,其特征在于,所述方法还包括:
当执行所述测试用例时,对所述待测试设备的屏幕进行截图,得到截图图像;
判断所述截图图像是否存在异常,并输出截图测试结果,所述异常包括:黑边或黑屏。
5.如权利要求4所述的游戏兼容性测试方法,其特征在于,所述判断所述截图图像是否存在异常,并输出截图测试结果,包括:
将所述截图图像以矩阵的方式读取至内存中,其中,所述矩阵中存储有所述截图图像中每个像素的坐标以及对应的RGB信息;
扫描所述截图图像的所有像素以获取所述截图图像中所有像素对应的RGB信息,并根据所述RGB信息判断所述截图图像是否出现黑边或者黑屏,得到所述截图测试结果;
输出所述截图测试结果。
6.如权利要求5所述的游戏兼容性测试方法,其特征在于,所述扫描所述截图图像的所有像素以获取所述截图图像中的所有像素对应的RGB信息,并根据所述RGB信息判断所述截图图像是否出现黑边或者黑屏,包括:
扫描所述截图图像的所有像素,并根据所述RGB信息统计所述矩阵中所有黑色像素出现的次数占所述所有像素的第一百分比;
当所述第一百分比大于第一预设值时,则判断所述截图图像存在黑屏。
7.如权利要求5或6所述的游戏兼容性测试方法,其特征在于,所述扫描所述截图图像的所有像素以获取所述截图图像中所有像素对应的RGB信息,并根据所述RGB信息判断所述截图图像是否出现黑边或者黑屏,还包括:
以预设扫描方向扫描所述所有像素的RGB信息,所述预设扫描方向包括上下左右扫描方向;
当所述矩阵的行或者列出现连续黑色像素的个数超过第二预设值时,则判断所述矩阵的行或者列为黑边;
统计所述黑边的数量占所述矩阵的总行数或者总列数的第二百分比;
当所述第二百分比大于第三预设值时,则判断所述截图图像存在黑边。
8.一种游戏兼容性测试系统,其特征在于,所述系统包括服务器、至少一个终端设备及至少一个待测试设备,所述服务器包括测试场景配置模块,每个终端设备包括测试设备调度模块和测试用例执行模块,其中:
所述测试场景配置模块用于创建测试任务,并获取与所述测试任务对应的所述至少一个待测试设备、待测试游戏及测试用例,通过MQ消息队列将所述测试任务的消息报文发送至所述至少一个终端设备的测试设备调度模块,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;
所述测试设备调度模块通过所述MQ消息队列接收所述消息报文,并对所述消息报文进行解析,根据解析结果调用对应的测试用例执行模块,并将所述测试任务分发至所述待测试设备;
所述测试用例执行模块获取所述测试任务,并根据所述测试任务调用对应的测试框架获取交互坐标,并根据所述交互坐标在所述待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,并将测试结果发送至对应的终端设备;
所述至少一个终端设备接收对应的测试结果,并将所述测试结果发送至所述服务器;
所述服务器接收所述测试结果,并根据所述测试结果生成测试报告。
9.一种游戏兼容性测试系统,其特征在于,包括:
获取模块,用于获取待测试游戏及测试用例,所述测试用例包括对所述待测试游戏执行的至少一个操作事件;
测试模块,用于根据所述测试用例调用对应的测试框架获取交互坐标,并根据所述交互坐标在待测试设备上对所述待测试游戏执行所述测试用例,以对所述待测试游戏进行兼容性测试,得到测试结果。
10.一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项的所述游戏兼容性测试方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项的所述游戏兼容性测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011001136.6A CN114253824A (zh) | 2020-09-22 | 2020-09-22 | 游戏兼容性测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011001136.6A CN114253824A (zh) | 2020-09-22 | 2020-09-22 | 游戏兼容性测试方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114253824A true CN114253824A (zh) | 2022-03-29 |
Family
ID=80789515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011001136.6A Pending CN114253824A (zh) | 2020-09-22 | 2020-09-22 | 游戏兼容性测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114253824A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541270A (zh) * | 2023-03-27 | 2023-08-04 | 深圳国家金融科技测评中心有限公司 | 一种操作系统的适配验证测试方法及装置 |
CN116743990A (zh) * | 2023-08-16 | 2023-09-12 | 北京智芯微电子科技有限公司 | 嵌入式设备的视频流测试方法和视频流测试处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120204153A1 (en) * | 2011-02-04 | 2012-08-09 | Disney Enterprises, Inc. | Automated testing on multiple video game platforms |
CN105573747A (zh) * | 2015-12-10 | 2016-05-11 | 小米科技有限责任公司 | 用户界面的测试方法及装置 |
CN107464251A (zh) * | 2016-06-03 | 2017-12-12 | 上海顺久电子科技有限公司 | 一种图像的黑边检测方法及装置 |
CN110851368A (zh) * | 2019-11-19 | 2020-02-28 | 天津车之家数据信息技术有限公司 | 一种多设备协同测试方法、装置、计算设备和系统 |
-
2020
- 2020-09-22 CN CN202011001136.6A patent/CN114253824A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120204153A1 (en) * | 2011-02-04 | 2012-08-09 | Disney Enterprises, Inc. | Automated testing on multiple video game platforms |
CN105573747A (zh) * | 2015-12-10 | 2016-05-11 | 小米科技有限责任公司 | 用户界面的测试方法及装置 |
CN107464251A (zh) * | 2016-06-03 | 2017-12-12 | 上海顺久电子科技有限公司 | 一种图像的黑边检测方法及装置 |
CN110851368A (zh) * | 2019-11-19 | 2020-02-28 | 天津车之家数据信息技术有限公司 | 一种多设备协同测试方法、装置、计算设备和系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541270A (zh) * | 2023-03-27 | 2023-08-04 | 深圳国家金融科技测评中心有限公司 | 一种操作系统的适配验证测试方法及装置 |
CN116541270B (zh) * | 2023-03-27 | 2024-01-02 | 深圳国家金融科技测评中心有限公司 | 一种操作系统的适配验证测试方法及装置 |
CN116743990A (zh) * | 2023-08-16 | 2023-09-12 | 北京智芯微电子科技有限公司 | 嵌入式设备的视频流测试方法和视频流测试处理方法 |
CN116743990B (zh) * | 2023-08-16 | 2023-10-27 | 北京智芯微电子科技有限公司 | 嵌入式设备的视频流测试方法和视频流测试处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20140331209A1 (en) | Program Testing Service | |
CN112817817B (zh) | 埋点信息查询方法、装置、计算机设备和存储介质 | |
US10705946B2 (en) | Techniques for real time server testing in a production environment | |
KR20140095882A (ko) | 모바일 장치를 검증하기 위한 테스트 시스템 및 이의 구동 방법 | |
US9292423B1 (en) | Monitoring applications for compatibility issues | |
CN111813686B (zh) | 一种游戏测试方法、装置、测试终端及存储介质 | |
CN107577510B (zh) | 一种无盘环境下硬件驱动自动快速预装方法及系统 | |
CN114253824A (zh) | 游戏兼容性测试方法及系统 | |
CN112199301A (zh) | 用户界面自动化测试方法、电子设备及存储介质 | |
US9658933B2 (en) | Automatically modifying a test for a program on multiple electronic devices | |
Tuovenen et al. | MAuto: Automatic mobile game testing tool using image-matching based approach | |
WO2023077951A1 (zh) | 数据渲染方法及装置 | |
CN107526623A (zh) | 一种数据处理方法及装置 | |
CA2910977A1 (en) | Program testing service | |
CN114546814A (zh) | 录制回放方法、装置及存储介质 | |
CN116719736A (zh) | 一种用于测试软件界面的测试用例生成方法及装置 | |
US10169216B2 (en) | Simulating sensors | |
CN111949510A (zh) | 测试处理方法、装置、电子设备及可读存储介质 | |
CN112150431B (zh) | Ui视觉的走查方法和装置、存储介质、电子装置 | |
CN112752034B (zh) | 视频特效的校验方法、装置 | |
CN112685306A (zh) | 一种测试方法、装置、用户终端及存储介质 | |
CN111459831A (zh) | 测试系统和测试方法 | |
CN111124907A (zh) | 一种手机游戏测试方法、装置和服务器 | |
CN112468641B (zh) | 程序测试方法、装置、终端及存储介质 | |
CN113821745A (zh) | 图片处理方法、云服务方法、装置、电子设备和存储介质 |
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 |