关注我,每晚撷取软件试验技术蔬果、复试实战经验,想申领试验数据资料、进入软件试验自学沟通交流群的能直接加atstudy-js
CTS试验全称为系列产品相容试验(Compatibility Test Suite),CTS是为了试验智能手机是否合乎Google表述的相容性规范化(Compatibility Definition)而增设的。简而言之,CTS试验是特别针对Google控制系统架构(GMS)展开网络连接性试验的。目前正在蓬勃发展的韩化英操作控制系统(Harmony OS)可能难以全然网络连接。
CTS这个相容性试验和软件试验中的相容试验是全然不同的基本概念。CTS试验是特别针对电子设备的,只有透过CTS试验的电子设备才有可能获得Android的注册商标,因此享用Android Market的职权。
由于Google控制系统的开放源码性,使很多智能手机供应商如前所述Android控制系统都作出了广度强化,从而造成了终端终端产品的碎片化,导致Android终端产品相容性差的问题,严重影响了使用者新体验。所以如前所述Google服务架构展开统一校正就成为一种必须的校正性组织工作。
CTS目的与意义就是令使用者在Android控制系统更快的使用者新体验,因此展现Android应用领域的局限性,使开发人员更容易撰写高效率的Android流程。
狭义的CTS试验包括CTS基本试验和CTS Verifier试验两部分,前者是前者的补足,CTS检查和的是API和机能,而CTS Verifier是试验在动态电子设备上试验难以自动试验的API和功能,比如音视频产品质量,触屏,会量,照相机之类。单纯来说,CTS试验能智能化,而CTS Verifier是只能纯手工展开试验的。
CTS的试验基本原理
CTS试验,是透过在PC端加装CTS试验组件,将被试验电子设备——智能手机,透过充电器和PC相连接,完成试验用例的执行,并把试验结果回到给PC端。具体的组织工作业务流程如下表所示图:
这是一个完整的CTS试验业务流程,根据轨迹线能看出来详细的业务流程。
CTS试验环境的搭建
需要说明的是,CTS试验是特别针对GMS展开的,而Android控制系统是如前所述Linux广度修改而来,CTS试验基本上是在Linux环境中运行的,其间需要大量的Linux命令展开辅助。故在PC端运行环境要求最低在ubuntu 14.04以上。所以没有Linux基础的试验工程师,需要在这一环节展开之前,补齐Linux相关的知识。
环境搭建之前,需要准备好相应的jdk,sdk,CTS试验包等,在这里需要统一选择Linux版本。另外,需要连接IPV6翻墙网络。
接下来首先需要确认jdk和sdk的加装,Linux上的校正与Windows大同小异。如果ubuntu没有加装相关环境,则需要手动加装。
1、JDK与SDK的加装
将下载好的jdk安装包终端到/usr/lib/jvm目录下,然后再解压,解压后得到文件夹jdk1.x.xxxx。最后增设环境变量,在.bashrc中展开配置:sudo vim ~/.bashrc
添加以下代码在文件末尾:
export {JAVAHOME}=/usr/lib/jvm/jdk1.x.xxxx
export PATH=$JAVAHOME/bin:$PATH
添加完成后保存退出。
下载好sdk包,展开加装。输入sudo vim ~/.bashrc 打开.bashrc文件,并在文件末尾编辑加入以下内容:
export {ANDROIDHOME}=SDK路径
export PATH=$PATH:$ANDROIDHOME/tools
export PATH=$PATH:$ANDROIDHOME/platform-tools
以上是jdk和sdk的配置加装。
2、APEAPIKEY配置
Google 会强制执行GMS业务逻辑(数据安全性和控制系统安全性的不断加强,将会有更多的试验需要展开业务逻辑身份校正。
境变量:sudo vim ~/.bashrc,并在文件末尾添加下面代码:export APEAPIKEY=/home/{KEYFILE}。
配置完成后保存退出后输入source ~/.bashrc展开更新。键入如下表所示命令,试验环境是否配置成功:run gts -m GtsPlacementTestCases -t com.google.android.placement.gts.DefaultIntentTest#testDefaultIntentHandlers
提示pass则表示配置成功。
3、配置USB
将下载的USB配置文件拷贝到/etc/udev/rule.d之下,不要修改文件名,然后执行以下命令:
sudo /etc/init.d/udev restart
adb kill-server
adb start-server
adb devices
4、加装aapt
aapt是Android Asset Packaging Tool的缩写,在SDK的build-tools目录下。该工具能查看、创建和更新ZIP格式的文档附件(zip, jar, apk)。在CTS试验中,需要用sudo apt-get install aapt来展开加装。
以上配置全部完成后,PC端的CTS环境配置就全部结束了。接下来需要对被测电子设备展开环境配置与搭建。Android智能手机的环境配置内容来自于官网翻译:
5、Android电子设备增设
工厂数据重置电子设备:增设>备份和重置>出厂增设复位警告:这将清除电子设备中的所有使用者数据。将电子设备的语言增设为英语(美国):增设>语言和输入>语言如果电子设备上有GPS或Wi-Fi /蜂窝网络机能,请打开位置增设:增设>位置>开连接到支持IPv6的Wi-Fi网络,能将被测电子设备(DUT)视为隔离客户端(请参阅上面的物理环境部分),并具有Internet连接:增设> Wi-Fi确保电子设备上没有增设锁定模式或密码:增设>安全性>屏幕锁定>无在电子设备上启用USB调试:增设>开发人员选项> USB调试。注意:在Android 4.2及更高版本上,默认情况下隐藏开发人员选项。要使它们可用,请转到增设>关于智能手机,然后点击构建号码7次。回到上一个屏幕以查找开发人员选项。有关其他详细信息,请参阅启用电子设备上开发人员选项。确保时间增设为12小时格式:增设>日期和时间>使用24小时格式>关闭选择:增设>开发人员选项>保持清醒>打开选择:增设>开发人员选项>允许模拟位置>打开注意:此模拟位置增设仅适用于Android 5.x和4.4.x.选择:增设>开发人员选项>透过USB校正应用领域流程>关闭注意: Android 4.2中需要校正应用领域步骤。启动浏览器并关闭任何启动/增设屏幕。连接用于使用USB电缆试验电子设备的台式机注意:将运行Android 4.2.2或更高版本的电子设备连接到计算机时,控制系统会显示一个对话框,询问是否接受允许透过此计算机展开调试的RSA密钥。选择允许USB调试。在电子设备上加装和配置帮助应用领域流程。注意:对于CTS版本2.1 R2至4.2 R4,请增设您的电子设备(或仿真器)以运行辅助机能试验: adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk在电子设备上,启用:增设>辅助机能>辅助机能>委托辅助机能服务注意:对于7.0之前的CTS版本,在声明的电子设备上 android.software.deviceadmin,将您的电子设备增设为运行电子设备管理试验:adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk在增设>安全>选择电子设备管理员,启用两个 android.deviceadmin.cts.CtsDeviceAdminReceiver*电子设备管理员。确保 android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver和任何其他预装电子设备管理员保持禁用将CTS媒体文件复制到电子设备,如下所示注意:对于CTS 2.3 R12及更高版本,如果电子设备支持视频编解码器,则必须将CTS媒体文件复制到电子设备。cd到媒体文件下载并解压缩到的路径。更改文件职权: chmod u+x copymedia.sh ,然后运行copymedia.sh.要将剪辑复制到720×480的分辨率,请运行:./copymedia.sh 720×480如果您不确定最大分辨率,请尝试./copymedia.sh all复制所有文件。如果adb下有多个电子设备,请将-s(serial)选项添加到末尾。比如,要使用串行1234567将电子设备复制到720×480,请运行:./copymedia.sh 720×480-s 1234567透过以上步骤,完成CTS环境的PC端和被测电子设备端的环境配置。
执行试验
1、整体试验
进入/android-cts/tools,打开终端产品,用adb devices查看智能手机是否连接成功,如智能手机已连上,输入./ cts-tradefed进入试验环境。当前没有提示错误的情况下,能输入试验命令展开整体试验:run cts -plan CTS。
因为是全量试验,整个试验过程持续时间较长,试验完成以后自动生成结果报告和Log,结果报告位于android-cts/repository/results目录下,用浏览器打开testResult.xml 即可看到试验结果。Log位于android-cts/repository/logs目录下。
任何试验电子设备,都至少要在透过最后试验,出具透过认证证明之前,完整地运行过两次整体试验。
2、分项试验
由于整体试验过程时候会由于网络差等因素造成某些试验项fail,我们需要对这些fail项展开单独的试验。可透过运行run cts c CName m MName展开单项试验(CName表示类名,MName表示方法名)
对某一个fail项展开单项试验可执行如下表所示命令:
run cts -c libcore.java.net.InetAddressTest -m testgetByname
单独试验某个类,能使用命令:run cts c {CName},{CName}为类名。
单独试验某个包,能使用命令:run cts c {PName},{PName}为类名。
在这里需要注意的是:单独展开分项试验时,必须输入类名全路径。
单项试验生成的是单独的试验报告,如果需要将其合并入完整报告,可将完整报告testResult.xml中的fail的替换成notExecuted。然后运行run cts continue-session sessionID, sessionID为完整测试的ID,可透过l r查看,如果要将Session 0的fail项融进整体报告,可使用命令:run cts continue-session 0。
为了排除环境等其他因素的影响,单项试验请至少试验3次,以消除干扰因素。
错误分析及提交报告
1、错误项的分类
试验报告的失败项分为两类:一类是能搁置的,这一类失败项是Google架构和Android控制系统自身的原因,经Google同意能不用处理的项。另一类是需要展开分析修复的。
关于可以搁置的选项,能搁置的选项一般会有一个表格维护,这个表格会不定时更新,可到Google官网展开查阅。
2、报告提交
提交正式报告前需检查和一下Root Processes,去掉不必要的信息,突出显示透过试验报告的结论即可。
以上是CTS所有试验的大致步骤和业务流程,考虑到这是一个较为高阶和整体的试验,其中的部分细节特别针对不同的软件版本和硬件差异会有不同,而且CTS试验在软件试验过程中所占的份额并不大,故适合高级试验工程师或专门的CTS试验工程师展开研究。