CTS簡介

CTSAndroid爲了確保眾多設備對軟件兼容性而進行的自動化測試,對設備無害。每個測試樣例都是用java語言以Junit測試規範寫的Android .apk文件。

CTS功用

對用戶來說,通過CTS的設備可以保證其對Android生態圈的軟件的兼容

對開發者來說,在開發前期CTS測試可以讓你最早發現開發板的不足與漏洞。另外通過CTS是廠商確定自己產品和軟件兼容性的保證

CTS 配置

1). Android 官網上已經有執行 CTS 所需的操作。

http://source.android.com/compatibility/cts-intro.html

2) 除了官網外還要進行一些小設置 1. Erase SD card 2.factory reset ,沒有 recovery 的機器可以用 fastboot 重新刷 userdata.img cache.img 镜像達到 reset 目的。 3.Enable Adb 4.Wi-Fi BT 打開,確保 WIFI 可以正常聯網,并能訪問 youtube.com 視頻 5.屏幕超時設置為 Never 或最長時間 6.Security---unknown resources 不选中 7.Screen Lock, 设置为 ‘None’ 8.使用 usermode build 版本測試

CTS執行命令

cts配置完畢後,在CTS tools目錄下執行cts-tradefed脚本进入cts命令行

# ./cts-tradefed

Cts-tf >

Cts-tf >

执行命令run cts –- plan CTS即可運行CTS所有包測試。

常用的命令

單個包測試:run cts –p xxx[]

單個testcase測試:runcts –c xxx[]

單個測試項:run cts –c xxx[]-m xxx [方法]

CTS常见bug

1.Android.app.cts.SystemFeaturesTest#testLocationFeatures 該項是測試設備利用無線網絡信號進行粗略定位的功能 Root Cause: 缺少 google 网络定位的服务包 NetworkLocation.apk ,但是机器用 getSystemFeature 依然有这项功能。 Solution :要么移植服务包 , 要么 disable systemFeature 。我暂时选择后者。将 /framework/base/data/etc/ 目录下 xml 文件里面的所有 .” android.hardware.location.network 注释掉即通 2.Android.holo.cts.HoloTest 該項是測試設備显示的 widget view 是否跟他提供的图片相一致,精确到像素点。 Root Cause: 分辨率设置问题 Solution :将修改 build.prop

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

3.Android.mediastress 該項是測試設備能否正常播放 google 提供的视频文件 Root Cause: 确定是否将 cts -media copy sdcard 目录、确定是否正常播放视频文件。 不能正常扫描播放,可能是视频驱动 问题 Solution :将 cts -media 文件放到 sdcard , 检文件能正常扫描播放,测试通过。 4.Android.permissin.cts.DebugableTest#testNoDebuggable 该項是測試相应的 app 是否有 debugable 的标志 Root Cause:AndroidManifest 文件里面 android:debuggable =“true” Solution :将 android:debuggable =“true” 改为 false 5.Android.security.cts.PackageSignatureTest#testPackageSignatures 該項是測試应用包是否使用 google 默认的签名文件 Root Cause: 使用默认的签名编译 code Solution build/target/product/security/ 下面的签名换成自己做的。做法在该目录下 README 有详细说明

Libcore cts部分

Libcore cts 部分主要测试的是设备里面 java api 是否正常工作。当某部分异常的时候, cts 对该项测试就会失败。 根据实际的工作成果,得出一般 libcore 测试失败大部分都跟你 cts 配置是否正确有关,而不是 java api 存在问题,比如测试之前是否 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 测试中已经去掉连接该网站的逻辑部分。 CTS推荐网站:http://code.google.com/p/android/issues/list,里面有全球的Android开发者在共同探讨问题,也有google Android项目成员出来解决问题。

更多相关文章

  1. Android(安卓)自动化测试工具初探
  2. Android手机终端长连接心跳检测自动化测试方案
  3. Android7.1.2源码解析系列】Android编译系统翻译------Android_B
  4. Android(安卓)app中加载jar插件
  5. Growth发布iOS版 — 距今为止最好的开源“Web开发学习”应用
  6. Android(安卓)AudioManager处理两个播放器同时有声音,停止其中一
  7. Android直播开发之旅(16):使用FFmpeg保存网络流到本地文件
  8. Android新技术------Android(安卓)App Bundle之bundletool的使用
  9. [置顶] Android学习之Build环境初探

随机推荐

  1. 在jQuery datetimepicker中禁用特定时间
  2. 桌面视图中的SlikNav多级菜单?
  3. 显示json数组中的所有项目
  4. 图表。js数据数组使用PHP, MySQL。如何从
  5. Regexp exec列表的url由昏迷“,*”分隔
  6. JavaScript 最佳实践:帮你提升代码质量
  7. Vue js v-bind不工作?
  8. 如何在WebBrowser控件中注入Javascript ?
  9. 探讨FantasySoft遇到的有关Javascript的
  10. javascript数组和对象是否有设置顺序?