如何解决移动 App 上架前的最后一公里?

阅读数:1204 2015 年 12 月 14 日

话题:语言 & 开发架构AI

和传统的人工测试相比,自动化测试具备包括节省时间和人力成本,提高效率,增加应用场景分析等等在内的优势。所以说,目前很多初创团队想要组建自己的专业测试团队应该不是明智的选择,在大的趋势下,众多移动 App 云测试平台拔地而起,在很大程度上已经能够帮助 App 开发团队解决测试上的瓶颈。百度移动云测试中心(MTC)不仅提供“自动化 + 人工 + 问卷调查”的测试组合拳之外,还有专业的人工测试专家团队帮助开发者解决移动测试上的难题。

12 月 12 日,在由百度开发者中心主办、InfoQ 协办的以“移动应用云测试,让你的 App 高深可测”为主题的百度技术沙龙活动中,来自百度开发者中心的移动测试专家就分享了百度在移动应用云测试的相关成果和进展,以及能为当下移动应用开发热潮做哪些实质性的推进。演讲嘉宾分别是百度众测和 MTC 团队产品负责人施佳樑、百度平台测试部高级项目经理顾昕彪,以及 MSG 手机百度平台化测试部测试架构师辛建康。

移动测试行业现状及解决方案

当前行业里移动 App 的开发门槛越来越低,App 的种类和质量很难成正比。那么如何定义一款好的 App 呢?施佳樑说,当然是要具备用户体验高、有逼格、没有 Bug、稳定性和兼容性都很高、用户量大、能赚钱等等特性才好呢。但是说起来简单做起来难,整个成型过程离不开长期积累下来的“流程、工具和标准”的固定模式,而这些东西能够帮助开发者以比较低的成本、较高的效率开发一款满意的 APP。

其次施佳墚还提到了,测试最终就是成本、效率和风险的权衡。目前移动 App 测试可以分为开发自测、专业 QA 测试、众包用户测试和真机自动化测试这几个类型。当然,这几种测试方式各有利弊,既有不同类型组合完成的,也有直接外包出去的测试方式。根据公司大小以及资金多少来确定使用哪一种测试方式。

最后一点施老师提到的关于监控,App 开发完、测试完发布以后,这个事情远远没有结束,更多的是要关注用户在使用产品当中到底能否正常使用,APP 在使用中的性能怎样,这些都是应用性能管理(APM)需要涉及的指标。

App 质量漫谈:“人工 + 自动 + 问卷”组合拳

来自百度平台测试部高级项目经理顾昕彪首先跟大家分享了移动应用市场迅猛发展的现状:移动应用占比上升,移动数据流量接近 60%;4G 用户成倍增长,4G 网络渗透率超过 20%;Android 平台优势明显,智能设备普及率上升等等。这些数据完全表明一个 App 的质量直接影响其口碑、宣传效果和发展,而兼容性、性能表现和崩溃率更是 App 质量的直观体现。一些数据也从侧面反映出测试团队的窘境:缺设备、缺技术、缺人。在设备、管理等硬件条件跟不上的情况下,光靠小团队自身的测试能力建设很难满足 App 快速迭代的需要。

这个时候的一些小团队就需要考虑使用云服务,来解决测试方面的难题。百度 MTC 拥有自己的质量积累,通过测试以及数据上的移动应用质量标准,通过不同的维度对外部 APP 进行自动化测试。MTC 的杀手锏“自动化+人工测+问卷调查”所具备的优势包括支持 Android 和 iOS,覆盖 10000+ 主流终端机型,1000+ 测试专员,能够为百度 140 多条移动应用产品线提供长期稳定的测试服务。同时顾昕彪也提到,App 质量本身分为 VE(验证)和 VA(确认)两个方面,仅仅靠自动化测试只能提高部分测试的效率,并不能完全替代人在测试里的作用。很多 App 虽然功能正确,但并未真正满足用户的需求,导致他们的发展受到了阻碍。为此,百度 MTC 专门提供了人工测试和问卷调研服务,通过用户的真实反馈为开发者提供有效的判断依据。

移动插件系统的质量保证

随着移动互联网一步步向各个传统行业渗透,移动化互联网的产业需求正前所未有的侵袭而来。由于业务线的融合,来自企业内部和外部的业务接入,如何快速有效的集成接入,内外部开发人员一致的协同开发,实现这一系列点需求的同时,又能对主 APP 安全保证,质量把控,这就需要移动平台插件化开发模式来解决这一问题。

辛建康也介绍了插件系统目前遇到的质量挑战:宿主兼容性(类冲突、崩溃 handler 注册、公共 SDK 使用冲突)、性能 & 兼容性(稳定性问题、多进程、OS 兼容性)和业务效率(对接插件方多,测试能力参次不齐;插件化模块 Bug 多,稳定性问题频出…)。面对这些质量挑战,解决方案肯定是有的,通过云监控收集,利用线上强大的分布式参数系统存储大量用户日志,将已配好的 code 在某一时间把日志抠出来就完成整个动态模块或者插件的下发。通过 MTC 这种非常强大的动态线下测试,可以保证用户基本功能在线下测试阶段是 OK 的。

有参会者提问说,如果宿主和插件在同一个进程内,插件异常怎么才能不影响宿主?辛建康回答说,插件本身性能问题不大,关键是为什么插件可以承担宿主做不到的事情。因为很多技术手段不能放在宿主里,放在宿主里可能有性能问题、稳定性问题就会造成大面积的问题。但是插件系统下,最大的问题是在于使用不当导致崩溃,可性能比较好,崩溃的时候里面有一套自我恢复系统,当发现有崩溃或者很多监控报警时,跟异常相关的监控会直接推动对应插件回滚,退化到 H5,所以安全稳定性上是没有问题的,同时尽可能的保证用户体验。

写在最后

像谷歌、苹果、微软等一些大的互联网公司都是非常重视移动应用测试的,百度在这一方面的投入相对也是巨大的,正如前面所提到的,MTC主要是针对包括人工、自动化、性能、监控的广义测试为开发者开发 App 必须的工具,这也是为了更好迎合市场的需求。在最后的圆桌论坛上,有参会者问到由于手机系统和网络状况的不同,如何减少对测试结果的影响程度?顾昕彪回答说,MTC 很早以前就已经开始关注并着力解决这样的问题,在产品诞生之前每个移动端产品都有可能会面临这种问题,主要归咎于手机型号和网络强度等原因。MTC 平台则会做一些在信号很差、电量低之类条件下的模拟测试,为 App 打造最专业的测试流程,对于初创团队来说是一件事半功倍的好事。