项目各阶段适配策略
Android严重的碎片化提升了适配测试的难度,我们无法做到100%的适配测试,但可以按照不断完善的适配策略通过项目中各角色相互协同,一起努力将适配问题尽可能的减少,以便更好的提升用户体验。
项目过程可分成以下四个阶段:需求/交互/视觉阶段、开发阶段、测试阶段、发布阶段,每个阶段都需要各负责人对适配做出明确处理。
- 需求/交互/视觉阶段,需要需求方在PRD中做简要说明,需要交互设计师和视觉设计师在各自的交互稿和视觉稿中明确指出,哪些页面需要横竖屏适配,哪些页面需要手机和平板适配
- 开发阶段,需要开发同学对需要适配的需求点做好技术设计和编码,包括手机平板横竖屏、第三方组件新增和升级以及新Android SDK/API使用
- 测试阶段,需要测试分别通过白盒适配方式和机型适配方式进行有针对性的适配测试;白盒适配主要针对于开发过程中适配的代码进行测试。机型适配的基础需要一个适配的机器列表,机型列表总结好后,就可以通过手工适配、UI自动化、云测平台等多种手段进行适配测试
- 发布阶段,通过众测及时发现Beta阶段的适配问题,通过灰度及时处理真实用户遇到的适配问题
对于测试同学而言,需要在项目的各个阶段都关注适配问题,并给出合理的适配测试用例,并在项目过程中通过各种适配测试手段,尽可能多的发现适配问题,将线上的适配问题概率降低。
适配策略详解
手机横竖屏适配
从4.0版本开始,Android客户端开始适配平板和横竖屏,实现方式主要是是新增了平板以及横竖屏的layout文件,对于一个页面来说可能最多存在四种不同的layout样式:手机竖屏、手机横屏、平板竖屏和平板横屏,针对于不同layout可以采用白盒测试的方式做有针对性的适配测试:
- 通过代码梳理当前所有页面layout样式,梳理每个页面共支持多少种layout
- 通过视觉稿初步确认手机和平板适配的页面以制定适配测试方案
- 通过开发测试过程中res/layout下新增的不同layout文件来做有针对性的测试
第三方组件新增和升级适配
我们的APP中一般会依赖很多的第三方组件,主要是各种so文件和jar文件,这些so、jar中有些时候进行升级后,底层编译器对不同的OS或者ROM支持的情况不同,导致了APP出现Crash/ANR等异常情况:
- 对第三方依赖按照重要性进行梳理
- 针对每一个第三方组件梳理历史适配问题,整理第三方组件的适配方法
- 熟悉每次第三方组件升级的业务逻辑和升级原理,进行有针对性的适配方法,比如V4和V7包的差异,以及V7带来的新组件特性。对于底层更加复杂可测性不高的第三方组件,可以结合适配机型列表进行不同机型适配,可以采用手工和自动化的方式进行
新Android SDK/API适配
在开发过程中可能会出现引用最新版的Android SDK中新API来实现功能,而该API可能存在不兼容的情况引起适配问题,可以采取下面的方式进行保障:
- 梳理从应用最低适配的系统版本开始以后新增API的详细情况
- 借助Lint对每次项目版本中API使用情况进行扫描和统计,对新的API做针对性的适配测试
- 借助于infer等静态扫描工具,对Android代码进行静态扫描,提升代码质量
代表机型适配
Android的碎片化导致适配的手机设备花样繁多,主要通过手工或自动化的方式覆盖更多的机型来加以保证,大致可以按照下面的思路来开展工作:
- 线上Top机型代表设备
- 线上Top系统版本代表设备
- 不同SOC/ROM厂商代表设备
- 对平时工作中的问题机型进行梳理,并提交采购,纳入手工适配范围
自动化平台适配
通过UI自动化平台,对核心业务场景进行自动化覆盖,在做功能回归测试的同时也可以达到适配测试的目的,我们选了Top设备进行了UI自动化适配,发现了在不同机型上有些页面存在兼容性问题(例如:某个按钮在华为机型上不显示等)。
国内外云测平台适配
国内有很多测试平台提供云测的服务,包括百度MTC、阿里MQC、腾讯WeTest、Testin以及TestBird等。各大测试平台的移动应用兼容性测试服务所采用的方法其实大同小异,一般都包括在大批量真机上进行安装、启动、运行Monkey脚本(某些会带有智能算法)、卸载测试,但是从测试效果来看,其实差别还是蛮大的,对比下来我们是选用的阿里MQC,对于有国外适配需求的团队这里推荐两个平台:AppThwack和Testdroid。
众测和灰度发布
开发、测试同学进行适配测试,碍于Android的严重碎片化,手头设备是极其不完整,在未全量上线前,借助于真实用户手中自己的设备进行众测和灰度发布阶段的正式使用来提前暴露问题,只要合理利用,不失为一个发现适配问题的有效手段。 由于各公司采用的众测和灰度发布方式不尽相同在这里就不展开说了。
基于图像识别做适配
最近测试智能化的趋势和话题也非常热,一些团队看到了图像识别在适配测试中发挥作用的可能,于是他们基于图像识别技术去做了一套一系统来提升适配测试的效率。
关于模拟器
客户端测试的一个好处就是可以利用模拟器来代替真机进行一部分的测试工作,比如可以利用模拟器进行手动或自动化的方式来发现一些功能性Bug,但对于网络模拟、摄像头的调用、消息推送等功能就不建议用模拟器来测试了。
总结
适配测试对于移动应用来说是一个重要的环节,本文基于在开发、测试过程中积累的经验总结了一套可行的适配测试策略,并在实际工作中实施,当然其中肯定有考虑不全的地方,接下来还会继续深入白盒适配策略、机型适配策略以及借助自动化、图像识别技术等来更好的发现适配问题,也欢迎对此感兴趣的同学多交流!