• 12
  • 12
分享
  • 手机大厂必会测试技能get√—CTS兼容测试——软件测试圈
  • 曼倩诙谐 2021-06-30 10:04:36 字数 5119 阅读 1619 收藏 12

  CTS测试全称为系列兼容测试(Compatibility Test Suite),CTS是为了测试手机是否符合Google定义的兼容性规范(Compatibility Definition)而设置的。

  顾名思义,CTS测试是针对谷歌系统框架(GMS)进行适配性测试的。目前正在兴起的鸿蒙操作系统(Harmony OS)可能无法完全适配。

  CTS这个兼容性测试和软件测试中的兼容测试是完全不同的概念。CTS测试是针对设备的,只有通过CTS测试的设备才有可能获得Android的商标,并且享受Android Market的权限。

  由于Google系统的开源性,使得很多手机厂商基于安卓系统都做出了深度优化,从而造成了移动终端的碎片化,导致Android终端兼容性差的问题,严重影响了用户体验。所以基于谷歌服务框架进行统一验证就成为一种必须的验证性工作。

  CTS目的与意义就在于令用户在Android系统中有更好的用户体验,并且展示Android应用的优越性,使得开发者更容易编写高质量的Android程序。

  广义的CTS测试包括CTS基本测试和CTS Verifier测试两部分,后者是前者的补充,CTS检查的是API和功能,而CTS Verifier是测试在静态设备上测试无法自动测试的API和功能,例如音频质量、触摸屏、加速度计、相机等等。

  简单来说,CTS测试可以自动化,而CTS Verifier是只能手工进行测试的。

  CTS的测试原理

  CTS测试,是通过在PC端安装CTS测试套件,将被测试设备——手机,通过数据线和PC连接起来,完成测试用例的执行,并把测试结果返回给PC端。

  具体的工作流程如下图:

1-1.png

  这是一个完整的CTS测试流程,根据轨迹线可以看出来详细的流程。

  CTS测试环境的搭建

  需要说明的是,CTS测试是针对GMS进行的,而安卓系统是基于Linux深度修改而来,CTS测试基本上是在Linux环境中运行的,其间需要大量的Linux命令进行辅助。

  故在PC端运行环境要求最低在ubuntu 14.04以上。所以没有Linux基础的测试工程师,需要在这一环节进行之前,补齐Linux相关的知识。

  环境搭建之前,需要准备好相应的jdk、sdk、CTS测试包等,在这里需要统一选择Linux版本。另外,需要连接IPV6翻墙网络。

  接下来首先需要确认jdk和sdk的安装,Linux上的验证与Windows大同小异。如果ubuntu没有安装相关环境,则需要手动安装。

  JDK与SDK的安装

  将下载好的jdk安装包移动到/usr/lib/jvm目录下,然后再解压,解压后得到文件夹jdk1.x.x_xxx。最后设置环境变量,在.bashrc中进行配置:sudo vim ~/.bashrc。

  添加以下代码在文件末尾:

export {JAVA_HOME}=/usr/lib/jvm/jdk1.x.x_xxx
export PATH=$JAVA_HOME/bin:$PATH

  添加完成后保存退出。

  下载好sdk包,进行安装。输入sudo vim ~/.bashrc 打开.bashrc文件,并在文件末尾编辑加入以下内容:

export {ANDROID_HOME}=SDK路径
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools

  以上是jdk和sdk的配置安装。

  APE_API_KEY配置

  Google 会强制执行GMS业务逻辑(BL,Business Logic)身份验证。

  如果没有正确配置测试环境,验证失败将导致无法进行后续步骤,而要配置测试环境,需要获取密钥文件。业务逻辑身份验证会影响以下阶段的测试。

  随着系统版本不断提升,数据安全性和系统安全性的不断加强,将会有更多的测试需要进行业务逻辑身份验证。

  密钥文件,是一份json文件,可向合作的3pl实验室获取;获得后,将密钥文件拷贝到待测主机上,进入./bashrc文件添加环境变量:sudo vim ~/.bashrc,并在文件末尾添加下面代码:

