分享

android兼容性测试CTS测试过程(实践测试验证通过)

 jiffes 2017-02-23


写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方说的很清楚,不想把官方大段大段的拷贝到这里,官方的的确切说的很清楚:

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 -a
Linux 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))) 


2,安装jdk官方:http : //source./source/initializing.html

安装JDK

Sun JDK不再在Ubuntu的主包存储库中。为了下载它,您需要添加适当的存储库并指示系统应使用哪个JDK。

Java 6:for Gingerbread和更新版本

$ sudo add-apt-repository "deb http://archive./ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

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# ls
Android.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.3

Android 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命令的意义,我们必须明确计划测试用例测试,结果类型,会话的含义:

  • CTS测试组合为TestcaseTestcase再组合为Package,最后由Package组合为计划

  • CTS可以执行一个计划,一个计划的某个,一个计划的某个测试

  • CTS执行的结果以Session_ID来标识一个测试结果。

  • CTS的结果类型result_type包含PassFailTimeoutNoExecuted四种

7,启动模拟器

root @ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0# make sdk

root @ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0#。建立/ envsetup.sh 
包括设备/ FSL / imx5x / vendorsetup.sh
包括设备/ Pateo酒店/ yeagle / vendorsetup.sh
根@ Pateo酒店-B86N53X:/work/project/Yeagle_turquoise_3.0#午餐15
======== ====================================
PLATFORM_VERSION_CODENAME = REL
PLATFORM_VERSION = 2.3.3
TARGET_PRODUCT = yeagle
TARGET_BUILD_VARIANT =工程
TARGET_SIMULATOR =假
TARGET_BUILD_TYPE =发行
TARGET_BUILD_APPS =
TARGET_ARCH =手臂
HOST_ARCH = 86
HOST_OS = linux的
HOST_BUILD_TYPE =发行
BUILD_ID = GRI40
=========================== =================
root @ pateo-B86N53X:/work/project/Yeagle_turquoise_3.0# emulator
模拟器:警告:系统分区大小调整为匹配图像文件(128 MB> 66 MB)

另一种启动:

模拟器
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
cts_host> 

如果你要链接真机需要如下的设置:

pateo @ pateo-B86N53X:/etc/udev/rules.d$ ls
10-vboxdrv.rules 51-android.rules 51-android.rules。70-persistent-cd.rules 70-persistent-net.rules README
pateo @ pateo-B86N53X:/etc/udev/rules.d$ cat 51-android.rules
SUBSYSTEM ==“usb”,ATTR {idVendor} ==“ 18d1“,MODE =”0666“,
        GROUP =”plugdev“
pateo @ pateo-B86N53X:/etc/udev/rules.d$ adb devices
* daemon未运行。现在在端口5037 *
*守护程序启动成功*
列表的设备连接 
emulator-5554
离线

注意:各品牌手机的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的来源

                 

工作流

  1. 下载  CTS。

  2. 将至少一个设备(或模拟器)附加到计算机。

  3. 对于CTS 2.1 R2及更高版本,请设置您的设备(或模拟器)以运行辅助功能测试:

    1. adb install -r android-cts / repository / testcases / CtsDelegatingAccessibilityService.apk

    2. 在设备上,启用设置>辅助功能>辅助功能>委派辅助功能服务

  4. 对于CTS 2.3 R4及更高版本,请设置您的设备以运行设备管理测试:

    1. adb install -r android-cts / repository / testcases / CtsDeviceAdmin.apk

    2. 在设备上,启用所有android.deviceadmin.cts。*设备管理员在设置>位置和安全>选择设备管理员

  5. 启动CTS。CTS测试工具将测试计划加载到连接的设备上。对于测试工具中的每个测试:

    • 测试工具将.apk文件推送到每个设备,通过测试执行测试,并记录测试结果。

    • 测试工具从每个设备中删除.apk文件。

  6. 所有测试执行后,您可以在浏览器中查看测试结果,并使用结果调整您的设计。您可以在整个开发过程中继续运行CTS。

准备好后,您可以将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/tests/tests 目录下的现有测试  。你会看到CTS测试大多遵循在其他Android测试中使用的相同约定。

由于CTS跨越许多生产设备,测试必须遵循以下规则:

  • 必须考虑不同的屏幕尺寸,方向和键盘布局。
  • 只能使用公共API方法。换句话说,避免使用“隐藏”注释注释的所有类,方法和字段。
  • 避免依赖特定视图布局或依赖于某些设备上可能不存在的资源的维度。
  • 不要依赖root权限。

测试命名和位置

大多数CTS测试用例针对Android API中的特定类。这些测试具有带有cts 后缀的Java包名称和带有  后缀的类名称  Test 。每个测试用例由多个测试组成,其中每个测试通常执行被测试的API类的特定API方法。这些测试被安排在目录结构中,其中测试被分组成不同的类别,如“窗口小部件”和“视图”。

例如,CTS测试for  android.widget.TextView 是  android.widget.cts.TextViewTest 在cts/tests/tests/widget/src/android/widget/cts 其Java包名称为android.widget.cts 和其类名为  的目录下找到的  TextViewTest。本  TextViewTest 类有一个名为test  testSetText 的行使“的setText”的方法和一个名为“testSetSingleLine”调用的测试  setSingleLine方法。每个测试都有  @TestTargetNew 注释,说明它们覆盖的内容。

一些CTS测试不直接对应于API类,而是放在最相关的包中。例如,CTS测试,,  是在  ,因为它是网络相关的,即使没有   类。如果需要,您还可以创建新的测试包。例如,有一个“android.security”测试包用于与安全相关的测试。因此,在添加新测试时使用您最佳的判断,并参考其他测试作为示例。android.NET.cts.ListeningPortsTestandroid.Net.ctsandroid.net.ListeningPorts

最后,许多测试用@TestTargets和@TestTargetNew注释。这些不再是必要的,所以不要用这些注释新的测试。

新测试包

添加新测试时,可能没有现有目录来放置测试。在这种情况下,请参考下面的示例  cts/tests/tests/example 并创建一个新目录。此外,请务必从添加新包的模块名称  Android.mk ,以  CTS_COVERAGE_TEST_CASE_LIST 在  cts/CtsTestCaseList.mk。这个Makefile用于  build/core/tasks/cts.mk 将所有测试粘合在一起以创建最终的CTS包。

测试桩和实用程序

一些测试使用额外的基础设施,如单独的活动和各种实用程序来执行测试。这些位于  cts/tests/src 目录下。这些存根不会像测试一样分离成单独的测试APK,所以  cts/tests/src 目录没有额外的顶级目录,如“widget”或“view”。遵循将新类放入包中的相同原则,其名称与新类的目的相关。例如,用于测试OpenGL的存根活动  GLSurfaceViewStubActivity 属于   目录android.opengl.cts 下的  cts/tests/src/android/opengl包。

其他任务

除了增加新的测试,还有其他方法来贡献CTS:

  • 修复或删除用BrokenTest和KnownFailure注释的测试。

提交更改

按照  Android参与者的工作流程  提交对CTS的更改。审核人将被分配到您的更改,您的更改应该很快审核!


13,有关猴子的用法网上资源很多,具体见官方:http : //developer./guide/developing/tools/monkey.html                                                                                        

      1)monkey是一个android自带的命令行工具。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。

      2)方法
       在设备端打开设置界面
       $ adb shell 
         #monkey -p com.android.settings -v 500
  此时可以看到界面不断被切换

       重点是掌握相关的猴子的一些命令即可,在实践中把这些命令都试试常用即可。

         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/


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多