6.27___app 面试题
作者:互联网
一、app 闪退有哪些原因?
闪退的原因分为种:一、软件本身有问题;二、系统出现问题。
一、软件问题
(1)app 不兼容系统当前系统版本
(2)app有了新版本,没有跟新(软件对手机分辨率有一定的要求)
(3)软甲有bug
(4)下载和更新不是官网下载的,是第三方软件下载的
(5)网络差(软件对网速的要求比较高,如果用户使用 2 G/3 G 网络)
(6)分辨率不兼容(软件对手机分辨率有一定的要求)
(7)手机被植入病毒
二、系统出现问题
(1)手机内存不足,比如:打开很多app,导致后台反应出现问题
(2)软件授权出现问题
(3)设备已经越狱,导致系统不稳定,闪退成了常事
(4)手机 缓存垃圾太多
(5)安装路径位置错误(比如:安装外置存储卡)
(6)手机配置问题 (比如手机配置低)
解决办法:
1、卸载重新下载新版本,(安装并设置手机储存空间为安装路径即可)
2、及时更新新的版本
3、拒绝从第三方下载(卸载非官方下载的软件)
4、重启应用
5、检查应用兼容性
6、检查应用权限(授予必要的权限即可。 )
7、卸载重装应用
8、清理手机存储空间
9、 恢复出厂设置
10、检查网络(切换好的网络环境)
二、app出现crash(崩溃)原因有哪些?
1.内存管理错误:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。
或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。
亦或非授权的内存位置的使用也可能会导致App crash。
2.程序逻辑错误:数组越界、堆栈溢出、并发操作、逻辑错误。
e.g. app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。
3.设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。
4.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。
三、app测试和web测试区别?
单纯从功能测试的层面上来讲的话,APP 测试、web 测试 在流程和功能测试上是没有区别的。
根据两者载体不一样,则区别如下:
(1)系统结构方面
web项目,b/s(浏览器、服务器)架构,基于浏览器的;web测试只要更新了服务器端,客户端就会同步会更新。
app项目,c/s(客户端)结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。
(2)性能方面
web项目 需监测 响应时间、CPU、Memory(内存)
app项目 除了监测 响应时间、CPU、Memory外,还需监测 流量、电量等
(3)兼容方面
web项目:
1. 浏览器(火狐、谷歌、IE等)
2. 操作系统(Windows7、Windows10、Linux等)
app项目:
1. 设备系统: iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac)
2. 手机设备可根据 手机型号、分辨率不同
(4)相对于 Wed 项目
四、app测试关注点?(专项测试)
APP测试的关注点:分为三大类
一、功能测试:
1.页面展示
2.正常逻辑
3.异常逻辑:包括数据丢失,数据错误,错误数据如何处理,其他正确数据如何处理
4.用户体验
5.接口功能测试
二、性能测试:
1.服务端资源消耗:
CPU 内存 磁盘IO 网络
2.客户端资源消耗:
CPU 内存 磁盘IO 流量 电量(跟流量有直接的关系)
3.页面渲染速度:打开时间 操作反馈 4.视频帧数 5.稳定性
三、移动端特性:
1.安装卸载:
安装位置 存储空间 安装时中断 桌面图标 最低系统要求 开机启动 卸载
2.中断测试:
后台运行(资源抢占:音乐和视频冲突) 手机基础功能 全局提示 应用消息提示
3.升级: 增量更新 覆盖更新 强制更新 静默更新 更新后缓存 跨版本
4.快捷键/通用控件
5.push/toast
6.网络类型:
wifi 运营商 网络切换 飞行模式
7.兼容性:
IOS Android 分辨率 尺寸 PC端 手机浏览器
8.统计埋点
9.安全性
权限 敏感数据 传输协议、加密 反编译
五、app测试流程?
(1)看需求,分析需求
(2)写测试计划(自动化用例场景设计)
(3)写用例( 自动化脚本的编写)
(4)搭建环境(需要下载app测试包)
(5)部署项目包
(5)测试(测试前:冒烟测试,测试中:执行用例 修改bug,验证bug,又要重新打包 安装新的app包在测试)
(6)输出app测试报告
六、app如何抓取日志?
1.6、app如何抓取日志?
1.下载adb工具包。
2.使用dos命令窗口 在dos窗口输入:cd D:\Android(cd后面需空格,路径是你adb存在的路径),然后回车进入到工具包文件夹内 在抓取log前,可输入命令:adb logcat -c然后回车清除旧日志信息。
3结束抓取日志。
七、安卓 系统和ios系统区别?
1.两者运行机制不同:IOS采用的是沙盒运行机制,
iphone沙盒机制解释:应用程序位于文件系统的严格限制部分,程序不能直接访问其他应用程序。以杀毒软件中的沙盒技术解释一下。“沙盒”技术是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。
2. 安卓采用的是虚拟机运行机制。
安卓虚拟机机制解释:android本身不是为触摸屏打造的,所以所有的应用都是运行在一个虚拟的环境中,由底层传输数据到虚拟机中,再由虚拟机传递给用户UI,任何程序都就可以轻松访问其他程序文件。
② 两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
③ IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。
④ ios系统流畅性更具优势。Android系统采用虚拟机的运行机制,需要消耗更多系统资源。Android系统使用一段时间后容易出现卡顿,而ios系统则很少出现卡顿现象,并且Android系统的桌面灵敏性不如ios系统。
⑤ Android的编程语言是JAVA,而iOS的则为Objective-C。Objective-C的优势是效率高但比较“唯一”,而JAVA的优势则是跨平台不过运行效率相对偏低。
⑥ 操作界面来讲,ios系统界面单一。而Android的界面可以根据自己的喜好来设置,更加多样化。
⑦ 省电的角度来讲,ios系统更加省电。这是系统机制决定的。Android会占用更多的资源来支撑系统运行,导致了它会比较费电。
八、mokey 是用来做什么?
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
九、常用的adb命令
网络连接
1 连接网络: adb connect ip地址
2 断开网络: adb disconnect
安装卸载:
1 覆盖安装启动器: adb install -r -d xxx.apk
2 安装测试启动器: adb install -r -t xxx.apk
3 杀进程: adb shell am force-stop xxx.apk
捞取日志
1 先清空旧日志 adb logcat -c
2 存储新日志到XX.txt文件 adb logcat -v time >XX.txt
3 捞取anr日志: adb pull /data/anr/traces.txt
日常命令使用
1 返回主屏幕 adb shell input keyevent 3
2 截屏 adb shell screencap -p /sdcard/screen.png
3 导出 adb pull /sdcard/screen.png
4 查看cpu占用 adb shell top -m 10 | grep xxx.apk$
5 清理app缓存 adb shell pm clear
6 进入最近任务页 adb shell input keyevent KEYCODE_APP_SWITCH
7 获取设备的状态 adb get-state
8 获取设备列表及设备状态 adb devices
9 进入系统设置 adb shell
am start com.android.settings
10 查看摄像头固件版本 adb shell am start -n com.mario.sdktester.debug/com.mario.sdktester.MIPISDKDemo
11 查看smile版本号 adb shell dumpsys package xxx.apk|grep version
12 F4解绑键盘 adb shell am start com.android.settings/com.android.settings.Settings
13 换adbkey后杀进程 adb kill-server
14 一台电脑同时捞多台机子日志 a
15 过滤 netstat
十、你了解的app测试工具?
一、APP自动化测试工具
● Appium
● Airtest
● uiautomator2(python)
二、APP稳定性测试工具
● Monkey
● MonkeyRunner
● Maxim
● UICrawler
三、APP性能测试工具
● GT
● Perfdog
● SoloPi
四、APP弱网测试&抓包工具
● QNET
● Fiddler
● Charles
五、APP兼容性测试工具
● TestIn
● 腾讯优测
● 百度MTC
● 阿里MQC
六、APP安全测试工具
● OWASP ZAP
● Drozer
● MobSF
● QARK
十一: 你知道什么是冷启动,暖启动,热启动,首屏启动?
APP启动会发生多个事件,测试人员需要知道整个环节是否出现问题,需要了解到具体是哪个环节存在问题:
冷启动:当进程不存在的时候,从进程创建开始到界面的展示的过程;
暖启动:有一部分资源已经存在,进程存在,相对于热启动要消耗更多资源。当用户退出应用程序时,进程还会存在,暖启动相较于冷启动只是少了进程的创建;
热启动:大部分资源都在,只是应用之间的切换;
首屏启动:第一屏加载完整;
标准:
冷启动:需要5秒甚至更长;
暖启动:需要2秒甚至更长;
热启动:需要1.5秒甚至更长;
十二. app自动化连接参数包含哪些内容?
平台系统,设备名称,平台版本,包名,活动首页,使用unicode编码
十三:appium 是一个什么样的工具?
appium 是一个自动化测试开源工具,支持iOS和 Android平台上的原生应用,web应用和混合应用。
● 移动原生应用:单纯用ios或者android开发语言编写的、针对具体某类移动设备、可直接被安装到设备里的应用,一般可通过应用商店获取,比如某个游戏app;
● 移动web应用:使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome),不需要下载到设备上,而是通过浏览器直接访问,比如H5九曲封神游戏;
● 混合应用:同时使用网页语言与程序语言开发,通过应用商店区分移动操作系统分发,用户需要安装使用的移动应用,比如手机上的淘宝客户端。
十四:app测试如何区分原生和h5?
一、看断网的情况
把手机的网络断掉。然后点开页面。然后可以正常显示的东西就是原生写的。
显示404或者错误页面的是html页面。
二、看布局边界
可以打开 开发者选项中的显示布局边界,页面元素很多的情况下布局是一整块的是h5的,布局密密麻麻的是原生控件。页面有布局的是原生的否则为h5页面。(仅针对安卓手机适用)
三、看复制文章的提示
这个需要你通过对比才能得出结果,比如是文章资讯页面可以长按页面试试,如果出现文字选择、粘贴功能的是H5页面,否则是native原生的页面。
有些原生APP开放了复制粘贴功能或者关闭了。而H5的css屏蔽了复制选择功能等等情况。需要通过对目标测试APP进行对比才可知。
这个在支付宝APP、蚂蚁聚宝都是可以判断的。
四、看加载的方式
如果在打开新页面导航栏下面有一条加载的线的话,这个页面就是H5页面,如果没有就是原生的。微信里面打开我们的H5页面常见的有个绿色的 加载线条。如下图红框里面所示:
五、看app顶部 导航栏是否会有关闭的操作
如果APP顶部导航栏当中出现了关闭按钮或者有关闭的图标,那么当前的页面肯定的H5,原生的不会出现(除非设计开发者故意弄的)
美团的、大众点评的APp、微信APP当加载h5过多的时候,左上角会出现关闭2字。
六、判断页面 下拉刷新的时候(前提是要有下拉刷新的功能)
如果界面没有明显刷新现象的是原生的,如果有明显刷新现象(比如闪一下)的是H5页面(ios和android)。
七、下拉页面的时候显示网址提供方的一定是H5
以上7点也是目前帮大家整理出来的比较容易判断的一个APP页面是原生的还是H5页面的方法。
十五:app上线后出现卡顿,要从哪些方法考虑原因?
1 客户端缓慢
2 服务器缓慢
3 小型数据库
4 频繁对话
5 网络服务迟缓
十六:app出现anr(无响应)是什么问题
1.主线程执行了耗时操作,比如数据库操作或网络编程
2.其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间片,比如其他进程的频繁读写操作可能会导致这个问题。
细分的话,导致ANR的原因有如下几点:
1.耗时的网络访问
2.大量的数据读写
3.数据库操作
4.硬件操作(比如camera)
5.调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候
6.service binder的数量达到上限
7.system server中发生WatchDog ANR
8.service忙导致超时无响应
9.其他线程持有锁,导致主线程等待超时
10.其它线程终止或崩溃导致主线程一直等待。
十七app如何进行流量测试?
方法一:Android系统自带统计功能(总体流量数值)
Proc/uid_stat/{UID}/tcp_snd和tcp_rcv
UID是每个app安装时候分配的唯一编号用于识别该app.
tcp_snd:表示发送数据累计大小,单位是字节
tcp_rcv:表示接收到的数据累计大小。
具体步骤:
(1)通过包名获取app的PID;
(2)再访问/proc/{PID}/status文件查找app对应的UID;
(3)通过UID号加上100000号查看接收和发送的流量文件
方法二:Wireshark+tcpdump
./tcpdump -s 0 -w ./t1.pcap -v
-s 0:默认抓包抓取长度是68字节,加上-s 0可以抓到完整的数据包。
-w xxx:抓取到的包存放路径。
-v:抓包过程中显示抓包的数量
方法三:GT(随身调)工具(直接调用android的api):
TrafficStats类是Android提供的一个流畅统计类,可以统计手机开机累计到现在使用的流量,也可以统计某个或者多个进程或者应用所使用流量,包括Wi-Fi和移动数据GPRS。
GT使用TrafficStats.getUidTxBytes(uid)来获取流量数据(该方法号称是获取到指定 uid 发送流量的总和,但实测情况是只有 tcp 层的流量)。
GT(随身调)是APP的随身调试平台,是直接运行在手机上的IDTE。可以使用GT对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等)、开发日志查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。
十八app如何进行弱网测试?
弱网情况
弱网情况下APP是否针对请求做了超时处理
网络延迟的情况下,操作app进行数据同步、OTA升级是否会发生Crash、ANR等严重错误
弱网情况下,APP请求回调未完成时,执行其他动作以及交互时,是否会出现APP闪退(如:驾考IOS开屏闪退)等异常。
弱网情况下,原始数据是否出现丢失的情况(弱网下载时会出现丢包情况)
弱网环境下,是否会出现请求堆积的情况
弱网环境下,APP各个页面是否显示完整
系统超时,提示信息是否清晰明确
弱网情况下APP的响应时间是否在一个合理的时间范围内
请求回调未完成--驾考科四难题攻克弹窗
这个弹窗是服务器说了算,服务器知道该用户啥时候弹弹窗。若用户在做题页面时返回了,则该用户下次进入且在服务器缓存时间内,应该给出弹窗(产品逻辑:弹窗出现后用户必须看到才消失)
请求堆积:水池注水排水问题
十九app如何进行压力稳定性测试?
APP怎么进行压力稳定测试
monkey压力测试原理
1. Monkey 就是SDK中附带的一个工具。Monkey是Android中的一个命令行
工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按
键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
该工具用于进行压力测试。然后开发人员结合monkey打印的日志和系统打印的日
志,分析测试中的问题
2、 Monkey运行原理:
命令行:adb shell monkey
--》monkey.shell --》monkey.jar
--》android进程--》设备上执行测试
Monkey实战:
adb shell monkey help:monkey命令介绍
adb shell monkey 100:对模拟器或真机做100次随机操作
adb shell pm list package -3:显示第三方的app包的名称
adb shell monkey –p app包名 100:对指定的app做100随机操作
Monkey稳定性实战:
adb shell monkey –p app包名 –throttle 1000 100:
对指定的app每隔1秒做1次操作 做100次
adb shell monkey –p app包名 –throttle 1000 36000:
每隔1秒对app随机做1次操作持续10小时(实际工作测app稳定性时使用)
Monkey日志分析:
(1)Monkey日志命令:
-v:leve0 除启动提示、测试完成和最终结果之外、提供较少信息
-v -v:leve1 提供较为详细的日志,包括每个发送到Activity的事件信息
-v –v –v:leve2 最详细的日志,包括了测试中选中,未选中的Activity信息
(2)Monkey日志分析:
adb shell monkey –p app包名 --throttle 1000 –v-v-v 100:
每隔1秒对app做1次随机操作,执行100次,并输出详细日志
adb shell monkey –p app包名 --throttle 1000 –v-v-v 100
>C:\Users\Desktop\applog.txt:输出日志文件到本地路径
二十 app的多种开发模式是什么?
1 原生APP开发
2 Web APP (HTML5)开发
3 混合(原生+HTML5)
标签:面试题,shell,APP,6.27,adb,测试,___,app,页面 来源: https://www.cnblogs.com/xukairoot/p/16420173.html