兼容性测试策略

news2025/1/18 20:27:12

📋 个人简介

  •  作者简介:大家好,我是凝小飞,软件测试领域作者
  • 支持我:点赞👍+收藏⭐️+留言📝

   

一.背景介绍

       Android严重的碎片化,主要体现在品牌碎片化、设备碎片化、系统碎片化、分辨率碎片化等多方面,究其原因,由于Android系统的开放性,任何用户、开发者、OEM厂商、运营商都可以对Android进行定制,修改成他们想要的样子,导致了当今碎片化的严重性。

二.Android和ios碎片化

2.1 手机品牌的碎片化

国内外手机品牌有100多个品牌

2.2 设备碎片化

而同一品牌,各类软硬件的组成构成了不同型号设备复杂的碎片化。

2.3 系统版本的碎片化:

从2008年9月发布的Android第1版到2015年最新6.0版本,以及各大版本过程中发布的小版本和bug fix版本,目前都有不同的手机厂商在使用,或进行Android深度定制,或形成自己的ROM,这些无疑更加剧了Android操作系统严重的碎片化

三.适配问题经验

根据项目中也遇到过一些适配问题,大体分成四大类,每类问题和原因罗列如下,供大家参考。

3.1 手机平板横竖屏适配
3.2 APP的组件新增和升级适配
3.3 新Android SDK/API适配
3.4 不同机型适配(TOP/问题机型/分辨率/操作系统/)

四、项目各阶段总体适配策略

       毫无疑问,Android严重的碎片化提升了适配测试的难度,我们无法做到100%的适配测试,但可以按照不断完善的适配策略通过项目中各角色相互协同,一起努力将适配问题尽可能的减少,以便更好的提升用户体验。下图说明项目中适配测试总体策略。

       项目过程可分成以下四个阶段:需求/交互/视觉阶段、开发阶段、测试阶段、发布阶段,每个阶段都需要各负责人对适配做出明确处理。

4.1需求/交互/视觉阶段

需要需求方在BRD中做简要说明,需要交互设计师和视觉设计师在各自的交互稿和视觉稿中明确指出,哪些页面需要横竖屏适配,哪些页面需要手机和平板适配,手机和平板各自适配的样式怎样调整;

4.2开发阶段

需要开发同学对需要适配的需求点做好技术设计和coding,包括手机平板横竖屏、第三方组件新增和升级以及新Android SDK/API使用;

4.3测试阶段

需要测试分别通过白盒适配方式和机型适配方式进行有针对性的适配测试;白盒适配主要针对于开发过程中适配的代码进行测试。机型适配的基础需要一个适配的机器列表,这个机器列表按照经验通过四部分组成,包括TOP机型、OS机型、SOC/ROM机型。机型列表总结好后,就可以通过手工适配、云测平台等多种手段进行适配测试。

在每个迭代的某个时间节点,严格遵守必测的机型新功能的适配测试和核心功能的回归测试,必要时引入自动化脚本回归覆盖和引用monkey测试。

4.4发布阶段

通过众测及时发现Beta阶段的适配问题,通过灰度及时处理真实用户遇到的适配问题。

     

对于测试同学而言,需要在项目的各个阶段都关注适配问题,并给出合理的适配测试用例,并在项目过程中通过各种适配测试手段,尽可能多的发现适配问题,尽可能将适配问题出现的概率降低,实际测试根据设备的有限性尽可能覆盖。

五、Android和iosNative(api和sdk)适配策略详解

5.1.      白盒适配方式之手机横竖屏适配

       对于一个APP的页面来说最多存在四种不同的layout样式:小屏幕横屏、小屏幕竖屏、大屏幕横屏和大屏幕竖屏。小屏幕和大屏幕主要通过调用Android底层API进行区分。细分的话会存在以下几种不同的情况:

大多数页面小屏幕横屏和大屏幕横屏一样;

大多数页面小屏幕竖屏和大屏幕竖屏一样;

部分页面存在小屏幕横屏和大屏幕横屏不一样的情况,比如平板的横屏通过左右分屏展示,而手机的横屏仅仅是竖屏样式的适配,即手机横屏的左右结构不会变化。

适配策略

代码中通过Globals.java来实现,通过自定义的四种屏幕模式进行类型的判断,

再针对于不同的ScreenType选择对应的layout进行页面加载,

