【转】Android兼容性测试CTS --环境搭建、测试执行、结果分析
原文网址:http://www.cnblogs.com/zh-ya-jing/p/4396918.html
为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体验,在每个版本发布之时,Android提供了一套兼容性测试用例集合(Compatibility Test Suite, CTS)来认证运行Android系统的设备是否完全兼容Android规范,并附带有相关的兼容性标准文档(Compatibility Definition Document, CDD)。
首先从http://source.android.com/compatibility/downloads.html(网络需要能进google)处下载最新的兼容性测试用例集合,并解压。如图1所示。
图1 Android 官网中CTS测试环境下载等
大部分是基于Junit和仪表盘技术编写的。还扩展了自动化测试过程,可以自动执行用例,自动收集和汇总测试结果。CTS采用XML配置文件的方式将这些测试用例分组成多个测试计划(plan),第三方也可以创建自己的plan。
CTS测试执之前要做的准备工作如下:
1. 下载兼容性测试用例包,并解压,解压后的文件名命名为“android-cts”。在http://source.android.com/compatibility/downloads.html页面的最下方,有一个名为“Compitibility Test Suite(CTS) User Manual”的链接,是最新版本的Android兼容性测试用例的执行方法,建议在执行之前先通读该文档。
2. 刷机为需要测试的版本。
3. 手机开机时,如果有google账户设置,取消即可:Start->Not now->Next->Next->Next->Finish。
4. 设置手机语言为英语:Setting->Language&input->language->English(United States)。
5. 插入SIM卡和外置SD卡(SD卡需要格式化:Settings->Storage->Erase SD card->Erase SD card->Erase Everything)。
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所示。
图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-1、图3-2所示。
图3-1 Copy Media
图3-2 Copy Media
19. 保证手机处于home界面,即按下“Home”键。
CTS测试正式开始:
1. 进入到“*/android-cts/tools”目录,执行bash cts-tradefed,先识别设备,之后出现cts_host >,则证明已进入CTS命令行交互界面,此时可以输入cts相关命令来执行cts测试了,如图4所示。
图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所示。
图5 run cts
CTS测试结果分析:
测试结束后在*/android-cts/respository/results文件夹中,会看到以日期和时间命名的文件夹用于保存执行过的测试结果,如图6-1、图6-2所示。
图6-1 results
图6-2 results
而且还有一个同名的zip文件保存同样的内容。测试过程中的自动录log,测试结束后log自动保存在*/android-cts/respository/logs里边以日期和时间命名的文件夹中,如图7-1、图7-2所示。
图7-1 logs
图7-2 logs
在测试结果文件夹中,所有的测试结果是以XML的形式保存的。通常测试结果网页分成“Device Information”、“Test Summary”、“Test Summary by Package”、“Test Failures(xx)”和“Detailed Test Report”等四个区域。其中 “Device Information”中列出了被测设备具体的软硬件以及功能配置信息,如图8所示。
图8 Device Information
“Test Summary”列出了CTS 版本号,各状态case个数等信息,如图9所示。
图9 Test Summary
而“Test Failures(xx)”会将断言失败时的输出记录在内,如图10所示。
图10 Test Failures
每次测试保证把CTS测试case全部跑完,用 “l r”查看,本次CTS测试是否全部run完,即not executed一列的数值是0,如果数值不为0,则表示还剩下没有run完的case,有可能是手机冻结或者reset导致adb 识别不了设备,所以后边的case都为not executed状态,如图11-1、图11-2所示。
图11-1 Not executed
图11-2 Devices offline
这时需要重新连接手机,后使用命令“run cts --continue-session session_id” 就可以继续上面not executed的case了,session_id用命令l r就可以看见,如图12-1、图12-2所示。
图12-1 查看Session ID
图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所示。
图13 Add derivedplan
三次run完之后会在*/android-cts/respository/results文件夹中生成三个以日期和时间命名的结果文件夹,把三次都失败的测试用例粘贴到excel表中进行汇总,并统计每个测试包(package)中fail的case数量。
CTS测试部分常用命令,如图14。
图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路径下查看,是否有所需文件,我猜测一定是没有的。
图14 media fail log
之后需要重新将指定文件copy到fail log中指定的目录,此时可以参考*/android-cts-media-1.1/ copy_media.sh文件中的各个push文件路径,如图15所示,尤其注意其中的internal_sd,这是是会根据手机版本有可能会变化的,如果变化,请根据变化更新脚本。
图15 copy_media.sh
2.整轮测试跑完,如果需要rerun fail的case,在添加新的测试计划时出现如图16所示的状态。
图16 已有同名plan
根据提示也能看出是已有相同名字的plan存在,此时可以换个name,或者去如图17所示目录中把相同名字的plan删除。
图17 plan文件夹
3.如果测试过程中需要跑指定的几个packages,而不是full CTS, 则可修改plan文件夹中的CTS.xml文件,如图18所示。
图18 修改plan
CTS测试执行流程也可以参考以下博客:
【转】Android兼容性测试CTS --环境搭建、测试执行、结果分析的更多相关文章
- Android兼容性测试CTS --环境搭建、测试执行、结果分析
为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体验,在每个版本发布之时,Android提供了一套兼容性测试用例集合(Compatibility Test S ...
- android测试开发环境搭建
本文档针对未接触过android的0基础人员,在开始熟悉android之前,首先需要一个学习环境来支撑,在此简单介绍一下android环境搭建.(当然大家也可以百度.谷歌,类似的文档很多) 环境搭建: ...
- 大数据基础-2-Hadoop-1环境搭建测试
Hadoop环境搭建测试 1 安装软件 1.1 规划目录 /opt [root@host2 ~]# cd /opt [root@host2 opt]# mkdir java [root@host2 o ...
- Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试
标签:Linux 域名 Nginx 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xpleaf.blog.51cto.com/9 ...
- Android下OpenCV的环境搭建
目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基 ...
- android Jni NDK开发环境搭建及其简单实例的编写
android Jni NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...
- 一、Android学习第一天——环境搭建(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第一天——环境搭建 Android 开发环境的搭建 ...
- Android NDK r8 windows环境搭建
Android NDK r8 windows环境搭建 一.默认基础环境为已经完成Android开发环境的搭建 需要的软件及插件 1. JDK-7u25 2. Eclipse 3. Android SD ...
- android 5.0开发环境搭建
Android 5.0 是 Google 于 2014 年 10 月 15 日发布的全新 Android 操作系统.本文将就最新的Android 5.0 开发环境搭建做详细介绍. 工具/原料 jdk- ...
随机推荐
- Codeforces Round #272 (Div. 1) Problem C. Dreamoon and Strings
C. Dreamoon and Strings time limit per test 1 second memory limit per test 256 megabytes input stand ...
- mysql 获取当前时间戳
mysql 获取当前时间为select now() 运行结果: 2012-09-05 17:24:15 mysql 获取当前时间戳为select unix_timestamp(now()) 运行结 ...
- eclipse指定启动时的jdk(xjl456852原创)
在eclipse安装目录中找到eclipse.ini 在第一行配置(即可启动按指定版本的jdk启动eclipse): -vm D:\soft\Java\jre8\bin\server\jvm.dll ...
- SecureCRT 安装及初始化配置
安装 SecureCRT 7.3.4 安装以及破解方法 SecureCRT 6.5.0 汉化解压版 初始化配置 这里配置以SecureCRT 6.5.0 汉化解压版为例 1.调整SecureCRT终端 ...
- C++关键字之const
C++的const关键字一直让我很乱,这里把const关键字在程序中常用的三个地方分别总结出来: 1. 通过指针或引用访问普通变量 2. 通过对象调用成员函数,通过成员函数访问成员变量 3. 通 ...
- 【hoj】1604 cable master
简单,二分法,可是在oj上交的时候会有精度的限制,所以仅仅能把数扩得大一点,并且在扩的时候为防止尾数会自己主动生成一些非零数,所以还是自己吧扩到的位置设置为0,还有输出时由于%.2lf会自己有4设5入 ...
- PowerDesigner与UML建模应用
一. PD简介 PowerDesigner 是一个集所有现代建模技术于一身的完整工具,它集成了强有力的业务建模技术.传统的数据库分析和实现,以及UML对象建模.通过了元数据的管理.冲突分析和真正的 ...
- FFT与多项式、生成函数题目泛做
题目1 COGS 很强的乘法问题 高精度乘法用FFT加速 #include <cstdlib> #include <iostream> #include <algorit ...
- 翻译一篇SpiderMonkey GC的文章
前言 这篇文章包含了对SpiderMonkey中Rooted<T>, Handle<T>的解释. 翻译自 https://developer.mozilla.org/en-US ...
- C#界面设计疑问
1.就是想做一个类似下面界面的窗体,上面一排按键,点击一个下面对应改变一次界面的内容,这是如何实现的呢 ...是不是通过,比如这里有四个按键,然后使用4个大小相同的面板,每个面板内容不同.按一个按键, ...