目录
一、一些概念
① CTS测试
以自动化测试为基础,测试Android系统的兼容性;
② CTS Verify
一个手工测试的apk,完成自动化测试无法完成的操作(锁屏、蓝牙、摄像头等);
③ GTS
手机出口到国外,并且通过运营商出售,就i必须通过GTS测试;
④ GMS认证周期
手机通过CTS测试、CTS Verify以及GTS测试之后,就可以拿到GMS认证。但是GMS认证周期较长,一般需要3个月至半年。
⑤ MADA协议
全称Mobile Application Distribution Agreement(移动应用软件分发协议)。是谷歌和Android厂商之间签署的一个协议,根据该协议,手机厂商在推出采用Android设备前,必须预装所有Google应用,并且,要把Google Search、Google Play放在手机首屏,并以Google Search作为默认的搜索引擎。
二、GMS认证
2.1 认证背景
手机没有GMS认证,那么对于手机出口商而言,就没有了生产的产品走不了运营商通道,所以在欧美等由运营商主导的手机市场,GMS认证是十分必要的。但是没有GMS认证,Google也不会做限制,只是进不了运营商市场,第三世界市场,出于成本考虑(GMS认证需要收费),也就没装GMS认证。
2.2 GMS认证目的
- 提高产品android系统的兼容性和稳定性
- 授权Google的手机APP和服务
- 授权使用Android LOGO
- 产品可以进入欧美市场
2.3 GMS认证要求
- 必须申请与Google签署MADA协议(网站操作)
- 产品必须使用7.0以上的安卓版本
- 产品必须依次通过CTS测试、CTS Verify测试以及GTS测试
- 产品还可以通过CE、FCC、BT以及WIFI等硬件认证(这一部分不是GMS认证的硬性指标)
2.4 GMS认证流程
- 申请谷歌MADA协议
- 产品做硬件测试
- 提交测试报告给谷歌审核
- 获得谷歌认证授权
2.5 MADA协议申请流程
st=>start: 开始:https://www.android.com/certified/partners/
op1=>operation: 填写公司基本信息
op2=>operation: 向谷歌发起MADA请求
cond=>condition: 谷歌评估审核
e=>end: 结束
st->op1->op2->cond
cond(yes)->e
cond(no)->op1
三、CTS测试
3.1 CTS测试介绍
CTS测试全称为系列兼容测试(Compatibility Test suite),CTS是为了测试手机是否符合google定义的兼容性规范(Compatibility Definition)。从而基于Android的应用程序能在基于同一个api版本的设备上面运行。通过CTS测试的设备可以获得Android的商标,并且享受Android Market的权限。
CTS测试是一个基于uiautomator安卓原生自动化框架运行的自动化测试。通过CTS测试,保证系统的安全性和稳定性。
3.2 CTS测试的目的
由于Google系统的开源性,很多手机厂商基于安卓系统做出了深度优化,从而造成了安卓移动终端的碎片化,导致android终端的兼容性差的问题,严重影响用户体验。手机通过CTS测试,是市场得到了一个通过的规范:
- 让App提供更好的用户体验,用户可以选择更多的适合自己设备的app
- 让开发者设计更高质量的app
- 通过CTS的设备可以运行Android market
- CTS是免费的,很简单
3.3 CTS测试运行原理
在pc端安装CTS测试套件,安装完成后,就可以通过连接到pc端的数据线将测试用户发送至手机上,完成测试用例的执行,并且把执行结果返回给PC端。CTS测试套件下载连接如下:https://source.android.com/compatibility/cts/downloads
需要下载文件有:对应手机系统、架构的的测试套件以及CTS Verify、Android Compatibility Defination Document(CDD)、Compatibility Test Suite(CTS) User Manual、CTS Media1.1(音视频资料)
3.4 CTS测试套件目录文档结构
CTS目录结构
-- docs
-- logs 运行cs产生的log文件
-- plans 运行计划
-- results 测试结果
-- testcases 测试用例配置
-- respository
-- resource 资源文件
-- tools 运行工具
3.5 CTS测试环境准备
3.5.1 测试环境
① windows
windows环境,需要自己重写脚本
- 电脑端配置JDK/SDK的环境
- 将解压后的测试套件(文件名android-cts)拷贝至adt目录下的sdk目录
② Linux(推荐64位UBUNTU 10.04)
一般来说,linux上运行较为稳定,所以手机厂商都是在linux端跑cts测试
- 电脑端配置JDK/SDK的环境
- 将测试套件解压至pc端/data目录下
3.5.2 测试准备工作
- 下载需要进行测试的软件版本(ROM)
- 插入可用的SIM卡(双开手机,需确保卡1有sim卡)
- 写入合法的IMEI号(手机的身份证,每一个手机都会有唯一的一个IMEI号)
- 连接一个可FQ的WIFI网络(可以使用香港专线,网络比较稳定)
3.5.3 手机端配置
- 手机恢复出厂设置
- 手机语言设置为英语
- 手机需常亮并取消锁屏
- 开启GPS
- 开启USB调试后勾选stay awake和allow mock location
- 安装CtsDeviceAdmin.apk(位于android-cts/repository/testcases),进入setting->security->device administrators的前两项
- 确保手机SD卡有>1G的存储空间
- 确保手机没有谷歌账号或其他账号存在
- 确保手机时间和日期设置正确(连接数据后,会自动更新时间,时区选择默认时区)
...(其余在CDD文档中有定义)
3.5 CTS测试流程
- 手机和PC连接,打开USB调试模式,用adb devices检查是否连接好手机
- 在/data进入android-cts/tools/目录,执行cts-tradefed脚本进入测试环境
- 在测试环境中输入以下命令进行整体测试
run cts --plan CTS
或
run cts -c android.app.cts.SystemFeaturesTest
注意: CTS测试会持续10+个小时
补充: CTS测试环境基本命令介绍
分类 | 命令 | 说明 |
Host | help | 基本命令帮助说明 |
help all | 基本命令帮助说明 | |
exit | 退出控制台 | |
Run | run cts --plan test_plan_name | 运行指定计划 |
run cts --package/-p | 运行指定包 | |
run cts --class/-c [--method/-m] | 运行指定方法 | |
run cts --continue-session session_ID | 继续运行指定会话session_id | |
run cts [options] --serial/-s device_ID | 运行指定设备 | |
run cts [options] --shards number_of_shards | 运行多个设备 | |
run cts --help/--help-all | 运行帮助 | |
List | l/list d/devices | 列出连接的设备 |
l/list packages | 列出所有测试包 | |
l/list p/plans | 列出所有测试计划 | |
l/list r/results | 列出已经保存的测试结果 |
3.6 查看测试结果
3.6.1 测试结果存放路径
android-cts/repository/results/testResult.xml
3.6.2 测试日志存放路径
android-cts/repository/logs/
四、GTS测试
4.1 GTS测试介绍
谷歌移动服务测试套件(Google Mobile Services Test Suite),谷歌移动服务提供了Search、 Search by Voice、Gmail、Contact Sync、 Calendar Sync、Talk、 Maps、 Steet View、 YouTube、 Android Market (Play store)等服务,当用户使用谷歌时,谷歌可以把各种广告嵌入到谷歌的服务中。
4.2 GTS授权级别
根据GMS,谷歌对android手机给与不同程度的授权,把搭载android系统的手机厂商分为3个级别:
- 免费使用Android系统,但不内嵌GMS
- 内嵌部分GMS,但手机不能打上谷歌的商标
- 内嵌所有GMS服务,也可以使用谷歌商标。如果在android手机中内置有谷歌GMS服务的话,是等同被谷歌官方认证的产品
4.3 GTS测试流程
GTS的环境安装、执行、报告分析这一系列操作和CTS类似,只是GTS必须连接VPN。
4.3.1 手机环境准备
- 刷好GMS版本的ROM包
- 恢复手机出厂设置
- 设置手机、连接外网
- 插入SIM卡,打开移动数据
- 打开蓝牙
- 显示中睡眠时间显示最大
- 竖屏
- 语言选择英语
- 键盘选择谷歌键盘
- 打开定位、高精度
- 安全中锁屏选择None
- 时间将自动获取时间和日期关闭,选择太平洋时区、24小时制
- 在开发者模式中打开stay awake和USB debugging
4.3.2 执行GTS测试
- 开始全部GTS测试
run gts --plan GTS
- 单跑某一模块的GTS测试
run gts -plan 'Module Name' -t 'class name'
- 接着某一次中断的gts测试跑
run gts --retry session_id
其中session_id可由lr查看
4.4 GTS测试结果展示
五、获取GMS认证
通过GMS认证后,就可以申请到一个GMS的APK的包,可以将这些谷歌应用集成到手机系统里面。通过GMS认证的手机,可以在Googie play中看到如下内容: