一、web测试和app测试的相同点和区别?

相同点:都离不开测试的基础知识和测试原理。具体包括以下几个方面。

  1. 测试用例,均使用边界值分析法,等价类划分法等。

  2. 多数采用黑盒测试,来验证业务功能是否能得到正确的应用。

  3. 需要检查界面布局,风格,按钮是否美观、简洁,是否统一。

  4. 测试页面载入和翻页的速度、登录时长、内存是否溢出等。

  5. 测试应用系统的稳定性。

不同点:相对于web测试来说,app测试要考虑手机本身固有的属性,所以app测试还需要注意以下几点。

  1. 中断测试(来电去电,短信,蓝牙,NFC支付,闹钟,数据线插拔,锁屏,断电,关机重启等)

  2. 安装卸载测试(全新安装,新版本覆盖旧版本,卸载旧版本安装新版本,卸载新版本安装旧版本)

  3. 外在因素测试(网络切换,硬件按键,不同分辨率,兼容性,系统,系统版本)

web测试更多的是考虑自身功能和浏览器兼容。

二、如何测试一个App的登录场景?

APP登录场景大体从以下几个方面进行:

  1. 页面基本元素的操作。

  2. 大量字符,特殊字符,边界值,必填项校验。

  3. 注册手机号的特殊性验证,注册邮箱的格式验证。

  4. 密码大小写是否敏感,密码是否加密展示,密码是否有可见按钮功能,密码框能否使用复制粘贴。

  5. 验证码校验:必填项,过期,错误,无网络时获取验证码,多次获取,超过获取次数,输入验证码后,修改手机号。

  6. 登录时与系统的交互:锁屏,蓝牙,home,后退,横竖屏,修改字体字号。

  7. 逆向思维:已注册账号注册,未注册账号忘记密码,未注册账号登录,注册过程中退出再次注册。

  8. 输入法交互,切换输入法,切换输入模式,手写/九宫格。

  9. 登录账号的多样性:多个账号轮流登录,同一个账号多角色登录。

  10. 第三方登录验证:账号授权,信息正确,取消授权。

  11. 登录页面跳转,返回,登录成功及其他页面跳转。

  12. 手机兼容性测试:分辨率兼容,系统兼容,系统版本兼容,App版本兼容。

  13. 网络切换,网络断开,弱网。

三、Push消息如何测试?

Push消息的测试可以从以下几个方面进行:

  1. 检查Push消息是否按照指定的业务规则发送。

  2. 检查不接收推送消息时,用户不会再接收到Push消息。

  3. 如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到Push。在非免打扰时间段内,用户能正常收到Push。

  4. 当Push消息是针对登录用户的时候,需要检查收到的Push与用户身份是否相符,没有错误的将其他人的消息推送过来。一般情况下,只对手机上最后一个登录用户进行消息推送。

  5. 测试Push时,在开关机、待机状态下执行推送,消息及其推送跳转的正确性。

  6. push消息时,会有红点展示,推送消息阅读前后数字的变化是否正确;

  7. 应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转是否正确。

  8. 多条推送的合集的显示和跳转是否正确。

四、App的闪退通常是什么原因造成的?

APP闪退的原因可能是:

  1. 缓存垃圾太多,Android系统的特性,如果长时间不清理垃圾文件,会导致越来越卡,甚至闪退。

  2. 运行程序太多,导致内存不足。

  3. 应用版本兼容问题,分辨率兼容问题。

  4. APP中访问网络的地方,组件能否正常下载并显示。

  5. APP的SDK与手机系统不兼容。

  6. 系统升级后,新版本不兼容老版本的API,返回对象失败,报空指针。

  7. 软件权限未开放。

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

APP出现CrashANR,可以从以下几个方面处理:

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

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

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

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

这个主要是面试官考察你会不会看日志,是不是看得懂Java里面抛出的异常,一般面试中Java Exception(runtimeException )是必会被问到的问题,app崩溃的常见原因应该也是这些了。常见的异常列出四五种,是基本要求。

常见的几种如下:

  1. NullPointerException - 空指针引用异常

  2. ClassCastException - 类型强制转换异常

  3. IllegalArgumentException - 传递非法参数异常

  4. ArithmeticException - 算术运算异常

  5. ArrayStoreException - 向数组中存放与声明类型不兼容对象异常

  6. IndexOutOfBoundsException - 下标越界异常

  7. NegativeArraySizeException - 创建一个大小为负数的数组错误异常

  8. NumberFormatException - 数字格式异常

  9. SecurityException - 安全异常

  10. UnsupportedOperationException - 不支持的操作异常

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

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.崩溃恢复。

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

1

性能关注点

包体大小:

包体大小能被列为性能指标,是从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环境和蜂窝网络环境。所以针对不同的游戏,我们统计流量消耗时,可能要连接不同的网络进行测试。

2

app性能测试工具

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

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

一款APP针对不同网络情况下都需要保证不会崩溃,同时尽可能做到在弱网情况下也能达到功能正常使用,或者使用体验达到最佳。弱网测试可以测试APP的加载时间、可用性、稳定性和健壮性。这时我们就可以借助工具来模拟不同的网络状况,模拟2G、3G或弱网情况进行测试。工具可以选择Fiddler也可以选择Charles也可以选择其他工具。

十、常见的 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<pid>

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

