CTS深入分析.docx

上传人:b****5 文档编号:11755792 上传时间:2023-03-31 格式:DOCX 页数:33 大小:1.34MB
下载 相关 举报
CTS深入分析.docx_第1页
第1页 / 共33页
CTS深入分析.docx_第2页
第2页 / 共33页
CTS深入分析.docx_第3页
第3页 / 共33页
CTS深入分析.docx_第4页
第4页 / 共33页
CTS深入分析.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

CTS深入分析.docx

《CTS深入分析.docx》由会员分享,可在线阅读,更多相关《CTS深入分析.docx(33页珍藏版)》请在冰豆网上搜索。

CTS深入分析.docx

CTS深入分析

CTSStudy

1.CTS简介

CTS全称CompatibilityTestSuite兼容性测试工具。

当电子产品开发出来,并定制了自己的Android系统后,必须要通过最新的CTS检测,以保证标准的androidapplication能运行在该平台下。

通过了CTS验证,需要将测试报告提交给Google,已取得androidmarket的认证。

CTS是一款通过命令行操作的工具。

目前cts没有提供windows版本,只能在Linux下测试。

在我们实际使用CTS的过程中,很可能需要根据特定的要求,来定制自己的TestPlan。

这时就需要自己编译CTS,因此,本文主要向大家介绍如何编译CTS,及使用编译出的CTS工具。

至于从android官网上取得的CTS,其使用方式与我们自己编译的工具类似,本文只做简单介绍。

2.获取CTS工具

假定Developer之前已经搭建好,linux环境。

以下操作均在linux下进行。

由于google的原因,Android2.3Gingerbread中的CTS是不完整的,所以我们选择Android2.2Froyo的CTS作为本文的研究对象。

以下附上Google的回复:

Theoretically,CTSforGingerbreadshouldbebuiltthesamewayasforFroyo.

However(andthisisimportant),pleasenotethattheCTSversion

that'scurrentlyinthegingerbreadbranchisincomplete.We're

workingonthat,butthelongholidaybreakshavemadeprogressslower

thanusual.

从回复中看,Gingerbread中CTS的编译过程和Froyo是一样的,命令使用方法是一样的。

我猜测,有可能在Gingerbread中加入了一些新的测试,毕竟android对硬件的要求是越来越高了,从CDD可以看出。

2.1下载编译源码获取CTS工具

2.1.1下载

git下载的android源码里包含cts,位置在/cts目录下(android2.1以后版本)

如果没有也可以从此处下载git:

//android.git.kernel.org/platform/cts.git(源码70M左右)

2.1.264bitSystem步骤

我们一般配置的是32bit系统,没有对64bitsystem操作CTS做详细研究,仅仅从网上摘抄CTS工具编译步骤。

●64bitSystem

在Linux下进入android源码根目录,输入以下命令:

$build/envsetup.sh

$makects

此时生成测试计划,测试包,测试用例,和测试报告生成的目录

2.1.332bitSystem步骤

●32bitSystem

修改默认的Java环境:

sudoapt-getinstallsun-java6-jdk

sudoupdate-java-alternatives-sjava-6-sun

修改以下文件:

◆\external\clearsilver\java-jni\Android.mk

◆\external\clearsilver\cgi\Android.mk

◆\external\clearsilver\cs\Android.mk

◆\external\clearsilver\util\Android.mk

将m64改为m32

◆\build\core\main.mk

将64改为i686

◆/build/core/tasts/cts.mk

◆/out/host/linux/cts/android-cts/tools/startcts

◆/development/testrunner/test_defs/host_test.py

◆/cts/tools/utils/startcts

将DDMS_LIB=ddmlib.jar改为DDMS_LIB=ddmlib-prebuilt.jar

或者编译完成后,在\out\host\linux-x86\framework目录下输入linux命令:

cpddmlib-prebuilt.jarddmlib.jar这样比较方便。

方法比较多,只要保证让脚本找到所需的jar文件。

编译:

在Linux下进入android源码根目录,输入以下命令:

$chmod777build/envsetup.sh

$build/envsetup.sh

$makects

此时生成测试计划,测试包,测试用例,和测试报告生成的目录,

编译好cts后生成的文件位置如下:

#mydroid/out/host/linux-x86/

在该目录下包含如下测试文件

