APP测试面试题

1、web测试和APP测试的区别?

web测试和APP测试都离不开测试的基础知识和测试原理。
不同点是:web 测试更多的是考虑自身功能和浏览器兼容,app 测试要考虑手机本身固有的属性,所以 app 测试还需要注意以下几点:

  • 中断测试(来电去电,短信,蓝牙,NFC 支付,闹钟,数据线插拔,锁屏,断电,关机重启等)
  • 安装卸载测试(全新安装,新版本覆盖旧版本,卸载旧版本安装新版本,卸载新版本安装旧版本)
  • 外在因素测试(网络切换,硬件按键,不同分辨率,兼容性,系统,系统版本)

2、如何测试一个APP的登录场景

  1. 页面基本元素的操作;
  2. 大量字符,特殊字符,边界值,必填项校验;
  3. 注册手机号的特殊性验证,注册邮箱的格式验证;
  4. 密码大小写是否敏感,密码是否加密展示,密码是否有可见按钮功能,密码框能否使用复制粘贴;
  5. 验证码校验:必填项,过期,错误,无网络时获取验证码,多次获取,超过获取次数,输入验证码后,修改手机号;
  6. 登录时与系统的交互:锁屏,蓝牙,home,后退,横竖屏,修改字体字号;
  7. 逆向思维:已注册账号注册,未注册账号忘记密码,未注册账号登录,注册过程中退出再次注册;
  8. 输入法交互,切换输入法,切换输入模式,手写/九宫格;
  9. 登录账号的多样性:多个账号轮流登录,同一个账号多角色登录;
  10. 第三方登录验证:账号授权,信息正确,取消授权;
  11. 登录页面跳转,返回,登录成功及其他页面跳转;
  12. 手机兼容性测试:分辨率兼容,系统兼容,系统版本兼容,App 版本兼容;
  13. 网络切换,网络断开,弱网。

3、push消息如何测试?

  1. 检查 Push 消息是否按照指定的业务规则发送;
  2. 检查不接收推送消息时,用户不会再接收到 Push 消息;
  3. 如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到 Push。在非免打扰时间段内,用户能正常收到 Push;
  4. 当 Push 消息是针对登录用户的时候,需要检查收到的 Push 与用户身份是否相符,没有错误的将其他人的消息推送过来。一般情况下,只对手机上最后一个登录用户进行消息推送;
  5. 测试 Push 时,在开关机、待机状态下执行推送,消息及其推送跳转的正确性;
  6. push 消息时,会有红点展示,推送消息阅读前后数字的变化是否正确;
  7. 应用在开发、未打开状态、应用启动且在后台运行的情况下是 push 显示和跳转否正确;
  8. 多条推送的合集的显示和跳转是否正确。

4、APP的闪退通常是什么原因?

  1. 缓存垃圾太多,Android 系统的特性,如果长时间不清理垃圾文件,会导致越来越卡,甚至闪退;
  2. 运行程序太多,导致内存不足;
  3. 应用版本兼容问题,分辨率兼容问题;
  4. APP中访问网络的地方,组件能否正常下载并显示;
  5. APP的 SDK 与手机系统不兼容;
  6. 系统升级后,新版本不兼容老版本的 API,返回对象失败,报空指针;
  7. 软件权限未开放。

5、测试过程中遇到 app 出现 crash 或者 ANR,你会怎么处理?

APP 出现 Crash 或 ANR,可以从以下几个方面处理:

可以先把日志过滤出来:adb logcat | findstr xxxxx(过滤日志信息) ;

然后再搜索其中的关键字,比如:exception、crash,看看是哪些方法或者异常导致了问题;

初步定位问题原因后,可以交给开发人员去具体查找深层原因并修复。

6、你平常会看日志吗, 一般会出现哪些异常(Exception)?

常见的几种如下:

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

7、APP 测试的内容主要包括哪些,如何开展?

功能测试

业务逻辑正确性测试:依据产品文档->测试用例编写。

兼容性测试

1.系统版本:Android:官方版本,定制版本;IOS:官方提供版本。

2.分辨率:720 * 1280 1080* 1920。

3.网络情况:2g 3g 4g 5g Wi-Fi。

异常测试

1.热启动应用:应用在后台长时间待机;应用在后台待机过程中,手机重启。

2.网络切换和中断恢复:网络切换;中断恢复。

3.电话信息中断恢复。

升级,安装,卸载测试

1.升级测试:临近版本升级(1.0->1.1);跨版本(1.0->…->2.2)。

2.安装测试:首次安装;覆盖安装(同版本,不同版本覆盖);卸载后安装。

3.卸载测试:首次卸载;卸载安装后在卸载。

健壮性测试

1.手机资源消耗:cpu,内存。

