手机大厂必备测试技能有哪些?CTS 兼容测试首当其冲

news2025/1/16 23:59:48

这么多手机厂商都要改造成自己的UI,甚至要对Android底层进行改动,难免不会改出什么问题。

所以Google为了这些定制的系统能够符合统一的规范、兼容Android底层的API,就引入了CTS测试。

01 何为CTS
相信小伙伴们都有用过各种款式的Android手机,如小米、魅族、华为、oppo、vivo,虽然他们的页面长的都不太一样,比如小米的长这样:

魅族的:

oppo的:

 还有垂死挣扎的锤子...

但是这些手机其实都是搭载的Android系统,只不过国内的手机厂商在原生Android的基础上进行修改/定制。其实原生的Android长这样:

这么多手机厂商都要改造成自己的UI,甚至要对Android底层进行改动,难免不会改出什么问题。所以Google为了这些定制的系统能够符合统一的规范、兼容Android底层的API,就引入了CTS测试。

以下是其官方介绍

Compatibility Test suite系列兼容测试,Google定义了一个兼容性规范(Compatible Definition),而CTS就是为了确保某个测试符合该规范。从而基于Android的应用程序能在基于同一个api版本的设备上面运行。通过CTS测试的device可以获得android的商标,并且享受android market的权限。

02 为什么需要CTS
由于Google的开放策略,越来越多的终端厂商以及互联网企业加入到手机终端商的领域,加剧了Android移动终端的碎片化,导致出现基于Android客户端的App产品因为兼容性差,不能在用户手机上正常安装、运行错误、强制退出等问题,严重影响用户的体验。

通过CTS测试,可以保证

让APP提供更好的用户体验,用户可以选择更多的适合自己设备的APP;

让开发者设计更高质量的APP;

通过CTS的设备可以运行Android market;

03 CTS配置
下载和配置CTS
官网:
http://source.android.com/compatibility/downloads.html
注意:此网站需要FQ

下载文件:(Android 4.4为例)

Android 4.4 Compatibility Definition Document (CDD)

Android 4.4 R3 Compatibility Test Suite (CTS) - ARM

Android 4.4 R3 Compatibility Test Suite (CTS) - x86

Android 4.4 R3 CTS Verifier - ARM

Android 4.4 R3 CTS Verifier - x86

Compatibility Test Suite (CTS)

User Manual CTS Media 1.1

配置CTS

解压Compatibility Test Suite对应的压缩包

将解压出来的android-cts文件夹,复制到SDK根目录中

04 CTS目录结构说明

05 CTS测试流程
测试准备
step1:测试环境:

linux系统(最好是64位的ubuntu)

需正确配置JAVA JDK , android SDK

step2:工具准备:

将下载的CTS包解压到/data目录

下载需要进行测试的软件版本(ROM)

插入可用的SD卡,容量最好是大于1G

插入可用的Sim卡,如果为双卡版本,需确保卡一的卡槽有可用的Sim卡.

写入合法的IMEI号

step3:手机配置:

手机恢复出厂设置(Settings→Backup and reset→Factory data reset)

确保SD中有足够的空间(大于1G),可将SD格式化清空。

确保手机里没有Google账号或者其他账号存在

确保日期和时间的正确(开了Wifi或者数据连接以后会自动更新时间,时区选默认的)

设置屏幕为常亮(Settings→Display→Sleep→Never)

设置无锁屏(Settings→Security→Set up screen lock→None)

安装CtsDeviceAdmin.apk,(在android-cts/repository/testcases下,

可用adb install CtsDeviceAdmin.apk),并进入Settings→Security→Device administrators开启里面的两个包

测试执行
进入到/android-cts/tools目录输入:./ cts-tradefed

进入测试环境

再执行run cts --plan CTS进行整体测试:

run cts -c android.app.cts.SystemFeaturesTest

测试过程持续时间超过10+小时

测试结果会生成在android-cts/repository/results目录中的 testResult.xml

Log日志文件位于android-cts/repository/logs目录下

06 CTS操作基本命令

07 CTS测试结果分析

测试报告的fail项分为两类:

一类是可以waive的,可以waive的项是谷歌自身的原因,经谷歌同意可以不用处理的项。另一类是需要我们分析修复的。 关于可以waive的选项,可以waive的选项一般会有一个表格维护,这个表格会不定时更新,可主动向相关人员索取。

如果不是google waive项,请查看log,在异常log的附近会有一些相关的信息,看能否找到原因 如果在之前的版本上测试PASS,可定位一下OK版本和fail版本之间的代码提交,进而缩小排除范围 ,有些时候想在测试包里面加一些LOG信息,可以自行编译工程代码的CTS,用来测试调试。 若实在不能分析,可向平台商(如MTK/Qualcomm)寻求帮助。

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CUDA简介——编程模式

1. 引言 前序博客: CUDA简介——基本概念 CPU是用于控制的。即,host控制整个程序流程: 1)程序以Host代码main函数开始,然后顺序执行。 Host代码是顺序执行的,并执行在CPU之上。Host代码会负责Launch ke…

解析 Smilee Finance:基于无偿损失的链上期权方案

“有了 Smilee Finance,无偿损失或许不再是一种损失,它也更可能是一种可组合性的收益” 无偿损失 流动性挖矿是引燃 DeFi Summer 的导火索,在 AMM DEX 中,它允许用户将资产按照比例添加到 AMM 流动性池中成为 LP,以为交…