◆PackageCTS:

out/host/linux-x86/cts/android-cts.zip

◆ctsmakefile:

mydroid/build/core/tasks/cts.mk

◆runctsprogram:

mydroid/out/host/linux-x86/bin/cts

◆testplans:

mydroid/out/host/linux-x86/cts/android-cts/repository/plans

◆testpackages:

mydroid/out/host/linux-x86/cts/android-cts/repository/testcases

◆testresults:

mydroid/out/host/linux-x86/cts/android-cts/repository/results

◆CTSprogramsettingsvalue:

mydroid/cts/tools/utils/host_config.xml

配置Framework环境变量:

exportANDROID_ROOT=/[MyAndroid]/out/host/linux-x86

2.2下载gongle发布的CTS工具

点击Android2.2R4CompatibilityTestSuite(CTS)下载CTS工具

现在Google最新发布的CTS工具是android2.2froyo本版的,以后可以针对需要下载对应的CTS版本。

3.使用

3.1修改环境变量

3.1.1编译的CTS

CTS和androidSDK工具目录如下:

/out/host/linux-x86/bin

/android-sdk-linux_86/platform-tools

/android-sdk-linux_86/tools

将CTS工具路径和androidSDK工具路径加入环境变量,在linux下输入以下命令:

Øenv

查阅原有环境变量,其中环境变量PATH的值为:

PATH=/home/hanqigcxy/bin:

/usr/local/sbin:

/usr/local/bin:

/usr/sbin:

/usr/bin:

/sbin:

/bin:

/usr/games:

/home/hanqigcxy/bin:

ØexportPATH=/home/hanqigcxy/bin:

/usr/local/sbin:

/usr/local/bin:

/usr/sbin:

/usr/bin:

/sbin:

/bin:

/usr/games:

/home/hanqigcxy/bin:

/home/hanqigcxy/android-source/out/host/linux-x86/bin:

/home/hanqigcxy/android-sdk-linux_86/platform-tools:

/home/hanqigcxy/android-sdk-linux_86/tools

将CTS和androidSDK工具目录加入到环境变量中,如上红色部分所示。

注意要求输入完整路径,各路径以分号间隔。

3.1.2Goole发布的CTS

如果使用的是Google发布的CTS工具路径为:

CTS和androidSDK工具目录如下:

/android-cts/tools

/android-sdk-linux_86/platform-tools

/android-sdk-linux_86/tools

将CTS工具路径和androidSDK工具路径加入环境变量,在linux下输入以下命令:

Øenv

查阅原有环境变量,其中环境变量PATH的值为:

PATH=/home/hanqigcxy/bin:

/usr/local/sbin:

/usr/local/bin:

/usr/sbin:

/usr/bin:

/sbin:

/bin:

/usr/games:

/home/hanqigcxy/bin:

ØexportPATH=/home/hanqigcxy/bin:

/usr/local/sbin:

/usr/local/bin:

/usr/sbin:

/usr/bin:

/sbin:

/bin:

/usr/games:

/home/hanqigcxy/bin:

/home/hanqigcxy/android-cts/tools:

/home/hanqigcxy/android-sdk-linux_86/platform-tools:

/home/hanqigcxy/android-sdk-linux_86/tools

将CTS和androidSDK工具目录加入到环境变量中,如上红色部分所示。

注意要求输入完整路径,各路径以分号间隔。

Ø进入/out/host/linux-x86/cts/android-cts/repository/tools目录下,修改startcts脚本文件。

将脚本中的SDK_ROOT该成自己的androidSDK路径。

$cd/home/hanqigcxy/Downloads/android-cts/tools$vimstartcts

修改脚本中出现的第一个SDK_ROOT,如:

"SDK_ROOT=/home/hanqigcxy/android-sdk-linux_86"。

注意:

启动CTS的时候,应该输入startcts。

3.1.3将环境变量写入系统

上面配置环境变量使用Linux命令:

export

使用该命令设定的环境变量仅仅对当前的shell有效。

如果用户再开启一个shell,那么需要再次设定环境变量。

这是使用export命令的局限。

但是最大的好处就是保证的系统的纯净,每次操作仅仅对当前有效。

下面提供一种将环境变量写入配置文件的方法。

户用不必每次启动Shell后,都要设定环境变量:

