CTS
Cts的目的:
让APP提供更好的用户体验。用户可以选择更多的适合自己设备的APP。让APP更稳定。让开发者设计更高质量的APP。
通过CTS的设备可以运行Android market。
得到cts有2个方法:
1、编译源码得到cts 路径为:源码目录/out/host/linux-x86/cts/
2、从网上下载cts 路径为:你下载的目录
CTS步骤:(以i600w为例)
准备工作:
①、CTS工具
编译得到cts
1、从远程上拉i600w代码
2、进入目录cd MSM8x25-ICS-AP
3、初始化编译环境:source build /envsetup.sh
4、选择编译策略:choosecombo 1 18 3
5、编译cts:make cts
②、配置adb环境
③、测试对象(模拟器和真机都行)
1、进入settings->Privacy->Factorydata reset,对平台进行reset一次
2、平台插入一张空的TF卡
3、平台安装两个APK:CtsDelegatingAccessibilityService.apk,CtsDeviceAdmin.apk
4、进入settings打开Wi-Fi并连接AP (AP需要连外网)
5、进入settings->Security->Screenlock设为None
6、进入settings->Security->EnableUnknown sources
7、进入settings->Security->Deviceadministrators->Enable两个选项
8、进入Language&input->language设为English(UnitedStates)
9、进入settings->Display->Sleep设为30minutes或None
10、进入settings->Accessibility->EnableDelegating Accessibility Service
11、进入settings->Developeroptions->Enable USB debugging、Stay awake、Allowmock
locations
12、PC上copy“android-cts-media-1.0”,在android-cts-media-1.0文件下输
入./copy_copy_media.sh运行脚本,将media文件copy进平台。成功后会在平台的内存中看到test文件夹。(此条适用于CTS4.0 R2和R3,R1上无需使用)(此问题暂时没有弄清楚)
以上准备工作完成后,开始测试:
1、进入cts所在的目录:
cd MSM8x25-ICS-AP /out/host/linux-x86/cts/android-cts/tools/
2、运行cts-tradefed文件
./ cts-tradefed
3、测试:
run cts -p packageName
CTS测试结果
CTS 运行后会产生一测试报告,测试报告以开始的日期+时间命名。一般只要查看testresult.xml文件就可对测试结果进行分析。由于CTS 测试所需要花费的时间比较长,当对测试进行调试时可针对的进行测试,可节约大量时间。以下介绍几种常用的方法:
a.查看整体测试概览--打开testresult.xml (Test Summary by Package)
b.查看具体测试包测试用例执行情况--点击某个test package
c.测试fail项查看失败细节
d.测试调试
首先确定是哪个测试包出现失败,然后针对该测试包进行重新测试:
adb install .../android-cts/package.apk
adb shell pm list instrumentaion (pm用于管理package,看当前设备安装了什么用例) adb shell am instrument -w android.tests.sigtest/.InstrumentRunner (am用于管理activity, 启动指定的测试用例)
e.定位某个测试失败项进行单独运行
run cts --class [class name] --method [method name]
注意:可在测试报告中找到对应的class name , method name
CTS命令
CTS4.0的命令和CTS2.3/2.3完全不同,所以在进入CTS后,先输入help看看命令的格式和意思。
运行cts-tradefed
查下help
查看测试计划:l/list plans
查看测试包:l/list packages
运行测试计划:run cts --plan Signature
运行测试计划下的测试包:run cts --package android.theme
指定某个设备上运行某个测试计划中的测试用例:run cts --serial Medfield6DA2B702 --plan Signature (暂时未验证)
指定某个类的某个方法: run cts -c android.hardware.cts.SensorTest -m testSensorOperations CTS Test Plan
1)Test Plan:测试计划,Test Package的集合,每个Plan 中都包含若干个测试包。eg.
CTS:包含2万多个测试用例,这些测试用例是检验兼容性必须的,性能测试不包含在本计划中,随版本的更新,本测试计划也会更新;
Signature:包含所有针对公有APIs的署名测试;
Android:包含针对android APIs的所有测试;
Java:包含所有针对java核心library的测试;
VM:包含对虚拟机的所有测试;
RefApp:包含针对参与应用程序的所有测试,随版本的更新,本测试计划也会更新;Performance:包含所有针对性能的测试,随版本的更新,本测试计划也会更新;AppSecurity:针对Application安全性的测试;
2)Test Package:测试包,Test Case的集合
3)Test Case:测试用例,Test的集合
4)Test:测试,每一个测试对应一个或者多个Instrumentation Test
5)Instrumentation Test:Android 测试环境的核心是一个Instrumentation框架,在这个框架下,低估的测试应用程序可以精确控制应用程序。使用Instrumentation,你可以在主程序启动前,创建模拟的系统对象,如Context;控制应用程序的多个生命周期;发送UI事件给应用程序;在执行期间检查程序状态。Instrumentation框架通过将主程序和测试程序运行在同一个进程来实现这些功能;
增加一个测试用例:
增加一个应用的测试用例以Camera为例
1、先寻找到app所在的目录 MSM8x25-ICS-AP/packages/apps/ CameraTests
再将其中包含的tests文件中的文件复制到目标文件中
cp –a MSM8x25-ICS-AP/packages/apps/ Camera/tests
MSM8x25-ICS-AP/cts/tests/tests/CameraTests
cp [选项] 源文件或目录目标文件或目录说明 该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
2、再寻找android.mk文件。
目录为:MSM8x25-ICS-AP/cts/tests/tests/CameraTests/Android.mk
修改文件如下图:
3、寻找cts.mk文件。目录为:MSM8x25-ICS-AP/build/core/tasks/cts.mk
修改文件如下:
4、寻找ctsTestCaseList.mk文件。目录为:MSM8x28-ICS-AP/cts/tools/ctsTestCaseList.mk
修改文件如下:(在文件中加入标记部分)
4、重新编译cts,
make cts
编译完毕,键入:list packages 可以看到有android.CameraTests 。
然后就可以运行新增用例了。
run cts -p android.CameraTests
或者
run cts –plan CameraTests
上述的情况,可以看到截图上有个could not find test apk Camera.apk。这个问题目前解决了(把源码中生成的apk copy到testCases下),这样就能找到apk了。但是不理解的是,为什么make cts的时候,不能生成apk 。正在努力解决中…
继续测试未完成的计划
CTS4.0对未完成的测试计划不会生成xml报告,这个和CTS2.3/2.2不同。但是,这并不意味测试中断后无法继续未完成的测试。
1、前提条件:有未完成的测试计划
2、输入cd MSM8x25-ICS-AP /out/host/linux-x86/cts/android-cts/tools/ (这个是cts-tradefed文件所在路径,各位需要输入实际路径)
3、输入./cts-tradefed
4、输入l r
注意:是小写字母l,不是阿拉伯数字1;
(根据start time时间,确定你要的任务的session编号)
5、输入run cts –continue-session session_id(session编号)
add derivedplan –plan plan_name –s sessionID –r fail/notExecuted/timeout