Android TV CTS 测试认证汇总
Posted Zhang Jun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android TV CTS 测试认证汇总相关的知识,希望对你有一定的参考价值。
1、认识CTS
1.1、Android CTS认证测试服务流程
CTS(全称Compatibility Test Suite)认证是获得Google推出的android系统中Android Market服务的前提。通过这一测试,我们才能得到Android Market的使用许可。
CTS兼容性测试的主要目的和意义在于使得用户在Android系统的应用过程中,有更好的用户体验,并展现出Android系统的优越特性;使得Android应用程序编写者更容易编写高质量的应用程序;充分展现Android Market的优势,让获得CTS认证的终端得到Android Market的使用许可。
为什么需要兼容性测试?
1、让APP提供更好的用户体验,用户可以选择更多的适合自己设备的APP;
2、让开发者设计更高质量的APP;
3、通过CTS的设备可以运行Android market;
4、CTS是免费的,而且很简单。
Android CTS认证流程如图所示
首先要确认Android的版本,并仔细阅读Android各版本的说明,不同版本所支持的软件和硬件功能是不同的,除去特别说明的情况下,所支持的功能都需要通过此CTS兼容性认证。可以查阅与你的系统版本相匹配的Android Compatibility Definition文档,文档中描述了你需要具备的软件和硬件参数。
开始CTS测试前,请确认被测设备的调试模式处于开放状态,并且被测终端的SID号已经写入,下图展示了CTS测试流程。
CTS主要包含两个组件:
运行在PC上的测试框架组件,主要用来管理测试用例(testcase)的执行。
运行在设备或模拟器上的测试用例,这些用例是用JAVA写成的APK文件。
具体工作流程:
1、可以从源码编译CTS,也可以从网站下载编译好的对应版本的CTS;
2、安装配置CTS;
3、把设备连接到PC上;
4、运行CTS:CTS会把相应的测试用例(也就是一个APK文件)传送到设备上并通过instrumentation运行,然后 记录运行结果,最后删除测试用例。所有的测试用例执行完毕后,可以参照测试结果重新调整或优化系统,然后 继续运行CTS测试;
5、测试通过以后,你可以把CTS生成的结果(就是result下面那个以测试时间命名的.zip文件)提交给cts@android.com.
1.2 搭建CTS测试环境(Android 4.4_r3)
1.2.1 主机设置
1、PC必须是linux系统,最好是64位的ubuntu系统,系统请使用英语版本,不然生成的测试报告中会有中文字符。推荐使用ubuntu-10.04-desktop-i386,而12.04版本不推荐。
2、配置java6环境变量
#set java environment
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_43
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
下载android-sdk_r23.0.2-linux.tgz,网址:http://developer.android.com/sdk/index.html,不会爬梯子,可以登录http://www.androiddevtools.cn/
3、下载CTS测试包android-cts-4.4_r3-linux_x86-arm.zip和android-cts-media-1.0,网址:点击打开链接,使用VPN登录下载。
4、配置adb环境变量
#set android environment
export ANDROID_HOME=/opt/android-sdk-linux
export PATH=$ANDROID_HOME/platform-tools:$PATH
5、存储要求: CTS音视频压力测试会剪辑视频到外部存储(/SD card),并且屏幕分辨率不同,要求的存储空间大小也不一样:
● 480x360: 91.4MB
● 720x480: 151.9MB
● 1280x720: 401.6MB
● 1920x1080: 1008.2MB
1.2.2 设备设置
CTS只能在系统为用户模式的设备上执行,测试前必须按照如下说明设置,否则测试会超时或者失败:
1. 根据官网上的硬件设备使用说明来设置测试设备;
2. 测试前确认你的设备已经格式化为用户模式;
3. 如果设备有存储卡插槽,请确保设备已插入SD卡,并且卡里面没有存储数据,因为CTS测试可能会修改/删除插入设备的SD卡上的数据;
4. 设备恢复出厂设置,注意数据备份;
5. 设备系统语言设置为English (United States);
6. 设备位置设置为打开状态;
7. 确保设备已连接到支持IPv6的功能正常的Wi-Fi网络(设置> Wi-Fi)。 提示:如果您无法访问本机IPv6网络,IPv6运营商网络或VPN以通过此测试,则可以使用Wi-Fi接入点和IPv6隧道。 有关IPv6隧道代理的列表,请参阅此页面:http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers;
8. 设备不能处于休眠状态,进入security选项,将屏幕锁定设置为none
9. 开启USB调试,勾选Stay awake,Allow mock locations;
10. 连接用于测试设备的主机,并且勾选允许USB调试;
11. 安装CtsDeviceAdmin.apk后勾选Device administrators的前两项(其中,CtsDeviceAdmin.apk位于下载的cts解压包android-cts/repository/testcases下。有的版本是安装CtsDelegatingAccessibilityService.apk,设置里面辅助功能中勾选Delegating Accessibility Service选项);
12. 将 CTS media files复制到设备外部存储;
13. 确保设备是在主屏幕运行CTS,可以按HOME键确认;
14. 关闭设备上所有启动的界面和任务;
15. 测试期间不要有任何设备操作。
1.2.3 复制media files到设备上
1. 从http://source.android.com/compatibility/downloads.html下载android-cts-media-X.Y.zip文件,并解压缩;
2. 将设备连接到计算机,并检查adb是否连接成功;
3. cd进入解压的文件夹;
4. 使用'chmod'来更改文件权限,如:chmod 544 copy_media.sh ;
5. 运行copy_media.sh:
○ 使用默认屏幕分辨率执行./copy_media.sh
○ 使用720x480分辨率执行./copy_media.sh 720x480
○ 如果你不知道设备的分辨率,就设为1920x1080,这样会 将所有分辨率文件拷贝到设备上
○如果adb连接了多个设备,要使用adb -s (serial)项指定到目标设备,示例:./copy_media.sh 720x480 s 1234567
2 开始测试
2.1 测试方法
1、ADB有两种方式连接:USB和NET,由于机顶盒USB驱动一般只有Windows版本的,所以我们选择adb connect模式,先使用adb kill-server,然后连接,查看设备连接情况:adb devices,很多测试项需要良好的VPN环境,所以需要配置VPN账号。
2、机顶盒恢复出厂设置后,PC连上设备,执行. copy_media.sh 1280x720, 等待完成后,运行脚本:./cts-tradefed,出现cts-tf >
3、完全测试:输入run cts --plan CTS,测试顺利的话10小时,测试过程不需要人为干预,保证ADB连接不中断的条件下,可以选择在晚上进行,我们可以安心休息,等待机器自己测试完成,大概8小时就OK了。剩下的就是白天上班花两个小时对测试结果进行分析和对失败项重测。
2.2 CTS测试fail项解决
1、CTS测试有中断续测功能,在cts-tf >输入l r可以查看某个时间段测试结果sessionID,执行run cts --continue-session session_ID --disable-reboot(设置测试过程,设备不重启)。
2、测试某一个plan的全部fail/notExecuted/timeout项,输入add derivedplan --plan plan_name -s sessionID -r fail,//plan_name可以自己定义,sessionID就是上面查看结果的Session编号。测试全部fail项-r后面是fail,测试notExecuted项或者timeout项,-r后面就是notExecuted或者timeout。这种测试不会更新之前的测试报告,而是重新针对这些失败项生成新的报告,所以这个只能作为检查Failed项是否有操作不当,重新run一遍。
3、如果忘记命令,可以在cts-tf>后输入help查看命令。
4、测试完成后,自动生成的报告存放在目录:$CTS_ROOT/androidcts/repository/results/<start time>.zip.
5、用浏览器打开testResult.xml文件查看完整报告。
6、测试要提交完整测试报告,对于那些fail项,分析出原因,单独测试并优化系统设置后,可以将完全测试结果以文本方式打开,将fail项修改成notExecuted,同时对Summary结果统计进行相应修改。
7、小技巧,命令终端粘贴操作:复制文本后,按一下鼠标中间的滑轮即可。
8、单项测试:run cts --plan Java(myPlan);run cts -p pack_name(测试某一个package);run cts -c pack_name --m method(测试某一个case)。
9、对于机顶盒没有的硬件支持功能,如蓝牙、触屏、定位、麦克风、录音、横竖屏切换、电话、信息、Camera、重力感应等,在设备/system/etc/permissions/tablet_core_hardware.xml文件中修改,添加或删除功能,修改后需要恢复出厂设置生效。
10、手机端时区设置问题,在测试此项时单独把时区设置为:Pacific Time(-7时区),测完这两项请将时区还原。
Compatibility Test Package: android.aadb
com.android.cts.aadb.TestDeviceFuncTest
--testSyncFiles_extStorageVariable
-- testSyncFiles_normal
-- testPushFolderWithManyFiles
11、VPN问题,连接上VPN逐项验证。
Compatibility Test Package: android.core.tests.libcore.package.libcore
libcore.java.lang.ref.FinalizeTest
-- testSystemRunFinalizationReturnsEvenIfQueueIsNonEmpty
libcore.java.net.OldCookieHandlerTest
-- test_get_put
libcore.java.net.OldSocketTest
-- test_ConstructorLjava_lang_StringILjava_net_InetAddressI2
libcore.java.net.URLConnectionTest
-- testConnectViaHttpProxyToHttpsUsingBadProxyAndHttpResponseCache
libcore.javax.net.ssl.SSLSocketTest
-- test_SSLSocket_reusedNpnSocket
Compatibility Test Package: android.net
android.net.cts.DnsTest
-- testDnsWorks
12、Google issue,可以搁置不处理的有:
Compatibility Test Package: android.graphics
android.graphics.cts.BitmapFactoryTest
-- testDecodeFileDescriptor3
Compatibility Test Package: android.media
android.media.cts.EncodeVirtualDisplayWithCompositionTest
-- testRenderingMaxResolutionLocally
-- testRenderingMaxResolutionRemotely
-- testVirtualDisplayRecycles
Compatibility Test Package: android.webkit
android.webkit.cts.WebViewTest
-- testLoadDataWithBaseUrl
-- testLoadUrlDoesNotStripParamsWhenLoadingContentUrls
13、将出现错误的apk:AndroidManifest.xml android:debuggable="false"或者去掉这些apk。
Compatibility Test Package: android.permission
android.permission.cts.DebuggableTest
-- testNoDebuggable
14、错误原因是:使用默认的签名编译code ,解决方法:build/target/product/security/下面的签名换成自己做的。
Compatibility Test Package: android.security
android.security.cts.PackageSignatureTest
-- testPackageSignatures
15、没有把默认输入法设置为Android输入法。
Compatibility Test Package: android.widget
android.widget.cts.AutoCompleteTextViewTest
-- testPerformCompletion
-- testPerformFiltering
16、涉及系统权限和外置存储权限引起的问题,需要修改相应权限。
以上是关于Android TV CTS 测试认证汇总的主要内容,如果未能解决你的问题,请参考以下文章