1. 如何模拟弱网做测试?

•大部分都是选择第三方软件Charles、fiddler工具进行模拟

2. APP测试与Web测试的区别?

相同点: 测试流程、基本功能测试

不同点:

系统结构方面

•web测试基于浏览器的b/s架构,web测试只要更新了服务器端,客户端就会同步会更新,并且保证每一位用户的客户端完全一致    •app测试c/s结构的,需要有客户端,更新了服务器端,是不能保证每一位用户的客户端一致,除非用户更新了客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。

兼容性测试

•web端是兼容浏览器,浏览器的兼容则是一般是选择不同的浏览器内核进行测试(IE、chrome、Firefox)•App端兼容的是手机设备,需要从分辨率、屏幕尺寸、设备系统方面

相对于web,App端专项测试

交叉事件测试

•中断,来电,短信,关机,重启

界面操作

•手势,横竖屏切换,多点触控,前后台切换

安全测试

•安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等

边界测试

•可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖等

权限测试

•设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等

网络测试

•弱网络测试(模拟2g、3g、4g、5g,wifi网络状态以及丢包情况•网络切换测试(网络断开后重连、3g切换到4g、5g/wifi 等)

安装、更新、卸载

•安装:需考虑安装时的中断、弱网、安装后删除安装文件,全新安装、升级安装、第三方工具安装等情况•卸载:需考虑第三方工具卸载、直接卸载,卸载后是否删除app相关的文件•更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新

性能测试

•需要考虑流量、电量、CPU、GPU、Memory、fps(流畅度)、安装耗时和启动耗时这些

3. IOS和Android的APP测试有什么区别?

•物理按键:Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;iOS所有的返回上一层,只能靠页面功能实现。•多分辨率测试:Android端20多种;IOS较少。•手机操作系统:Android较多,IOS较少且不能降级,只能单向升级;新的IOS系统中的资源库不能完全兼容低版本中的IOS系统中的应用,低版本IOS系统中的应用调用了新的资源库,会直接导致闪退。•操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等。•push测试:Android点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;IOS点击home键关闭程序和屏幕锁屏的情况(红点的显示)。•安装卸载测试:Android可以通过手机自带的应用市场或者是第三方的手机助手进行下载,下载和安装的平台和工具和渠道比较多;IOS主要有app store,iTunes和testflight下载。•升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号)。•支付方式:对于一些有内购功能的APP,Android直接调用第三方支付渠道完成支付;IOS需要先在APP store里绑定支付方式,然后通过APP store去完成支付操作。•消息推送机制:Android使用第三方或者自建平台进行消息推送;IOS的消息推送渠道由苹果官方提供。

4. Android手机和IOS手机,系统有什么区别?

•两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。

•IOS 沙盒运行机制: 每个程序都有自己的虚拟地址空间。所以,程序之间不能进行访问。 默认只会将应用的最后运行数据,记录在RAM里面。

•Android 虚拟机运行机制: 所有的应用程序都是运行在虚拟机中,用户界面其实是由虚拟机传递的,并且通过虚拟机,Android的任何程序都就可以轻松访问其他程序文件。 所有的Android的应用程序都是运行在RAM里面的,所以会发现有时候Android用着用着就开始有点卡顿。

•两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。    •IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。    •开发机制:Android的编程语言是JAVA,而iOS的则是Objective-C    •流畅度:安卓依旧和苹果的IOS系统有很大差距,安卓手机一两年一般就会出现卡顿的情况,iOS系统3年都运行很流畅    •更新、维护:Android系统出现问题解决时间比较久,iOS修复时间很快    •封闭、开发:Android手机的系统一般为开源设计,允许各大手机厂商的深度定制,其优点是应用App多样,体验丰富,可以安装海外版App,但缺点则是App权限管控不严,易产生数据残留,影响系统的流畅运行;而苹果iOS机型的系统采用的则是闭合设计,优点是App权限管控严格,系统运行稳定、持久流畅度较高,但缺点是App正规安装渠道只有App Store,限制了APP的多样性

5. APP兼容性如何测试?