Web漏洞-XSS绕过和pikachu靶场4个场景(三)

★★实战前置声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、XSS漏洞挖掘与绕过 1.1、XSS漏洞挖掘 数据…

Leetcode刷题笔记题解(C++):LCR 021. 删除链表的倒数第 N 个结点

思路:用双指针去遍历链表,删除left的下一个节点,注意的是n大于等于链表长度即删除第一个节点 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {…

设计模式——七大设计原则

设计模式——七大设计原则 1、单一职责原则(SRP)2、开放封闭原则(OCP)3、依赖倒转原则(DIP)4、里氏替换原则 (LSP)5、接口隔离原则 (ISP)6、合成/聚合复用原则 (CARP)7、迪米特法则 (LoD) 了解 设计模式 的…

bootstrap中的图标元素可以免费使用

Available glyphsIncludes over 250 glyphs in font format from the Glyphicon Halflings set. Glyphicon 网址如下: Components Bootstrap

17.认识下Docker之docker的核心原理(2)

1.容器-我的小世界 不知道大家看没看过小说《完美时间》,里面石昊经常进入一个小世界在里面与世隔绝的修炼或者战斗,总之就是在一个完全封闭的空间里做他想做的事情而与外界隔离,不受侵扰。通过前面的分析我们知道,Namepace让应用…

【代码随想录】算法训练计划39

dp 1、62. 不同路径 题目: 求路径方案多少个 思路: 这道题就有点dp了哈 func uniquePaths(m int, n int) int {//dp,写过,代表的是多少种// 初始化dp : make([][]int, m)for i : range dp {dp[i] make([]int, n)dp[i][0] 1 // 代表到…

【5】PyQt按钮

QPushButton 常见的按钮实现类包括:QPushButton、QRadioButton和QCheckBox QPushButton是最普通的按钮控件,可以响应一些用户的事件 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton import sysdef func():print("按下按钮啦,火…

MPC模型预测控制理论与实践

一、基本概念 最有控制的动机是在约束条件下达到最优的系统表现。 模型预测控制(MPC,Model Predictive Control)是通过模型来预测系统在某一未来时间段内的表现来进行优化控制,多用于数位控制,通常用离散型状态空间表…

随机链表的复制[中等]

优质博文:IT-BLOG-CN 一、题目 给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的深拷贝。深拷贝应该正好由n个全新节点组成,其中每个新节点的值都设为…

【论文笔记】A Transformer-based Approach for Source Code Summarization

A Transformer-based Approach for Source Code Summarization 1. Introduction2. Approach2.1 ArchitectureSelf-AttentionCopy Attention 2.2 Position Representations编码绝对位置编码成对关系 1. Introduction 生成描述程序功能的可读摘要称为源代码摘要。在此任务中&…

C++ day55 判断子序列 不同的子序列

题目1:392 判断子序列 题目链接:判断子序列 对题目的理解 判断字符串s是否为t的子序列 字符串s和字符串t的长度大于等于0,字符串s的长度小于等于字符串t的长度,本题其实和最长公共子序列的那道题很相似,相当于找两…

面试就是这么简单,offer拿到手软(四)—— 常见java152道基础面试题

面试就是这么简单,offer拿到手软(一)—— 常见非技术问题回答思路 面试就是这么简单,offer拿到手软(二)—— 常见65道非技术面试问题 面试就是这么简单,offer拿到手软(三&#xff…

【数据结构(七)】查找算法

文章目录 查找算法介绍1. 线性查找算法2. 二分查找算法2.1. 思路分析2.2. 代码实现2.3. 功能拓展 3. 插值查找算法3.1. 前言3.2. 相关概念3.3. 实例应用 4. 斐波那契(黄金分割法)查找算法4.1. 斐波那契(黄金分割法)原理4.2. 实例应用 查找算法介绍 在 java 中,我们…

【Midjourney实战】| 新年礼盒元素设计

文章目录 1 初步提示词2 润色提示词3 提示词发散联想 这期实践任务,我们想去做一个新年礼盒的效果,最后我们想把不同元素拼在一起,方便后期进行新年的相关设计 1 初步提示词 提示词初步我们乍一想,肯定要包括主体元素礼盒 新年礼…

APOLLO自动驾驶技术沙龙:未来已来,共创智能交通新时代

在这次Apollo会议上,我深刻地感受到了人工智能自动驾驶技术领域的最新进展和未来趋势。作为一名从事软件开发工作的人员,我深感荣幸能够参加这次盛会。 前言 本次活动是百度Apollo社区工程师齐聚首钢Park,带来现场实操与技术分享。主要围绕Ap…

好用的挂耳式蓝牙耳机有哪些?四款好用高性价比的耳机推荐

随着生活节奏的加快,挂耳式蓝牙耳机真的是越来越不可或缺了,不管是坐地铁、步行还是运动,一副好用的挂耳式蓝牙耳机都能让你感觉自己像是生活里的主角。但市面上的选择实在是太多了,简直让人眼花缭乱,不过我找了四款真…

仓库管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址: 更多系统资源库地址:更多Java课设系统 更多系统运行效果展示…

很全面 影响无人机自动返航的因素总结

在无人机技术不断成熟的今天,自主返航技术成为保障飞行安全的一种重要工具。无人机在多种情况下能够智能判断,主动实施返航动作,为用户提供更加可靠的飞行保障。以下是一些常见的无人机自动返航场景,让我们深入了解这项技术背后的…