所以,新需求若有横竖屏修改,通过视觉稿初步判断屏幕横竖屏适配的页面来制定适配测试方案。测试过程中,可以查看开发提交的代码,对存在多套layout的页面做有针对性的适配测试。

 5.2白盒适配方式之新Android SDK/API适配

       当前在开发过程中可能存在一种情况,比如引用最新版的Android SDK中的API来实现功能,但该API在老版的SDK上可能存在不兼容的情况,导致适配问题。

根据当前APP只适配0及以上操作系统的现状,结合当前操作系统top占比情况,梳理从4.0操作系统(SDK 14版本)开始新增API的详细情况,项目中若有新API的调用,需要针对该API的特性进行适配测试。下图即是各版本新增API情况,项目中一旦有调用就要引起注意。

系统版本

系统版本

小版本

新增API

4.0.x(api14)

4.0.3 
4.0.4 

ae已不用支持2.3 
4.0相对于2.x的新特性可以不用关注 

4.1.x(api16) 

4.1.1 
4.1.2

android.annotation

4.2.x(api17) 

4.2 
4.2.1 
4.2.2 
4.2.9

android.hardware.display 
android.service.dreams 

4.3.x (18) 

4.3 
4.3.1

android.service.notification 

4.4.x(19) 

4.4 
4.4.2 
4.4.3 
4.4.4

android.graphics.pdf 
android.hardware.camera2 
android.hardware.camera2.params 
android.nfc.cardemulation 
android.print 
android.print.pdf 
android.printservice 
android.transition 

5.0.x(21) 

5.0 
5.0.0 
5.0.1 
5.0.2 

android.app.job 
android.app.usage 
android.bluetooth.le 
android.media.browse 
android.media.projection 
android.media.media.session 
android.media.tv 
android.servicie.media 
android.service.restrictions 
android.service.voice 
android.system 
android.telecom

5.1.x(22) 

5.1 
5.1.1

android.service.carrier 

6.0.x(23) 

6.0

android.app.assist 
android.hardware.fingerprint 
android.media.midi 
android.security.keystore 
android.servicie.chooser 

借助于静态扫描工具Lint/Infer对每次项目版本中API使用情况进行扫描和统计。

六、模拟器使用策略

       客户端适配测试的一个特点就是可以使用模拟器替代真机进行部分测试工作,比如模拟器可以很好的发现功能性的bug,也可以执行UI/Monkey自动化测试发现一些问题,以下是模拟器建议使用的方式,供参考。

​​​​​​​

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

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

相关文章

HDFS的架构优势与基本操作

目录 写在前面一、 HDFS概述1.1 HDFS简介1.2 HDFS优缺点1.2.1 优点1.2.2 缺点 1.3 HDFS组成架构1.4 HDFS文件块大小 二、HDFS的Shell操作(开发重点)2.1 基本语法2.2 命令大全2.3 常用命令实操2.3.1 上传2.3.2 下载2.3.3 HDFS直接操作 三、HDFS的API操作3…

将Linux curl命令转换为windows平台的Python代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

怎么采集美团的数据

怎么使用简数采集器批量采集美团的活动、商家和商品相关信息呢? 简数采集器暂时不支持采集美团的相关数据,建议换其他网站采集,谢谢。 简数采集器采集网站文章数据特别高效方便,在简数智能向导模式下,只要填写要采集…

【Python】进阶学习:一文了解NotImplementedError的作用

【Python】进阶学习:一文了解NotImplementedError的作用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望…

ios开发错误积累

1.xcode 下载模拟器报错 Could not download iOS 报错: 解决: 1、去官网下载自己需要 地址(https://developer.apple.com/download/all) 2、下载完成后,执行以下命令添加:xcrun simctl runtime add /路径…

桌面备忘录,电脑桌面备忘录怎么设置

在当今快节奏的生活中,备忘录成为了人们工作和生活中不可或缺的工具。然而,随着科技的发展,纸质备忘录逐渐被电子桌面备忘录所取代。在电脑桌面设置备忘录,可以更加高效地管理任务和提醒事项。 电脑桌面是我们日常工作和娱乐的主…

Dense Distinct Query for End-to-End Object Detection

摘要 对象检测中的一对一标签分配成功地消除了作为后处理的非极大值抑制( NMS )的需要,并使流水线端到端。然而,这引发了一个新的困境,因为广泛使用的稀疏查询无法保证高召回率,而密集查询不可避免地带来更…

论文篇00-【历年论文真题考点汇总】与【历年论文原题2009~2023年文字版记录】(2024年软考高级系统架构设计师冲刺知识点总结-论文篇-先导篇)

专栏系列文章推荐: 案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】 综合知识篇00-综合知识考点汇总目录 ...... 历年真题论文题考点汇总 历年软考系统架构设计师论文原题(2009-2022年) 因最新的2023年目前仅能搜索到回忆版,等楼主搜集到…

内容检索(2024.03.15)

随着创作数量的增加,博客文章所涉及的内容越来越庞杂,为了更为方便地阅读,后续更新发布的文章将陆续在此汇总并附上原文链接,感兴趣的小伙伴们可持续关注文章发布动态! 本期更新内容: 1. 信号完整性理论与…

找机厅 洛谷 BFS

P10234 [yLCPC2024] B. 找机厅 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> #define pii pair<int,int> #define fr first #define sc second using namespace std; string maze[2000]; int vis[2000][2000]; char dirs[2005][2005]; st…

数据和类型转换

文章目录 数据类型数字类型数字操作NaNJavaScript算术运算符的执行顺序 字符串类型&#xff08;string&#xff09;字符串拼接模板字符串 未定义类型&#xff08;undefined&#xff09;布尔类型&#xff08;boolean&#xff09;null&#xff08;空类型&#xff09; 类型转换显式…

Ubuntu上搭建TFTP服务

Ubuntu上搭建TFTP服务 TFTP服务简介搭建TFTP服务安装TFTP服务修改配置文件 重启服务 TFTP服务简介 TFTP是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议&#xff0c;适用于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计&#xff0c;只…

Java中 常见的开源树库介绍

阅读本文之前请参阅------Java中 树的基础知识介绍 在 Java 中&#xff0c;有几种流行的开源树库&#xff0c;它们提供了丰富的树算法和高级操作&#xff0c;可以帮助开发者更高效地处理树相关的问题。以下是几种常见的 Java 树库及其特点和区别&#xff1a; JTree 特点…

移动硬盘无法读取怎么修复?教你四招快速解决!

随着科技的发展&#xff0c;移动硬盘已经成为我们日常生活和工作中不可或缺的数据存储设备。然而&#xff0c;有时候我们可能会遇到移动硬盘无法读取的问题&#xff0c;这不仅会给我们带来数据丢失的风险&#xff0c;还可能影响我们的工作进度。下面给大家分享四种针对移动硬盘…

Qt教程 — 3.1 深入了解Qt 控件:Buttons按钮

目录 1 Buttons按钮简介 1.1 Buttons按钮简介 1.2 Buttons按钮如何选择 2 如何使用Buttons按钮 2.1 QPushButton使用-如何自定义皮肤 2.2 QToolButton使用-如何设置帮助文档 2.3 QRadioButton使用-如何设置开关效果 2.4 QRadioButton使用-如何设置三态选择框 2.5 QCom…

【C++初阶】C++入门(上)

C的认识 ①什么是C&#xff1f; ​ C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。 ​ 于是1982年&#xff0c;Bjarne Stroustrup&#xff08;本…

虚拟游戏理财 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 在一款虚拟游戏中生活&#xff0c;你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。 现有一家Bank&#xff0c;它提供有若干理财产品m&#xff0c;风险及…

AIGC笔记--关节点6D位姿按比例融合

1--核心代码 6D位姿一般指平移向量和旋转向量&#xff0c;Maya软件中关节点的6D位姿指的是相对平移向量和欧拉旋转向量&#xff1b; 为了按比例融合两个Pose&#xff0c;首先需要将欧拉旋转向量转换为旋转矩阵&#xff0c;在将旋转矩阵转换为四元数&#xff0c;利用球面线性插值…

vcomp120.dll无法继续执行代码怎么解决

如何解决“缺失vcomp120.dll”错误&#xff1f;vcomp120.dll下载去哪下呢&#xff1f;当您尝试启动一个应用程序或游戏时&#xff0c;您可能会看到一个错误消息&#xff0c;显示“缺失vcomp120.dll”。这通常是因为vcomp120.dll未正确安装或文件已丢失或损坏。这篇文章将向您介…

C语言深入理解指针(2)

1.数组名的理解 #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p &arr[0];//&arr[0]将数组首元素的地址放在p这个指针变量}int main() {int arr[10] {0};int* p1 &arr[0];int* p2 arr;//数组名是数组首元素的地址return …