和你一起终身学习,这里是程序员 Android
本篇文章主要介绍 Android
开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
一、CTS 测试 内容
二、GTS 测试 内容
三、STS 测试 内容
四、GSI 测试内容
五、VTS 测试 内容
六、CTS-Verifier 测试 内容
七、CDD 检查测试 内容
Compatibility Test Suite意为兼容性测试,是Google推出的Android平台兼容性测试机制。CTS的目的是让所有的Android设备开发商能够开发出兼容性更好的Android设备(比如:手机)。
Android的CTS测试,是Google推出的Android平台兼容性测试。这是一套包含了上万个自动运行 测试用例的测试框架 。
CTS测试主要用来测试OEM厂商设计的Android平台是不是符合Android的API接口定义。通过 CTS 测试不仅可以保证Android设备具有良好的用户体验 ,而且可保证大量优质的应用在Android设备上正常运行,同时,也能够让应用开发者能够放心地制作高质量的应用程序,因此只有通过 CTS 认证的设备才能合法的安装使用 Google market 等 Google 的应用。
目前最新cts(9.0_r9)
/(8.1_r16)
/(7.0_r32)
。
CTS 测试工具
CTS 测试脚本
也可以通过下面网址去下载最新的测试工具(需要)
https://source.android.com/compatibility/cts/downloads.html
测试需要使用user版本
的软件(ROM)
32位的一般是2-4台,大概需要三十个小时左右跑完一轮;
64位的项目需要4-6台,一轮测试需要时间是60个小时左右。
①. 测试需要把锁屏的开关设置为none
(Settings > Security > Screen Lock should be 'None').
②. 测试需要设置灭屏时间sleep设置为最长时间或者never
测试需要打开"USB Debugging"
开关(Settings > Developer options > USB debugging).
开发者选择Debug 开关
③. 打开Settings > Developer options > Stay Awake
④. 有GPS的手机需要打开GPS
需要Linux系统电脑、ADB 的环境搭建、修改 adb 的权限等。
需要配置adb 环境
修改adb 权限
测试项 | 测试命令 |
---|---|
1.全测命令 | run cts |
2.3台一起运行命令 | run cts --shard-count 3 |
3.单测一项 | run cts –m <模块名> -t <单项名称> |
4.继续测试 | run retry --retry |
5.单测一个模块 | run cts –m <测试模块名> |
CTS 3台手机一起测试命令举例
CTS 测试结果会自动生成到android-cts/results
中,会存储到日期加时间的文件夹中,其中的test_result_failures.xml
可以用浏览器打开,查看详细的测试结果
CTS测试套件文档目录结构
device-info-files 测试举例
名称 | 作用 |
---|---|
1.logs | 测试过程中抓取得log |
2.results | 测试结果 |
3.device-info-files | 测试设备的信息 |
4.tools | 测试工具 |
Google Mobile Services Test Suite,所谓的Google Mobile Services即谷歌移动服务
是谷歌开发并推动Android的动力,也是Android系统的灵魂所在
谷歌移动服务测试套件(Google Mobile Services Test Suite),谷歌移动服务提供了Search、 Search by Voice、Gmail、Contact Sync、 Calendar Sync、Talk、 Maps、 Steet View、 YouTube、 Android Market (Play store)等服务,当用户使用谷歌时,谷歌可以把各种广告嵌入到谷歌的服务中。
测试项 | 测试命令 |
---|---|
1.全测命令 | run gts |
2.3台一起运行命令 | run gts --shard-count 3 |
3.单测一项 | run gts –m <模块名> -t <单项名称> |
4.继续测试 | run retry --retry |
5.特殊命令 | run gts -m GtsMediaTestCases --test com.google.android.media.gts.MediaDrmTest#testUsageTableCapacity --module-arg "GtsMediaTestCases:test-timeout:3600000" |
run gts -m GtsSettingsTestCases -t com.google.android.settings.gts.MADAComplianceTest#testMADACompliance
对应的fail 项
测试结果存放地址:
截屏信息举例
主要是测试 Android Security Patch 是否生效,Goolge最新通告,2019年03月开始STS要全部pass。
Android Security Test Suite (STS). 是谷歌关于android安全补丁安装情况的一个测试套件STS和security patch相关的,是CTS测试新增加一项安全测试套件。STS是201808才开始测试的。Security patch日期在3个月内是GTS的一个case,如果不通过无法获得google认证。在18年5月之前谷歌对于security patch这个属性都是在build库下面跟着aosp更新的。现在需要通过STS之后由vendor来更新。STS需要通过userdebug版本的targetfile来生成一个user版本的结果
Google STS 释放版本列表
不同平台需要不同的测试工具
Android 8.1 举例
锁屏的开关设置为none
(Settings > Security > Screen Lock should be 'None').灭屏时间sleep设置为最长时间或者never
5.链接 WIFI
测试项 | 测试命令 |
---|---|
1.全测命令 | run sts-engbuild |
2.单测一项 | run sts-engbuild –m <模块名> -t <单项名称> |
3.继续测试 | run sts-engbuild --retry |
STS 测试报告目录与用途如下:
目录 | 用途 |
---|---|
logs | 测试过程中抓取得log |
results | 测试结果 |
tools | 测试工具 |
STS报告目录
STS 报告头
这是GTS的一个case,如果不通过无法获得google认证。
例子 :
GtsOsTestCases–com.google.android.os.gts.SecurityPatchTest#testSecurityPatchDate
否则会有明确报错,需要更新安全patch日期:
junit.framework.AssertionFailedError: ro.build.version.security_patch should be “2018-08” or later. Found “xxxx-xx-xx”
(Generic system image)— Reference AOSP system image通用系统映像上的兼容性测试套件
这个文件包也是签约获取授权后才能获取,Google也会定期更新GSI包Android O要求测试VTS和CTS on GSI,此时对应版本必须是GSI版本,测试包都为VTS。
9.0-r11 8.1_r17
要求 CTS Media 1.4 及以上版本,在Android8.1的测试中,media文件要放在电脑中的/tmp/android-cts-media路径下,测试前不需要将Media文件拷贝到手机中,测试时会自动拷贝。如果/tmp/android-cts-media路径下没有media文件,将会从网上下载,由于文件比较大,比较耗时
VTS测试要求刷入谷歌提供AOSP的system.img (GSI)。在user版本中,如果直接使用flash tool单独烧录GSI时,会导致无法开机。之所以会出现这种问题,是由于在user/userdebug版本中,dm-verity是使能的,替换GSI后导致dm-verity不能通过。 如果要解决这个问题,就需要进行unlock操作
,并且要用fastboot来刷入刷入谷歌提供的system.img .
①在设置中打开 OEM unlocking 选项
②在设置中打开 USB debugging 选项
③长按音量 + 和电源键进入fastboot模式
或者执行
adb reboot bootloader
④连接到电脑上,分别执行fastboot flashing unlock
和fastboot oem unlock
。
⑤执行命令后需要选择音量 + 来确认unlock。
⑥执行 fastboot 命令刷入google提供的 system.img (GSI)fastboot flash system system.img
(需要根据软件版本的信息来选择GSI版本)
(Android P版本需要执行) fastboot flash vbmeta vbmeta.img
⑦重启:fastboot reboot
①展讯项目项目具体替换system.img操作如下:
刷版本过程中将system文件替换为system.img文件,正常刷机
(Android P版本需要执行) VB文件替换为最新的 vbmeta.img
②展讯平台Research DownLoad 单独替换方法:
展讯平台Research DownLoad 单独替换方法
安装 Python 开发工具包:
sudo apt-get install python-dev
安装协议缓冲区工具(适用于 Python):
sudo apt-get install python-protobuf protobuf-compiler
安装 Python 虚拟环境相关工具:
sudo apt-get install python-virtualenv python-pip
要求 CTS Media 1.4 及以上版本,在Android8.1的测试中,media文件要放在电脑中的/tmp/android-cts-media
路径下,测试前不需要将Media文件拷贝到手机中,测试时会自动拷贝。如果/tmp/android-cts-media
路径下没有media文件,将会从网上下载,由于文件比较大,比较耗时
VTS测试要求刷入谷歌提供AOSP的system.img (GSI)
。在user版本中,如果直接使用flash tool
单独烧录GSI时,会导致无法开机。之所以会出现这种问题,是由于在user/userdebug
版本中,dm-verity
是使能的,替换GSI后导致dm-verity不能通过。 如果要解决这个问题,就需要进行unlock操作,并且要用fastboot来刷入刷入谷歌提供的system.img .
测试项 | 测试命令 |
---|---|
1.全测命令 | run cts-on-gsi -s+SN |
2.3台一起运行命令 | run cts-on-gsi --shard-count 3 |
3.单测一项 | run cts-on-gsi –m <模块名> -t <单项名称> |
4.继续测试 | run cts-on-gsi-retry --retry |
5.单测一个模块 | run cts-on-gsi –m <测试模块名> |
2台手机一起测试方法举例
VTS的全称是 Vendor Test Suite(供应商测试套件)
替换谷歌system.img和gsi准备工作一样,替换img文件之前需要确保手机解锁,展讯的项目解锁如下:
使用unbuntu系统解锁
解锁前请先进入fastbootbootloader状态,指令如下:
1. adb reboot bootloader
2. cd 到当前文件
3. ./fastboot oem get_identifier_token(获取设备号)
sudo ./signidentifier_unlockbootloader.sh 53433938363331413130313833323330313437 rsa4096_vbmeta.pem signature.bin rsa4096_vbmeta.pem
密匙文件请自行到对应软件中获取
sudo ./fastbootflashing unlock_bootloader signature.bin
(用户根据相
应提示使用“volume down”键进行解锁确认
测试项 | 测试命令 |
---|---|
1.全测命令 | run vts |
2.单测一项 | run vts –m <模块名> -t <单项名称> |
3.继续测试 | run vts --retry |
4.单测一个模块 | run vts –m <测试模块名> |
CTS Verifier算是CTS的一部分,需要手动进行,主要用于测试那些自动测试系统无法测试的功能,比如相机、传感器等。由于硬件配置或其他原因,不同手机上部分测试项目被隐藏,也就是说CTS Verifier中case的总数,取决于测试机支持哪些功能
CTS-Verifier apk
· Camera
· Clock
· Device administration
· Features
· Hardware
· Job scheduler
· Location
· Managed Provisioning
· Networking
· Notifications
· Others
· Projection tests
· Security
· Sensors
· Streaming
手动测试选项 | 意义 |
---|---|
Pass | 如果待测设备满足 Info 中说明的测试要求,单击 Pass 按钮 |
Info | 对该项测试方法的说明,它将出现在第一次进入该测试项或者每次单击 Info 按钮的时候 |
Fail | 如果待测设备不满足 Info 中说明的测试要求,单击 Fail 按钮 |
手动测试选项 举例
CDD checklist全称Compatibility Definition Document 安卓兼容性定义文档。
CDD列举兼容的Android设备的软件和硬件要求。
因为Android源代码的开放性,众多手机厂商都在Android源代码的基础上添加了自己的定制,可能包括从Linux kernel层到上面的framework层都有修改,为了打造一个共同的生态系统,让不同的APP开发者开发出来的APP在所有的Android设备上都能正常运行,保证用户的使用体验,Google就提出了一些限制,这些限制就是CDD文档。
1.首先确认自己做的项目是哪个系统
9.0 ,8.1 还是 7.0 ;然后确认是不是Go的项目,对Go的区分是以1g的RAM来要求的,大于1G的 都属于非Go;最后一定要知道这个项目是做哪种版本:init(初次送测) ,MR版本 , Smr版本 ,每个版本都有自己不一样的检查cdd的方式,输入adb shell pm list features
查看什么类型的项目。
com.google.android.feature.GMSEXPRESS_PLUS_BUILD
com.google.android.feature.GMSEXPRESS_BUILD
,以后建议取消com.google.android.feature.RU
测试标准也有文档,主要集中于测试Seacher
使用以下命令adb shell "getprop | grep first_api_level"
可以查看API level。
Google 对不同版本的 API Level 要求如下:
Android 版本 | API level 要求 |
---|---|
对于9.0项目 | 不管Init还是MR版本 都需要设置为28 |
对于8.1项目 | Init项目需要设置为空;MR版本需要设置为27 |
对于7.0的项目 | Init项目需要设置为空;MR版本需要设置为24 |
对于6.0项目 | Init项目需要设置为空;MR版本需要设置为23 |
Duo必须放在default home screen(适应于非Go项目)
Android Messages和Chrome必须放在Hotseat。
适应于非Go项目
打开google文件夹按照“ 从左到右,从上到下” 的顺序,摆放core app (如右图)
分别有Google Search、Gmail、Maps、YouTube、Drive、Play Music(11月以后的新项目替换YouTu Music 老项目延续之前所用)、Play Movies、Photos
。
Google Folder 举例
对于Android P GMS Express+设备 (不管是新版本还是维护版本), 请确保有设置该属性 “ro.base_build = noah”
.
可用如下命令检查:
adb shell “getprop | grep ro.base_build”
MR版本 需要去掉base_os值 每个项目都需要查一下。
搭载 Android 9 或更高版本的 GMS 设备必须支持DNS over TLS ,并且必须提供UI界面,以便用户从 AOSP 中定义的关闭、自动或私人 DNS 提供商主机名之一中选择 DNS 隐私模式设置。
当设备在开箱后进行设置时,其默认的 DNS 隐私模式设置应为自动。
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!