当前位置: 首页 > news >正文

Android 和 iOS APP 测试的那些区别

目前市面上主流的移动操作系统就是 Android 和 iOS 两种,移动端测试本身就跟 Web 应用测试有自己的专项测试,比如安装、卸载、升级、消息推送、网络类型测试、弱网测试、中断测试、兼容性测试等都是区别于 Web 应用需要关注的测试领域。

那么,对于 Android 和 iOS 两个系统来说,测试同一款 APP,又有哪些区别呢?

首先,关于功能实现以及界面测试等方面,两个系统基本是一致的;只是由于系统的某些实现方式的区别,导致了个别测试领域的区别。所以,我们接下来分析一下这两种系统之间的测试区别到底有哪些?

一、安装测试

测试版本安装

  • Android 非常简单,提供一个 apk 包,就可以在任何设备上安装这个 APP 并进行测试了。

  • iOS 比较复杂一些,没有经过苹果审核是不允许安装的。

    需要安装测试版本,就需要采取一些额外的手段,比如手动添加 UDID 到开发者账号,或者使用 testflight 工具,具体操作,可以见之前的文章:《iOS APP测试方法和测试工具大揭秘》

线上版本安装

  • Android 可以上传的应用商店比较多,比如谷歌商店,360 商店,安智市场等,还有各大应用管家都可以上传并提供给广大 Android 用户下载使用。

    所以,测试人员对 Android 应用的线上测试需要覆盖所有支付的渠道;

  • iOS 众所周知,只有一个苹果官方的 App Store 可以下载安装应用,其他的渠道都是不允许的。因为需要上传到线上发布,是需要苹果进行审核和授权的。

    而且一般审核周期要等到 3 天-2 周不等。所以,iOS 测试人员,需要等到苹果审核通过之后,从 App Store 上下载应用,验证线上版本的可用性。

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386 

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=8b9b7a6bd9e1d50c8c5643945488eade

二、兼容性测试

  • Android

因为系统被开源,很多不同厂商在这个基础上二次进行开发,所以导致出现的操作系统类型以及版本都非常多。

  • 常见的有:华为、小米、OPPO,vivo 等,

  • 还有很多小众非主流的操作系统;

  • 每个系统都有很多的版本,包括大版本和小版本;

  • 每个厂商的手机屏幕大小也差异比较大,

所以 Android APP 的兼容性测试就会比较复杂一些。

  • iOS

就只有单一的苹果系统,虽然也经常更新版本。

但是随着苹果官方系统版本的升级,一般我们只需要维护最新的几个主流版本的兼容性测试即可;选取的主流系统版本,再覆盖 iOS 的几款主流的屏幕大小的机型,兼容性测试会相对来说简单很多。

三、升级测试

升级测试 iOS 限制也比 Android 多一些。

iOS 有严格的降级限制,最开始只能单向升级,不能降级;虽然松懈了一点可以做降级操作,但是也限制了特定机型的最低降级版本。

比如 iPhone X 最多只能降到 iOS 11.2,iPhone 5 最多可以降到 iOS 6.1.3,之所以有这个限制其实是因为通常新的 iOS 系统版本中的资源库不能完全兼容低版本中的应用。

低版本 iOS 系统中的应用如果调用了新系统中的资源库,有时会直接导致闪退(Crash)出现;所以,我们做 iOS 的升级测试的时候,基本只需要关注对应的版本之间的升级即可。

Android 系统的降级限制没有那么严格,通过一定的工具都可以降级成功。

四、权限测试

Android 众所周知的就是 Android 的个人信息泄露比较严重的。

比如很多 app 在安装时会要求很多权限,Android 系统会提示是否允许获取手机的某个权限,但是即使用户不给,Android 也有各自手段偷偷的获取这些权限,所以 Android APP 的这种权限测试不是很严苛;

而 iOS 一般情况下权限管理的很严格,用户没有同意的权限,APP 是一定没有办法绕过并获取的,所以应用不会去获取一些没有意义的权限;而且应用要上线苹果商店时,苹果官方的审核机制也是比较严格,经常会出现审核不通过的情况。

所以 iOS 的权限一般情况下会要的很少。因此,iOS 测试的权限场景较少,但是会很严格。

五、应用实现的机制

Android 采用的虚拟机机制,而 iOS 采用的是沙盒机制。

虚拟机机制的特点是:

  • 每个应用程序都在独立的虚拟机中,这些独立的虚拟机实例都是一个独立的进程空间。

  • 跟 Linux 内存管理很相似,是真正的多进程管理,虽然可用内存最后看着少,但是实际上很多程序已经分配了一定的内存了,在唤起时不会再次分配一次,而且已经有了缓存,启动和响应会比较快。

