您的位置:网站首页 > 源码评测 > 正文

Testin技术副总裁尹春鹏:插件源码解决Cocos开发者测试和崩溃难题2014年11月5日星期三

类别:源码评测 日期:2014-11-5 22:38:46 人气: 来源:

  10月28日,Testin云测技术副总裁,联合创始人尹春鹏在Cocos2014大会期间发表《Cocos游戏的自动化测试和崩溃分析》主题,他认为触控Cocos虽然给全球开发者提供了优秀开发引擎,但开发者在开发完成后仍会遇到一系列棘手问题,为此Testin云测试平台特意了插件源码、提供SDK等多种手段,尽可能帮助手游开发者解决测试和崩溃难题。

  众所周知,一款游戏在正式发布之前,开发者需在各种终端上适配测试,现在市面上主流终端可能有数千款,到底需要多少才够用?即使斥巨资购买大量终端,耗费大量时间在每款终端上适配测试,可能上一个版本还没有测试完,新版本又来了,此外游戏即使经过全面的测试,上线后仍然会有崩溃和闪退等严重Bug,这些问题一直困扰着全球范围内手游开发者。

  针对以上难题,Testin云测试平台专门为Cocos引擎开发了一款插件,在测试阶段,开发者可将插件打包到游戏内部实现自动化测试。该插件可精准识别出游戏对象,并得到、大小、文本内容、唯一标识、显示层级等具体信息,然后以类似原生控件操作的方式实现自动化测试,Cocos引擎中常用的一些控件类如Node、Scene、Layer、Sprite、SpriteBatchNode、Scale9Sprite、Label、MenuItem等均可实现。

  为了响应Cocos开源社区的,Testin云测现场宣布插件源码,将源码嵌入游戏很简单,只需到github下载开源代码,修改make文件(增加两行),增加一行代码即可,嵌入完成后,可通过新的iTestin工具来脚本,即可实现用手机功能,同时支持各种操作。

  谈及开发者最为头痛的应用崩溃难题,如手游在全面测试后仍会出现崩溃和闪退,尹春鹏分析认为,用户不一定按照我们预想的方式来操作,不同的操作径,可能会产生不同的问题,此外全球用户的各种智能终端,其运行远比测试机要复杂的多。

  为此,Testin专门研发出一款SDK,供开发者打包到发行版本中,嵌入步骤很简单,只需添加3行代码。SDK支持原生代码崩溃收集,Cocos引擎开发的游戏,NDK代码的崩溃收集等功能,覆盖Android和iOS两大主流平台。当手游发生崩溃和异常时,SDK可迅速捕获当前运行的堆栈信息,提供符号化的功能,使堆栈信息精准定位到代码类、函数和代码行,方便开发者定位问题所在。

  同时,SDK还可获取崩溃发生时的系统日志、错误界面、终端型号;以及实时的终端信息,比如网络状态、内存占用、存储状况等,支持自定义数据字段,可以收集崩溃发生时的玩家id、游戏、玩家场景等各种信息,方便查找问题。收集崩溃发生时的各种信息,供开发者查找问题,确保下个版本不会再出问题。

  据介绍,Testin云测试平台目前支持Cocos全平台,包括Cocos2d-x2.x全系列,Cocos2d-x3.x全系列,Cocos2d-js3.x全系列,Cocos3d-x(即将支持),以及C++,JavaScript,Lua等各种开发语言,可自动执行和生成报告备数千款真机同时运行,自动出具权威精准的报告等,同时为了解决游戏帐号互踢的问题,Testin也支持提交批量帐号文件,实现在每个终端上使用不同的帐号登录功能。

  尹春鹏最后全球开发者,Testin为大家提供了权威可靠的真机手游平台,故测试团队完全没有必要自己购买终端,只需做在Testin平台上提交测试,提交应用和脚本即可,剩下的工作就交给Testin云测试平台,Testin目前拥有数千台设备同时进行测试,完全可以满足手游开发者的各方面测试需求。(完)

  以下为实录:

  跟大家一起聊聊手游测试和崩溃分析。在座的我都知道大家很多都是cocos的开发者,触控给我们提供了非常好的开发引擎,但开发过程中需要测试,在测试过程中遇到很多问题。我们看手游测试中会遇到哪些问题?第一个是移动终端,目前移动终端碎片化,尤其是碎片化非常严重。每个终端都有不同的硬件,不同的分辨率,不同的系统,不同的版本,我们的游戏开发完成之后其实必须要在每个终端上适配好之后看看它有没有问题,现在可能有数千款终端,我们测试团队到底需要买多少终端才够用呢?第二个,即时我们购买了大量的终端,游戏开发完成后在每一款终端上测试一遍,假设一千台终端,可能上一个版本还没有测试完,新版本就又要发布了。另外我们上线之后还是会有用户不停的反馈说游戏崩溃和闪退,这些到底怎么解决?

  我们来看一下,我们Testin为手游服务做哪些事情。用Testin服务,大家知道我们提供真机手游平台。我们有超过几千款终端,测试团队完全没有必要自己购买终端,大家只要在我们平台上提交测试,提交你的应用和脚本,就可以把你的应用和脚本完全测试的很好,我们有数千台设备同时进行测试。但是又带来问题了,手游自动测试,目前来说会有一些难题,我们来看一下,移户常见的测试方法——控件操作,包括JUNIT、常用的Robotium,还有Google自己提供的UIAutomator等等,可以对控件进行定位,查找它的进行操作,但是我们做过手游测试的人都知道,因为我们手游是通过OpenGL直接绘图,根本没有原生控件的概念,这种第三方的框架根本没办位它的控件。

  我们再看还有一种方法,通过坐标操作,我知道我的按钮在哪个,我点击去进行操作,但是同样问题也来了,就是跨分辨率的问题,有人说我就每个分辨率录一个就好了。但是其实也会面临很多问题,会有很多分辨率,还有特殊分辨率,包括最近魅族新出的MX4,它是一个16比10的分辨率,跟其他的都不一致;还有手机有虚拟按键,手机分辨率一致,但是实际游戏可用的分辨率不一样。另外通过这种脚本测试情况,它的结果没有办法判定,跑是跑了,但是根本不知道它跑得对不对。

  我们来看Testin是如何来解决这个问题。针对cocos引擎我们专门做了一个cocos插件,这个插件大家可以运行在我们游戏内部,我们可以获取它的cocos常见的游戏对象,比如说NODE、SCENE、LAYER、SPRITE,还有SPRITOBATCHNODE、文本等等,我们会获取这些游戏的信息,比如大小、、文字、显示层级等,另外我们会为他生成一个唯一标识,生成脚本和运行脚本的时候我们就通过这些信息定位到一个游戏对象上,因为我可以实时拿到它的,就可以实时对它进行操作,而且这个是相当准确的,我们可以通过这种方式去判断我们脚本成功没有,比如点击下一步登录,下一步到我的主界面,这是可以判断出来的;另外我们还支持支持XPath,相同的按纽,可能别人分辨不出来这两个按纽有什么区别,我们可以根据界面布局的径,XPath可以针对两个不同的按钮做区分。

  下面我们看一下,我们刚刚讲这些,我们的游戏想做自动化测试我们需要怎么做?其实很简单,我们有一个开源下载地址,我们把我们的代码放到了github上,大家下载之后只需要添加一个静态库支持,然后在我们的代码中再添加一行代码,我们游戏内部就对Testin这个支持已经添加完了,下一步就可以编译,就可以完成我们的游戏包了。

  有了游戏包之后怎么做测试?首先我们最近新发布了一个我们新版的工具,在我们工具里面,只要你的手机插到我们电脑里就可以对游戏对象进行识别,对它进行一些操作,包括它的一些点击,一些滑屏和一些输入等等,同时我们还提供支持脚本,有些自己去改脚本,我们同时提供。编辑完了之后我们还可以对脚本进行回放,如果看见脚本没有问题,我们就可以在平台测试,我们可以选的终端已经超过一千款,大家可以同时在一千款终端上去跑。

  还有一块刚刚没有讲,就是帐号密码的问题。很多帐号并不能在多个手机同时登陆,刚刚提到我们支持在数千款终端上同时支持这个游戏脚本,我们是怎么做到的?我们在我们的脚本里面提供一个占位符,我们是一个特殊的文本,分别是帐号和密码,大家在提交平台的时候,可以提供一个帐号密码的文件列表,比如要在一千台手机上跑脚本,你可以提供一千个帐号密码给我,我会在不同的手机上用不同的帐号密码登陆去运行。这是我们一个实际运行的截图,做一下适配,会把每一部的截图,当然那个截图是我们刚才的时候去做的,会把一些截图、日志和性能数据都会截取下来,提交完了之后就可以在网上看报道了。另外一个我们cocos下载软件是开源的,大家只要是按照我们那个协议出现的话,就可以直接完成刚刚我提的功能.

  另外cocos的开发语言有C++,有Lua还有Javascript,这些我们全部支持;另外现在支持cocos的各个版本,包括cocos2d-x的版本,2.x和3.x系列,还有cocos2d-js版本,我们都支持,很快我们也会支持cocos3d-x。

  自动化测试就是我刚刚提到的,我们测试完成之后是不是就没有问题了呢?远远不是。我们发布之后,在应用商店也好,论坛也好,很多人说这个游戏玩不了,老是闪退。玩的时候才会闪退,有少数玩家会提供反馈,有的是有这种闪退之后直接就不玩了。即使是用户反馈,他也不知道怎么解决,我们有一个崩溃分析的工具,你在游戏发布的时候,把我们的SDK打到我们的测试里面去,前提就OK了,准备发布了,把我们的NDK打进去,只要是用户玩游戏的时候发生了崩溃,发生了异常,都会传到我们的平台上来,我们看每个用户根据这些信息去查找这些信息,我们在下个版本就会改掉,支持游戏运行越来越好。我们支持应用层代码崩溃捕获,支持Cocos2D引擎崩溃捕获,支持NDK类崩溃捕获,支持IOS和版本。这个图是我们在Cocos引擎代码里面出的崩溃。

  我们通过代码来发现崩溃原因,每个游戏发现异常崩溃的时候,我们会把每个代码信息打印出来,包括脚本,他在做什么都可以把它的脚本打印出来,除了对战之外,还有手机上其他的信息,终端CPU,还有存储的情况,内存使用情况,系统日志各种信息我们都会把它一起打印上来,这样非常方便开发者来定位问题。

  这个图其实就是一个JAVA的崩溃信息,如果大家做开发,都明白我们做测试的时候经常会看到这些信息。但是我们还会发现另外一个问题,我们的应用和游戏在发布的时候一般都会做混淆,如果是NDK,包括cocos也是引擎报错的话,都是在SO里面报错,我们拿到的信息要不就是读不懂,开发者拿到的时候完全不知道这个是什么,老板拿到说这个信息崩溃了,开发者觉得这个对我完全没有帮助,我不知道。针对这个我们做了符号化的工作,一个非常难懂的信息,在做了符号化后,打印出来的堆栈信息里面,就能看到哪个代码,哪个函数的哪一行初错,我们就可以拿到非常精准的错误信息。

  对游戏崩溃信息来讲,我们游戏开发者说我知道它崩溃了,但我还想知道用户当时在干什么。我们针对这个会有自定义数据字段的分析,开发者会知道用户在做什么,我们对他的操作步骤,玩家场景,玩家ID,游戏场景、,我们都可以和开发者一起联合起来来分析。

  刚刚崩溃信息代码中的问题,使用起来还是很简单,只要三步,第一步添加三行代码,然后打包发布,然后连到我们的平台上就可以随时来看报告。

延伸内容:
关键词:源码评测
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

CopyRight 2002-2012 技术支持 源码吧 FXT All Rights Reserved

赞助合作: