转载

专访Testin云测CTO徐琨:完善移动App的诞生记

专访Testin云测CTO徐琨:完善移动App的诞生记

徐琨,Testin云测CTO。国内最早移动互联网公司PICA创始员工,曾任PICA副总裁;领先的HTML5游戏开发公司山水地信息创始人。作为千万人在线的即时通信系统架构师,领导开发了过千万用户的移动社交平台。

云测,传统App测试的革新

CSDN:请先介绍一下自己和目前所做的工作

徐琨: 我们做的是一个服务与App质量的云测试平台,简单来说,由于手机型号,操作系统的分裂,带来了很多适配问题,同时也带来各种各样意想不到的崩溃和闪退。而开发者不可能把市面上所有手机都买来,就算能买那么多手机也没有那么多人力来测试。所以我们就想,是不是可以做一个云端的测试服务,来替所有开发者购买所有的手机,来提供尽可能多的测试能力,开发者只需要将App提交到我们的平台,24小时内,就能得到一个全方位多维度的测试报告,帮助开发者发现其App存在的各种适配兼容问题、各种崩溃和闪退的问题定位。我们正在为这个目标努力,最终我们希望能建立这样一种云服务平台,服务所有的开发者,让开发者专心于他的核心业务的开发上,而测试这个事情,放心地交给我们就好了。

CSDN:你是怎么看待移动App进行云测试的,相比较传统开发者测试App的方式,两种测试方式之间有什么相同和不同之处?

徐琨: 传统开发者测试App的方式,通常是自己购买手机,自己雇用测试人员,或者自己的开发兼产品测试,在有限的手机型号中进行时间非常有限的测试,由于移动互联网时代项目迭代快,导致测试的时间短、任务重,所以经常出现的状况就是,只要功能基本没有问题,就算知道可能有bug,也会直就发布了。

而云测试具备一些传统测试无法比拟的特性:

  • 完美解决移动终端碎片化问题。不需要开发者再去购买测试设备,云测试往往会进行周期性的测试设备补充和更新,节省了传统测试中购买、部署测试终端的费用。
  • 传统测试时,公司往往需要投入大量人力,通宵写测试用例 。而云测,开发者甚至不需要自己写脚本,我们会用自动化的脚本录制工具,根据开发者要求的测试流程来录制脚本,节省了人力成本,缩短了测试时间。
  • 通过云测试服务平台,开发者可以在全球任何地点、任何时间提交测试任务到云测试平台,不受时间和地域的限制。另外Testin提供的是真机测试服务,而真机是稀缺资源,每部终端同时只能测试一款应用,我们也会有一整套机制来对终端和测试任务进行自动调度,以满足广大开发者对于真机的测试需求,最大限度的提高资源利用率和测试效率。 
  • 云测试平台都会使用大量的自动化测试技术, 控制不同系统、不同版本、不同型号的终端,使其可以自动执行测试任务,而不需要人工干预。这样可以做到同时在成百上千部真实终端上同时自动运行测试脚本,极大的节省了测试时间,免去了测试者重复枯燥的劳作。 

CSDN:目前市场上移动App测试有很多,如百度移动云测试中心等,Testin云测在这一领域有哪些核心竞争力呢?

徐琨: 现在提供自动化测试服务的企业,Testin云测是进入最早也是规模最大的一家,由于进入较早,积累了大量的自动化测试经验,也根据开发者的测试需求,提供了一系列的解决方案:

  • 针对应用兼容性问题,提供了标准兼容测试;
  • 针对不同应用的自定义测试流程,提供了深度兼容测试;
  • 针对iOS市场的火爆,推出的iOS测试,也是目前市场上唯一提供iOS测试的企业;
  • 而应用发布后的仍然存在的影响用户使用的问题,我们提供了全球最专业的崩溃分析服务;
  • 针对开发者需要了解真实用户体验的需求,推出的用户体验测试;
  • 针对进军海外的应用,部署的海外测试专区。
  • 最后,Testin云测是世界上手机保有量最大的云测试平台。

同时云测也是一个开发者之间交流和学习的平台,大家可以互相切磋,共同进步。

CSDN:我们都知道手机型号与屏幕尺寸过多,App适配与测试的工作量相当大,而且需要投入大量的人力和财力。那么Tsetin云测是通过哪些技术解决这些问题的呢?

徐琨: 云测累计为开发者提供了超过7000万次测试,在大量的测试过程中,我们针对App适配的自动化测试的不同问题摸索出一套解决办法。

  • 针对应用测试 ,云测使用控件识别方式,自动识别和查找到应用中的控件,用于生成测试脚本和在不同的终端上运行脚本。这种方式最大的好处就是可以做到完全支持不同分辨率和屏幕尺寸的终端,确保脚本的通用性;同时可以对测试结果进行判定。使用到的具体技术,包括Android JUNIT、Robotium, UIAutomator等等。
  • 针对游戏测试, 像大部分手游这种非控件的,依赖绘图的界面,可以采用坐标来记录位置,而为了解决不同终端不同分辨率的适配问题,云测有一套自己的脚本录制工具(itestin),能够去适配不同屏幕的比例,适应不同分辨率上的操作。不仅如此,云测也根据游戏引擎开发了测试插件,例如我们针对cocos2d-x引擎开发了cocos2d-x插件,能够获取游戏对象信息,比如大小、位置、文字、ID、显示层级等,通过这种方法,做到类似应用获取控件信息的效果,实现了手游的完美自动化测试。 

以上这些都不需要开发者自己来做,云测会帮助开发者完成脚本录制、应用提交,甚至测试完成后的错误定位分析。

CSDN:Android作为应用的一个巨大平台,基于Android的手机品牌众多、系统版本众多等等,简单的来说就是碎片化严重,那么Testin云测在测试过程中又涉及到什么样的技术可以与我们分享下?

徐琨: 目前安卓市场所有的品牌、型号和系统版本在云测几乎都能找到,覆盖了市场上80%的终端,其中主流终端全部覆盖,Testin云测在测试终端上投入比较多,为的就是解决安卓终端碎片化严重的问题。

在云测平台的一台测试终端可以为多个开发者、多款App提供服务,我们对终端的测试环境做了统一处理,包括终端之间网络屏蔽,保障每台终端有独立的网络覆盖,以及终端执行任务时的整体调度优化,保障这些终端可以最高效的完成众多开发者的测试任务。

我们是通过几个层面来 解决在自动化测试过程中遇到的碎片化问题:

  • 一是通过研究不同的Android版本底层和系统API,针对不同的版本制定不同的技术方案,比如说对4.1以上版本的终端,我们使用UIAutomator编写了一个自动化执行的脚本,增加了终端的可维护性;
  • 二是通过和终端厂商的合作,获取一些厂商内部的接口;
  • 三是通过和芯片厂商的合作,针对不同的芯片方案,采用不同的API来获取底层数据;
  • 四是针对特殊终端制定特殊的策略,因为我们有很多的真实终端,这点我们是可以做到的。

CSDN:App可以分为应用App和游戏App,对于这两块的测试是否会有不同的侧重点?具体是什么呢?用户对于应用App和游戏App的使用习惯也是不同的,可以谈一下对于应用开发者与手游开发者在进行开发过程中的建议?

徐琨: 应用App的测试相对来说对于广度要求更高,应用App很多时候对于手机本身能力的调用做了很多,比如GPS、照相机、本地文件等等。同时应用App对于互动的要求很高,通常需要很复杂的场景才能完成测试。建议应用开发者对一些功能模块,尤其是需要调用手机能力较多的功能,如拍照等,经常做兼容性测试,这样首先确保这些功能模块本身在不同设备上是可用的,在最后集成测试时也会少很多兼容性的问题。

而游戏App的测试更偏重功能和可玩性,对于测试的深度要求较高,很多功能需要特定条件才能触发,比如有些功能只有高等级用户才能使用。目前大部分多手游开发都使用了比较成熟的游戏引擎开发,兼容性问题其实比应用要少一些。我们建议手游开发者可以在条件成熟的时候(比如公测阶段)多安排一些体验测试。

而使用习惯方面应用的操作多基于独立的点击,游戏的前后操作之间连贯性较强,在测试过程中,对脚本的要求也会比较高。

测试,只为更好的绽放

CSDN:面对现在很多App的粗制滥造、同质化严重(如这两年的卡牌游戏)等等,优质的App变得屈指可数。对此你是怎么看的?App又该如何做到优质、突破呢?

