原标题:"利用CTS框架实现APP的自动化白盒测试"的相关电脑教程资料分享。- 191路由网编辑整理。
利用CTS框架实现APP的自动化白盒测试
CTS介绍
CTS是Compatibility Test Suite的简称,意为Google兼容性测试,手机设备需要通过CTS测试以保证在Android上开发的程序能够在手机设备上运行。手机厂商开发的手机需要向google提交CTS报告才能在市场上销售。
CTS工具可以在https://source.android.com/compatibility/cts/downloads.html下载。
下载完成以后解压
进入tools, 然后在终端敲入./cts-tradefed, 即可进入测试环境(JAVA JDK需正确安装)
tools目录:
其中,CTS依赖的tradefed-prebuilt.jar是以jar包形式释放的,是由tradefederation编译而来,源码可以在
https://android.googlesource.com/platform/tools/tradefederation/+/master下载。
执行命令run cts –plan CTS即可进行CTS整体测试。
测试完成以后,生成的log保存在android_cts/repository/logs目录下,结果保存在android_cts/repository/results目录下。
关于CTS更详细的设置和测试,请参考我的另一篇博客Google CTS测试指导。
关于CTS详细的框架解析,可参考
http://blog.csdn.net/column/details/itfootball-cts.html?&page=2
利用CTS实现APP自动化白盒测试
2.1 CTS 测试case组织
CTS测试的case非常多,涵盖了系统的方方面面,这些case主要是以apk和对应的xml文件来提供的。在android_cts/repository/testcases目录下可以看到。
Xml文件里面有详细的测试case:
测试某一类型的case的时候会先安装对应的apk,测试完成以后再卸载。
2.2 自动化白盒测试APP
基于CTS的case组织,由开发人员提供测试案例,我们可以使用CTS来实现APP的自动化白盒测试,比如Dialer, Email等(Dialer,Email等应用google已经提供了测试代码,比如Dialer:AOSP/packages/apps/Dialer/tests)
下面以Dialer为例说明: 1 修改packages/apps/Dialer/tests/Android.mk include $(BUILD_PACKAGE)=>include $(BUILD_CTS_PACKAGE)
这一步是为了生成测试apk对应的xml.
2 修改目录名 packages/apps/Dialer/tests=>packages/apps/Dialer/Dialer_tests 这一步主要是为了在xml里面生成的appPackagesName唯一,后面写自定义的plan的时候区分入口。
3 编译生成测试apk和xml文件
mmm packages/apps/Dialer/Dialer_tests
4 将生成的测试apk和xml拷贝到android_cts/repository/testcases目录下。
5 自定义plan
在android_cts/repository/plans目录下新建plan Jaychou.xml,编辑内容
6 执行测试
进入android_cts/tools/,在终端敲入./cts-tradefed, 执行Jaychou这个plan
run cts –plan Jaychou
结果提示如下错误:Could not find test apk Dialer.apk
这是CTS的流程要求安装被测试的apk Dialer.apk,但在testcases目录下没有找到这个apk所以报错。这里需要修改源码重新编译cts-tradefed.jar, 所以不能再直接使用解压出来的cts-tradefed.jar.
编译完本地的cts-tradefed.jar后替换掉tools目录下的。然后重新执行命令
run cts –plan Jaychou
7 查看报告
android_cts/repository/results/TIME/testResult.xml
从报告上可以看到具体的fail,结合log和源码进行分析
说明
本文所描述的方式是借用CTS来测试系统APP, 对CTS本身的框架代码改动较少,核心在于APP的测试代码如何写,需要APP开发人员具有良好的代码能力。通过这种方式可以使开发出来的APP更加稳定和健壮。