Android 4.0 CTS,GTS,Steps

# 标签: 读博客



1. CTS

CTS(全称“Compatibility Test Suite”,即“兼容性测试包”)的认证,这是一组用以测试的.apk程序之类的集合,它能够在官网(http://source.android.com/compatibility/downloads.html)上面免费下载,并且测试也非常简单——只是结果非常苛刻。

CTS的目的就是让Android设备(如:手机)开发商能够开发出兼容性更好的Android设备。

2. GMS

   GMS全称为Google Mobile Service,即谷歌移动服务。GMS是Google开发并推动Android的动力,也是Android系统的灵魂所在。

  GMS目前提供有Search、Search by Voice、Gmail、Contact Sync、Calendar Sync、Talk、Maps、Street View、YouTube、Android Market(ICS上更改为Play store)服务。当用户使用谷歌服务的时候,谷歌可以把广告嵌入各种谷歌的服务中,比如:用户在使用谷歌地图的时候,就能发现搜索地名关键字的广告。在使用谷歌移动搜索的时候,不用说,当然也是有广告的。谷歌其实是拿用户的注意力来换取广告主的金钱。而且Android智能手机操作系统其实也就是谷歌把自己的服务主动放到了手机上,进一步巩固自己的市场地位。

  依据GMS,谷歌对android手机给予不同程度的授权,把搭载Android系统的手机厂商分为三个级别,

  1.免费使用Android操作系统,但不内嵌GMS;

  2.内嵌部分GMS服务,但手机不能打上谷歌的商标;

  3.内嵌所有的GMS服务,也可以使用谷歌商标。如果在android手机中内置有谷歌GMS服务的话,是等同被谷歌官方认证过的产品。



http://blog.csdn.net/lorryhou/article/details/11796237

一、CTS Test Step

二、GTS Test Step

前提:

需要连接WiFi,并设置VPN账户,因为测试期间需要下载视频并进行播放,VPN可能不稳定,不要气馁,多试几次,心中默念几句“南无阿弥陀佛”,肯定可以的,嘿嘿...

步骤:

1. 启动控制台,可以使用sudo chmod 777 xts-tradefed赋权限,以后就不用每次都使用管理员权限执行

[email protected]:~/cts/android-xts/tools$ sudo ./xts-tradefed

Android GTS 1.3.3

xts-tf >

2. 开始测试,手机连接上ubuntu之后,查看右下角图标,确认手机已经连接上虚拟机,不行可以重启手机或者拔插usb多试几次;连上虚拟机之后会出现如下信息:

09-13 14:37:12 I/: Detected new device AY997SDERK4SVKFQ

输入如下命令启动测试:

xts-tf > run xts --plan XTS

09-13 14:38:53 I/TestInvocation: Starting invocation for ‘xts‘ on build ‘1.3.3‘ on device AY997SDERK4SVKFQ

09-13 14:38:53 I/AY997SDERK4SVKFQ: Created result dir 2013.09.13_14.38.53

xts-tf >

--Created result dir xxxx.xx.xx 表示创建测试结果成功;

3. 查看结果

Session  Pass  Fail  Not Executed  Start time           Plan name  Device serial(s)

0        31    0     14            2013.09.13_14.38.53  XTS        AY997SDERK4SVKFQ

09-13 16:17:12 I/: Detected new device AY997SDERK4SVKFQ

xts-tf > run xts --continue-session 0

09-13 16:17:21 I/TestInvocation: Starting invocation for ‘xts‘ on build ‘1.3.3‘ on device AY997SDERK4SVKFQ

...... 测试中......

09-13 16:55:13 I/AY997SDERK4SVKFQ: Saved log device_logcat_1080357836705434293.zip

09-13 16:55:13 I/AY997SDERK4SVKFQ: Saved log host_log_8924128741063465900.zip

09-13 16:55:13 I/AY997SDERK4SVKFQ: google.media package complete: Passed 17, Failed 7, Not Executed 0

09-13 16:55:13 I/AY997SDERK4SVKFQ: Created xml report file at file:///home/ckt/cts/android-xts/tools/./../../android-xts/repository/results/2013.09.13_14.38.53/xtsTestResult.xml

09-13 16:55:13 I/AY997SDERK4SVKFQ: XML test result file generated at 2013.09.13_14.38.53. Passed 38, Failed 7, Not Executed 0

09-13 16:55:13 I/AY997SDERK4SVKFQ: Time: 37m 51s

--看到如上信息表示已经完成测试,如果有Failed项或者Not Executed项,则要继续循环测试

4. 循环测试:

编辑xtsTestResult.xml,需要管理员权限才能编辑,可如下操作:

sudo gedit xtsTestResult.xml

查找到如下行:

<Summary failed="17" notExecuted="0" timeout="0" pass="28" />

修改为:

<Summary failed="0" notExecuted="17" timeout="0" pass="28" />

使用 l r查看测试结果如下:

xts-tf > l r

Session  Pass  Fail  Not Executed  Start time           Plan name  Device serial(s)

0        28    0     17             2013.09.13_14.38.53  XTS        AY997SDERK4SVKFQ

继续测试,输入如下命令(0表示session id,根据自己需要修改):

xts-tf > run xts --continue-session 0

09-13 17:01:22 I/TestInvocation: Starting invocation for ‘xts‘ on build ‘1.3.3‘ on device AY997SDERK4SVKFQ

09-13 17:01:25 I/AY997SDERK4SVKFQ: Collecting device info

......

09-13 17:18:17 I/AY997SDERK4SVKFQ: Saved log device_logcat_5424763247133008176.zip

09-13 17:18:17 I/AY997SDERK4SVKFQ: Saved log host_log_5388513371929216598.zip

09-13 17:18:17 I/AY997SDERK4SVKFQ: google.media package complete: Passed 24, Failed 0, Not Executed 0

09-13 17:18:17 I/AY997SDERK4SVKFQ: Created xml report file at file:///home/ckt/cts/android-xts/tools/./../../android-xts/repository/results/2013.09.13_14.38.53/xtsTestResult.xml

09-13 17:18:17 I/AY997SDERK4SVKFQ: XML test result file generated at 2013.09.13_14.38.53. Passed 45, Failed 0, Not Executed 0

09-13 17:18:17 I/AY997SDERK4SVKFQ: Time: 16m 54s

如还有Failed项或者Not Executed项,则反复测试,至所有项Passed即可,如软件有问题,需要解决问题之后继续测试至全部项通过;

所有项都Passed之后,Failed 0, Not Executed 0, 即表示完成测试,恭喜你,只需要存档2013.09.13_14.38.53.zip报告即可。

三、ctsVerifier Test Step

前提:

1. Flash Tools烧最新user版软件;

2. 安装CtsVerifier.apk

3. 有部分测试项需要两台手机同时对测,另外一台手机只需安装CtsVerifier.apk,其他不做要求;

开始测试:

1. 依次选择每一项测试,当Pass按钮Enable时,即点击Pass,此项会变成绿色,则便是通过测试;

注意:

1. 有GPS测试,需要打开GPS选项,连上WiFi并拿到窗台测试(便于接收GPS信号);

2. WiFi对测的项需要反复测试,测试Request的时候,另外一台手机的Response项要先打开;

3. 建议设置手机Sleep为最长时间,避免因手机黑屏之后无法测试WiFi直连;

完成测试:

所有项都完成之后,则按菜单键,选择“Export”导出测试报告到SD卡,导出拷贝给测试人员即可;



http://blog.csdn.net/z_guijin/article/details/16113649

Fail的一些修改

 

1、直接设置问题


estUnknownSourcesOffByDefault


fail


junit.framework.AssertionFailedError: Deviceshould not ship with ‘Unknown Sources‘ enabled by default.expected:<0> butwas:<1> atandroid.provider.cts.Settings_SecureTest.testUnknownSourcesOffByDefault(Settings_SecureTest.java:183)

这种fail最好解决,直接按照字面理解就OK,设置---安全---默认关闭:未知来源。

2、permission


-- testSensorFeatures


fail


junit.framework.AssertionFailedError:PackageManager#hasSystemFeature(android.hardware.sensor.accelerometer)returns true but SensorManager#getSensorList(1) shows sensors []expected:<true> butwas:<false> atandroid.app.cts.SystemFeaturesTest.assertFeatureForSensor(SystemFeaturesTest.java:300)

一般情况修改 - > frameworks/base/data/etc/*.xml 文件,例如
android.hardware.camera.xml,platform.xml等文件,这边的文件定义了设备具有的一些权限。

--------------------------------------------------------------------------------------------------------------------

android.app.cts.SystemFeaturesTest#testSensorFeatures FAIL
junit.framework.AssertionFailedError: PackageManager#hasSystemFeature(android.hardware.sensor.light) returns true but SensorManager#getSensorList(5) shows sensors [] expected:<true> but was:<false>
原因:手机无光感
解决方法:去除..\mediatek\config\{PROJECT}\android.hardware.sensor.light.xml及
                   android.hardware.sensor.proximity.xml文件中相应选项

3、由测试而引起的非测试项出错


-- testRecordingHint


fail


java.lang.RuntimeException: start failed. atandroid.media.MediaRecorder.start(Native Method)

这种情况要根据Logcat去查看RuntimeException的具体错误。通常可以先不改,因为很难查错。

4、网络问题


-- test_isReachable


fail


java.net.UnknownHostException: Unable to resolvehost "www.google.com": No address associated with hostname atjava.net.InetAddress.lookupHostByName(InetAddress.java:426)

这类问题是由于国内的网络无法访问国外网站导致的,最好的办法就在公司搭建一个VPN,链接出去。

5、系统文件权限


-- testAllFilesInSysAreNotWritable


fail


junit.framework.AssertionFailedError: Foundwritable:

[/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ts_power,/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ts_en_file,/sys/devices/platform/malata_ts.0/tsclass/tsclass0/ts_Calibrate] atandroid.permission.cts.FileSystemPermissionTest.

testAllFilesInSysAreNotWritable(FileSystemPermissionTest.java:364)


-- testNoSetuidTcpdump


fail


junit.framework.AssertionFailedError at

android.security.cts.BannedFilesTest.

assertNotSetugid(BannedFilesTest.java:59)

这些问题是系统文件权限的问题,解决方法比较土,就是全局搜索该文件,查看那些对该文件操作的脚本,然后修改即可。

上面两个fail的解决方法是:

a.   修改kernel/drivers/input/touchscreen/malata_ts.c

__ATTR(ts_power, 0777, NULL,ts_set_point),

__ATTR(ts_en_file, 0777, NULL,ts_set_point),

__ATTR(ts_ Calibrate, 0777,NULL, ts_set_point),

b.   修改system/core/include/private/android-filesystem-config.h

{ 06755, ADD_ROOT, ADD_ROOT,“system/xbin/tcpdump”}

-------------------------------------------------------------------------------------------------

android.app.cts.SystemFeaturesTest
-- testLocationFeatures
fail


junit.framework.AssertionFailedError: PackageManager#hasSystemFeature should NOT return true for android.hardware.location.networkat android.app.cts.SystemFeaturesTest.assertNotAvailable(SystemFeaturesTest.java:375)

原因:未配置相对应功能(开启Location access中所有开关(gps和wifi))
解决方法:将..\frameworks\base\data\etc\android.hardware.location.gps.xml拷贝到
                     ..\mediatek\config\{PROJECT}\android.hardware.location.gps.xml目录下并做修改
                  <permissions>
                         <feature name="android.hardware.location" />  ----打开
                         <feature name="android.hardware.location.network" />   ----打开
                         <feature name="android.hardware.location.gps" />   ---无GPS则关此项
                </permissions>

6、这种情况最多的。


-- testFocusDistances


fail


junit.framework.ComparisonFailure:expected:<infinity> butwas:<auto> at

android.hardware.cts.CameraTest.testFocusDistancesByCamera

(CameraTest.java:1386)

对于这个fail的原因是CTS对摄像头测试时,对摄像头进行参数设置,然后在读取参数后,参数出错。

这种情况要找到CameraTest源码,通常在source/cts/...下面,我们编译时没有编译到这里,仅查看代码,例如找到CameraTest.java,打开后找到1386行,行数一般情况下不会有出入,除非source下面的cts版本和下载的cts版本不一致才会找不到,找到testFocusDistancesByCamera,然后根据代码查看具体的测试,然后在找camera的源代码,使用Log跟踪,当然这个测试一定要结合做该模块的人一起改才行,不然很容易引起其他问题。

其中camera CTS测试代码在:

source/cts/tests/tests/hardware/src/android/hardware/cts/CameraTest.java

摄像头设置的相关代码在:Source/device/Samsung/exynos4/libcamera/下面,有SecCameraHWInterface_zoom.cpp、SecCameraHWInterface_zoom.h、SecCamera_zoom.cpp、SecCamera_zoom.h

找到之后通过修改后测试再修改后再测试直到CTS PASS。

(对于摄像头,应注意是几个摄像头,不然测试可能会对两个一起测试,这样就算一个摄像头调好了,能PASS了,另外一个过不了也是FAIL的。)

---------------------------------------------------------------------------

android.app.cts.SystemFeaturesTest#testCameraFeatures FAIL
junit.framework.AssertionFailedError: PackageManager#hasSystemFeature should NOT return true for android.hardware.camera.autofocus
原因:手机无自动对焦功能  
解决方法:去除..\mediatek\config\{PROJECT}\android.hardware.camera.xml文件中
                  <feature name="android.hardware.camera.autofocus" />

7.Android.app.cts.SystemFeaturesTest#testLocationFeatures

該項是測試設備利用無線網絡信號進行粗略定位的功能

Root Cause:缺少google网络定位的服务包NetworkLocation.apk,但是机器用getSystemFeature依然有这项功能。

Solution:要么移植服务包,要么disablesystemFeature。我暂时选择后者。将/framework/base/data/etc/目录下xml文件里面的所有 .”android.hardware.location.network”注释掉即通过

8.Android.holo.cts.HoloTest包

該項是測試設備显示的widget view是否跟他提供的图片相一致,精确到像素点。

Root Cause:分辨率设置问题

Solution:将修改build.prop

ro.sf.lcd_density=160可以通过测试,但是Blaze Launcher菜单显示不能全屏,考虑修改api

9.Android.mediastress包

該項是測試設備能否正常播放google提供的视频文件

Root Cause:确定是否将cts-media包copy到sdcard目录、确定是否正常播放视频文件。不能正常扫描播放,可能是视频驱动问题

Solution:将cts-media文件放到sdcard,检文件能正常扫描播放,测试通过。

10.Android.permissin.cts.DebugableTest#testNoDebuggable

该項是測試相应的app是否有debugable的标志

Root Cause:AndroidManifest文件里面android:debuggable=“true”

Solution:将android:debuggable=“true”改为false

11.Android.security.cts.PackageSignatureTest#testPackageSignatures

該項是測試应用包是否使用google默认的签名文件

Root Cause:使用默认的签名编译code

Solution:build/target/product/security/下面的签名换成自己做的。做法在该目录下README有详细说明

12.Libcore cts部分

Libcorects部分主要测试的是设备里面javaapi是否正常工作。当某部分异常的时候,cts对该项测试就会失败。

根据实际的工作成果,得出一般libcore测试失败大部分都跟你cts配置是否正确有关,而不是javaapi存在问题,比如测试之前是否factory reset就会影响其部分测试结果。所以在尝试各种方法无果后,进行一下reset可能它就能过。以下是我做过的一些cts debug项。

1>.Libcore.java.text.dataFormateSymbolsTest

#test_getInstance_invalid_locale

Root Cause:

Solution:执行factory reset后,pass

2>.Libcore.java.text.SimpleDateFormateTest#testNonDstZoneNameWithDstTimestamp

Root Cause:该测试失败原因是因为java的SimpleDateFormate类无法解析Daylight time夏令时区造成的

Solution:追api无果下,factory reset。Daylight时区正常解析,pass

3>.Libcore.java.util.OldTimeZoneTest包

Root Cause:java无法解析daylight夏令时区造成

Solution:factory reset

4>.Org.apache.harmony.luny.tests.java.net.URLConnectionTest#test_getAllowUserInteraction

Root Cause:java无法连接onearth.jpl.nasa.gov网站造成,nexus机器同样无法通过该测试

Solution:无解。Google在新版本的cts测试中已经去掉连接该网站的逻辑部分。

13、DisplayRefreshRateTest

android.view.cts.DisplayRefreshRateTest
-- testRefreshRate
fail

junit.framework.AssertionFailedError at android.view.cts.DisplayRefreshRateTest.testRefreshRate(DisplayRefreshRateTest.java:168)

A3.关于这个刷帧率的问题,采用临时修改的方法

./frameworks/base/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp下在硬件初始化阶段

mRefreshRate = fbDev->fps-5;

调整为:

mRefreshRate = fbDev->fps-4;

14、

Compatibility Test Package: android.permission
Test Result Details
android.permission.cts.FileSystemPermissionTest
-- testAllFilesInSysAreNotWritable fail junit.framework.AssertionFailedError: Found writable: [/sys/devices/virtual/input/input3/enable_ps, /sys/devices/pci0000:00/0000:00:03.4/i2c-5/5-0068/delay, /sys/devices/virtual/input/input3/delay_ps, /sys/devices/virtual/input/input3/enable_als, /sys/devices/virtual/input/input3/delay_als, /sys/devices/pci0000:00/0000:00:03.4/i2c-5/5-0068/enable, /sys/devices/virtual/input/input3/enable_gs] at android.permission.cts.FileSystemPermissionTest.testAllFilesInSysAreNotWritable(FileSystemPermissionTest.java:577)

将相应的delay_ps这些文件进行设置权限,rw-r-r

15、

Compatibility Test Package: android.view
Test Result Details
android.view.cts.DisplayRefreshRateTest
-- testRefreshRate fail junit.framework.AssertionFailedError at android.view.cts.DisplayRefreshRateTest.testRefreshRate(DisplayRefreshRateTest.java:198)

可以从Log中看到需要设置的刷新率的大小。需要让驱动修改该值

16、

android.media.cts.StreamingMediaPlayerTest
-- testHLS fail junit.framework.AssertionFailedError: Stream did not play successfully after all attempts at android.media.cts.MediaPlayerTestBase.playVideoWithRetries(MediaPlayerTestBase.java:196)
-- testHTTP_H264Base_AAC_Video1 fail Test failed to run to completion. Reason: ‘Instrumentation run failed due to ‘junit.framework.AssertionFailedError‘‘. Check device logcat for details
-- testHTTP_H264Base_AAC_Video2 fail Test failed to run to completion. Reason: ‘Instrumentation run failed due to ‘junit.framework.AssertionFailedError‘‘. Check device logcat for details

HLS测试是这样:带宽分为200000,360000,500000, 800000, 1200000,客户端会根据当前获取的带宽值选择是否播放高清还是普通视频,
公司的带宽比较大,但实际真正的带宽可能会小好多,导致去播放高清视频是会很卡,然后失败
解决方法:
参考8x25平台做法,在system.prop里面对带宽做限制:
media.httplive.max-bw = 360000  
最大带宽限制在360000,这样,测试HLS的时候,就只会去播放200000的普通视频,基本可以通过。

=================================android5.0+GMS-r3============================

17、android.hardware.camera2.cts.CaptureRequestTest-testAwbModeAndLock

修改vendor/intel/hardware/camera3hal/ipu2/3a/Aiq3A.cpp

-        int us_min = 1000000 / minFps;
               -        int us_max = 1000000 / maxFps;
              +        int us_min = 1000000 / maxFps;
              +        int us_max = 1000000 / minFps;

修改vendor/intel/hardware/camera3hal/ipu2/CaptureStream.cpp

+#if 0
                     status = mCaptureDevice->setBufferPool(mV4l2CaptureBuffers, false);
                     status |= mPostviewDevice->setBufferPool(mV4l2PostviewBuffers, false);
              +#else
                     +    status = mCaptureDevice->setBufferPool(mV4l2CaptureBuffers, true);
                     +    status |= mPostviewDevice->setBufferPool(mV4l2PostviewBuffers, true);
              +#endif

18、GTS:com.google.android.xts.afw.AfwRequiredAppsOverlaysTest

添加AndroidForWork应用

19、GTS:testPermitAccessibilityServices

添加talkback应用

时间: 2024-10-06 19:27:57

Android 4.0 CTS,GTS,Steps的相关文章

【转】android 兼容性测试 CTS 测试过程(实践测试验证通过)

原文网址:http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方说的很清楚,不想把官方大段大段的拷贝到这里,官方的的确说的很清楚: http://source.android.com/compatibility/overview.html  左边的相关的几个链接   中文说明:具体的也可以见http://source.android.com/compatibil

Android 5.0 怎样正确启用isLoggable(二)__原理分析

前置文章 <Android 5.0 怎样正确启用isLoggable(一)__使用具体解释> 概要 在上文<Android 5.0 怎样正确启用isLoggable(一)__使用具体解释>中分析了isLoggable的用法,本文主要分析isLoggable实现原理以及user版系统root后永久enable isLoggable的原理,并使用脚本自己主动设置isLoggable相关属性. 本文来自http://blog.csdn.net/yihongyuelan 转载请务必注明出处

Android 4.0 的 GridLayout

设计素材代码: 1<?xml version="1.0" encoding="utf-8"?> 2<GridLayout//#http://www.huiyi8.com/jiaoben/ 3       xmlns:android="http://schemas.android.com/apk/res/android" 4 5        android:layout_width="match_parent"

Android 5.0内核和源代码学习(2)——源码下载和系统启动过程分析

一.Android源码下载 上一次简单介绍了Android系统的层次结构,这次开始动真格了--下载源码和分析源码! 那么,Android的源码从哪下?当然是谷歌官网,下载方法官网也讲得很详细,但是奈何中国的墙比较厚,所以上面的办法是没用的,当然,有些是有用的,地址:http://source.android.com/source/downloading.html 谷歌官网没办法下,幸好还有一些国内网站,废话不多说,直接开始步骤: 工具和环境:VM虚拟机+Ubantu14系统 第一步:Ubantu

Android 4.0 源代码结构

21.Android 4.0 源代码结构 Android源码的第一级目录结构 Android/abi (abi相关代码.ABI:application binary interface,应用程序二进制接口) Android/bionic(bionic C库) Android/bootable(启动引导相关代码) Android/build(存放系统编译规则及generic等基础开发配置包) Android/cts(Android兼容性测试套件标准) Android/dalvik(dalvik J

Android 5.0 如何正确启用isLoggable(二)__原理分析

前置文章 <Android 5.0 如何正确启用isLoggable(一)__使用详解> 概要 在上文<Android 5.0 如何正确启用isLoggable(一)__使用详解>中分析了isLoggable的使用方法,本文主要分析isLoggable实现原理以及user版系统root后永久enable isLoggable的原理,并使用脚本自动设置isLoggable相关属性. 本文来自http://blog.csdn.net/yihongyuelan 转载请务必注明出处 isL

Android 6.0 运行时权限处理完全解析

一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http://developer.android.com/intl/zh-cn/about/versions/marshmallow/android-6.0-changes.html,其中当然包含Runtime Permissions. ok,本篇文章目的之一就是对运行时权限处理的一个介绍,以及对目前权限相关的库

android 6.0 系统获取权限

在Android 6.0 (API 23) 发布之前, 所有的权限都在安装应用的时候显示给用户,用户选择安装则表示全部接受这些权限, 之后无法撤销对这些权限的授权.但Android 6.0开始, 一部分比较危险的权限需要在程序运行时显式弹框,请求用户授权.所以,之前开发应用时,在manifest文件中配置对应的权限这种做法便达不到之前的效果.那么,现在要怎么做呢?提供两种思路,仅供参考: 1:判断android系统的版本,如果不是6.0及以上,按正常逻辑处理,如果是,则去打开系统弹框,请求系统权

Android 5.0特性

虽然此前Google对其已经做过了比较深入的介绍,但作为一个如此重要的升级版本,更新内容自然是海量的. Google今天很贴心地在官网上放出了Android 5.0正式版的完整更新日志,涵盖了升级的方方面面,不过说实话也只是一些重要的.大面上的概略更新介绍,还有更多细节等待挖掘. 1.Material Design 醒目的.多彩的.快速响应的UI设计,可为你所有的设备带来一致的直觉体验. - 响应快速.自然流畅的动作,真实的光照和阴影,熟悉的视觉元素,设备导航更加轻而易举. - 惊艳的新色彩,凸