APP 兼容性测试可以新旧版本兼容测试、不同机型测试(系统兼容性、屏幕兼容性、分辨率兼容、尺寸兼容)、不同网络等方面

•新旧版本兼容性测试

•新旧版本覆盖安装升级正常    •新增功能,新旧版本覆盖安装后使用正常

•不同手机机型测试

•手机OS系统兼容性

•iOS 系统:iOS10+    •Android 系统:Android5+

•手机屏幕类型兼容性

•iOS:刘海屏、非刘海屏    •Android:全面屏、非全面屏、曲面屏、折叠屏

•分辨率兼容性

•iOS:640 * 1136:iPhone 5s、1242 * 2208:iPhone 6 plus、1125 * 2436:iPhone X、828 * 1792:iPhone 11、1125 * 2438:iPhone 11 pro、1242 * 2688:iPhone 11 pro max、750 * 1334:iPhone 6、1170 * 2532:iPhone 12、1284 * 2778:iPhone 12 pro max、1080 * 2340 :iPhone 12 mini    •Android:Android 不同厂家机型多,不同多屏幕分辨率非常多,常见:1440 * 3200、1344 * 2772、1080 * 2400、1080 * 2376、1080 * 1920、 2340 * 1080

•尺寸兼容性:

•iOS 主要机型尺寸:4 寸-6.7 寸•Android 主要机型尺寸:5 寸-6.7 寸

•网络兼容性

•Wi-Fi 切换 4G/5G 网络情况下功能是否正常•4G/5G 网络切换 Wi-Fi 情况下功能是否正常•有网切换无网情况下功能是否正常•无网切换有网情况下功能是否正常

6. Android四大组件

•Activity: 应用程序中,一个Activity就相当于手机屏幕,它是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序可以包含许多活动,比如事件的点击,一般都会触发一个新的Activity。    •BroadcastReceiver广播接收器:应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。    •ContentProvider内容提供者: 内容提供者主要用于在不同应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。只有需要在多个应用程序间共享数据时才需要内容提供者。例如:通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处:统一数据访问方式。    •Service服务:是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要长期运行的任务(一边打电话,后台挂着QQ)。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持正常运行,不过服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉后,所有依赖于该进程的服务也会停止运行(正在听音乐,然后把音乐程序退出)。

7. Activity生命周期?

•运行(Active/Running):Activity处于活动状态,此时Activity处于栈顶,是可见状态,可以与用户进行交互• 暂停(Paused):当Activity失去焦点时,或被一个新的非全面屏的Activity,或被一个透明的Activity放置在栈顶时,Activity就转化为Paused状态。此刻并不会被销毁,只是失去了与用户交互的能力,其所有的状态信息及其成员变量都还在,只有在系统内存紧张的情况下,才有可能被系统回收掉•停止(Stopped):当Activity被系统完全覆盖时,被覆盖的Activity就会进入Stopped状态,此时已不再可见,但是资源还是没有被收回•系统回收(Killed):当Activity被系统回收掉,Activity就处于Killed状态

如果一个活动在处于停止或者暂停的状态下,系统内存缺乏时会将其结束(finish)或者杀死(kill)。这种非正常情况下,系统在杀死或者结束之前会调用onSaveInstance()方法来保存信息,同时,当Activity被移动到前台时,重新启动该Activity并调用onRestoreInstance()方法加载保留的信息,以保持原有的状态。

8. App出现ANR,是什么原因导致的?

•主线程执行了耗时操作,比如数据库操作或网程•其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间片,比如其他进程的频繁读写操作可能会导致这个问题。

更详细的区分导致ANR的原因有如下几点:

•耗时的网络访问•大量的数据读写•数据库操作•硬件操作(比如camera)•调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候•service binder的数量达到上限•system server中发生WatchDog ANR•service忙导致超时无响应•其他线程持有锁,导致主线程等待超时•其它线程终止或崩溃导致主线程一直等待

9. App出现Crash原因有哪些?