export APE_API_KEY=/home/{KEY_FILE}

  配置完成后保存退出后输入source  ~/.bashrc进行更新。键入如下命令,测试环境是否配置成功:

run gts -m GtsPlacementTestCases -t com.google.android.placement.gts.DefaultIntentTest#testDefaultIntentHandlers

  提示pass则表示配置成功。

  配置USB

  将下载的USB配置文件拷贝到 /etc/udev/rule.d之下,不要修改文件名,然后执行以下命令:

sudo /etc/init.d/udev restart
adb kill-server
adb start-server
adb devices

  安装aapt

  aapt是Android Asset Packaging Tool的缩写,在SDK的build-tools目录下。

  该工具可以查看、创建和更新ZIP格式的文档附件(zip, jar, apk)。在CTS测试中,需要用sudo apt-get install aapt来进行安装。

  以上配置全部完成后,PC端的CTS环境配置就全部结束了。接下来需要对被测设备进行环境配置与搭建。安卓手机的环境配置内容来自于官网翻译。

  安卓设备设置

  工厂数据重置设备:设置>备份和重置>出厂设置复位

  警告:这将清除设备中的所有用户数据。

  将设备的语言设置为英语(美国):设置>语言和输入>语言。

  如果设备上有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.device_admin,将您的设备设置为运行设备管理测试:

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 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

  通过以上步骤,完成CTS环境的PC端和被测设备端的环境配置。

  执行测试

  整体测试

  进入/android-cts/tools,打开终端,用adb devices查看手机是否连接成功,如手机已连上,输入./ cts-tradefed进入测试环境。

  当前没有提示错误的情况下,可以输入测试命令进行整体测试:run cts –-plan CTS。

  因为是全量测试,整个测试过程持续时间较长,测试完成以后自动生成结果报告和Log,结果报告位于android-cts/repository/results目录下,用浏览器打开testResult.xml 即可看到测试结果。

  Log位于android-cts/repository/logs目录下。

  任何测试设备,都至少要在通过最后测试,出具通过认证证明之前,完整地运行过两次整体测试。

  分项测试

  由于整体测试过程中有时候会由于网络差等因素造成某些测试项fail,我们需要对这些fail项进行单独的测试。

  可通过运行run cts –c CName –m MName进行单项测试(CName表示类名,MName表示方法名)

  对某一个fail项进行单项测试可执行如下命令:

run cts -c libcore.java.net.InetAddressTest -m test_getByname

  单独测试某个类,可以使用命令:run cts –c {CName},{CName}为类名。

  单独测试某个包,可以使用命令:run cts –c {PName},{PName}为类名。

  在这里需要注意的是:单独进行分项测试时,必须输入类名全路径。

  单项测试生成的是单独的测试报告,如果需要将其合并入完整报告,可将完整报告testResult.xml中的fail的替换成notExecuted。

  然后运行run cts –continue-session session_ID, session_ID为完整测试的ID,可通过l r查看,如果要将Session 0的fail项融进整体报告,可使用命令:run cts –continue-session 0。

  为了排除环境等其他因素的影响,单项测试请至少测试3次,以消除干扰因素。

  错误分析及提交报告

  错误项的分类

  测试报告的失败项分为两类:一类是可以搁置的,这一类失败项是谷歌框架和安卓系统自身的原因,经谷歌同意可以不用处理的项。另一类是需要进行分析修复的。

  关于可以搁置的选项,可以搁置的选项一般会有一个表格维护,这个表格会不定时更新,可到谷歌官网进行查阅。

  报告提交

  提交正式报告前需检查一下Root Processes,去掉不必要的信息,突出显示通过测试报告的结论即可。

  以上是CTS所有测试的大致步骤和流程,考虑到这是一个较为高阶和整体的测试,其中的部分细节针对不同的软件版本和硬件差异会有不同,而且CTS测试在软件测试过程中所占的份额并不大,故适合高级测试工程师或专门的CTS测试工程师进行研究。