徐琨: 现在的App获取用户的成本越来越高,而用户的口味也变得越来越高,以前是给什么用户就用什么,现在是用户挑着用,我们可以看到目前用户量最大的应用多是上线好几年的应用,新的App如果不能有自己的特点,并且有足够的质量,很难再冒头。只从测试的角度出发,我们发现手机适配率越高的,崩溃率越低的App,往往用户量也越大,所以我们的建议是,如果想在现在的市场上有所突破,需要尽可能把功能做少做精,尽可能做最少的功能点,要么没有这个功能,一旦做就做到最好。

CSDN:崩溃、闪退等异常问题可以说是App的致命之处,而对于手游开发者来说,游戏整体性能必须得到保障。游戏性能才是最终用户体验的基础,据了解,Testin最近推出了崩溃大师,那么其与传统的APM应用性能分析有什么不同之处?又是通过哪些技术检测游戏本身的性能病症呢?

徐琨: 软件质量是个大的话题,产品的体验、可靠性、安全性、性能都属于这个范畴。对于App而言,崩溃是最严重的质量问题。Testin就从这个出发点去帮助开发者提高App质量,这点和传统的APM是最大的区别。

对于移动应用和游戏,Testin崩溃大师通过不同的技术手段来解决它们出现的崩溃。当用户在使用产品发生崩溃时,Testin崩溃大师SDK会捕获到崩溃的堆栈线程、App版本、错误页面、CPU、内存使用情况、设备名字、操作系统、运行Log等,开发者则可以通过这些数据来分析错误发生原因。对于游戏引擎,无非是引擎层错误(一般C++代码导致),还有脚本层错误。崩溃大师可以抓到不同语言,如Java、Objective-C、C++、C#、Js、Lua等语言发生的异常。

CSDN:从您的角度来看,游戏开发者在进行用户体验分析的时候都需要考虑到哪些维度?Testin云测和崩溃大师在这一块是否会给出具体的建议呢?同时,Testin云测和崩溃大师在进行分析的时候不可避免的会收集用户数据,那么用户数据的安全性会不会受到威胁呢?

徐琨: 真机测试是在Testin提供的测试机上运行的,测试机每天要跑上百个App测试,在每次测试之前都会做数据清理,还原成手机原始的测试环境。而测试结果与错误定位只会由终端输出后报给最终查看测试报告的人。

做一款好玩的游戏,先决条件是一款“可玩”的游戏。如果您的游戏经常崩溃,那无论如何用户也不会买账。所以我们认为:无论从软件质量或产品用户体验角度来说,崩溃是头等问题。在QA的术语中,崩溃就是致命级别的Bug。

Testin崩溃大师只会上报能够帮助开发者定位和解决问题的数据,一切和崩溃信息无关的数据,我们的SDK都不会触碰。这一点开发者也可以通过实地抓包来进行验证,我们欢迎任何形式的举证。

移动App和云测的未来

CSDN:现下物联网是一大热门,它会成为移动App的另一大战场,您是如何看带物联网的发展,是否会带来新一轮的技术革新?

徐琨: 物联网其实是移动互联网的一个延伸,就像手机加上联网功能,延展了我们人类的能力,物联网是互联网将载体拓展到除手机外更广阔的天地里,我相信这会是一个更大的革命,10年前没有人会想到今天我们每个人会对着一块玻璃消耗掉数以万亿小时,而未来,互联网将会无处不在,今天我们所有的想象,都会证明其实我们还是太保守。

CSDN:可穿戴、车载、智能家具……都已经或者将要出现在我们身边,移动App也将在这些领域现身,所以在最后为我们畅想一下移动App和Testin云测的未来。

徐琨: 无论科技如何发展,最终都会需要一个载体去承载服务,在PC时代,我们用的是software,在互联网时代,我们用的是Web,在移动互联网时代,我们用的是App,而无论是software,还是Web,或者是App,保证其可用是其存在的基本的条件,也就是我们通常所说的测试服务,而这正是Testin云测一直在努力提供的服务,所以我们相信,未来互联网的载体也许不再是App了,但测试服务的需求和市场会更加广大。

正文到此结束
Loading...