•内存管理错误:可能是可用内存过低,app 所需的内存超过设备的限制,app跑不起来导致 App crash。或是内存泄漏,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。亦或非授权的内存位置的使用也可能会导致 App crash。•程序逻辑错误:数组越界、堆栈溢出、并发操作、逻辑错误。e.g. app 新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会 crash。•设备兼容:由于设备多样性,app 在不同的设备上可能会有不同的表现。•网络因素:可能是网速欠佳,无法达到 app 所需的快速响应时间,导致 app crash。或者是不同网络的切换也可能会影响 app 的稳定性。

10. App在出现偶现ANR和Crash时候你是怎么处理的?

•debug版本阶段:如果APP本身有保存错误日志在手机,出现anr和crash的时候会自动把日志保存到本地实际的sd卡上,去对应的app目录取出来就行•实时抓取:应用日志都会自动保存在手机一段时间,当出现偶然的crash时候,直接通过adb获取即可•第三方sdk统计工具:后台会抓到报错的日志

11. app的日志如何抓取?

•可以使用adb命令:adb logcat | find "包名" >d:\log.log    •用ddms抓取,手机连上电脑,打开ddms工具    •在Android Studio开发工具中,打开DDMS

12. 你在看APP日志时, 通常看见过哪些异常(Exception)?

•NullPointerException - 空指针引用异常        •ClassCastException - 类型强制转换异常。        •IllegalArgumentException - 传递非法参数异常。        •ArithmeticException - 算术运算异常        •ArrayStoreException - 向数组中存放与声明类型不兼容对象异常        •IndexOutOfBoundsException - 下标越界异常        •NegativeArraySizeException - 创建一个大小为负数的数组错误异常        •NumberFormatException - 数字格式异常        •SecurityException - 安全异常        •UnsupportedOperationException - 不支持的操作异常

13. 冷启动、暖启动、热启动

•冷启动:当进程不存在的时候,从进程创建开始到界面的展示过程;•暖启动:有一部分资源已经存在,进程存在,相对于热启动要消耗更多资源。当用户退出应用程序时,进程还会存在,暖启动相较于冷启动只是少了进程的创建;•热启动:大部分资源都在,只是应用之间的切换;

14. 常用的adb命令有哪些?

•adb devices 查看手机设备    •adb install packsge(包路径) 安装包    •adb install -r packages(保留数据及缓存文件安装新包)    •adb uninstall package (卸载包)    •adb kill-server 关闭adb服务    •adb start-server 启动adb服务    •adb shell pm list packages 查看手机里面所有包名    •adb shell pm list packages -3 查看手机里面所有第三方包名    •adb shell /system/bin/screencap -p /sdcard/xx.png 截屏并保存文件在手机上为xx.Png    •adb pull /sdcard/xx.png D:/xx.png 将手机xx.png文件保存到D盘文件下    •adb push D:/xx.text /adcard/xx.text 将电脑文件导入手机    •adb shell pm clear packagename 清除缓存数据    •adb shell am start -n packagename/activity 启动程序    •adb shell am force-stop packagename 强制停止运行程序    •adb logcat 查看日志    •adb logcat > D:\log.txt 将日志打印到电脑上    •adb kill-server /adb start-server 结束和启动adb服务

15. Monkey 常用面试问题汇总

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走


在此特意为大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面,涵盖功能测试、Python编程语言,接口测试、UI自动化测试、性能测试......包括软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2022软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助…..关注下方公众号免费获取~

