• 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出现CrashANR,可以从以下几个方面处理:

    • 可以先把日志过滤出来: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%的CPU占用率算是合理的,当然这个数值随着近年来手机硬件配置的提高,会略微下降,如果CPU占用率超过80%就非常值得我们去关注了。

     

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

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

     

    电量:

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

     

    流量:

    目前的网络类型包含2G3G4G5Gwifi,其中还有不同运营商的区分,我们在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: ename.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:ugreport.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

  • 相关阅读:
    每天一道LeetCode--141.Linked List Cycle(链表环问题)
    每天一道LeetCode--119.Pascal's Triangle II(杨辉三角)
    每天一道LeetCode--118. Pascal's Triangle(杨辉三角)
    CF1277D Let's Play the Words?
    CF1281B Azamon Web Services
    CF1197D Yet Another Subarray Problem
    CF1237D Balanced Playlist
    CF1239A Ivan the Fool and the Probability Theory
    CF1223D Sequence Sorting
    CF1228D Complete Tripartite
  • 原文地址:https://www.cnblogs.com/chenyablog/p/15201366.html
Copyright © 2020-2023  润新知