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文件夹须要版本号相应!

文件夹结构例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanNjZXNl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

当中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文件的,能够先复制到当前project下,这样能够通过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 08:01:42

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

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

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

Android自己主动化測试——CTS測试

一.为什么须要兼容性測试(下面称CTS)? 1.1.让APP提供更好的用户体验.用户能够选择很多其它的适合自己设备的APP.让APP更稳定. 1.2.让开发人员设计更高质量的APP. 1.3.通过CTS的设备能够执行Android market. 另外,CTS是免费的,并且非常easy. 二.CTS是开源的測试框架,使用它来測试你的设备是否具备兼容性.CTS主要包括两个组件: 执行在PC上的測试框架组件.主要用来管理測试用例(test case)的执行. 执行在设备或模拟器上的測试用例.这些用例

Android自己主动化測试之Monkeyrunner用法及实例

眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monkey主要应用在压力和可靠性測试上,执行该命令能够随机地向目标程序发送各种模拟键盘事件流,而且能够自定义发送的次数,以此观察被測应用程序的稳定性和可靠性,应用起来也比較简单,记住那几个命令即可了.而monkeyrunner呢,相比之下会强大一些,它主要可应用于功能測试,回归測试,而且能够自定义測试扩展,

【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份

Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monkey随机測试工具到点触流自己主动化工具monkeyrunner.MonkeyTalk.基于元素识别的自己主动化框架sikuli.seeTest.iTest.基于控件识别的Robotium.SL4A.这三种技术各有千秋.基本上如今做出的自己主动化框架都是整合或者改动了以上这些免费的自己主动化框架:比方中

Android自己主动化測试解决方式

如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolectric.另外LessPainful也提供服务来进行真实设备上的自己主动化測试. Android自身提供了对instrumentation測试的基本支持,当中之中的一个就是位于android.test包内的ActivityInstrumentationTestCase2类,它扩展了JUnit的Test

(转)Unity3D Android手机开发环境配置,可真机发布调试

此方法配置好,在可以在unity直接发布到手机上,并可以实时调试. 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/sdk/index.html,点击这个按钮开始下载  进入下一页,选择对应你系统的版本,继续下载.    32和64位版本千万不能选错了,如果不清楚就查看一下你的系统版本.  下载完成后就是类似这样的包adt-bundle-windows-x86_64-20131030.zip,解压出来像这样  为了方便我们把它们让入ad

Unity3D Android手机开发环境配置,可真机发布调试

此方法配置好,在可以在unity直接发布到手机上,并可以实时调试. 1.配置eclipse环境:首先在官网下载安装包:http://developer.android.com/sdk/index.html,点击这个按钮开始下载  进入下一页,选择对应你系统的版本,继续下载.    32和64位版本千万不能选错了,如果不清楚就查看一下你的系统版本.  下载完成后就是类似这样的包adt-bundle-windows-x86_64-20131030.zip,解压出来像这样  为了方便我们把它们让入ad

Android CTS測试Fail项改动总结(四)

Android5.1上的測试 1.android.security.cts.SELinuxDomainTest# testInitDomain fail 打印的log junit.framework.AssertionFailedError: Expected 1 process in SELinux domain "u:r:init:s0" Found "[ pid: "1" proctitle: "/init" label: &qu

泛泰A820L (高通MSM8660 cpu) 3.4内核的CM10.1(Android 4.2.2) 測试版第二版

欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam  (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo crazyi(天下无雪) windxixi(雪狐) wangsai008 组成) 感谢: tenfar(R大师),zhaochengw(z大),xuefy(大星星).suky,wzhy90 特别说明: 此版本号仅为測试版, 用于測试反馈bug(本人已经測试将近10天),  由于3.4内核的MSM8660