📋 个人简介
- 作者简介:大家好,我是凝小飞,软件测试领域作者
- 支持我:点赞👍+收藏⭐️+留言📝
一.背景介绍
Android严重的碎片化,主要体现在品牌碎片化、设备碎片化、系统碎片化、分辨率碎片化等多方面,究其原因,由于Android系统的开放性,任何用户、开发者、OEM厂商、运营商都可以对Android进行定制,修改成他们想要的样子,导致了当今碎片化的严重性。
二.Android和ios碎片化
2.1 手机品牌的碎片化
国内外手机品牌有100多个品牌
2.2 设备碎片化
而同一品牌,各类软硬件的组成构成了不同型号设备复杂的碎片化。
2.3 系统版本的碎片化:
从2008年9月发布的Android第1版到2015年最新6.0版本,以及各大版本过程中发布的小版本和bug fix版本,目前都有不同的手机厂商在使用,或进行Android深度定制,或形成自己的ROM,这些无疑更加剧了Android操作系统严重的碎片化
三.适配问题经验
根据项目中也遇到过一些适配问题,大体分成四大类,每类问题和原因罗列如下,供大家参考。
3.1 手机平板横竖屏适配
3.2 APP的组件新增和升级适配
3.3 新Android SDK/API适配
3.4 不同机型适配(TOP/问题机型/分辨率/操作系统/)
四、项目各阶段总体适配策略
毫无疑问,Android严重的碎片化提升了适配测试的难度,我们无法做到100%的适配测试,但可以按照不断完善的适配策略通过项目中各角色相互协同,一起努力将适配问题尽可能的减少,以便更好的提升用户体验。下图说明项目中适配测试总体策略。
项目过程可分成以下四个阶段:需求/交互/视觉阶段、开发阶段、测试阶段、发布阶段,每个阶段都需要各负责人对适配做出明确处理。
4.1需求/交互/视觉阶段
需要需求方在BRD中做简要说明,需要交互设计师和视觉设计师在各自的交互稿和视觉稿中明确指出,哪些页面需要横竖屏适配,哪些页面需要手机和平板适配,手机和平板各自适配的样式怎样调整;
4.2开发阶段
需要开发同学对需要适配的需求点做好技术设计和coding,包括手机平板横竖屏、第三方组件新增和升级以及新Android SDK/API使用;
4.3测试阶段
需要测试分别通过白盒适配方式和机型适配方式进行有针对性的适配测试;白盒适配主要针对于开发过程中适配的代码进行测试。机型适配的基础需要一个适配的机器列表,这个机器列表按照经验通过四部分组成,包括TOP机型、OS机型、SOC/ROM机型。机型列表总结好后,就可以通过手工适配、云测平台等多种手段进行适配测试。
在每个迭代的某个时间节点,严格遵守必测的机型新功能的适配测试和核心功能的回归测试,必要时引入自动化脚本回归覆盖和引用monkey测试。
4.4发布阶段
通过众测及时发现Beta阶段的适配问题,通过灰度及时处理真实用户遇到的适配问题。
对于测试同学而言,需要在项目的各个阶段都关注适配问题,并给出合理的适配测试用例,并在项目过程中通过各种适配测试手段,尽可能多的发现适配问题,尽可能将适配问题出现的概率降低,实际测试根据设备的有限性尽可能覆盖。
五、Android和iosNative(api和sdk)适配策略详解
5.1. 白盒适配方式之手机横竖屏适配
对于一个APP的页面来说最多存在四种不同的layout样式:小屏幕横屏、小屏幕竖屏、大屏幕横屏和大屏幕竖屏。小屏幕和大屏幕主要通过调用Android底层API进行区分。细分的话会存在以下几种不同的情况:
大多数页面小屏幕横屏和大屏幕横屏一样;
大多数页面小屏幕竖屏和大屏幕竖屏一样;
部分页面存在小屏幕横屏和大屏幕横屏不一样的情况,比如平板的横屏通过左右分屏展示,而手机的横屏仅仅是竖屏样式的适配,即手机横屏的左右结构不会变化。
适配策略
代码中通过Globals.java来实现,通过自定义的四种屏幕模式进行类型的判断,
再针对于不同的ScreenType选择对应的layout进行页面加载,
所以,新需求若有横竖屏修改,通过视觉稿初步判断屏幕横竖屏适配的页面来制定适配测试方案。测试过程中,可以查看开发提交的代码,对存在多套layout的页面做有针对性的适配测试。
5.2白盒适配方式之新Android SDK/API适配
当前在开发过程中可能存在一种情况,比如引用最新版的Android SDK中的API来实现功能,但该API在老版的SDK上可能存在不兼容的情况,导致适配问题。
根据当前APP只适配0及以上操作系统的现状,结合当前操作系统top占比情况,梳理从4.0操作系统(SDK 14版本)开始新增API的详细情况,项目中若有新API的调用,需要针对该API的特性进行适配测试。下图即是各版本新增API情况,项目中一旦有调用就要引起注意。
系统版本
系统版本 | 小版本 | 新增API |
4.0.x(api14) | 4.0.3 | ae已不用支持2.3 |
4.1.x(api16) | 4.1.1 | android.annotation |
4.2.x(api17) | 4.2 | android.hardware.display |
4.3.x (18) | 4.3 | android.service.notification |
4.4.x(19) | 4.4 | android.graphics.pdf |
5.0.x(21) | 5.0 | android.app.job |
5.1.x(22) | 5.1 | android.service.carrier |
6.0.x(23) | 6.0 | android.app.assist |
借助于静态扫描工具Lint/Infer对每次项目版本中API使用情况进行扫描和统计。
六、模拟器使用策略
客户端适配测试的一个特点就是可以使用模拟器替代真机进行部分测试工作,比如模拟器可以很好的发现功能性的bug,也可以执行UI/Monkey自动化测试发现一些问题,以下是模拟器建议使用的方式,供参考。