CTS 测试细节

来源:互联网 发布:歌词改编软件 编辑:程序博客网 时间:2024/06/06 18:32

一.说到细节,首先介绍一下流程。然后再从流程的项目来讲。

(现在假设Host端环境已经架设好,准备进行测试,基本流程如下)

Created with Raphaël 2.1.0https://source.android.com/compatibility/?hl=zh-cn开始https://source.android.com/compatibility/?hl=zh-cn1.确认目标Image2.下载并解压缩目标Image3.可以正常开机?4.基本功能正常?5.进行手机环境准备6.确保USB连接正常7.Host输入命令,运行CTS测试8.等待生成CTS报告9.报告结果符合预期?11.发出CTS报告http://www.google.comEndhttp://www.google.com10.调试环境,进行retryyesnoyesnoyesno

二.下面根据流程,来分析细节


1. 确认目标Image

这个来源比较多。可以是:
- 上级安排
- 定期测试
- 有特定的change需要验证
- 等等
可以根据来源不同,来判断优先级。


2.下载,并解压缩目标Image

这个没有太多好说的,主要注意以下两条:
- 不同项目的Image,最好放在不同的文件夹下,避免混淆
- Image 一般比较大,最好准备1T以上的硬盘


3.可以正常开机?

由于有些版本的Image,自身问题。
导致:开机卡logo;开机进fastboot;卡机进android无限重启等现象。
如果无法正常开机,就需要先debug,再换版测试。


4.基本功能正常?

在项目初期进行测试的时候,容易出现基本功能,比如Bluetooth,WiFi,Camera等功能不可用的情况。
刷完机后,最好进行基本功能验证后再测试。
如果有问题,就再换版测试。

5.进行手机环境准备


这个前面提过,官方写的非常详细。我粘贴一下:

Android设备设置


  1. 工厂数据重置设备:设置>备份和重置>出厂设置复位
    警告:这将清除设备中的所有用户数据。
  2. 将设备的语言设置为英语(美国):设置>语言和输入>语言
  3. 如果设备上有GPS或Wi-Fi /蜂窝网络功能,请打开位置设置:设置>位置>开
  4. 连接到支持IPv6的Wi-Fi网络,可以将被测设备(DUT)视为隔离客户端(请参阅上面的物理环境部分),并具有Internet连接:设置> Wi-Fi
  5. 确保设备上没有设置锁定模式或密码:设置>安全性>屏幕锁定>无
  6. 在设备上启用USB调试:设置>开发人员选项> USB调试。
    * 注意:在Android 4.2及更高版本上,默认情况下隐藏开发人员选项。要使它们可用,请转到设置>关于手机,然后点击构建号码 七次。返回上一个屏幕以查找开发人员选项。有关其他详细信息,请参阅启用设备上开发人员选项。*
  7. 确保时间设置为12小时格式:设置>日期和时间>使用24小时格式>关闭
  8. 选择:设置>开发人员选项>保持清醒>打开
  9. 选择:设置>开发人员选项>允许模拟位置>打开
    注意:此模拟位置设置仅适用于Android 5.x和4.4.x.
  10. 选择:设置>开发人员选项>通过USB验证应用程序>关闭
    注意: Android 4.2中需要验证应用步骤。
  11. 启动浏览器并关闭任何启动/设置屏幕。
  12. 连接用于使用USB电缆测试设备的台式机
    注意:将运行Android 4.2.2或更高版本的设备连接到计算机时,系统会显示一个对话框,询问是否接受允许通过此计算机进行调试的RSA密钥。选择允许USB调试。
  13. 在设备上安装和配置帮助应用程序。
    注意:对于CTS版本2.1 R2至4.2 R4,请设置您的设备(或仿真器)以运行辅助功能测试:
    adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk
    在设备上,启用:设置>辅助功能>辅助功能>委托辅助功能服务
    注意:对于7.0之前的CTS版本,在声明的设备上 android.software.device_admin,将您的设备设置为运行设备管理测试:
    adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk
    在设置>安全>选择设备管理员,启用两个 android.deviceadmin.cts.CtsDeviceAdminReceiver*设备管理员。确保 android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver和任何其他预装设备管理员保持禁用
  14. 将CTS媒体文件复制到设备,如下所示
    注意:对于CTS 2.3 R12及更高版本,如果设备支持视频编解码器,则必须将CTS媒体文件复制到设备。
    cd到媒体文件下载并解压缩到的路径。
    更改文件权限: chmod u+x copy_media.sh
    运行copy_media.sh:
    要将剪辑复制到720x480的分辨率,请运行: ./copy_media.sh 720x480
    如果您不确定最大分辨率,请尝试./copy_media.sh all复制所有文件。
    如果adb下有多个设备,请将-s(serial)选项添加到末尾。例如,要使用串行1234567将设备复制到720x480,请运行:./copy_media.sh 720x480 -s 1234567