沙盒机制的特点是:

  • 应用程序在自己的沙盒中运作,但是不能访问任何其他应用程序的沙盒;

  • 应用之间不能共享数据,沙盒里的文件不能被复制到其他应用程序的文件夹中,也不能把其他应用文件夹复制到沙盒中;

  • 苹果禁止任何读写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中。

六、安全机制

iOS 安全机制主要通过以下两个方面来实现:

  • 通过刚刚上面讲到的安全沙箱机制来实现安全机制。应用之间数据和文件不能共享;

  • 通过对代码签名,Apple 需要所有开发人员对自己的 iPhone 应用程序使用数字签名技术。这个签名用来标识应用程序的开发者以及保证应用程序在签名之后不被更改和损坏。开发者证书由 Apple 提供(这是与 Android 最大的区别,Android 是自签名),有以下两类证书:

    Developer Certificate :用于本机测试

    Distribution Certificate :用于 100 台设备以内的测试和共享;App Store 用于发布应用程序所有的可执行文件、库文件都需要 Apple 签名后才可以运行在 iOS 中。

Android 安全机制通过以下两个方面来实现:

  1. 虚拟机机制,每一个 Android 应用程序(apk 文件)会在安装时分配一个独有的 Linux 用户 ID(即一个用户 id 识别一个应用程序),使其不能与其他应用程序进行接触。这个用户 ID 在安装时分配,并在该设备上一直保持同一个数值。所有存储在应用程序中的数据都会赋予该应用程序的用户 ID,使其他应用程序无法访问这些数据。

  2. 代码签名,但是跟 iOS 不一样的是,Android 采用自签名机制,不需要权威机构签名和审核,完全由用户自行判断是否信任该程序。

总结

综上所述我们可以发现,由于近些年这两个系统之前不断的相互借鉴的原因,在设计上来说越来越通用,两个平台的使用体验也越来越统一。

所以网上很多文章说的关于一些界面设计风格、用户使用习惯的区别,我觉得也没有特别大的参考价值。

作为测试,我们可有多关注一些底层实现的原理,能够帮助我们更加深刻的理解他们在细节实现上,从而就可以帮助我们测试更加充分!

相关文章:

Android 和 iOS APP 测试的那些区别

目前市面上主流的移动操作系统就是 Android 和 iOS 两种,移动端测试本身就跟 Web 应用测试有自己的专项测试,比如安装、卸载、升级、消息推送、网络类型测试、弱网测试、中断测试、兼容性测试等都是区别于 Web 应用需要关注的测试领域。 那么&#xff0…...

利用nicegui开发ai工具示例

