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)  一个定义标准,系统需要符合软件以及硬件相关参数.

你可以把测试结果发送给[email protected]。当你提交了一个CTS报告时,你还可以要求访问Android Market。

配置:

有android源码的可以直接在源码下 make cts ,最后会生成 /out/host/linux-x86/cts/android-cts

还可以去 http://source.android.com/compatibility/downloads.html 上面下载google提供的各个版本的 CTS组件,解压出来android-cts目录需要版本对应!

目录结构如下:

其中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

结构如下:

example

├── AndroidManifest.xml

├── Android.mk

└── src

└── android

└── example

├── cts

步骤:

1、    在cts/tests/tests/目录下创建一个自己的用例集(文件夹)名称XXX;

2、    在该文件夹中构建如下结构:

XXX

├──AndroidManifest.xml(可以拷贝example下该文件)

├── Android.mk(可以拷贝example下该文件)

└── src

└── android

└──XXX

└── cts

3、    编写测试代码

具体操作:

在src/android/XXX/cts目录下添加自己的用例;(XXX为自己的测试用例集的名称,例如:test)

细节说明:

1、google官方cts测试用例中,对一个类进行测试时,并没有对该类的所有方法进行测试,而是测试了该类中使用最频繁的一些方法;所以我们自己编程测试用例时,也可以按照这样的原则进行操作;

2、对于“窗口控件类”中使用的的res资源文件的目录在source_android4\cts\tests\res

3、最好是在eclipse中编写,需要res文件的,可以先拷贝到当前工程下,这样可以通过eclipse检查编程中的语法错误;

4、包名的格式:package android.XXX.cts;

4、    修改XXX/目录下的Android.mk文件

LOCAL_PACKAGE_NAME:= CtsXXXTestCases(这个变量是定义自己的测试用例集的名称;编译后会生成同名的APK文件)

LOCAL_INSTRUMENTATION_FOR:= CtsTestStubs(这个变量定位的是一些涉及到虚拟机的测试用例,使用junit框架;TestStubs这个类在目录cts\tools\vm-tests-tf\src\dot\junit\opcodes下)

5、修改XXX/目录下的AndroidManifest.xml文件

<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>

