ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

6.27___app 面试题

2022-06-28 17:02:33  阅读:130  来源: 互联网

标签:面试题 shell APP 6.27 adb 测试 ___ 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有