APP测试面试题,总结的很到位,安排!相关推荐

  1. 接口测试自动化测试app测试面试题

    接口测试自动化测试app测试面试题_笔经面经_牛客网 接口自动化面试题 接口自动化面试题 · Python / Linux / Mysql / 软件测试等等 · 看云 1.json 和字典的区别? j ...

  2. 测试者出的APP测试面试题

    测试者出的APP测试面试题 作者:kaige201314 最近公司可能要招聘测试了,老大让我出几个面试题,网上搜到了一些,还有自己想了几个,如下: 一.开场问题:(自由发挥) 1.请自我介绍一下: 2 ...

  3. 【面试-八股文】万字app测试 面试题,助你吊打面试官系列

    大家好,我是温大大. 最近温大大的读者们问我有没有app相关的面试题, 作为「平易近人」的大大怎么能忍心说没有呢, 这不继续爆肝 输出app测试工程师专项面试题, 本篇从:app测试基础.app 测试 ...

  4. 带答案APP测试面试题分享,助攻你的面试!面试官都惊呆了..

    基础篇 1.请介绍一下,APP测试流程? APP测试流程与web测试流程类似,分为如下七个阶段: 1.根据需求说明书编写测试计划: 2.制定测试方案,主要是测试任务.测试人员和测试时间的分配: 3.测 ...

  5. 正厚软件 | App测试面试题及参考答案

    正厚软件-陈老师的干货分享 最近整理了一些关于App测试的面试题. 本参照答案是本人在工作实践中总结,仅代表个人观点,如有错误,请谅解. 问:说一些你在测试过程中常用到的adb命名 答:回答本问题时, ...

  6. security面试_17道APP测试面试题分享带参考答案

    1.Android四大组件 Android四大基本组件:Activity.BroadcastReceiver广播接收器.ContentProvider内容提供者.Service服务. Activity ...

  7. APP测试面试题汇总,面试必考一定要看

    目录 一.基础篇 1.请介绍一下,APP测试流程? 2.APP测试需要提前准备哪些测试资源? 3.APP测试和Web测试的区别? 4..相对于 Wed 项目,APP有专项测试 4.Android手机和 ...

  8. APP测试面试题汇总基础+进阶

    目录 一.基础篇 1.请介绍一下,APP测试流程? 2.APP测试需要提前准备哪些测试资源? 3.APP测试和Web测试的区别? 1.系统结构方面 2.性能方面 3.兼容性方面 4.相对于 Wed 项 ...

  9. APP测试面试题汇总

    一.基础篇 1.请介绍一下,APP测试流程? APP测试流程与web测试流程类似,分为如下七个阶段: 1.根据需求说明书编写测试计划: 2.制定测试方案,主要是测试任务.测试人员和测试时间的分配: 3 ...

  10. 互联网寒潮,特送来 “App测试面试题“ 暖汤一份

    专人专事,各自其责才能把控质量:如果做不到质量内建就踏踏实实专人专事. 正文开始 相关系列优选文章: 干了这么久的APP测试,能回答上APP测试面试问题吗? 一 web测试和app测试的相同点和区别? ...

最新文章

  1. 报名 | 清华医工科研服务平台发布会暨医工结合科研基金成立大会
  2. 科普:Flume是啥?干嘛用的?
  3. 怎么在linux上装java,如何在Ubuntu Linux上安装Java
  4. java大数BinInteger
  5. YbtOJ#732-斐波那契【特征方程,LCT】
  6. 【转】重新打包DebianISO实现无人应答安装(UEFI+BIOS)
  7. Java Object类的各个方法
  8. .metadata是什么项目文件_《深入微服务》之 如何给老婆解释什么是微服务的基础框架SpringBoot?
  9. ios 裁剪圆形头像_IOS_iOS如何裁剪圆形头像,本文实例为大家介绍了iOS裁剪 - phpStudy...
  10. SMTP协议初探(二)----linux下c编程实现发邮件
  11. istio sidecar流量接管_Istio是个啥?看完此文彻底搞懂(赠书)
  12. 如何搞一个自制表情包项目,看这个开源项目就够了!
  13. C++ File:\dd\vctools\vc7libs\..\..\afxwin1.inl Line24
  14. mysql导入.sql文件中文乱码_mysql通过sql文件导入数据时出现乱码的解决办法
  15. VC++黑客编程收集的源码集合,只有你想不到的
  16. 微信h5页面中下载app(apk)的解决方案
  17. 使用maven编译打包用javac还是eclipse的jdt的问题
  18. 数据库 、数据仓库、数据集市的区别与联系
  19. JAVA开发微信支付(JSAPI支付)
  20. 分享一个600块钱的Python私活单,金融Excel数据清洗

热门文章

  1. 优化机场值机体验之护照阅读器
  2. 【高德地图API】Web地图开发系列(一)
  3. finecms相关信息-随时更新
  4. HTML5 Now: 深入了解HPolyfills
  5. 在C语言中使用fflush(stdin)
  6. 组态王 6.55 启停plc_成套设备PLC编程深圳PLC编程
  7. nim game代码java_LeetCode Nim Game
  8. 【软件质量】-01-缺陷严重等级定义
  9. ftp server - sftpgo_v2.2.2_windows_x86_64的简单使用
  10. 小白学习Java第七天