资讯详情

招聘季,APP测试面试题温新一遍

在这里插入图片描述

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

相似之处:都离不开测试的基本知识和原理。具体包括以下几个方面。

边界值分析法、等价分类法等用于测试用例。

大多数使用黑盒测试来验证业务功能是否正确应用。

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

测试页面载入和翻页速度、登录时间、内存溢出等。

测试应用系统的稳定性。

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

中断测试(电话、短信、蓝牙、NFC支付、闹钟、数据线插拔、屏、断电、关机重启等。

安装卸载试验(新安装,新版覆盖旧版,新版卸载,新版卸载)

外部因素测试(网络切换、硬件按钮、不同分辨率、兼容性、系统版本)

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

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

APP登录场景一般从以下几个方面进行:

操作页面基本元素。

大量字符,特殊字符,边界值,必填项验证。

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

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

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

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

逆向思维:注册账账户注册,未注册账户忘记密码,未注册账户登录,过程中退出再注册。

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

登录账户的多样性:多个帐户轮流登录,同一帐户多角色登录。

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

跳转登录页面,返回,成功登录和其他页面。

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

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

三、Push消息如何测试?

Push新闻测试可以从以下几个方面进行:

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

不接收推送消息时,用户将不再接收Push消息。

如果用户设置了无干扰时间段,用户无法在无干扰时间段内接收Push。用户可以在非免打扰期间正常接收Push。

当Push当用户登录时,需要检查收到的消息Push无论与用户身份是否一致,都没有错误地推送他人的信息。一般来说,只有最后一个登录用户在手机上推送信息。

测试Push在开关机和待机状态下进行推送,消息及其推送跳转的正确性。

push在新闻中,会有红点显示,推送新闻阅读前后数字的变化是否正确;

应用程序在开发、未打开、应用程序启动和后台运行时push显示和跳转是否正确。

多推集的显示和跳转是否正确。

四、App闪回的原因是什么?

APP闪回的原因可能是:

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

操作过多导致内存不足。

应用版兼容,分辨率兼容。

APP在访问网络的地方,组件能否正常下载和显示。

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

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

软件权限未开放。

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

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

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

然后搜索关键字,如:exception、crash,看看是什么方法或异常导致了问题;

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

六 、你通常看日志吗? 一般会出现什么异常?(Exception)?

这主要是面试官检查你是否会看日志,是否能理解Java一般面试中抛出的异常Java Exception(runtimeException )这是一个必问题,app崩溃的常见原因应该是这些。列出四五种常见异常是基本要求。

常见类型如下:

NullPointerException - 空指针引用异常

ClassCastException - 类型强制转换异常

IllegalArgumentException - 异常传输非法参数

ArithmeticException - 算术操作异常

ArrayStoreException - 存储在向数组和声明类型不兼容对象异常

IndexOutOfBoundsException - 下标越界异常

NegativeArraySizeException - 创建一个大小为负数的数组错误

NumberFormatException - 异常的数字格式

SecurityException - 安全异常

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%的CP占用率算是合理的,当然这个数值随着近年来手机硬件配置的提高,会略微下降,如果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

  1. 获取设备列表及设备状态:
adb devices
  1. 安装应用:adb install 路径\xx.apk, 安装应用;adb install -r 重新安装。
adb install

adb install -r
  1. 获取设备的状态,设备的状态有 device , offline , unknown3种,其中device:设备正常连接,offline:连接出现异常,设备无响应,unknown:没有连接设备。
adb get-state
  1. 卸载应用:adb uninstall <包名>, 后面的参数是应用的包名,区别于 apk 文件名。
adb uninstall 
  1. 将 Android 设备上的文件或者文件夹复制到电脑本地:adb pull <远程路径> <本地路径>, 如复制 Sdcard 下的 pull.txt 文件到 D 盘:adb pull sdcard/pull.txt d:\,重命名:adb pull sdcard/pull.txt d:\rename.txt。
adb pull 
  1. 推送本地文件至 Android 设备:adb push <本地路径> <远程路径>, 如推送 D 盘下的 ITester.txt 至 Sdcard:adb push d:\ITester.txt sdcard/ (注意sdcard 后面的斜杠不能少)。
adb push
  1. 结束和启动adb服务:adb kill-server /adb start-server , 结束 adb 服务/启动 adb 服务,通常两个命令一起用,设备状态异常时使用 kill-server,运行 start-server 进行重启服务。
adb kill-server

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

adb logcat -c
  1. 查找包名/活动名
adb logcat | findstr START

  1. 生成bugreport文件:adb bugreport , 打印dumpsys、dumpstate、logcat的输出,也是用于分析错误,输出比较多,建议重定向到一个文件中,如adb bugreport > d:\bugreport.log。
adb bugreport
  1. 重启 Android 设备:adb reboot , adb reboot recovery,重启到Recovery界面; adb reboot bootloader,重启到bootloader界面。
adb reboot

adb reboot recovery

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

adb remount
  1. 返回设备序列号SN值:
adb get-serialno
  1. 获取设备的ID:
adb get-product
  1. 进入设备shell:
adb shell
  1. 列出所有的应用的包名:
adb shell pm list package

  1. 截屏并保存至 sdcard 目录:
adb shell screencap -p /sdcard/screen.png 

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

  1. 获取设备分辨率:
adb shell wm size

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

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

  1. 查看当前终端中的进程信息:
adb shell ps
  1. 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 测试次数

  1. 显示所有程序包:
adb shell ps | grep [process]

  1. 根据进程pid或包名查看进程占用的内存:
adb shell dumpsys meminfo<pid>

adb shell dumpsys meminfo<package_name>

  1. APP 启动:
adb shell am start -n packageName/activity
  1. APP 关闭:
adb shell am force-stop 包名
  1. 监控 APP 启动时间:
adb shell am start -W packageName/activity

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

关注公众号:伤心的辣条 ! 自行获取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

标签: 流量传感器p11231sn

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台