Android CTS 总结

FAQ of Fix CTS fail 

Q1.Ringtone
android.media.cts.RingtoneTest
-- testRingtonefailjunit.framework.AssertionFailedError at android.media.cts.RingtoneTest.testRingtone(RingtoneTest.java:120)
A1.由于项目移植,资源文件未全部移植造成ringtone 资源缺少,修改system.prop 中ro.config.ringtone=

Q2.StreamingMediaPlayerTest
android.media.cts.StreamingMediaPlayerTest
-- testHLSfailTest failed to run to completion. Reason: 'Instrumentation run failed due to 'junit.framework.AssertionFailedError''. Check device logcat for details

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

Q3.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;



CTS是什么?

资料:CDD、CTS官网、android-cts-manual-r4;

CTS是什么我就不多费话了,看上面官方的说法就行了。不过有一点需要明确,你的设备只有满足CDD的规定并且通过CTS,才有可能获得Android的商标和享受Android Market的权限。这里有可能指的是需要你自己去向google申请的,不是说兼容了,这些东西就自然而然有了。

 

怎么用:

资料: android-cts-manual-r4、宋立新_Android CTS测试研究;

安装与配置:

下载或自己编译;修改startcts中SDK_ROOT;在板子或emulator上装一个apk;设置setting;

各种命令的用法:

注意:start --plan –p以及start --plan –t的用法,-t要指定一个具体的测试方法

方法1:一般使用的方法
./startcts           注意如果用手机设备调试,用root权限执行
cts_host > ls --plan                
列出所有plan
out/host/linux-x86/cts/android-cts/repository/plans
中有plan的具体内容
cts_host > start --plan VM    
运行某个plan
测试结果在out/host/linux-x86/cts/android-cts/repository/results目录下,用浏览器看时间目录下的xml文件即可
注意在改动cts后,还要make cts重新编译,若只在cts目录中编译不能生效
cts_host > ls -p   
看当前可用的用例包
cts_host > start --plan Android -p android.app        
只运行某个用例包,节约时间
cts_host > start --plan Android -p android.app -t android.app.cts.AlertDialogTest#testAlertDialog
只运行某个用例包中的某个用例

方法2:遇到问题时方便调试的方法
$ adb install out/target/product/xxxx/data/app/SginatureTest.apk 
安装某个用例包
$ adb shell pm list instrumentation          pm
用于管理package,看当前机器安装了什么用例
$ adb shell am instrument -w android.tests.sigtest/.InstrumentationRunner             am
用于管理activity   运行某一用例
$ adb shell am instrument -e class android.app.cts.AlertDialogTest#testAlertDialog -w com.android.cts.app/android.test/InstrumentationCtsTestRunner          
单独运行一个小case
如果在一个时间很长的plan(如Android)中,某处错了,而错误信息又不全,需要单独跑一个小case,用-e指明class明就可以节约很多时间

 

用完后结果的分析:

结果在repository/results中,放在一个文件夹里,名字是你测试开始的时间。

分析的方法有两种:

1、可以直接从Failure Details找原因;(个人感觉应该难度较大)

2、结合源代码以及Failure Details的信息找原因

第二种方法牵扯到找测试源代码的问题,这就要对CTS源码目录以及相应生成物的命名有一定的了解。

 

 

了解CTS这个工程:

资料:宋立新同学的Android CTS测试研究二、android build system、CTS源码、makefile以及shell基本知识

了解Linux工程最好的入手点,就是从它的编译系统入手。

这个涉及到Linux的makefile以及android的编译系统的基本知识,具体内容还是挺多的,不过看懂了android编译系统,以后看其他Android工程应该都会得心应手。

 

 

在android CTS上增加自己的test package

资料:CTS命令的用法、Erin Yueh的两篇文章

有两种方法:

1、完美利用自带命令(已验证)

2、用Erin Yueh的方法

用这个方法的前提也是要彻底弄懂CTS的内部结构,不然也只能照猫画虎

 

如何写test case

资料:JUnit、SDK/docs下面的五篇文章、android open source官网/porting/Instrumentation Testing

这又是另外一门学问了

这个test case 可以涉及各个层次,Android 平台相关的测试的写法可以参考官方的那五篇文章,如何运行可参考上面资料三,其他的可能会涉及到JUnit以及其他一些知识,目前还没实地考察。

 

接下来要弄明白的

1、android的编译系统(学习下makefile以及shell基本知识)

2、CTS这个工程(看看测试包XML生成器的假设成不成立,能不能提取出来)

3、众多层次test case 的写法






  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值