Android—— ubuntu下【CTS】測试TV真机
近期接触到CTS,据传不懂CTS就不算一个合格的android开发者,我之前一直没见周边谁用过。作为一个产品开发的android人员,我还是太年轻~
撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40650001#t11
概念:
Compatibility Test Suite (CTS) 兼容性測试组。是由google提供的一套測试框架。含有非常多測试用例,
框架用于管理測试用例在真机设备或者模拟器上的执行,那些用例全是用java写的apk,通过执行这些apk得到的结果来測试系统平台的兼容性与稳定性.
Compatibility Definition Document (CDD) 一个定义标准,系统须要符合软件以及硬件相关參数.
你能够把測试结果发送给cts@android.com。当你提交了一个CTS报告时。你还能够要求訪问Android Market。
配置:
有android源代码的能够直接在源代码下 make cts ,最后会生成 /out/host/linux-x86/cts/android-cts
还能够去 http://source.android.com/compatibility/downloads.html 上面下载google提供的各个版本号的 CTS组件。解压出来android-cts文件夹须要版本号相应!
文件夹结构例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanNjZXNl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
当中docs为空,
repository文件夹下有plans . testcases
tools 文件夹下就是启动 cts console 的工具包。由 cts-tradefed 脚本启动。当中有个README
网上的配置五花八门。直接看这个简单明了:
Configuring cts-tradefed
------------------------ 1. Ensure 'adb' is in your current PATH. adb can be found in the
Android SDK available from http://developer.android.com Example:
PATH=$PATH:/home/myuser/android-sdk-linux_x86/platform-tools 2. Follow the 'Setting up your device' steps documented in the
CTS User Manual. The CTS User Manual can be downloaded at
http://source.android.com/compatibility/downloads.html 3. Connect the device to the host machine. 4. Ensure device is visible via 'adb devices' Using cts-tradefed
------------------- To run a test plan on a single device: 1. Make sure you have at least one device connected
2. Launch the cts-tradefed console by running the 'cts-tradefed' script at
android-cts/tools/cts-tradefed
3. Type:
'run cts --plan CTS' to run the default CTS plan Some other useful commands are To run a test package:
'run cts --package <packagename>' To run a test class:
'run cts --class <full test class name>' To shard a plan test run on multiple devices
'run cts --plan CTS --shards <number of shards>
note: all connected devices must be running the same build For more options:
'run cts --help' CTS Tradefed Development
------------------------
See http://source.android.com for instructions on obtaining the Android
platform source code and setting up a build environment. The source for the CTS extensions for tradefed can be found at
<android source root>/cts/tools/tradefed-host The source for the tradefed framework can be found on the 'tradefed' branch. Perform these steps to build and run cts-tradefed from the development
environment:
cd <path to android source root>
make cts
cts-tradefed
google的README写的非常明确了,须要终端可以使用 adb 这个在google提供的SDK中是有的,还给出来了下载链接。然后设置到环境变量PATH中!
能够看下cts-tradefed 这个脚本:
checkPath adb
checkPath java # check java version
JAVA_VERSION=$(java -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')
if [ "${JAVA_VERSION}" == "" ]; then
echo "Wrong java version. 1.6 is required."
exit
fi
能够看到 是须要jdk 1.6 以上的支持的。
android源代码下的 cts 可能不是最新的。所以最好是去上面提到的google官网去下载相应的 cts 组件!
使用:
启动:
首先打开TV的adb调试开关。ubuntu通过adb connect TV_IP 连接。android-cts下运行cts-tradefed脚本进入cts控制台:
能够看到在cts-tf下使用 l d 命令查看到了 设备的相关信息.
命令:
使用help查看:
能够看到支持的命令集!
当中版本号为4.2_r4,定义在/cts/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildProvider.java 中
使用 l p 查看可測试的计划:
cts-tf > l p
CTS-TF
CTS
VM-TF
AppSecurity
PDK
Java
Android
Signature
这些都是存在 android-cts/repository/plans 下
一个plan中包括多个package 。每一次运行 run cts 都会分配一个 Session 号。从 0開始..
l d 显示连接的设备。 l packages 显示可測试的包 , l r 显示记录结果
run cts -p package_name 单独測试package_name包
run cts --continue-session sessionID --disable-reboot
依据sessionID 继续进行測试,不重新启动 。由于重新启动 adb就断掉了!
run cts -c com.class_name -m methmod_name 单独測试某个类的方法 -c 后面跟类名全路径 –m 后面跟方法名
其他命令能够看凝视,不多做解释。
准备:
假设须要測试media相关的包,可在google官网下载 CTS Media 1.0 放到sdcard的test文件夹.
另外须要做的准备有:
安装cts測试须要的apk到目标板:CtsDelegatingAccessibilityService.apk,CtsDeviceAdmin.apk
(这两个APK能够在cts源代码文件夹的testcase中找到)
系统setting的配置
(假设项目删除了默认的setting或者深度改动了,能够用google的原生setting替代原有的setting来进行设置)
进入settings打开Wi-Fi并连接AP (AP须要连外网)
进入settings->Security->Screenlock设为None
进入settings->Security->Deviceadministrators->Enable两个选项
进入Language&input->language设为English(UnitedStates)
进入settings->Display->Sleep设为30minutes或None
进入settings->Accessibility->EnableDelegating Accessibility Service
进入settings->Developeroptions->Enable USB debugging、Stay awake、Allowmock locations
手动设置时间,并将时区调为北京。设置国家为china
这样就能够执行 run cts * 进行測试啦!
结果:
測试完之后的结果保存在 /android-cts/repository/results/2014.10.31_11.53.42/testResult.xml 中
能够看到结果就四种:[pass/fail/notExecuted/timeout]
假设我们的硬件上并不支持某个功能模块的时候。我们能够在testResult.xml中改动 result="fail" 为 result="notExecuted"
假设是fail的肯定还有这种附加信息:
<Test name="testPlay00" result="fail" starttime="星期五 十月 31 12:01:24 CST 2014" endtime="星期五 十月 31 12:01:26 CST 2014">
<FailedScene message="junit.framework.AssertionFailedError: playback /mnt/sdcard/test/bbb_short/176x144/3gp_h263_libfaac/bbb_short.ffmpeg.176x144.3gp.h263_300kbps_12fps.libfaac_mono_24kbps_11025Hz.3gp
at android.mediastress.cts.MediaPlayerStressTest.doTestVideoPlayback(MediaPlayerStressTest.java:161)
">
<StackTrace>junit.framework.AssertionFailedError: playback /mnt/sdcard/test/bbb_short/176x144/3gp_h263_libfaac/bbb_short.ffmpeg.176x144.3gp.h263_300kbps_12fps.libfaac_mono_24kbps_11025Hz.3gp
at android.mediastress.cts.MediaPlayerStressTest.doTestVideoPlayback(MediaPlayerStressTest.java:161)
at android.mediastress.cts.MediaPlayerStressTest.doTestVideoPlaybackShort(MediaPlayerStressTest.java:165)
at android.mediastress.cts.H263QcifShortPlayerTest.testPlay00(H263QcifShortPlayerTest.java:49)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)
</StackTrace>
</FailedScene>
</Test>
能够看到还有堆栈信息,可用于查找定问fail原因。
加入testcase:
我们能够在源代码/cts/tests/tests/以下看到全部的testcase
网上的方法。这里借用记录例如以下:
配置Testcase
结构例如以下:
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.cts.XXX">
<uses-permissionandroid:name="android.permission.DISABLE_KEYGUARD" />
<application>
<uses-libraryandroid:name="android.test.runner" />
</application>
<instrumentationandroid:name="android.test.InstrumentationCtsTestRunner"
android:targetPackage="com.android.cts.stub"
android:label="CTStests of android.XXX"/>
</manifest>
编译自己的cts包
在真机上进行測试
>
Android—— ubuntu下【CTS】測试TV真机的更多相关文章
- 在Ubuntu下ADT识别不出真机的解决办法
前两天把系统换成Ubuntu 12.04,今天在写代码的时候准备真机调试,结果ADT识别不出真机,我擦.果断网上查找了一下解决办法,经过半个小时左右的折腾,尼玛,终于搞定了.具体解决办法如下: 1.先 ...
- Android自己主动化測试——CTS測试
一.为什么须要兼容性測试(下面称CTS)? 1.1.让APP提供更好的用户体验.用户能够选择很多其它的适合自己设备的APP.让APP更稳定. 1.2.让开发人员设计更高质量的APP. 1.3.通过CT ...
- Android自己主动化測试之Monkeyrunner用法及实例
眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...
- Android JNI用于驱动測试
硬件平台:S3C6410 操作系统:Ubuntu.windows 板子系统:Android 开发工具:jdk.ndk,eclipse 本次測试从linux内核模块编译開始.以S3C6410的pwm驱动 ...
- Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)
我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...
- 【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份
Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monke ...
- Android自己主动化測试解决方式
如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...
- Android CTS測试Fail项改动总结(四)
Android5.1上的測试 1.android.security.cts.SELinuxDomainTest# testInitDomain fail 打印的log junit.framework. ...
- Android 自己主动化測试之------ Monkey工具
尽管 一般公司都有专门的測试人员,可是有时候 免不了 我们既要去开发产品,也要去測试产品,測试产品.有些机械化的 点界面的操作,谷歌已经给我们提供了工具.Monkey, 猴子測试. 什么是Monkey ...
随机推荐
- AJAX - 基本流程和特点
<script> window.onload = function(ev){ var oBtn = document.querySelector('button'); // querySe ...
- Django项目之Web端电商网站的实战开发(二)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...
- JavaScript学习总结(2)——JavaScript数据类型判断
最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断,在此做一个总结吧! 一.JS中的数据类型 1.数值型(Number):包括整数. ...
- 洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
P1208 [USACO1.3]混合牛奶 Mixing Milk 题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业 ...
- Qt之模型/视图(自己定义button)
简述 衍伸前面的章节,我们对QTableView实现了数据显示.自己定义排序.显示复选框.进度条等功能的实现.本节主要针对自己定义button进行解说.这节过后,也希望大家对自己定义有更深入的了解.在 ...
- css实现简单的告警提示动画效果
需求:css实现简单的告警提示动画效果,当接收到实时信息的时候,页面弹出告警信息的动画效果 <!DOCTYPE html> <html lang="en"> ...
- C# C++ 字符串传递
C# C++ 字符串传递 标签: c#c++bytestring测试c 2012-06-14 17:425707人阅读评论(3)收藏举报 分类: C#(11) 作者同类文章X C++(112) 作 ...
- Dotfuscator use for .net4.0 error solve
在混淆的时候报错了,错误描述大致如下: Could not find a compatible version of ildasm to run on assembly C:\xxx.dll This ...
- Request、Response 之 Http 请求
今天说些什么呢? 说说Request吧! Request是什么: 请求(Request):一个从客户端到服务器的请求信息包括应用于资源的方法.资源的标识符和协议的版本号 request这个对象不用事先 ...
- [D3] Debug D3 v4 with Dev Tools
Since D3 outputs standard markup, you can use familiar dev tools and inspectors to debug your visual ...