2.流量消耗:图片,数据,视频。

3.电量测试。

4.崩溃恢复。

8、APP 性能测试关注点及常见 APP 性能测试工具

包体大小

包体大小能被列为性能指标,是从 APP 性能指标及运营两个维度考虑的,用户是更希望包体小的同时性能要好,有时它们会是一个互相取舍的关系。

启动时长

移动应用的启动时间是用户体验的一个重要方面,IOS 一直建议尽可能的缩短启动时间,防止用户不愿意使用它们。对于浏览器而言,由于程序启动时还会有教育页和闪屏的下发,因此启动时间的获取显得尤为重要。

启动时间分为冷启动时间和热启动时间,所谓的“冷启动”,就是一个完全没有运行的应用的启动时间,与热启动(应用已经在后台运行,某个事件将其带至前台)相比,由于此时系统尚未建立缓存,因此冷启动往往要较平时(热启动)耗费更长的时间。

内存使用

在 Android 系统中,每个 APP 进程除了同其他进程共享(shared dirty)外,还独用私有内存(private dirty),通常我们使用 PSS(=私有内存+比例分配共享内存)来衡量一个 APP 的内存开销。移动设备的内存资源是非常有限,为每个 APP 进程分配的私有内存也是有限制。一方面我们要合理的申请内存使用,以免导致频繁的 GC(垃圾回收机制)影响性能和大对象申请发生内存溢出;另一方面,我们要及时释放内存,以免发生内存泄漏。

CPU 占用率

一般情况下,用主流手机使用 APP20%-40%的 CPU 占用率算是合理的,当然这个数值随着近年来手机硬件配置的提高,会略微下降,如果 CPU 占用率超过 80%就非常值得我们去关注了。

图片处理器每秒刷新的帧数(FPS)

可用来指示页面是否平滑的渲染。手机 APP 帧率 FPS,30-60 都可接受,上了 60 对于人眼主观感受差别就不大了。对于移动应用开发而言,并不是 FPS 越高就一定越好,FPS 取决于显卡,其次是内存、CPU,然后是网络。故综合 APP 其他性能指标,选择一个适合的 FPS 即可。

电量

相对于 PC 来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要。另外,android 的很多特性都比较耗电(如屏幕,GPS,sensor 传感器,唤醒机制,CPU,连网等的使用),我们必须要慎重检查 APP 的电量使用,以免导致用户手机耗电发热,带来不良体验。

流量

目前的网络类型包含 2G\3G\4G\5G\wifi,其中还有不同运营商的区分,我们在 APP 的使用中经常遇到大资源,重复请求,调用响应慢,调用失败等各种情况。在不同的网络类型之下,我们不仅要控制流量使用,还需要加快请求的响应。另外,对于需要联网的手游来说,部分游戏对不同联网方式的网络类型采用了不同的流量消耗策略,主要分为 wifi 环境和蜂窝网络环境。所以针对不同的游戏,我们统计流量消耗时,可能要连接不同的网络进行测试。

app 性能测试工具

GT 和 iTest,Emmagee APT ,DDMS ,手机自带开发者选项中的工具,也可以通过 adb 命令来查看等。

9、如何对 app 进行弱网测试

弱网测试可以测试 APP 的加载时间、可用性、稳定性和健壮性。这时我们就可以借助工具来模拟不同的网络状况,模拟 2G、3G 或弱网情况进行测试。工具可以选择 Fiddler 也可以选择 Charles 也可以选择其他工具。

10、常见的 adb 命令

注:adb 使用的端口号是 5037,以下总结工作中常用到的 adb 命令。

1.查看帮助手册列出所有的选项说明及子命令:

adb help
2. 获取设备列表及设备状态:

adb devices

3.安装应用:adb install 路径\xx.apk, 安装应用;adb install -r 重新安装。

adb install

adb install -r
4. 获取设备的状态,设备的状态有 device , offline , unknown3 种,其中 device:设备正常连接,offline:连接出现异常,设备无响应,unknown:没有连接设备。

adb get-state

5.卸载应用:adb uninstall <包名>, 后面的参数是应用的包名,区别于 apk 文件名。

adb uninstall

6.将 Android 设备上的文件或者文件夹复制到电脑本地:adb pull <远程路径> <本地路径>, 如复制 Sdcard 下的 pull.txt 文件到 D 盘:adb pull sdcard/pull.txt d:\,重命名:adb pull sdcard/pull.txt d:\rename.txt。

adb pull

7.推送本地文件至 Android 设备:adb push <本地路径> <远程路径>, 如推送 D 盘下的 ITester.txt 至 Sdcard:adb push d:\ITester.txt sdcard/ (注意 sdcard 后面的斜杠不能少)。