6.确保USB连接正常

这个确实很重要。
因为USB供电和数据线本身的原因,会导致设备offline,进而导致测试失败。
所以建议如下:
使用比较新的,正规的USB数据线;
使用电脑的后置USB口连接数据线;
使用USB-hub时,选择自带电源功率大的类型。


7.Host输入命令,运行CTS测试

参考如下:
链接: https://pan.baidu.com/s/1nv1JPot 密码: 6hw5


8.等待生成CTS报告

根据以往经验,在Android 7.0上3台测试机shared CTS测试需要2天,也就是2x3=6。4台机器大概是1.5天。其他情况下,自己评估一下吧。
在Android 7.0以下的版本,3台测试机shared CTS测试只需要1天。其他情况下,自己算一下吧。


9.报告结果符合预期?

首先介绍几个概念:
-CTS理论上需要所有的测项全部Pass,才能获得Google的approve,允许Android 手机出货。
-实际上,由于CTS tool检查机制,以及security path的更新,会导致一些信息不同步的问题。简单的说,就是可能上了Google提供的新版security path,而CTS检查的是旧的值。就会造成与预期不符的CTS Fail。这一类fail会得到Google waive。
-除了上面提到的情况,开发过程中的修改,也会与CTS要求不符,导致fail,这种fail就需要进行测试,及时发现,及时解决。

那么怎么样是符合预期呢?
1.测完所有的测试项目。比如说CTS 7.1r9有443486项,295个Moudle。这些需要全部执行。
2.fail项只能包含如上提到的,经过Google waive 的fail。


10.调试环境,进行retry

实际执行CTS测试的时候往往状况比较多,比如说会出现如下情况:

  • 测试机掉线(自动关机,USB 连结超时,设备被上锁等等)
  • 测试执行到一半停下来了
  • 网络中断
  • 等等

遇到这类情况,就需要认为的进行USB重连和调试网络的操作。
给测试机做factory reset和重烧 syestem.img是比较常用的方法。

11.发出CTS报告

得到符合预期的CTS报告,就可以准备打包送给Google了,这里补充两点:

  • 发出之前确认报告的完整性
  • Google只接受 .zip 格式的报告

开发初期的CTS测试:

开发初期由于android系统和CTS框架的稳定性问题,往往会碰到一些问题,比如说:

  • 测试机在测试过程中关机
  • USB断线
  • 测试机不足
  • CTS 不能retry
  • 项目初期Image更新速度快

鉴于有上面这些问题,所以在开发初期的时候,建议采取一些策略:
拿一版基本功能ready的Image进行测试,直到跑出完整的report。顺便也能直到这一版CTS tool的测项数量。并在今后的版本上对failed项目进行retry,直到结果的failed项目少于100时,再去整测CTS。


CTS测试bug复验:

CTS测试项目数量庞大,整测消耗的时间也比较长。
在旧版本的fail项目,修复后需要在新版上验证,再进行送测。
在复验的时候,一般有两种情况:

1.别人跑了一版CTS,结果有fail项。自己再测试一下,排除环境问题。
这时候需要拿到跑fail生成的report,复制到对应CTS环境的results路径下,并解压。
然后,刷好对应Image,进行retry。
retry命令介绍如下:
-r, –retry [session ID] retry a previous session.
–retry-type used with retry, retry tests of a certain status. Possible values include “failed”, “not_executed”, and “custom”. Valid values: [FAILED, NOT_EXECUTED, CUSTOM]

2.旧版结果有fail项。新版需要确认是否修复。
对于这种情况,因为版本号不一样所以retry命令不再适用了,当然非得用retry命令也是可以的,但是需要改reprot里的build-fingerprint。
不过不建议这么做。因为有更方便的方法,就是用add subplan 命令。
add subplan命令介绍如下:
Add:
a/add s/subplan: create a subplan from a previous session
Options:(–是两个-,这里有显示问题,也可以在tradefed下敲help add查看帮助)
–session : The session used to create a subplan.
–name/-n : The name of the new subplan.
–result-type : Which results to include in the subplan. One of passed, failed, not_executed. Repeatable.

按照上面的方法新建subplan,然后使用: run cts –subplan <刚才创建的subplan name> 即可。是不是非常方便呢。

原创粉丝点击