6、修改source_android4.2/cts目录下的CtsTestCaseList.mk;(重要

在该文件中给变量cts_test_packages追加自己测试用例集名称CtsXXXTestCases

说明:该文件在编译的时候会被build/core/tasks/cts.mk调用,生成最终的CTS包。

对CtsTestCaseList.mk文件说明:

CTS_COVERAGE_TEST_CASE_LIST(核心变量)

├── cts_support_packages(该变量包含的是测试依赖的一些用例,其对于代码目录为cts/hostsidetests)

├──CtsAccelerationTestStubs \

├──CtsDelegatingAccessibilityService \

├──CtsDeviceAdmin \

├──CtsMonkeyApp \

├──CtsMonkeyApp2 \

├──CtsSomeAccessibilityServices \

├──CtsTestStubs \

├──SignatureTest \

├──TestDeviceSetup \

├──$(cts_security_apps_list)

├── cts_test_packages(该变量对应的是cts/tests/tests/目录下的测试用例)

编译自己的cts包

执行make  cts  -j4

在真机上进行测试

由于完整进行cts测试要很长时间,所以我们可以自己创建一个测试计划,步骤如下:

1、将cts包解压,在android-cts\repository\plans下创建一个名为XXX的xml文件;

2、这个xml文件格式为:

<?xmlversion="1.0" encoding="UTF-8"?>

<TestPlan version="1.0">

<Entry uri="android.XXX"/>

</TestPlan>

3、进行cts测试时执行run  cts  -- plan XXX

时间: 2024-10-20 06:58:38

Android—— ubuntu下【CTS】测试TV真机的相关文章

ubuntu下adb无法找到真机的问题解决

声明:本博客是作为记录之用,具体的解决方法并不是本博主找出来的,只是在此记录一下解决的过程而已. 参考博客有: http://blog.csdn.net/yunnywu/article/details/8550834 http://blog.csdn.net/microliang/article/details/16343641 http://blog.csdn.net/lincyang/article/details/9093239等. ----------------------------

C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库

1.#include<iostream> using namespace std; int main() { cout<<"Hello Woeld"<<endl; return 0; } 2.vector.cxx #include<iostream> int main() {int k; char x; cout<<"请输入向量的维度:"<<endl; cin>>k; vector

Android平台下渗透测试工具大集合

Android平台下渗透测试工具大集合 分享一个google的项目,各种Android下的渗透测试工具. Ad Network Detector (1.2): http://market.android.com/details?id=com.lookout.addetector App Backup & Restore (1.0.5): http://market.android.com/details?id=mobi.infolife.appbackup App Cache Cleaner (

Android—— ubuntu下【CTS】測试TV真机

近期接触到CTS,据传不懂CTS就不算一个合格的android开发者,我之前一直没见周边谁用过.作为一个产品开发的android人员,我还是太年轻- 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40650001#t11 概念: Compatibility Test Suite (CTS)  兼容性測试组.是由google提供的一套測试框架.含有非常多測试用例, 框架用于管理測试用例在真机设备或者模拟器上的执行,那些用例全是用j

mac 下 配置appium +ios真机环境

mac系统:10.11.6 xcode:7 appium:1.5.3 iphone: 6 p 1.搭建 appium 安卓的环境: 1.jdk 2.sdk 3.appium 4.配置环境变量 mac下的环境变量是在 登录用户的 根目录下 cd ~/ 下的 .bash_profile中 没有自己 创建一个 8 # Setting PATH for Python 3.5 9 # The original version is saved in .bash_profile.pysave 10 PATH

Android源码编译之Nexus5真机编译

1.   前言 在Android安全的研究工作中,我们时常要对Android进行改进并对其进行源码编译,由于目前几乎所有的手机厂商均对其底层驱动实行封闭政策,导致我们在完成Android编译后无法将我们编译好的系统刷到普通的Android手机上,因此在一般的科学实验中我们更多的是将修改好的android源码编译成模拟器,以模拟器的形式证明实验的成功与否. 事实上,Android作为一款开放源代码的移动设备操作系统,Google最初就考虑到了真机编译的问题,而关于这个问题的解决方案体现在每次Goo

Monkey测试_真机测试

提:按照前面的<Monkey环境搭建>先把环境搭建好. 真机测试: 1.首先需要将手机连接到PC,测试连接是否正常,可在cmd里输入adb devices来进行验证: 2.获取要测试的APP包名:可以直接问开发,也可以通过 adb shell pm list packages  列出所有包名来进行查找 adb shell pm list packages com.xx 查找所有包含com.xx的包 adb shell pm list packages com.xx.yy 查找特定包是否存在 3

安卓第一课:android studio 的环境搭建与真机运行以及遇到的问题

AS的下载: https://developer.android.com/studio/index.html AS的安装: android studio, sdk, virtual device都要安装,安装路径最好不要选在C盘 创建新项目: 创建过程不再赘述网上都有. 真机运行: 项目写好后先用USB线将安卓手机连接到电脑(注意:手机一定要打开开发者选项然后开启USB调试功能),点击运行后在检测到的设备中选择自己的手机(一般只有一项,点那个就好),运行成功后,自己的手机上会自动安装好这个软件.

TaintDroid下载预编译(五):TaintDroid(Android)系统编译虚拟机和真机測试

光说不练非好汉,如今就让我们开启自己编译的系统測试!事实上懂得这些过程.就知道了Android手机系统定制的整个流程.现有的智能机都是使用Google的android开源的系统然后加入一些自己的东西.就成为公司的系统! TaintDroid(Android)虚拟机上測试 我们前面讲了怎样编译,编译的成功的标识就是生成system.img文件,例如以下图: sdk替换 拷贝system.img镜像文件,替换掉sdk中的镜像.例如以下图: 对于创建AVD非常easy,这里几张图就能够看懂. wate