Android兼容性测试CTS --环境搭建、测试执行、结果分析

    为了确保Android应用可以在全部兼容Android的设备上正确运行,而且保持类似的用户体验,在每一个版本发布之时,Android提供了一套兼容性测试用例集合(Compatibility Test Suite, CTS)来认证运行Android系统的设备是否彻底兼容Android规范,并附带有相关的兼容性标准文档(Compatibility Definition Document, CDD)。html

    首先从http://source.android.com/compatibility/downloads.html(网络须要能进google)处下载最新的兼容性测试用例集合,并解压。如图1所示。java

         clip_image002_thumb[2]

图1 Android 官网中CTS测试环境下载等android

大部分是基于Junit和仪表盘技术编写的。还扩展了自动化测试过程,能够自动执行用例,自动收集和汇总测试结果。CTS采用XML配置文件的方式将这些测试用例分组成多个测试计划(plan),第三方也能够建立本身的plan。shell

CTS测试执以前要作的准备工做以下:bash

1. 下载兼容性测试用例包,并解压,解压后的文件名命名为“android-cts”。在http://source.android.com/compatibility/downloads.html页面的最下方,有一个名为“Compitibility Test Suite(CTS) User Manual”的连接,是最新版本的Android兼容性测试用例的执行方法,建议在执行以前先通读该文档。网络

2. 刷机为须要测试的版本。session

3. 手机开机时,若是有google帐户设置,取消便可:Start->Not now->Next->Next->Next->Finish。post

4. 设置手机语言为英语:Setting->Language&input->language->English(United States)。测试

5. 插入SIM卡和外置SD卡(SD卡须要格式化:Settings->Storage->Erase SD card->Erase SD card->Erase Everything)。ui

6. 插入USB,链接手机到电脑,能够用adb devices检查,是否正确链接。

7. 打开wifi, 并链接到可用wifi。

8. 打开蓝牙,无须配对。

9. 保证手机无操做30分钟后LCD off:Settings->Display->Sleep->30 minutes.

10. 去掉屏幕锁:Settings->Security->Screen Lock 的值是“None”.

11. 打开Settings->Location services->“Google location services”, ”GPS satellites”, ”Location & Google search”.

12. 打开Settings->Accessibility->Developer options->USB debugging(USB 调试).

13. 打开Settings->Accessibility->Developer options->Stay Awake(保持唤醒).

14. 打开Settings->Accessibility->Developer options->Allow mock location(容许模拟位置).

15. 经过Settings->Speech synthesis->Install voice data安装“Text To Speech”文件(com.svox.langpack.installer-1.apk), 假如android-cts/repository/testcases/中没有此文件,就省去这一步。

16. 若是须要执行可访问性方面的兼容性测试,则安装“CtsDelegatingAccessibilityService.apk”(adb install –r */android-cts/repository/testcases/ CtsDelegatingAccessibilityService.apk),并将Settings->Accessibility->Delegating Accessibility Service选项打开。假如m目录中没有此文件,就省去这一步,通常状况下是没有的。

17. 若是须要执行设备管理方面的兼容性测试,则安装“CtsDeviceAdmin.apk” (adb install –r */android-cts/repository/testcases/ CtsDeviceAdmin.apk),并将Setting->Security->Devices Administrators->android.devicesadmin.cts.CtsDevicesAdmin等选项打开。目录中必定会有这个文件的,请仔细查找,如图2所示。

clip_image004_thumb[1]

图2 CtsDeviceAdmin.apk

18. 若是须要执行多媒体方面的兼容性测试,则须要执行:

1)从http://source.android.com/compatibility/downloads.html 下载android- cts-media-X.Y.zip并解压。

2)进入解压后的文件夹,并执行bash copy_media.sh, 把测试所需文件copy到手机内存中,假如copy失败,多是手机路径不对,请用gedit打开copy_media.sh文件,同时adb shell进入手机终端,查看手机内存目录与copy_media.sh文件中的目录是否一致。若是不一致,请更改copy_media.sh文件,必须保证copy到手机内存(copy完以后能够打开gallery进行查看),不然会影响后边android.media等与media相关测试包的执行,如图3-一、图3-2所示。

clip_image006_thumb[1]

图3-1 Copy Media

clip_image008_thumb[1]

图3-2 Copy Media

19. 保证手机处于home界面,即按下“Home”键。

CTS测试正式开始:

1. 进入到“*/android-cts/tools”目录,执行bash cts-tradefed,先识别设备,以后出现cts_host >,则证实已进入CTS命令行交互界面,此时能够输入cts相关命令来执行cts测试了,如图4所示。

clip_image010_thumb[1]

图4 CTS命令行交互界面

2. 测试默认CTS,其中包括全部的packages,能够输入以下命令 :

run cts --plan CTS(这两次跑测试都用的这个,具体用哪一个,请咨询相关人员)

或者 run cts –disable -reboot --plan CTS (跑测试过程当中,手机不会reboot,这样能够方便接adb logcat),跑起来时先根据日期和时间建立测试结果的文件夹,而后出现“start test run of xx packages, containing xx tests”说明测试已经开始跑了,此时尽可能再多观察十分钟,出现“Installing prerequisites”而且以后有显示case pass,则确保cts确实开始run了,如图5所示。

clip_image012_thumb[1]

图5 run cts

CTS测试结果分析:

测试结束后在*/android-cts/respository/results文件夹中,会看到以日期和时间命名的文件夹用于保存执行过的测试结果,如图6-一、图6-2所示。

clip_image014_thumb[1]

图6-1 results

clip_image016_thumb[1]

图6-2 results

