随着移动设备和系统的碎片化程度越来越高以及复杂的移动网络情况,代码级测试和模拟测试已经无法满足移动开发者的需求,真机甚至真人的测试越来越被开发者们所重视,逐渐成为移动开发的标配。苹果和谷歌也纷纷推出自己的内测服务。苹果自收购TestFlight以来,将它深入集成到了Xcode和苹果开发者中心内。微软于去年年底收购了HockeyApp,Google则计划在这个夏天正式推出Cloud Test Lab服务。
不过,TestFlight等服务由于在国外,不可避免会出现速度慢,不够本地化等问题,再加上国内安卓市场的复杂情况,让它们对于国内开发者来说并不是最佳选择。在这种情形下,国内的移动测试服务趁势而起,下面就为大家盘点一下。
从功能上来划分,移动测试服务可以分为真机自动化测试,内测托管分发,众包测试,移动性能监测。
真机自动化测试
真机自动化测试服务利用一些自动测试框架如Robotium等,通过一个Hub连接多台真机同时进行应用的测试,在上面可以进行应用的适配、遍历、功能测试,以及根据脚本进行一些模拟操作,多用于Android应用的测试。这种模式能够帮助开发者定位一些应用在真实环境中的简单出错信息。但也有一些局限性,一是开发者发现应用在某型号设备上出错也难以进一步深入调查,他还需要向周围同事或朋友征集出错型号设备来进行真人测试;二是这种真机自动化测试只能运行一些简单的脚本,毕竟不是真人操作,可能无法测试出真实场景中的情况。
国内以该模式为代表的服务提供商有:
- Testin:面向iOS、Android平台的真机自动测试服务。公司启动较早,有数千台设备供测试。除了真机自动化测试,Testin现在还推出了众测、崩溃信息分析、短信平台等功能。
- 易测云:由东软集团开发的一个测试服务,2013年1月上线。官网上称有200+台设备供测试。它自行研发了一个Guerrilla测试框架,并且支持Robotium和Athrun测试框架编写的自动化测试包。
- 百度MTC:百度移动云测试中心,支持Robotium脚本,提供兼容测试、性能测试、遍历测试、安全漏洞扫描。另外它也提供一个众测功能。
- 腾讯bita:由腾讯推出的真机自动化测试服务,主要面向Android开发者。官方号称有1000+台设备供测试。能够进行测试应用的自动登录,并进行兼容测试、遍历测试、性能测试、功能测试、稳定性测试。
- 阿里MQC:全称为阿里移动质量中心,是阿里巴巴淘测试下的一个产品。支持Robotium框架编写的脚本对应用进行测试。它一个比较有特色的地方是支持HTML5的真机测试,开发者可提交一个URL,以检测页面在不同设备的上的渲染和性能问题。
另外还有电信运营商提供的真机测试服务,如中国电信推出的TA云测试、中国移动推出的终端池,它们进入这一领域非常早,不过由于这些业务难以为运营商直接带来利润,现在已基本被放弃。
内测托管分发
真机自动化测试毕竟不是真人使用,难以深入到真实使用场景,后来的测试服务开始专注于将应用分发给少量用户或测试人员进行测试。
内测托管分发模式以TestFlight为代表,iOS应用的测试多用这种模式。平台为处于内测阶段的应用提供托管服务,并产出用于分发的URL,开发者需要自己寻找内测人员,并将下载链接发送给他们。这种模式下开发者能对测试结果得到较大程度的掌控,开发者可以和内测人员直接联系,能够对一些特殊案例进行有针对性的调查。不过,这种模式操作起来稍微繁琐,如果是iOS应用的话需要制作特殊的内测版本,获取内测设备的UDID并制作证书,并且有100人的人数限制(TestFlight作为苹果官方服务限制为1000人)。
国内提供该模式的服务商有以下几家:
- fir.im:面向iOS、Android平台的内测托管和分发服务。它们还提供崩溃信息收集BugHD、邀请码管理inCode等服务。另外它们提供了开放API,这意味着开发者可以方便的将fir.im集成到自己的开发流程中。它们比较有特色的地方是很重视工具类的研发,提供了CLI、Log Guru、网速测试等工具。前不久fir.im刚刚庆祝了Melaka版本上线一周年,并发布了Rio新版,在产品与架构方面进行了大量优化,开放更多的API接口,并提供Android Studio插件,方便Android开发者上传应用。创始人王猛为资深iOS开发者,根据自己在开发移动应用的过程中的感到的不便从而推出此项服务。
- 蒲公英:面向iOS、Android平台的内测托管和分发服务。同样提供开放API。它还提供移动端SDK用于应用内测数据收集分析、版本更新提示、数据分析统计、应用内提交用户反馈等。另外它还提供用于管理的桌面客户端。 蒲公英与2014年7月上线,目前总部在西安。创始人为石瑞,创立公司的想法和王猛类似,团队目前有10余人,来自腾讯、微软、ThoughtWorks等知名互联网公司。
其它国内做这种模式的还有内测宝,从去年到现在一直处于邀请注册中,貌似已经不再活跃了。
众包测试/众测
内测托管分发的模式还需要自己寻找内测人员,对于一些开发者来说不是很方便,于是服务商自己提供测试人员的众包测试模式应运而生。
这种模式也是国外先兴起,如uTest号称有17万测试人员。这种模式的一般流程为,开发者向服务提供商上传应用,并且选择测试用户的规模、机型/系统、地理分布,服务提供商则向对应的测试人员发放任务,测试人员接到任务,测试完应用后可获得一定分成。这种模式已经基本满足真实测试的需求,不过也有一些缺点,开发者无法与测试人员接触,出现问题仍然需要寻找对应机型进一步收集信息,另外测试人员只是为完成任务,并非目标用户,可能无法对功能进行深入测试。另外这种模式一般是收费的。
国内提供这类模式的服务商除了上面提到的Testin和百度MTC之外,还有:
- 我测测:我测测是班墨云推出的众包测试平台,它以众包的模式为APP开发者提供兼容性测试,功能测试,性能测试等服务。
移动应用性能监测
以上三种模式是大家都比较认可的测试服务模式,但实际上,新兴的应用性能管理(APM)也有机会在这个领域分一杯羹。
移动应用性能监测(移动APM)是应用性能管理的一部分,它通过在App中嵌入SDK的方式来收集应用的运行信息,包括各种性能指标、崩溃信息等。显然移动APM可以应用在移动App的整个生命周期,而不仅仅是内测阶段。如果控制应用只分发给内测人员,那么它可以完成和一些内测托管服务类似的功能。我们可以看到上面有些服务商如蒲公英已经提供了SDK,说明将移动APM用于测试是可行的。
国内提供移动APM的服务商如下:
- 腾讯Bugly:Bugly原本是腾讯内部使用的一个产品,现在开放出来。它提供对iOS和Android应用崩溃信息的收集和分析,专注于应用的Crash,可以说是移动APM里最偏测试的一个,但它不是只能用在测试阶段。
- Mobile Insight:这是OneAPM下面的移动领域的产品,注重真实用户使用感受监控,提供Crash分析、InteractionTrace、网络问题分析、外部调用监控能力。
- 听云App:这是听云旗下的一款移动APM产品,其对网络性能的监控能力较为突出。
- 睿动:这是博睿Boree旗下的移动APM产品,提供移动WAP监测、性能监测、适配监测和SDK监测。
随着测试在移动开发中的地位越来越重要,第三方的测试服务也将成为移动开发标配。不过,这不意味着开发者不需要测试,开发者仍然需要在本地进行一些测试,如UI自动化测试和Mock测试。7月11日由TesterHome主办的移动测试技术大会将在北京举行,届时知名开源自动化测试框架Appium主要开发者JLipps也会前来分享测试经验,欢迎感兴趣的开发者报名参会。