Step1:

输入命令,切换到root权限:

Øsu

输入password回车

Step2:

进入用户文件夹,编辑.bashrc文件,例如在ubuntu下我有一个用户hanqigcxy

Øcd/home/hanqigcxy

Øls-al

Øvim.bashrc

Ø修改exportPATH=$PATH:

$HOME/bin:

为:

exportPATH=$PATH:

$HOME/bin:

/home/hanqigcxy/android-source/out/host/linux-x86/bin:

/home/hanqigcxy/android-sdk-linux_86/platform-tools:

/home/hanqigcxy/android-sdk-linux_86/tools

Step3:

启动系统

Øreboot–n

3.2连接设备

3.2.1模拟器测试

由于我们只需要用模拟器来模拟设备,因此不必搭建完整的linux下android开发环境。

仅需要下载AndroidSDK并安装。

见以下步骤:

◆安装AndroidSDK

Step1:

点击下面链接,进入下载页面

Step2:

点击android-sdk_r08-linux_86.tgz下载SDK

Step3:

解压后文件目录

Step4:

添加环境变量,在linux下输入以下命令

exportPath=………….:

/home/hanqigcxy/android-sdk-linux_86/tools

其中省略号代表环境变量Path原来的值,对系统原有的环境变量不能删除,仅仅在末尾加入一个新的换进变量路径即可。

/home/hanqigcxy/android-sdk-linux_86/tools为android-sdk-linux_86/tools目录的全称,根据用户解压路径来定,修改的值可通过右键------属性来查阅。

Step5:

输入以下命令,开启androidSDKandAVDManagerment

$android

Step6:

设定代理

Step7:

选定需要安装的插件

◆创建AVD

◆启动模拟器

$emulator-avdCTS

◆启动连接

再开启一个Shell,输入以下命令:

$adbstart-server

$cts

如果连接成功将显示一下提示:

AndroidCTSversion2.2_r1

Device(emulator-5554)connected

cts_host>cts_host>

3.2.2Device测试

(网络资源加自己的推测,需要设备做验证)

◆在手机上安装CtsDelegatingAccessibilityService.apk

$sudoadbinstall-r

………………………………………………./out/host/linux-x86/cts/android-cts/repository/testcases/CtsD

elegatingAccessibilityService.apk

省略号代表CtsDelegatingAccessibilityService.apk所需要的完整路径

◆设置手机

Settings->Accessibility->两个选项都选上;Settings>Application>Development三个选项都选上;Settings>Sound&Display>ScreenTimeoutshouldbesetto"NeverTimeout";

◆修改脚本

exportPath=………….:

/home/hanqigcxy/android-sdk-linux_86/tools

其中省略号代表环境变量Path原来的值,对系统原有的环境变量不能删除,仅仅在末尾加入一个新的换进变量路径即可。

/home/hanqigcxy/android-sdk-linux_86/tools为android-sdk-linux_86/tools目录的全称,根据用户解压路径来定,修改的值可通过右键------属性来查阅。

◆启动连接

再开启一个Shell,输入以下命令:

$adbstart-server

$cts

如果连接成功将显示一下提示:

AndroidCTSversion2.2_r1

Device(emulator-5554)connected

cts_host>cts_host>

 

題目1:

CTS在手機上的測試步驟?

(測試機HTCG7)

Step1.通過USB連接手機和PC

Step2.調整HTCG7USB的連接方式為【HTCsync】,使G7允許USB調試。

上述操作後,自動彈出以下界面

Step3.在Linux下輸入以下命令:

切換到root權限

hanqigcxy@ubuntu:

~$sudo-s

[sudo]passwordforhanqigcxy:

root@ubuntu:

~#adbkill-server

root@ubuntu:

~#adbdevices

顯示以下結果

Step4.安裝CtsDelegatingAccessibilityService

root@ubuntu:

~#adbinstall-r/home/hanqigcxy/android-source/out/host/linux-x86/cts/android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk

顯示以下結果

Step5.配置手機

可能根据不同的手機,設定也会不一樣,例如網上的例子要求

Settings->Accessibility->两个选项都选上;

Settings>Application>Development三个选项都选上;

Settings>Sound&Display>ScreenTimeoutshouldbesetto"NeverTimeout";

HTCG7的實際設定:

