写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方说的很清楚,不想把官方大段大段的拷贝到这里,官方的的确切说的很清楚: http://source./compatibility/overview.html 左边的相关的几个链接
中文说明:的具体也。可以见http://source./compatibility/overview.html中有关计划目标 一,Android的CTS 测试,英文为兼容性测试套件,意为兼容性测试。只有通过CTS测试的设备才有可能获得Android的商标和享受Android Market的权限; Android的CTS目的与意义:用户在android系统中有更好的用户体验,并且展示android应用的优越性,使得android开发者更容易编写高质量的andorid程序。
二,CTS是兼容性测试,Google为了防止厂商对Android的改进影响其SDKAPI的兼容性,即第三方应用程序安装到该厂商的上都能正常运行;这个差不多是自动跑的,会测试硬 件(比如GPS,WIFI),还有其他一系列的东西,跑完之后会出一份详细的报告,告诉你哪些地方没通过。
三,我们实际使用CTS的过程中,很可能需要根据特定的要求,来定制自己的TestPlan。这时就需要自己编译CTS
官方说明 一,有关CTS的目的和意图说明: http : //source./faqs.html#compatibility
兼容性测试套件CTS的目的是什么?
兼容性测试套件是设备制造商用于帮助确保其设备兼容的工具,并报告测试结果以进行验证。CTS旨在由OEM在整个工程过程中频繁运行,以早期捕获兼容性问题。 CTS测试什么样的事情?CTS目前测试所有支持的Android强类型API是否存在并且行为正确。它还测试其他非API系统行为,如应用程序生命周期和性能。我们计划在未来的CTS版本中添加支持,以测试“软”API(如Intents)。 二,官方说明:http : //source./compatibility/overview.html CTS 的英文一个免费的,商用级的测试套件,可供下载,CTS 运行于台式机的直接连接的设备或仿真器,并执行测试用例。 CTS的英文一套设计集成到日常工作流程的建筑设备职业:工程师(如通过持续构建系统)中的单元测试。它的目的是揭示不兼容的早期,并确保该软件仍然是整个开发过程中兼容。
兼容性测试套件(CTS)
CTS是一个免费的商业级测试套件,可供 下载。CTS表示兼容性的“机制”。 CTS在台式机上运行,??并直接在连接的设备或仿真器上运行测试用例。CTS是一组单元测试,设计成集成到构建设备的工程师的日常工作流程(例如通过连续构建系统)中。其目的是早期显示不兼容性,并确保软件在整个开发过程中保持兼容。
1,查看ubuntu版本 pateo @ pateo-B86N53X:/ $ uname -aLinux pateo-B86N53X 2.6.35-22-generic#33-Ubuntu SMP Sun Sep 19 20:34:50 UTC 2010 i686 GNU / Linux 备注说明:uname -m如果出现i386 i686 i586则是32位如果出现amd64则是64位系统; android官方给出说froyo / 2.2及以后版本默认只支持64位 解决方法:对对你的机器是32位的操作系统 步骤一 ./external /clearsilver/cgi/Android.mk ./external/clearsilver/java-jni/Android.mk ./external/clearsilver/util/Android.mk ./external/clearsilver/cs/Android.mk 四个文件中的 LOCAL_CFLAGS + = -m64 LOCAL_LDFLAGS + = -m64 注释掉或者将“64” 换成“32” LOCAL_CFLAGS + = -m32 LOCAL_LDFLAGS + = -m32 步骤二 ./build/core/main.mk中的 ifneq(64,$ findstring 64,$(build_arch))) 改为: ifneq(i686,$(findstring i686,$(build_arch)))
安装JDK
Sun JDK不再在Ubuntu的主包存储库中。为了下载它,您需要添加适当的存储库并指示系统应使用哪个JDK。 Java 6:for Gingerbread和更新版本
3,切换jdk
root @ pateo-B86N53X:?#sudo update-alternatives --config java 要维持当前值[*]请按回车键或者键入选择的编号: root @ pateo-B86N53X:?# config javac 有两个选择的替代javac(提供/ usr / bin / javac)。 选择路径优先级状态 ------------------------- ----------------------------------- 0 / usr / lib / jvm / java-6-sun / bin / javac 63自动模式 * 1 /usr/lib/jvm/java-1.5.0-sun/bin/javac手动模式 2 / usr / lib / jvm / java-6-sun / bin / javac 63手动模式 要当前值[*]请按回车键,或者键入选择的编号:2 update-alternatives:使用/ usr / lib / jvm / Java -6-sun / bin / javac来提供/ usr / bin / javac(javac),于手动模式中。 根@ Pateo酒店-B86N53X:?#Java的版本的Java版本“1.6.0_26” 的Java(TM)SE运行时环境(建立1.6.0_26-B03) 的Java HotSpot的(TM)服务器VM(建设20.1-B02,混合模式) 4 ,编译代码 根@ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0#。建立/ envsetup.sh 根@ Pateo酒店-B86N53X:/work/project/Yeagle_turquoise_3.0#午餐15 Pateo酒店@ Pateo酒店-B86N53X:/work/project/Yeagle_turquoise_3.0$使 5,建立CTS 根@ Pateo酒店-B86N53X:/工作/project/Yeagle_turquoise_3.0# make cts root @ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0/out/host/linux-x86/cts# ls all_cts_core_files_stamp all_cts_files_stamp android-cts android-cts.zip temp root @ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0/out/host/linux-x86/cts/android-cts/repository/plans# lsAndroid.xml AppSecurity.xml CTS.xml Java.xml Performance.xml RefApp .xml Signature.xml VM.xml 备注说明 (1)可以从http://source./compatibility/downloads.html下载最新版本的兼容性测试套件; (2)通过编译Android源代码的方式获得。在Android源代码目录下输入make cts命令来编译CTS,以后会在out / host / Linux -x86 / cts /下生成android-cts文件夹。 这个文件夹就是兼容性测试套装。 (3)cts的测试主要需要符合Android的兼容性定义文件(CDD),CDD列举兼容的Android设备的软件和硬件要求。 有关CDD的官方说明: 兼容性定义文档(CDD)
对于Android平台的每个版本,将提供详细的兼容性定义文档(CDD)。CDD代表Android兼容性的“策略”方面。 Android 2.3Android 2.3是发布了代号为Gingerbread的开发里程碑。Android 2.3的源代码可以在开源树中的“gingerbread”分支中找到。 csdn提供了Android 2.3兼容性定义文档(CDD)相关的翻译可以下载的文档 http://download.csdn.net/detail/jianguo_liao19840726/4039034 6,运行CTS root @ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0/out/host/linux-x86/bin# ./cts 监听传输dt_socket在地址:1337 Android CTS版本2.3_r1 cts_host> ls -计划计划 列表(共8个): AppSecurity没有官方说明,猜测是针对应用程序安全性的测试集合 性能包含所有针对性能的测试,随本版的跟新,本测试计划也将更新 VM包含针对虚拟机的所有测试 RefApp包含针对参考应用程序的所有测试,随本版的跟新,本测试计划也将更新 签名包含所有针对公有API的签名测试 Java包含所有针对Java核心库的测试 CTS包含21000个测试,这些测试是检验兼容性所必须的,性能测试不包含在本计划中,随本版的跟新,本测试计划也将更新 Android包含针对androidAPIs的有所测试 备注说明:在“cts_host>”提示符下输入命令,以下为几个常用的命令如:start --plan CTS,start --plan plan_name --package package_name运行一个特定的测试包,如:start -计划CTS --package android.bluetooth 官方说明:http://source./compatibility/cts-development.html cts start --plan CTS -p android.os.cts.BuildVersionTest 官方命令详解:http://source./compatibility/downloads.html,点击兼容性测试套件(CTS)用户手册会有Android的CTS-手动r4.pdf文档,此文档里面具体说明了命令的意思 兼容性测试套件手册CTS用户手册适用于任何CTS版本,但CTS 2.1 R2及更高版本需要 额外的步骤 来运行辅助功能测试。 中文说明: CTS命令的意义,我们必须明确计划,包,测试用例,测试,结果类型,会话的含义:
7,启动模拟器 root @ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0# make sdk root @ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0#。建立/ envsetup.sh 另一种启动: 模拟器
archermind @ archermind-Lenovo-IdeaPad-Y470:/work/froyo/out/host/linux-x86/sdk/android-sdk_eng.archermind_linux-x86/tools$ emulator
备注说明:如果提示-avd或-data filethen可以另一种方式先。build / envsetup.sh,然后lunch 1
8,启动cts archermind @ archermind-Lenovo-IdeaPad-Y470:/ work / froyo / out / host / linux-x86 / cts / android-cts / tools $ gedit startcts
注释#SDK_ROOT = NOT_CONFIGURED
增加SDK_ROOT = / work / froyo / out / host / linux-x86 / sdk / android-sdk_eng.archermind_linux-x86
archermind @ archermind-Lenovo-IdeaPad-Y470:/ work / froyo / out / host / linux-x86 / cts / android-cts / tools $ ./startcts
备注说明:如果运行成功会出现Android CTS版本2.3_r1的字样(我的android的版本是2.3的)如果有连接设备到PC上还会出现Device(设备ID)connected的字样。这里设备可以是连接PC的android的机器,也可以是模拟器,如果连接了多个设备的话需加上-d参数,后面跟上设备id来告CTS需要测试的设备,通过下面方法查看设备 Android CTS版本2.3_r1 如果你要链接真机需要如下的设置: pateo @ pateo-B86N53X:/etc/udev/rules.d$ ls 注意:各品牌手机的USBVendor ID分别见官方:http : //developer./guide/developing/device.html 相应的生成的测试报告:out / host / linux-x86 / cts / android-cts / repository / results /下面的testResult.xml
9,效果 你会看到不需要按键它也能自动测试
说明下面两步骤是在之前需要运行cts之前做的,针对失败的我们需要定位,这个时候我们最好能看到cts的源码,下面为cts的源码获取方法:sudo Git clone https:// android。 googlesource.com/platform/cts/
拿到源码后,我们针对fail的日志进行定位,例如: 失败日志:junit.framework.AssertionFailedError:expected:<1>但是:<0>在android.provider.cts.MediaStore_Images_ThumbnailsTest.testQueryExternalMiniThumbnails(MediaStore_Images_ThumbnailsTest.java:163) 找到相应的多少行进行定位
10,安装CtsVerifier.apk 相关官方说明:http : //source./compatibility/overview.html 验证器是cts的一个补充,可以下载下载,其CTS验证器主要测试api和功能,比较不好测的无需人工输入(如音频质量,加速度等)
兼容性测试套件验证器(CTS Verifier)
兼容性测试套件验证器(CTS验证器)是兼容性测试套件(CTS)的补充,可供 下载。CTS Verifier提供对不能在没有手动输入(例如音频质量,加速度计等)的固定设备上测试的API和功能的测试。
11,安装CtsDelegatingAccessibilityService.apk,官方说明:http : //source./compatibility/cts-intro.html 这个apk的来源
工作流
准备好后,您可以将CTS生成的报告提交到cts@。该报告是一个.zip归档文件,其中包含XML结果和补充信息,如屏幕捕获。
12,有关自己编写测试用例的官方说明:http : //source./compatibility/cts-development.html, 重点学习如何写自己的测试用例:http : //developer./guide/topics/testing/index.html 什么都是从HelloWord开始的,测试单元测试用例也是一样:http : //developer./resources/tutorials/testing/helloandroid_test.html 其具体的api见官方http://developer./reference/android/test/InstrumentationTestRunner.html
写CTS测试
CTS测试使用JUnit和Android测试API。查看 测试和测试 教程,同时仔细阅读 由于CTS跨越许多生产设备,测试必须遵循以下规则:
测试命名和位置
大多数CTS测试用例针对Android API中的特定类。这些测试具有带有
例如,CTS测试for
一些CTS测试不直接对应于API类,而是放在最相关的包中。例如,CTS测试,, 是在 ,因为它是网络相关的,即使没有 类。如果需要,您还可以创建新的测试包。例如,有一个“android.security”测试包用于与安全相关的测试。因此,在添加新测试时使用您最佳的判断,并参考其他测试作为示例。 最后,许多测试用@TestTargets和@TestTargetNew注释。这些不再是必要的,所以不要用这些注释新的测试。 新测试包
添加新测试时,可能没有现有目录来放置测试。在这种情况下,请参考下面的示例 测试桩和实用程序
一些测试使用额外的基础设施,如单独的活动和各种实用程序来执行测试。这些位于 其他任务除了增加新的测试,还有其他方法来贡献CTS:
提交更改按照 Android参与者的工作流程 提交对CTS的更改。审核人将被分配到您的更改,您的更改应该很快审核!
13,有关猴子的用法网上资源很多,具体见官方:http : //developer./guide/developing/tools/monkey.html 1)monkey是一个android自带的命令行工具。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。
2)方法 重点是掌握相关的猴子的一些命令即可,在实践中把这些命令都试试常用即可。 Monkey的源码下载地址:http : //download.csdn.net/detail/jianguo_liao19840726/4039754 有关monkeyrunner的用法:http : //developer./guide/developing/tools/monkeyrunner_concepts.html 源码中也自动了猴子的相应的一些文件:/work/project/Yeagle_turquoise_3.0/development/cmds/monkey$目录下的一些文件
14,官方给予的cts技术性相关疑问的联系:http : //source./compatibility/contact-us.html
CTS技术问题
如果您有兼容性测试套件的特定问题,需要您披露您不希望公开的信息,可以联系我们特别为此目的设置的电子邮件地址: cts@。此电子邮件地址仅适用于需要披露机密信息的情况,因此一般问题将直接返回到公开的Android兼容性列表。还请注意,此列表针对特定的技术问题; 一般查询也将被定向回 android兼容性列表。 15,其他开源的andorid脚本:http : //code.google.com/p/android-scripting/ http://code.google.com/p/robotium/
|
|