adb push

8.结束和启动 adb 服务:adb kill-server /adb start-server , 结束 adb 服务/启动 adb 服务,通常两个命令一起用,设备状态异常时使用 kill-server,运行 start-server 进行重启服务。

adb kill-server

adb start-server

9.打印及清除系统日志:adb logcat , 打印 Android 的系统日志 ;adb logcat -c,清除日志。

adb logcat

adb logcat -c

10.查找包名/活动名

adb logcat | findstr START

11.生成 bugreport 文件:adb bugreport , 打印 dumpsys、dumpstate、logcat 的输出,也是用于分析错误,输出比较多,建议重定向到一个文件中,如 adb bugreport > d:\bugreport.log。

adb bugreport
12. 重启 Android 设备:adb reboot , adb reboot recovery,重启到 Recovery 界面; adb reboot bootloader,重启到 bootloader 界面。

adb reboot

adb reboot recovery

adb reboot bootloader

13.获取 root 权限:adb root , adb remount,可以直接获取 root 权限,并挂载系统文件系统为可读写状态。

adb root

adb remount

14.返回设备序列号 SN 值:

adb get-serialno

15.获取设备的 ID:

adb get-product

16.进入设备 shell:

adb shell

17.列出所有的应用的包名:

adb shell pm list package

18.截屏并保存至 sdcard 目录:

adb shell screencap -p /sdcard/screen.png

19.录制视频并保存至 sdcard:adb shell screenrecord sdcard/record.mp4,执行命令后操作手机,ctrl + c 结束录制,录制结果保存至 sdcard:

adb shell screenrecord sdcard/record.mp4

20.获取设备分辨率:

adb shell wm size

21.列出指定应用的 dump 信息,adb shell pm dump 包名。

adb shell pm dump

22.列出对应包名的 .apk 位置,adb shell pm path 包名。

adb shell pm path

23.查看当前终端中的进程信息:

adb shell ps

24.monkey 测试:adb shell monkey –p 程序包 –v 测试次数 ,比如“adb shell monkey –p com.htc.Weather –v 20000”意思是对 com.htc.Weather 这个程序包单独进行一次 20000 次的 monkey 测试。

adb shell monkey –p 程序包 –v 测试次数

25.显示所有程序包:

adb shell ps | grep [process]

26.根据进程 pid 或包名查看进程占用的内存:

adb shell dumpsys meminfo

adb shell dumpsys meminfo<package_name>
27. APP 启动:

adb shell am start -n packageName/activity
28. APP 关闭:

adb shell am force-stop 包名

29.监控 APP 启动时间:

adb shell am start -W packageName/activity

  • 75
    点赞
  • 861
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
一、linux 1,linux常用命令 2,某个时间段日志的查询 3,linux文件的上传和下载 二、功能测试 1,工作中所遇到的错误 2,测试流程: 3,测试计划元素: 4,测试报告元素: 5,测试点: 6,测试方法: 7,bug相关问题 8,adb常用命令 9,软件测试原则 10,测试用例编写的要素 11,测试用例的设计原则 12,软件产品质量特性 13,android四大组件 14,web测试和app测试的区别 15,app的anr的根本原因 16,app的crash的原因 17,h5页面图片未加载出来问题排查 18,区分原生和h5页面 19,为什么不能用jenkins打包 三、性能测试 1,了解jmeter 2,性能指标 3,如何做性能测试 四、接口测试 1,如何设计接口测试用例 2,为什么要做接口测试 3,接口测试的关注点 4,request处理cookie的三种方式 五、自动化测试 1,自动化核心框架 2,自动化测试的好处 3,自动化的前提 4,自动化测试的场景 5,元素定位的8种方式 6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,selenium对比RF 13,自动化测试脚本三种等待 14,PO模式 六、HTTP协议 1,HTTP协议特点: 2,HTTP传输原理 3,get和post的区别 4,HTTP响应代码 5,osi七层模型 6,三次握手过程 7,session和cookie的区别 8,tcp和udp的区别 9,sockect通信原理 10,post的三种请求方式 七、数据库 1,sql分类 2,数据库事务特性:ACID 3,mysql索引的类型 4,池化思想 5,redis 6,如何提高数据库运行效率 八、java 1,面向对象的三个特征 2,重写和重载 3,比较sping,sping mvc 4,进程和线程的区别 5,java三层架构 6,处理异常 九、python 1,字符串反转的7种方法 2,new 和 _init_ 3,不使用中间变量交换两个变量的值 4,python四大内置高阶函数 5,python带颜色输出 6,python *args,**kargs用法 7,python常用模块 8,python多线程 9,python发送邮件 10,python操作图像 11,python的replace()方法的使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobai178

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值