软件测试面试题 —— 移动端功能测试高频面试题相关推荐

  1. 软件测试面试题-移动端功能测试高频面试题

    题目列表 如何模拟弱网做测试? APP测试与Web测试的区别? IOS和Android的APP测试有什么区别? Android手机和IOS手机,系统有什么区别? APP 兼容性如何测试? Androi ...

  2. 软件测试面试宝典,大厂测试高频面试题详解一网打尽,速看

    很多软件测试工程师在面试时会遇到考官给出的各种面试问题,这也体现了测试工程师对企业的重要性.面试通常分为以下几个方面.由于篇幅有限,这里我只分享一些常见的问题. 一.自我介绍 这里就不分享如何自我介绍 ...

  3. 计算机网络高频面试题最新版

    在秋招过程中看了大量面经,将常见的计算机网络面试题总结如下,并按照面试中提问的频率做了标注(星数越高,面试中提问频率越高),如有帮到你,可以收藏点赞支持哦. 微信搜索公众号路人zhang,回复面试手册 ...

  4. MySQL数据库优化高频面试题(最新版)

    MySQL数据库基础知识及优化高频面试题 微信搜索公众号路人zhang,回复面试手册,领取更多高频面试题PDF版及更多面试资料. 推荐阅读: Java基础知识高频面试题最新版 计算机网络高频面试题最新 ...

  5. 数据库索引高频面试题(最新版)

    MySQL的索引是面试中的高频题目,将常见的索引面试题目总结了一下,如果有帮到你可以点赞收藏呦. 微信搜索公众号路人zhang,回复面试手册,领取更多高频面试题PDF版及更多面试资料. 面试手册在线版 ...

  6. MySQL高频面试题(最新版)

    MySQL高频面试题,题目后面的星数越高,在面试中越高频 微信搜索公众号路人zhang,回复面试手册,领取更多高频面试题PDF版及更多面试资料. 面试手册在线版: www.mianshi.online ...

  7. 10年测开经验面试35K公司后,吐血整理出高频面试题和答案!

    一:前言 在当今竞争激烈的职场环境中,拥有丰富的测试开发经验已成为众多企业青睐的重要条件之一.而在面试过程中,高频面试题更是能够考察应聘者的实际能力和知识水平.本文作者具备10年的测试开发经验,并通过 ...

  8. android activity生命周期_Android岗高频面试题合一集,看你能答出几题?

    前言 面试季黄金时期来袭,想必许多朋友在这时有找工作.换工作.跳槽涨薪等想法,但你们都有一个相同的过程那就是面试.大家肯定想知道面试时都问哪些面试相关问题,所以就去网上查找题去刷题,为了省去大家找题的 ...

  9. 面试突击 | 彻底搞定 JVM 这几道高频面试题

    前言 Java 相比 C/C++ 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C++ 最令人头疼的内存管理问题,让程序员专注于程序本身,不用关心内存回收这 ...

最新文章

  1. 分享:Svg文件转换为图片(调用 Inkscape 命令行)
  2. Linux 性能測试工具
  3. 为什么Java的main方法必须是public static void?
  4. JavaScript多文件下载
  5. 可视化日历(Java实现)
  6. 5 Expressing future time
  7. Vue学习笔记(四)
  8. gem install XXX报错
  9. redis 加载mysql_Mysql Redis PostgreSQL数据库查看客户端连接
  10. J1939CANTP
  11. 社科院与杜兰大学金融管理硕士——在自己的领域努力拼搏,终将遇到专属的光芒
  12. 十进制转换为二进制(短除法)
  13. leangoo脑图-共享式多人协作思维导图工具分享
  14. Mac OS中隐藏和显示文件的操作
  15. CALayer创建图层(转)
  16. springboot 配置文件 date-format 失效
  17. 遇到的坑-语法错误: Non-UTF-8 code starting with '\xe7' in file
  18. Sothink SWF Decompiler 4中文破解版---flash9(as3)要加密吗?
  19. 三峡风光计算机作业课程,三峡素描+三峡之歌
  20. 13.3.11 ORDER BY语句

热门文章

  1. 如何找到msdn中文文档呢?
  2. 加载css文件的几种方法,CSS 引入方式
  3. redisTemplate执行lua脚本
  4. git下载(无法下载需要授权)
  5. Only no-arg methods may be annotated with @Scheduled报错
  6. 集成电路封装类型有哪些?图文汇总如下
  7. 调优为王!阿里巴巴彩版java性能调优实战,终于到手了!
  8. Study JavaScript《JS操作SVG的一些知识》
  9. 思科计算机网络ppt,【思科网络课件】计算机网络双语教程第五章.ppt
  10. CSS的三种引入方式:外部样式、内部样式和行内样式