在Step2.中選擇【保持喚醒狀態選項】

進入設置>應用程序>開發把三个选项都选上;

進入設置>輔助功能把兩個選項都選上

总之不管什么设备,需保证一下几点:

1.設備的默認連接為USB調式,不能為USB充電或者USB磁盤驅動器

2.設定設備始終為喚醒狀態

3.設定權限,保證Host端操作無阻礙。

Step開啟CTS工具進行CTS測試

題目2adb如何知道設備被接入?

adbusb-restartstheadbddaemonlisteningonUSB

會有一個監聽USB的daemon,當設備通過USB介入後,可以做判斷。

connect[:

]-connecttoadeviceviaTCP/IP

另外還有一通過TCP/IP的接入方法。

模擬器應該是採用此方法連接。

下圖,是我同時開啟模擬器和HTCG7後,調用adb查看的設備列表

當一台PC機上連接有多個設備時(例如多個android手機),CTS可以指定在特定的設備中運行,但需要保證,同一時間是有一個設備上在運行CTS,

並且CTS內部也有單例模式。

保證一個Host端,只能運行一個CTS。

題目3:

CTS測試需要多少時間?

Host:

Ubuntu10.04(虛擬機上運行)

Client:

HTCG7

報錯:

Log信息如下,也可見附件

CTS_DEBUG>>>1295313461352markmNeedRestartAdbServertotrue

CTS_DEBUG>>>1295313461353NeedrestartADBserver

CTS_INFO>>>MaxADBoperationsreached.RestartingADB...

CTS_DEBUG>>>1295313461461deviceHC09MPL00642changedwithchangeMask=4

CTS_DEBUG>>>1295313461461Devicestate:

ONLINE

Device(HC09MPL00642)connected

CTS_DEBUG>>>1295313461617deviceHC09MPL00642changedwithchangeMask=2

CTS_DEBUG>>>1295313461621Devicestate:

ONLINE

CTS_INFO>>>Restartingdevice...

TS_INFO>>>Restartingdevice...

CTS_DEBUG>>>1295315511400executeCommand():

cmd=adb-sHC09MPL00642reboot

CTS_DEBUG>>>1295315528900deviceHC09MPL00642changedwithchangeMask=2

CTS_DEBUG>>>1295315528902Devicestate:

ONLINE

Device(HC09MPL00642)disconnected

分析:

錯誤出現在ADB操作超過了最大限制,必須重啟ADB

之後手機自動重啟,重新啟動後,CTS測試失敗。

嘗試修改CTS的配置文件host_config.xml中的參數

--Numberoftestsexecutedbetweenreboots.Avalue<=0disablesreboots.-->

防止手機重啟。

結果失敗

網上的解答是,USB驅動出現問題,要完成測試需要做修改,我判斷是HTC修改了USB驅動,限制了通過USB進行調試。

過多的adb命令將到時重啟

我分析不像是這個原因,有個能是廠商對USB調式做了限制,或者是adb內部有問題下面用模擬器驗證一下

用模擬器進行了CTS完成測試:

創建了性模擬器,包含了所有可模擬的硬件:

結果:

用了一天时间,發現CTSPlan仍然没有完整的执行完毕。

但是单独执行CTS中的某一package确实比较快,分别执行CTS包含的52个package。

每個平均耗時10-15分鐘

以此計算,9-13小時可以完成測試

分析:

1.為什麼執行完整的CTSplan會如此耗時?

主要原因是,CTSPlan的测试过程中,adb总会出现以下几个问题:

MaxADBoperationsreached.RestartingADB...造成设备多次重启

InstallingmettimeoutduetoUnknownreason.造成某个apk总是安装不上,就卡在哪里不停的重新安装,当到时adb操作超过上限时,测试机重启

UninstallingmettimeoutduetoUnknownreason.造成某个apk总是卸载不了,就卡在哪里不停的重新卸载,当到时adb操作超过上限时,测试机重启

2.為什麼執行單個package時間也不短?

首先,執行單個package,重複使用adb的命令的次數少,出現問題1的概率小,不會造成adb出問題

那麼主要原因因該是:

在WIN7系統上用虛擬機跑linux。

這樣host端(linux)和clien端(AndroidAVD)都運行在虛擬機上。

硬件的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1