其他分享
首页 > 其他分享> > 6.27___app 面试题

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