利用CTS框架实现APP的自动化白盒测试

利用CTS框架实现APP的自动化白盒测试

  1. CTS介绍

    CTS是Compatibility Test Suite的简称,意为Google兼容性测试,手机设备需要通过CTS测试以保证在Android上开发的程序能够在手机设备上运行。手机厂商开发的手机需要向google提交CTS报告才能在市场上销售。
    CTS工具可以在https://source.android.com/compatibility/cts/downloads.html下载。

    下载完成以后解压
    利用CTS框架实现APP的自动化白盒测试_第1张图片

    进入tools, 然后在终端敲入./cts-tradefed, 即可进入测试环境(JAVA JDK需正确安装)
    tools目录

    tools目录:
    利用CTS框架实现APP的自动化白盒测试_第2张图片
    其中,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框架实现APP的自动化白盒测试_第3张图片

    关于CTS更详细的设置和测试,请参考我的另一篇博客Google CTS测试指导。
    关于CTS详细的框架解析,可参考
    http://blog.csdn.net/column/details/itfootball-cts.html?&page=2

  2. 利用CTS实现APP自动化白盒测试

    2.1 CTS 测试case组织
    CTS测试的case非常多,涵盖了系统的方方面面,这些case主要是以apk和对应的xml文件来提供的。在android_cts/repository/testcases目录下可以看到。
    利用CTS框架实现APP的自动化白盒测试_第4张图片

    Xml文件里面有详细的测试case:
    利用CTS框架实现APP的自动化白盒测试_第5张图片

    测试某一类型的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)
    

    利用CTS框架实现APP的自动化白盒测试_第6张图片

    这一步是为了生成测试apk对应的xml.
    利用CTS框架实现APP的自动化白盒测试_第7张图片

    2  修改目录名
    packages/apps/Dialer/tests=>packages/apps/Dialer/Dialer_tests
    这一步主要是为了在xml里面生成的appPackagesName唯一,后面写自定义的plan的时候区分入口。
    

    这里写图片描述

3 编译生成测试apk和xml文件
mmm packages/apps/Dialer/Dialer_tests

利用CTS框架实现APP的自动化白盒测试_第8张图片

4 将生成的测试apk和xml拷贝到android_cts/repository/testcases目录下。
利用CTS框架实现APP的自动化白盒测试_第9张图片

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框架实现APP的自动化白盒测试_第10张图片

这是CTS的流程要求安装被测试的apk Dialer.apk,但在testcases目录下没有找到这个apk所以报错。这里需要修改源码重新编译cts-tradefed.jar, 所以不能再直接使用解压出来的cts-tradefed.jar.

编译完本地的cts-tradefed.jar后替换掉tools目录下的。然后重新执行命令
run cts –plan Jaychou
利用CTS框架实现APP的自动化白盒测试_第11张图片

7 查看报告
android_cts/repository/results/TIME/testResult.xml

利用CTS框架实现APP的自动化白盒测试_第12张图片

从报告上可以看到具体的fail,结合log和源码进行分析

  • 说明

    本文所描述的方式是借用CTS来测试系统APP, 对CTS本身的框架代码改动较少,核心在于APP的测试代码如何写,需要APP开发人员具有良好的代码能力。通过这种方式可以使开发出来的APP更加稳定和健壮。

你可能感兴趣的:(CTS)