并且还有一个同名的zip文件保存一样的内容。测试过程当中的自动录log,测试结束后log自动保存在*/android-cts/respository/logs里边以日期和时间命名的文件夹中,如图7-一、图7-2所示。

clip_image018_thumb[1]

图7-1 logs

clip_image020_thumb[1]

图7-2 logs

在测试结果文件夹中,全部的测试结果是以XML的形式保存的。一般测试结果网页分红“Device Information”、“Test Summary”、“Test Summary by Package”、“Test Failures(xx)”和“Detailed Test Report”等四个区域。其中 “Device Information”中列出了被测设备具体的软硬件以及功能配置信息,如图8所示。

clip_image022_thumb[1]

图8 Device Information

“Test Summary”列出了CTS 版本号,各状态case个数等信息,如图9所示。

clip_image024_thumb[1]

图9 Test Summary

而“Test Failures(xx)”会将断言失败时的输出记录在内,如图10所示。

clip_image026_thumb[1]

图10 Test Failures

每次测试保证把CTS测试case所有跑完,用 “l r”查看,本次CTS测试是否所有run完,即not executed一列的数值是0,若是数值不为0,则表示还剩下没有run完的case,有多是手机冻结或者reset致使adb 识别不了设备,因此后边的case都为not executed状态,如图11-一、图11-2所示。

clip_image028_thumb[1]

图11-1 Not executed

clip_image030_thumb[1]

图11-2 Devices offline

这时须要从新链接手机,后使用命令“run cts --continue-session session_id” 就能够继续上面not executed的case了,session_id用命令l r就能够看见,如图12-一、图12-2所示。

clip_image032_thumb[1]

图12-1 查看Session ID

clip_image034_thumb[1]

图12-2 Continue not executed case

首先保证把整个case都run一遍,not executed数值为0。以后把“失败的测试用例”中的case run 三遍,排除手机系统稳定性尤为是手机reset和freeze致使的case fail。目标是肯定case fail是因为CTS case自己的问题,而不是任何别的因素。从新run fail的case时须要在上次所有run完的case上边新建测试计划,而后执行新建的测试计划。新建测试测试使用命令“add derivedplan --plan plan_name -s sessionID -r [pass/fail/notExecuted]” 添加一个新的plan,再用命令“run cts --plan plan_name”运行便可测试没测的项。如:

测试SessionID为2的全部fail项,输入命令应为:

>add derivedplan --plan cts_fail_1 -s 2 -r fail

>run cts --plan cts_fail_1 // cts_fail_1即前面定义的,能够本身随意起名字。

以后若是fail的仍是不少,建议作第三遍,就在cts_fail_1测试计划的基础上,再次新建和执行测试计划,假如用“l r”查看cts_fail_1测试计划的sessionID为3,则执行

>add derivedplan --plan cts_fail_2 -s 3 -r fail

>run cts --plan cts_fail_3

如图13所示。

clip_image036_thumb[1]

图13 Add derivedplan

三次run完以后会在*/android-cts/respository/results文件夹中生成三个以日期和时间命名的结果文件夹,把三次都失败的测试用例粘贴到excel表中进行汇总,并统计每一个测试包(package)中fail的case数量。

CTS测试部分经常使用命令,如图14。

clip_image038_thumb[3]

图14 Help

与host相关的部分经常使用命令:

help: CTS命令一览表

exit:退出cts终端

……

与run相关的部分经常使用命令:

run cts --plan test_plan_name: 执行一个测试计划

run cts --package/-p: 单独run cts测试中的一个包

run cts --class/-c [--method/-m]: run指定的类,或者具体到类中的方法

run cts --continue-session session_ID: 继续run指定session上状态为not executed 的case

run cts [option] --serial/-s device_ID: 在指定device_ID上run cts [option]

……

与java包相关的部分经常使用命令:

l/list d/devices: 列出全部链接的设备和设备的状态

l/list packages: 列出CTS全部的测试包

l/list p/plan: 列出CTS全部的测试计划

……

与测试计划相关的部分经常使用命令:

add derivedplan --plan plan_name --session/-s session_id –r [pass/fail/notExecuted/timeout]:从指定session id中根据case的各类状态产生一个新的测试计划

……

与option相关的命令:

run cts --disable-reboot [option]: 在测试过程当中不须要重启手机

CTS常见问题总结

1.若是测试结果显示android.media和android.mediastress两个packages中fail的case较多,并且查看details时,出现如图14所示的log,则是media没有copy进指定目录,此时也能够adb shell进去手机终端,在fail log路径下查看,是否有所需文件,我猜想必定是没有的。

clip_image040_thumb[1]

图14 media fail log

以后须要从新将指定文件copy到fail log中指定的目录,此时能够参考*/android-cts-media-1.1/ copy_media.sh文件中的各个push文件路径,如图15所示,尤为注意其中的internal_sd,这是是会根据手机版本有可能会变化的,若是变化,请根据变化更新脚本。

clip_image042_thumb[2]

图15 copy_media.sh

2.整轮测试跑完,若是须要rerun fail的case,在添加新的测试计划时出现如图16所示的状态。

clip_image044_thumb[1]

图16 已有同名plan

根据提示也能看出是已有相同名字的plan存在,此时能够换个name,或者去如图17所示目录中把相同名字的plan删除。

clip_image046_thumb[1]

图17 plan文件夹

3.若是测试过程当中须要跑指定的几个packages,而不是full CTS, 则可修改plan文件夹中的CTS.xml文件,如图18所示。

 

clip_image048_thumb[3]

图18 修改plan

CTS测试执行流程也能够参考如下博客:

 
想要了解更深层次的CTS,能够参考如下博客:
相关文章
相关标签/搜索