作者:苗条小胖   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   在当今竞争激烈的软件开发领域,确保产品质量和交付速度的平衡至关重要。软件测试已成为驱动成功项目的关键因素之一。为了有效评估测试过程的效率和成果,关键绩效指标 (KPIs) 提供了一个量化的工具,不仅帮助团队确保产品质量,还能及时识别和应对潜在风险。  本文我们将探讨如何合理应用这些KPIs,以确保您的开发项目始终保持在预期轨道上,并通过实际案例展示其在提升产品竞争力方面的作用。  关键绩效指标 (KPIs) 概述  在软件测试过程中,有许多 KPIs 可用于评估测试的成功与否。为了简洁起见,我们挑选了其中最为关键的几个:  KPI 1: 需求测试覆盖率 (Requirements Test...
            0 0 615
            分享
          •   (一)什么是敏捷测试  首先敏捷测试(Agile testing)是测试的一种,敏捷测试的理念是,和编码一样,测试是开发的一个关键部分。在敏捷中,测试被直接集成到软件开发过程中,以便尽早、频繁地发现bug。因此,测试人员可以在开发过程的每一个节点上发现问题,从而使产品快速走向发布。  (二)敏捷测试的特点  敏捷测试的特点有以下几点:  1) 高度迭代  2) 有周期性  3) 重点关注持续迭代地测试新开发的功能  4) 测试介入的时间特别早。  5) 强调从客户的角度,即从使用系统的用户角度,来测试系统。  (三)传统的瀑布模型  传统测试即基于瀑布模型开发的测试,瀑布模型将软件生命周期...
            0 0 578
            分享
          •   安全测试工具Appscan也是软件测试实验室软件测试体系建设或申请软件测试CNAS资质时,很常见的一款工具。本文我们带大家一起来了解一下安全测试工具Appscan,它的四大套件以及最新版本的功能。  AppScan隶属于HCL品牌旗下 ,通过利用人工智能和机器学习来实施安全最佳实践和合规性,帮助软件开发人员检测和修复漏洞。它的静态、动态、交互式和开源扫描引擎,可以部署在开发生命周期的每个阶段,测试web应用程序、API和移动应用程序。经过扫描引擎驱动,通过风险管理仪表板,提供跨静态、动态、交互式和开源测试的可扩展应用程序安全测试,实现对风险和合规性的可见性。  AppScan 套件包括: ...
            0 0 2158
            分享
          •   中国网络空间安全协会今日发布公告,为规范 App 收集使用个人信息行为,保护个人信息权益,推动形成全社会共同维护个人信息安全的良好环境,中国网络空间安全协会组织指导网上购物、地图导航、浏览器、新闻资讯、在线影音、电子图书、拍摄美化、云盘、短视频、演出票务共 10 类 62 款 App 运营方,对照《中华人民共和国网络安全法》《中华人民共和国个人信息保护法》《常见类型移动互联网应用程序必要个人信息范围规定》等法律法规,重点针对超范围收集个人信息、过度调用敏感权限、权限设置和账号注销不便等个人信息收集使用问题完成了合规整改优化。  62 款 App 运营方已在应用商店上架合规版本(名单及版本号...
            0 0 350
            分享
          • 我们测试过程中,常常遇到提交的bug单,开发定位时发现无法定位,或者我们自己发现了bug,想截图或者复制日志时,发现无法复现了,针对这些情况,本文将总结一些bug复现的思路,供参考。1、重复执行仔细回忆测试时的执行步骤,尽量还原所有步骤,不要漏掉任何一个细节,故障可能是特定的执行顺序导致;仔细回忆测试时的所有配置,是否是特定的配置导致的故障?2、 是否网络问题?对于前后端交互类的bug,如果不能复现,要充分怀疑是否是网络不良导致的问题,可拔出网线试验一下,看能否复现。3、是否特定数据造成?可以回忆当时测试时上传的附件是什么?是否做了什么特殊输入,如特殊字符,特别长的字符等。4、是否自己测试机器...
            0 1 1983
            分享
      • 51testing软件测试圈微信