• IOS 和 Android APP测试时,两者的差异


    参照:https://blog.csdn.net/weizhi3320/article/details/106028145

    安卓标准的菜单/Home/返回键

    安卓手机系统支持降级

    安卓手机连接电脑,然后在电脑上安装历史版本,恢复到低版本,即完成降级,降级有风险,降级前先做好数据备份

    实例参照:https://zhuanlan.zhihu.com/p/71260151

    IOS的资源库

    1、App资源库也叫做App Library,系统也会自动帮你分门别类,整理组成文件夹,也会将常用软件放置在一起,方便用户快速找到

    2、首先需要将iPhone手机升级至iOS14以上才有这项功能

    3、接着打开iPhone手机后,将屏幕向左滑动,滑到最后一页

    4、滑动之后就可以看到APP资源库页面

    5、在APP资源库页面,可以根据归纳的文件夹选择应用进入。同时,在APP资源库向下滑动。

    6、如果是向下滑动,则可以看到全部的应用程序按A-Z进行排列

    7、另外也可以在顶部的搜索框输入自己要查找的APP名字来找到对应的程序

    8、如果需要退出APP资源库,向右侧滑动页面,即可返回到手机桌面。

     IOS的下载渠道

    除了APP store,还有iTunes(通过苹果电脑安装app,再更新到对应apple id的手机上)  和 testflight(比如内测版本,未上架到APP store的苹果应用(可能是新版本的内测版本),可以通过testflight进行分发、扩散)

    苹果和安卓APP 可以被升级的必要条件

    新旧版本具有相同的签名、包名,有一个标示符区分新旧版本(如版本号)。

    • 常见的区别

    • 单条item的操作

    iOS:单条item的操作有两种,点击和滑动,点击一般进入一个新的页面,滑动会出现对这条item的一些常用操作,如微信里滑动一条对话,会出现标记未读和删除。

    Android:,单条item的操作也有两种,点击和长按,点击一般进入一个新的页面。长按进入一个编辑模式,可以在里面进行批量和其他一个操作,比如删除,顶置等等。比如小米的短信页面

    例外的是,Android里面也可以有单条item的滑动,如新版QQ,这种比较少见。安卓的短信,可以滑动进行归档。大Android啥都可以有。

    • 关于排版

    iOS:喜欢居中排布

    Android:喜欢左对齐,感觉左对齐更安卓。

    • 实体键

    iOS只有一个实体键home键(音量,电源不算哈);这个键有这么几个功能:

    • 按一次,回到桌面。
    • 双击,出现多任务界面
    • iOS8里面,轻触两下Home键,调出单手模式(未尝试过,有i8的小伙伴尝试之后可否截图告诉我?)
    • 指纹解锁

    iPhoneX,iPhoneXS ,iPhoneXmax等都没有home键了,而是使用向上滑动的操作实现下列的一些功能:

    • 锁屏滑动,脸部解锁
    • 小幅度滑动,出现多个任务界面
    • 大幅度滑动,回到桌面

    Android有四个实体键(现在很多被屏幕上的虚拟键代替,但功效是一样的)

    • Android4.4以下:分别是back键,home键,menu键,和搜索键。
    • Android4.4及以上:back键,home键,多任务键。安卓原生是这样,经过优化的Android就不一定了,比如魅族的smart bar,根据当前页面情景变化,不过蛮好用。
    • Android的back键,在大部分情况下,和页面上的返回功效一样。不过,Android的back键可以在应用件切换,还可以返回主屏幕。这个iOS里面的键不能在应用间直接切换。
    • 动效

    两者的动效似乎差别不大,iOS有的,安卓都有。iOS实现的通常更加流畅,卡顿较少。

    两者都强调模拟现实世界的动画效果,比如物体运动有一定的加速度,动画的结束和开始速度小,中间速度

    • push测试

    Android推送可以应用绕过系统限制;IOS只能根据系统配置来推送。

    为什么安卓上软件得在运行时(包括后台存在)才会推送通知,而ios却不需要软件在后台就会推送通知?

    安卓系统本身是并没有通过推送机制了,说白了就是没有系统给应用留下后门,所以只能是安卓自己启动Services来实现度推送,当应用杀死后Services如果被杀死就无法收到推送。
    iOS系统他给用用留了回推送机制,所以就算应用未在后台运行他也答能收到通知,但是iOS是不允许应用像安卓一样后台启动Services服务的。

    • 权限和内存管理

    Android和IOS的安全性,众所周知的情况是,Android的个人信息泄露比较严重,很多app在安装时会要求很多权限,或者即使不给,他也有各自手段偷偷的获取这些手段。而ios一般情况下权限管理的很严格,没有意义的权限,一般情况下不会给。而且苹果官方的审核机制也是比较严格,经常会出现审核不通过的情况。所以ios的权限一般情况下,感觉会要的很少。

    Android采用的虚拟机机制,而ios采用的是沙盒机制。沙盒机制的特点是:每个应用只能访问自己应用的数据和文件,不能随意去访问其他的沙盒内容。而虚拟机机制的特点是:每个应用程序都在独立的虚拟机中,这些独立的虚拟机实例都是一个独立的进程空间。而Android这样做的好处就是跟linux内存管理很相似,是真正的多进程管理,虽然可用内存最后看着少,但是实际上很多程序已经分配了一定的内存了,如果需要,在唤起时,不会再次分配一次,而且已经有了缓存,启动和响应会比较快。

     IOS沙盒机制

    1. 应用程序在自己的沙盒中运作,但是不能访问任何其他应用程序的沙盒;
    2. 应用之间不能共享数据,沙盒里的文件不能被复制到其他应用程序的文件夹中,也不能把其他应用文件夹复制到沙盒中;
    3. 苹果禁止任何读写沙盒以外的文件,禁止应用程序将内容写到沙盒以外的文件夹中;

                             

    虚拟机和沙盒的主要区别

    1. 当沙盒中的应用程序退出后,其所做的更改会被丢弃;而当虚拟机退出后,其所做的更改会被保存下来;

    2. 沙盒中的application和其他application共享机器的硬件资源;而虚拟机在安装时需要为其指定内存memory和cpu核且虚拟机不和其他application共享硬件资源。因此虚拟机实际上是很耗系统资源的。

                                   

    Android的内存管理方式和ios不一样

    Android在手机app切换到后台时,内存空间会保留给这个app,当下次再切换到前台时,app会快速的响应。而ios是app被切换到后台后,很短的时间内就会被清理内存,杀死进程。这样做的好处也是为了给当前切换到前台的应用腾出空间来。这样做的好处就是省电,因为只有前台一个应用在跑。当然还有一些特殊的应用可以一直在后台运行,比如:音乐、gps等。其他的应用在10分钟后都是被系统挂起的,从技术上来说,被挂起的意思等同于不执行,只是数据驻留在内存而已。

     

    Android的出发点是为了让app切换时应用响应速度快,但是造成的后果就是内存可能会被历史应用占用的内存过多,而继续创建新的应用时不够用,才会回收内存。导致想用的app打开时变慢。

    另外一点就是响应优先级不同

    ios是对于屏幕反应的优先级最高,也就是UI指令最高。而Android是数据优先级最高。这2者的对比,可以用一个简单的例子来对比,ios在打开一个app时,它对屏幕的响应优先级是最高的,之后才运行app代码。Android系统打开app的顺序是先运行app的代码,之后再显示在用户的手机屏幕上。直观来看,对用户来说,就是我在ios上点了一下,接着就有反应了,而Android慢了半拍。

    再一点,两者的安装应用方式不一样,Android通过各种应用商店,比如豌豆荚,91助手等等,ios只能通过应用商店,而测试版本的软件,Android可以通过把apk包导入到手机sdcard中,直接安装或者通过adb install命令安装包,ios可以通过iTunes方式安装或者爱思助手之类的软件进行安装ipa。当然现在比较流行的是通过第三方来管理测试包,比如说:蒲公英,这个平台可以把你的测试包上传后,然后开发者可以把需要下载测试包的同学手机UUID加到白名单后,就可以使用ios的测试包了。当然这个平台也可以上传Android软件测试包。

    另外一点,就是Android因为自身代码的开源性,很多的app开发者如果不注意保护自己的代码,很容易被破解后,被其他人打包为别人的,所以Android的app一般都需要做代码的混淆。也就是把正常的代码,混淆完之后,就不容易理解了,比如很常见的方式就是代码的类名改为:a、b、c等等没有意义的名字。而ios因为本身不开源的特点,就不需要做代码混淆。

     ===================================================================================

    参照:http://blog.itpub.net/31407649/viewspace-2285796/

    APP测试的关键点 
    ( 1)功能测试 
    App测试中功能测试是一个重要方面。在进行App测试,测试人员应该进行手动测试。同时对照设计图检查功能是否正确并正常运行。在软件测试中,关注测试点: 
    1、软件是否可以正常运行、安装、卸载; 
    2、登录、注册、注销(在软件测试基础(一)有介绍,这里不详细介绍) 
    3、数据更新、App更新 
    ( 2)客户端测试 
    现在很多软件不仅有手机版也有 PC版,客户端PC机上运行的软件要求兼容不同版本的浏览器,在中高低端的pc机上都可以运行。 
    ( 3)App兼容性测试 
    1、在不同品牌的机型上的安装、点击和卸载是否正常; 
    2、在不同品牌的机型上的各个属性是否兼容; 
    我们在实际测试中,常常会遇到下列问题: 
    1、在某个品牌的机型上,App安装不上; 
    2、在某个品牌的机型上,App点击后无响应或拉起后黑屏、闪退; 
    3、在某个品牌的机型上,App无法顺利卸载; 
    ( 4)安全测试(权限) 
    1、其中包括发送信息,拨打电话,链接网络,访问手机信息,联系人信息和设置权限等 
    2、执行某些操作时导致的输入有效性验证、授权、数据加密等方面 
    3、其中还有关于网络协议的测试,防止恶意的协议发送到服务器 
    ( 5)弱网络测试(流量测试) 
    我们在使用 App过程中,有时会遇到弱网络环境,比如在公车上、在地铁里、郊区或一些学校。在这种情况下,常常会出现网络不稳定、运行超时,下载失败。作为一个测试人员,我们要对App在上线前做一定场景的弱网络环境模型,并查看App在弱网络环境下是否存在某些问题。现在都是通过第三方平台模拟弱网络环境进行测试。

    =====================================================

    参照:https://wenku.baidu.com/view/382dd80af4335a8102d276a20029bd64783e623e.html#

    • IOS系统的这些小功能会影响到你的APP哦,你测了没?

    1、iPhone6以上机型的放大模式 功能入口:设置→显示与亮度→显示模式→标准/放大

    说到这不得不提国民老公思聪在我们尚未拿到iPhone6真机时,给iOS手机输入法提的bug。搜狗输入法在标准模式下显示异常,无法正常使用,另外一个输入法在放大模式下存在相同问题。所以经验之谈,同行兄弟姐妹在测试APP时,要注意iPhone6以上机型有两个显示模式哦~在日常测试时可选择在一个模式下主测,在另一个模式下进行基本测试便可。


    2、后台运行机制

    IOS系统有独特的任务管理机制。

    当应用程序不在前台运行时,除了GPS服务、音频播放服务和VOIP服务以外,其他的应用在10分钟后都是被系统挂起的,从技术上来说,被挂起的意思等同于不执行,只是数据驻留在内存而已。 2)内存管理机制。简单而言,在执行任意应用时,应用向系统申请内存空间,如果应用在使用的过程中不断申请内存,超过了系统限定的内存区间,系统会发出内存警报,严重时会直接将应用杀死。

    同样,如果应用向系统申请内存,系统内存空间不足,系统会结束后台应用的进行,以释放空间资源。

    伪多任务。

    例如微信,看起来貌似是在后台运行,其实不是。你能收到消息提示只是系统推送服务,无论你的应用程序是否在运行,IOS都会在后台维护这个服务以实现假的多任务,并且所有的应用程序都会共用这一服务通道。 所以在测试时不妨在用例里面增加几条后台交互的用例,检验应用的数据是否能正常保存,验证应用被系统强制挂起后,再唤起是否能够正常启用,监测内存占用情况等等。

    3、iOS系统时间不正确可能导致的问题
    由于在测试时会有调节系统时间的操作,在网络正常的情况下,反复频繁的调节系统时间后,发现经常会遇到以下情况,将时间日期改为“自动设置”就会恢复正常了。

    1)iMessage登录失败,提示网络错误,重新登录

    2)软件更新失败,在更新过程中报错

    3)App Store登录失败或App Store加载出错

    4、 后台自动更新应用功能 功能入口

    设置→App Store与iTunes Store→更新 当系统检测到当前设备登录的账号下载的应用存在更新,会自动更新。很多用户误认为应用有强盗行为,会主动在后台静默更新,其实这是iOS系统本身的功能,且默认开启。 在测试验证升级时,可事先将该功能关闭,以免测试环境未部署好,应用便自动更新了~

  • 相关阅读:
    Laravel报500错误
    本地部署laravel项目遇到500错误 软链接
    Class 'Maatwebsite\Excel\ExcelServiceProvider' not found
    laravel5.8报500服务器错误
    phpstudy安装redis
    如何在FastAdmin中使用Ajax发送请求?
    关于mysql处理百万级以上的数据时如何提高其查询速度的方法
    判断一个数组里面的所有键所对应的值是否是为int型
    将json字符串中含有非int型的数字字符全部改为int型
    php判断json是否是一个标准的json字符串
  • 原文地址:https://www.cnblogs.com/ww-xiaowei/p/13852257.html
Copyright © 2020-2023  润新知