from fastapi import FastAPI import uvicorn from nicegui import uiclass PipRequirement:def __init__(self):ui.label("依赖安装与依赖展示")class BasicSettings:def __init__(self):self.project_select ui.select(["test"], label"项目选择&q…...

HarmonyOS鸿蒙原生应用开发设计- 流转图标

HarmonyOS设计文档中,为大家提供了独特的流转图标,开发者可以根据需要直接引用。 开发者直接使用官方提供的流转图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的图标侵权意外情况等,减…...

postgresql14管理(六)-备份恢复

定义 备份(backup):通过物理复制或逻辑导出的方式,将数据库的文件或结构和数据拷贝到其他位置进行存储; 还原(restore):是一种不完全的恢复。使用备份文件将数据库恢复到备份时的状…...

配置Sentinel 控制台

1.遇到的问题 服务网关 | RuoYi 最近调试若依的微服务版本需要用到Sentinel这个组件,若依内部继承了这个组件连上即用。 Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视化操作界面。 在日常开发中,限流功能时常被使用,用…...

【漏洞复现】酒店宽带运营系统RCE

漏洞描述 安美数字 酒店宽带运营系统 server_ping.php 远程命令执行漏洞 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益&#xff…...

Autojs 利用OpenCV识别棋子之天天象棋你马没了

本例子通过代码像你介绍利用OpenCV实现霍尔找圆的方法定位棋子位置 通过autojs脚本实现自动点击棋子 开源地址 https://github.com/Liberations/TtxqYourHorseIsGone/blob/master/main.js AutoXJs https://github.com/kkevsekk1/AutoX/releasesauto() //安卓版本高于Android 9…...

好数组——尺取法

好数组 给定一个长度为 n 的数组 a,计算数组 a 中所有子数组中好数组的数目。 好数组定义如下: 对于数组 al ,al1, ⋯ ,ar ,若数组中所有数的质因数种类数不超过 k,则称为好数组。 Input 输入的第一行包含两个正整数 n,k (1≤…...

【Linux】Ubuntu升级nodejs版本

在下载nvm对nodejs版本进行管理时,由于网络因素一直下载失败,于是采用了新的方法对nodejs版本进行升级。 首先我们先查询一下现存的nodejs版本号,发现是12 我们下载一个名为n的软件包,n 是一个非常方便的 Node.js 版本管理工具&am…...

二维码智慧门牌管理系统升级解决方案:一级属性 二级属性

文章目录 前言一、什么是智慧门牌管理系统?二、一级属性 vs. 二级属性三、升级中的实践意义 前言 在本文中,我们将深入探讨二维码智慧门牌管理系统的升级解决方案,特别聚焦于一级属性和二级属性的关键概念。我们将详细解释这些概念&#xff…...

input改造文件上传,el-table的改造,点击上传,拖拽上传,多选上传

第一个input标签效果 第二个input标签的效果 el-table的改造效果 <template><div class"outerBox"><div class"analyze" v-if"status"><div class"unFile"><div class"mainBox"><img clas…...

申请实用新型专利需要的时间

1、咨询 确定发明创造的内容是否属于可以申请专利的内容&#xff1b;对此咨询&#xff0c;建议多咨询几家专利代理机构后对比确定正确的结论。因为当前很多的专利代理机构的资讯接待员是的工资都是提成制的&#xff0c;为了业务量&#xff0c;有时对咨询会有不恰当的回复。确定…...

Redis 主从复制和哨兵监控,实现Redis高可用配置

文章目录 一、概述二、主从复制模拟说明三、准备配置文件四、启动Redis实例五、主从复制配置5.1 命令方式启用和取消主从复制5.2 配置文件方式启用和取消主从复制5.3 测试主从复制5.4 有其主从复制的其他参数配置 六、Sentinel 配置6.1 Sentinel 的作用6.2 Sentinel 监控说明6.…...

虹科直播 | CDS网络与数据安全专题技术直播重磅来袭,11.2起与您精彩相约

文章来源&#xff1a;虹科网络安全 阅读原文&#xff1a;https://mp.weixin.qq.com/s/T-CgU28hmYy4YV5SV9QGhg 虹科数据加密解决方案 虹科终端安全防护方案 虹科是在各细分专业技术领域内的资源整合及技术服务落地供应商&#xff0c;虹科网络安全事业部的宗旨是&#xff1a;让…...

nginx加权轮询,upstream,Keepalive,负载均衡实现案例

1. nginx 加权轮询, weight是权重配置。 #配置上游服务器 upstream tomcats {server 192.168.1.173:8080 weight=1;server 192.168.1.174:8080 weight=2;server 192.168.1.175:8080 weight=5; } server{liste...

java代理示例

以上代码通过Apache HttpComponents库&#xff0c;使用Java其中&#xff0c;proxy_host参数为代理服务器的主机名&#xff0c;proxy_port参数为服务器的端口号。程序首先创建了一个HttpGet对象&#xff0c;然后创建了一个HttpClient对象。接着&#xff0c;设置了HttpGet对象的U…...

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解)

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示 (代码仿真设计报告讲解) 仿真原版本&#xff1a;proteus 7.8 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0018 目录 51单片机汽车胎压大气气压测量仪仿真设计_数码管显示功…...

mac idea 解决0% classes 0% lines covered不显示,非快捷键办法

问题如下 网上说了一堆快捷键&#xff0c;冲突了用不了&#xff0c;页面按下面这样点就可以了点击no coverage就行了...

Fabric.js 复制粘贴元素

本文简介 点赞 关注 收藏 学会了 当你要复制一个 fabric 的元素时&#xff0c;你考虑到的是什么&#xff1f;是深拷贝当前选中对象再添加到画布中&#xff1f; 其实&#xff0c;fabric.js 提供了一个克隆方法&#xff0c;在 fabric.js 官网的案例里也有这个demo&#xff1a…...

rstudio server 服务器卡死了怎么办

欢迎关注weixin:生信小博士 #rstudio 卡死了怎么办 cd ~/.local/share/ ls rm -fr rstudio.old mv ~/.rstudio ~/.rstudio.oldcd ~/.config/ rm -fr .rstudio.old mv ~/.config/rstudio/ ~/.config/rstudio.oldps -ef|grep t040413 |grep rsession |awk {print $2}| xarg…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...