Android CTS测试
? Android CTS測試
一、Android CTS測試簡介
CTS全稱Compatibility Test Suite兼容性測試工具,為了保證開發的應用在所有兼容Android的設備上正常運行,并保證一致的用戶體驗,Google制定了CTS來確保設備運行的Android系統全面兼容Android規范,Google也提供了一份兼容性標準文檔(Compatibility Definition Document,CDD)。當電子產品開發現來,并定制了自己的Android系統后,必須要通過最新的CTS檢測,以保證標準的android application能運行在該平臺上。通過了CTS驗證,需要將測試報告提交給Google,以取得android market的認證。CTS是一款 通過命令行操作的工具。目前CTS沒有提供windows版本,只能在Linux下測試。
二、Android CTS測試環境搭建
1.下載配置android-SDK linux版本,地址:
http://developer.android.com/sdk/index.html
2.jdk安裝配置
http://source.android.com/source/initializing.html
3.下載android-cts包,下載地址:
http://source.android.com/compatibility/downloads.html
需要根據手機系統版本和類型下載對應版本的cts包,否則將無法運行測試
大部分是基于Junit和儀表盤技術編寫的。還擴展了自動化測試過程,可以自動執行用例,自動收集和匯總測試結果。CTS采用XML配置文件的方式將這些測試用例分組成多個測試計劃(plan),第三方也可以創建自己的plan。
4.將android-sdk和android-cts解壓放置在同一個文件夾下
5.添加環境變量/etc/profile文件中
三、Android-CTS測試的幾個概念
在進行CTS測試之前,我們先理解其中幾個概念:
Test Plan(Plan):測試計劃,Test package的集合,每個Plan中都包含若干個測試包,以android-cts 2.2版本為例,總共有8個測試計劃:
??????? CTS:包含2萬多個測試用例,這些測試用例是檢驗兼容性必須的,性能測試不包含在本計劃中,隨版本的更新,本測試計劃也
???????????????????? 會更新。
??????? Signature:包含所有針對公有APIs的所有測試
??????? Android:包含針對android APIs的所有測試
??????? Java:包含所有針對Java核心library的測試
??????? VM:包含對虛擬機的所有測試
??????? RefApp:包含針對參與應用程序的所有測試,隨版本的更新,本測試計劃也會更新
??????? Performance:包含所有針對性能的測試,隨版本的更新,本測試計劃也會更新
??????? AppSerurity:針對Application安全性的測試
Test Package(Package):測試包,Test Case的集合
Test Case:測試用例,Test的集合
Test:測試,每一個測試對應一個或者多信Instrumentation Test
Instrumentation Test:Android測試環境的核心是一個Instrumentation框架,在這個框架下,你的測試應用程序可以精確控制應用程序。使用Instrumentation,你可以在主程序啟動之前,創建模擬的系統對象,如Context;控制應用程序的多個生命周期;發送UI事件給應用程序;在執行期間檢查程序狀態。Instrumentation框架通過將主程序和測試程序運行在同一個進程來實現這些功能。
Result_Type:CTS的測試可以通過命令查閱,也可以通過瀏覽器查看結果文件
命令查閱結果:其中Test Result有四種類型的值:Pass,Fail,Timeout,NoExecuted
瀏覽器查看testResult.xml,路徑:.../android-cts/repository/results/
CTS測試執行之前要做的準備工作如下:
PC端操作:
1.檢測設備是否連接上電腦
打開終端輸入命令:adb devices,連接上會顯示設備ID,如果端口被占用
$adb kill-server
$sudo adb start-server
$adb devices
2.設備端安裝CtsDelegatingAccessibilityService.apk
此包位于android-cts/repository/testcases下面。可以將安裝包拷貝到手機后安裝也可以通過打開終端輸入命令,安裝完成后設置進入手機設置菜單
Setting->Accessitility->Accessibility->DelegatingAccessibilityService
終端操作:
1.下載兼容性測試用例包,并解壓,解壓后的文件名命名為"android-cts"。
2.重置手機(恢復出廠設置)。
3.去年谷歌賬戶。
4.設置手機語言為英語:Setting->Language&input->language->English(United States)。
5.插入SIM卡和外置SD卡(SD卡需要格式化:Setting->Storage->Erase SD card->Erase SD card->Erase Everything)。
6.插入USB,連接手機到電腦,可以用adb devices檢查,是否正確連接。
7.打開wifi,并連接到可用wifi。
8.打開藍牙,無須配對。
9.保證手機無操作30分鐘后LCDoff:Settings->Display->Sleep->30 minutes。
10.去掉屏幕鎖:Settings->Security->ScreenLock的值是"None"。
11.打開Settings->Locationservices->"Google location services","GPS satellites","Location&Google search"。
12.打開Settings->Accessibility->Developeroptions->USB debugging(USB調試)。
13.打開Settings->Accessibility->Developeroptions->Stay Awake(保持喚醒)。
14.打開Settings->Accessibility->Developeroptions->Allow mock location(允許模擬位置)。
15.通過Settings->Speechsynthesis->Install voice data安裝“Text To Speech”文件(com.svox.langpack.installer-1.apk),假如android-cts/repository/testcases/中沒有此文件,就省去這一步。
16.如果需要執行可訪問性方面的兼容性測試,則安裝“CtsDelegatingAccessibilityService.apk”(adbinstall -r */android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk),并將Settings->Accessitility->DelegatingAccessibility Service選項打開。
17.如果需要執行設備管理方面的兼容性測試,則安裝“CtsDeviceAdmin.apk”(adb install -r */android-cts/repository/testcases/CtsDeviceAdmin.apk),并將Setting->Security->DevicesAdminstrators->android.devicesadmin.cts.CtsDevicesAdmin等選項打開。
TestCase里面包含很多的測試用例,可以全部測試,也可以只測試部分。
四、測試命令的執行
1.進入CTS測試環境
開啟終端輸入命令:startcts????????? //注意權限問題
如果權限不夠的話輸入:sudo ./startcts
輸入用戶密碼
當出現
Android CTS version 2.2_r1
Device(s5830f1133529) connected
cts_host > cts_host >
就代表已經進入CTS測試環境
2.CTS測試方法
? 查看測試計劃
? Ls --plan
? 查看測試包
? Ls -p
? 運行測試計劃
? start --plan [test_plan_name]
? 舉例:運行VM測試計劃
? 輸入命令:--plan VM
? 運行測試計劃下的測試包
? start --plan [test_plan_name]? -p/--package [plan_package_name]
? 舉例:運行Java計劃下的android.core.tests.archive測試包
? 運行測試計劃下測試包中的某個測試項
? Start --paln [test plan name] -t
? [plan_package_name].[class_name]#[plan_package_test_name]
? 舉例:運行Java計劃下android.core.tests.archive包下的test_tostring測試項
指定某個設備上運行摸個測試計劃中的測試包
start?--plan?[test_plan_name ]‐d/--device?[device_ID]?
舉例:指定設備ID號為1234567890ABCDEF運行VM測試計劃
?
?
?
?
??查看測試結果
?Ls –r
舉例:
?
?
?
?
?
??查看某個session的測試記錄
ls -r/--result -s/--session session_id
舉例: ls –r –s?3
?
3.CTS詳細命令
??Host:
?help: 查看幫助信息
???exit: 退出
? Plan:
??? ls--plan: 列出所有的測試包
??? ls--plan plan_name: 查看測試方案
??? add--plan plan_name: 新建一個測試方案
??? add--derivedplan plan_name -s/--session session_id -r/--resultresult_type:
?derive a plan from the givensession
??? rm--plan plan_name/all: remove a plan or all plans fromrepository
???start --plan test_plan_name: 運行一個測試方案
???start --plan test_plan_name -d/--device device_ID: run a test planusing the
?specified device
???start --plan test_plan_name -t/--test test_name: run a specifictest
???start --plan test_plan_name -p/--package java_package_name:運行一個特定的java測試包
???start --plan test_plan_name -t/--test test_name -d/--devicedevice_ID: 用指定的device運行一個特定的測試方案
???start --plan test_plan_name -p/--package java_package_name-d/--device devic
e_ID: run a specific java package using thespecified device
? Package:
??? ls-p/--package: list available packages
??? ls-p/--package package_name: list contents of the package withspecified na
me
??? add-p/--package root: add packages from root to repository
??? rm-p/--package package_name/all: remove a package or all packagesfrom repo
sitory
? Result:
??? ls-r/--result: list all result of sessions
??? ls-r/--result -s/--session session_id: list detail case result of aspecifi
ed session
??? ls-r/--result [pass/fail/notExecuted/timeout] -s/--sessionsession_id: list
?detail cases of a specifiedsession by the specified result.
? History:
???history/h: list all commands in command history
???history/h count: list the latest count records in commandhistory
???history/h -e num: run the command designated by 'num' in commandhistory
? Device:
ls -d/--device: list available devices
?
4.?Android-CTS用戶指南
網址:http://source.android.com/compatibility/downloads.html
總結
以上是生活随笔為你收集整理的Android CTS测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bash脚本截取字符串的两种方法
- 下一篇: android8.0应用图标适配调整_A