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

news2024/11/29 22:53:20

最近整理了一些关于App测试的面试题。

本参照答案是本人在工作实践中总结,仅代表个人观点,如有错误,请谅解。

  1. 问:说一些你在测试过程中常用到的adb命名

答:回答本问题时,首先不要想到哪个命名就说哪个命令,然后自己也不记得自己到底说了哪些命令,这样面试官会觉得你思路不清晰,回答这个问题首先要根据命令进行分类说明,如安装卸载操作命令,设备连接状态查看操作,系统状态查看命令,截屏键盘操作命令,启动停止操作分类,然后根据分类去说每个分类说大概4-5即可,切记要把自己熟悉使用过得来描述,因为面试官可能会问到你相关的命令集体的使用说明。命令分类参照如下:

  1. 安装,卸载操作:adb install apk文件,adb shell pm install apk文件,adb unistall包名,adb shell pm unistall包名
  2. 设备连接及状态查看说明:adb connect,adb disconnect, adb devices, adb get-state, adb get-serialno
  3. 截屏键盘操作命令: adb shell screencap -p , adb shell input keyevent, adb shell input text
  4. 系统资源情况:adb shell demsg, adb shell dumpstate, adb shell dumpsys cpuinfo, adb shell dumpsys meminfo, adb shell dumpsys wifi,adb shell dumpsys account
  5. 启动停止操作:adb reboot, adb shell am start -n 包名,adb shell am force-stop 包名
  1. 问:APP测试与web测试的区别?

答:单纯从功能测试的层面上来讲的话,APP 测试、web 测试在流程和功能测试上是没有区别的。具有以下相同点

1.测试用例设计方法;

2.测试方法;

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

4.测试应用系统的稳定性;

不同点:

1.系统结构方面

web项目:b/s架构,基于浏览器的;web测试只要更新了服务器端,客户端会同步更新。

app项目:c/s结构的,必须要有客户端;app 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍。

2.性能方面

web项目:需监测响应时间、CPU、Memory;

app项目:除了监测响应时间、CPU、Memory外,还需监测流量、电量等;

3.兼容性方面

web项目:浏览器(火狐、谷歌、IE等);操作系统(Windows7、Windows10、Linux等)。

app项目:设备系统:iOS(ipad、iphone)、Android(三星、华为、联想等) 、Windows(Win7、Win8)、OSX(Mac);手机设备可根据手机型号、分辨率、屏幕尺寸不同。

4.APP专项测试

  1. 干扰测试:中断,来电,短信,关机,重启等。
  2. 弱网络测试(模拟2g、3g、4g、5g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g、5g/wifi 等)。
  3. 安装、更新、卸载,中断、前后台切换。
  4. 安装:需考虑安装时的中断、弱网、安装后删除安装文件,全新安装、升级安装、第三方工具安装等情况;
  5. 卸载:需考虑第三方工具卸载、直接卸载,卸载后是否删除app相关的文件;
  6. 更新:强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新;
  7. 中断:来电中断、短信中断、闹钟中断、手机锁定、手机断电、手机死机;
  8. 界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换。
  9. 安全测试:安装包是否可反编译代码、安装包是否有签名、权限设置,例如访问通讯录等。
  10. 边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等。
  11. 权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等。

5.测试工具方面

自动化工具:APP 一般使用 Appium; Web 一般使用 Selenium;

性能测试工具:APP 一般使用Monkey、 JMeter; Web 一般使用 LR、JMeter;

  1. 问:APP闪退有哪些原因造成的?

App闪退的原因有很多,举例:

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

  1. 问:APP实时日志如何抓取?

答:App的实时日志主要可以通过以下工具获取:

  1. 可以使用adb命令:adb logcat | find "com.sankuai.meituan" >d:\huamini\test.txt
  2. 用ddms抓取,手机连上电脑,打开ddms工具;
  3. 手机连上电脑,打开monitor工具抓取
  4. 在Android Studio开发工具中,打开DDMS;

  1. 问:讲一下安卓 SDK中自带工具的功能?

​​​​答:Andriod自带的工具有以下:

  1. adb:ADB的全称为Android Debug Bridge,是一种debug工具。用与调试使用PC对设备进行操作
  2. ddms:Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik[虚拟机]调试监控服务。
  3. monkey:Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
  4. monkeyrunner:提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。
  5. uiautomator:是Eclipse自带的用于UI自动化测试工具,可仿真APP上的单击、滑动、输入文本等操作。
  6. monitor:同uiautomator

  1. 问:简要说一下冷启动、暖启动、热启动、首屏启动

答:APP启动会发生多个事件,测试人员需要知道整个环节是否出现问题,需要了解到具体是哪个环节存在问题:

冷启动:当进程不存在的时候,从进程创建开始到界面的展示过程;

暖启动:有一部分资源已经存在,进程存在,相对于热启动要消耗更多资源。当用户退出应用程序时,进程还会存在,暖启动相较于冷启动只是少了进程的创建;

热启动:大部分资源都在,只是应用之间的切换;

首屏启动:第一屏加载完整;

启动时间标准一般:

冷启动:需要5秒甚至更长;

暖启动:需要2秒甚至更长;

热启动:需要1.5秒甚至更长;

整个启动过程可以用adb工具进行分析,利用adb logcat获取启动数据,或者录屏,使用ffmpeg拆帧分析。

adb logcat

首先定义一个变量,这个变量填写用到的包名。

package=com.netease.qa.emmagee

清除缓存数据:

adb shell pm clear $package

停止进程:

adb shell am force-stop $package

通过以上命令就做好了冷启动的环境,下面启动app并获取数据。启动App

adb shell am start -S -W $package/.activity.MainPageActivity

-S表示启动之前先停止应用进程

-W是表示等待对应的activity启动完成

获取数据:

bash adb logcat |grep -i displayed

  1. 问:Android和IOS手机系统有什么区别?

答:Android和IOS系统主要有以下几个不同:

  1. 两者运行机制不同:IOS系统采用的是沙盒运行机制,Android系统采用的是虚拟机运行机制。
  2. 两者后台制度不同:IOS系统中任何第三方程序都不能在后台运行;Android系统中任何程序都能在后台运行,直到没有内存才会关闭。
  3. IOS中用于UI指令权限最高,Android中数据处理指令权限最高

  1. 问:IOS和安卓的APP测试有什么不同?

答:Android和IOS系统的App测试主要有以下几个不同:

  1. 多分辨率测试:Android端20多种,IOS较少。
  2. 手机操作系统:Android较多,IOS较少且不能降级,只能单向升级;新的IOS系统中的资源库不能完全兼容低版本中的IOS系统中的应用,低版本IOS系统中的应用调用了新的资源库,会直接导致闪退。
  3. 安装卸载测试:Android可以通过手机自带的应用市场或者是第三方的手机助手进行下载,下载和安装的平台和工具和渠道比较多;IOS主要有app store,iTunes和testflight下载。
  4. 支付方式:对于一些有内购功能的APP,Android直接调用第三方支付渠道完成支付;IOS需要先在APP store里绑定支付方式,然后通过APP store去完成支付操作。
  5. 消息推送机制:Android使用第三方或者自建平台进行消息推送;IOS的消息推送渠道由苹果官方提供。

  1. 问:Push消息如何测试?

答:App应用的push消息测试主要从以下几个方面考虑:

  1. 检查Push消息是否按照指定的业务规则发送。
  2. 检查设置不接收推送消息时,用户不会再接收到Push消息。
  3. 如果用户设置了免打扰的时间段,检查在免打扰时间段内,用户接收不到Push。在非免打扰时间段内,用户能正常收到Push。
  4. 当Push消息是针对登录用户的时候,需要检查收到的Push与用户身份是否相符。一般情况下,只对手机上最后一个登录用户进行消息推送。
  5. 测试Push时,在开关机、待机状态下执行推送,消息及其推送跳转的正确性。
  6. 多条推送的合集的显示和跳转是否正确。

  1. 问:APP测试的主要内容有哪些?

答:App主要测试内容包含以下几个部分:

    1. 功能测试:

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

    1. 兼容性测试:
    1. 系统版本:Android:官方版本,定制版本;IOS:官方提供版本。
    2. 分辨率:720 * 1280 1080* 1920。
    3. 网络情况:2g 3g 4g 5g Wi-Fi。
    1. 异常测试:
    1. 热启动应用:应用在后台长时间待机;应用在后台待机过程中,手机重启。
    2. 网络切换和中断恢复。
    3. 电话信息中断恢复。
    1. 升级,安装,卸载测试:
  1. 升级测试:临近版本升级(1.0->1.1);跨版本(1.0->....->2.2)
  2. 安装测试:首次安装;覆盖安装(同版本,不同版本覆盖);卸载后安装。
  3. 卸载测试:首次卸载;卸载安装后再卸载。
    1. 健壮性测试:
  1. 手机资源消耗:cpu,内存。
  2. 流量消耗:图片,数据,视频。
  3. 电量测试。
  4. 崩溃恢复。

  1. 问:APP的闪退通常是什么原因?

答:APP闪退通常可能会有以下原因

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

  1. 问:测试过程中遇到 app 出现 crash 或者 ANR,你会怎么处理?

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

  1. 可以先把日志过滤出来:adb logcat | findstr xxxxx(过滤日志信息) ;
  2. 然后再搜索其中的关键字,比如:exception、crash,看看是哪些方法或者异常导致了问题;
  3. 初步定位问题原因后,可以交给开发人员去具体查找深层原因并修复。

  1. 问:你平常会看日志吗, 一般会出现哪些异常(Exception)?

答:在测试过程中,一般会遇到以下常见的几种异常:

NullPointerException - 空指针引用异常

ClassCastException - 类型强制转换异常

IllegalArgumentException - 传递非法参数异常

ArithmeticException - 算术运算异常

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

IndexOutOfBoundsException - 下标越界异常

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

NumberFormatException - 数字格式异常

SecurityException - 安全异常

UnsupportedOperationException - 不支持的操作异常

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

安全性测试

  1. 测试App的会话session是否有过期设置;
  2. 测试App请求中是否包含了明文的用户信息;
  3. 测试App的请求是否加密;
  4. 测试SQLite数据库的存储是否安全;
  5. 测试App使用WebView的安全性。

  1. 问:APP 性能测试关注点及常见 APP 性能测试工具

答:App性能测试关注以下几个主要点:

  1. 包体大小:

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

  1. 启动时长:

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

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

  1. 内存使用:

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

  1. CPU 占用率:

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

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

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

  1. 电量:

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

  1. 流量:

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

性能测试工具有哪些

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

  1. 问:如何对 app 进行弱网测试

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

点赞私信我领取课程资料哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

锐捷ISIS基础实验

目录 ISIS理论讲解 配置ISIS邻居建立 配置路由渗透(泄露) ISIS其它的配置特性 配置ISIS时间属性 配置ISIS认证 ISIS理论讲解 ISIS——基本概念1(邻居建立、路由计算、报文封装)_静下心来敲木鱼的博客-CSDN博客https://blog…

2022年全球高被引科学家公布

博士后、访问学者及联合培养申请者,都希望去名校及牛导麾下深造。名校有世界几大排名体系做参考,其知名度毋庸置疑。但牛导的概念是什么呢?知识人网小编在此介绍最新推出的“2022年度高被引科学家”,这里云集了全球自然科学和社会…

教你使用 SO_REUSEPORT 套接字选项提升服务性能

前言 Linux 网络栈中有一个相对较新的特性——SO_REUSEPORT 套接字选项,可以使用它来提升你的服务性能。 图 1: 上面的服务是使用并行监听器来避免请求连接瓶颈,而下面的服务只使用一个监听器来接收连接 概要 HAProxy 和 NGINX 是少数几个使用 Linux …

线段树什么的不是简简单单嘛,我教你!:基础篇

线段树什么的不是简简单单嘛,我教你!:基础篇 零、序言——万物滴开篇 也许你是苦于笔试的打工人,也许你是步入算法圈不久的小小萌新(我也是萌新) ,也许你是在网上搜索数据结构课设的倒霉学生。…

2049. 统计最高分的节点数目-数组树构造+遍历求解最大值数目

2049. 统计最高分的节点数目-数组树构造遍历求解最大值数目 给你一棵根节点为 0 的 二叉树 ,它总共有 n 个节点,节点编号为 0 到 n - 1 。同时给你一个下标从 0 开始的整数数组 parents 表示这棵树,其中 parents[i] 是节点 i 的父节点。由于…

音视频 - 视频编码原理

目录 视频编码主要分为 图像的冗余 熵编码 帧内预测 帧间预测 DCT变换和量化 编码器比较 清晰度和耗时对比 一部电影1080P,帧率25fps,时长2小时,文件大小 1920x1080x1.5x25x2x360 521.4G 数据量非常大,对存储和网络传输都…

GMC Graph-Based Multi-View Clustering

GMC Graph-Based Multi-View Clustering 基于图的多视图聚类 abstract 现有的大多数方法没有充分考虑不同视图的权重,需要额外的聚类步骤来生成最终的聚类。还通常基于所有视图的固定图相似矩阵来优化目标。 本文提出了一种通用的基于图的多视图聚类算法(GMC)来解…

Android程序设计之学生考勤管理系统

基于安卓平台开发的学生考勤管理系统,本系统采用java语言设计,数据存储使用SQLite轻量级数据库实现 SQLite 简介 SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎&…

JSON 对比工具

文章目录JSON对比工具JSON对比工具 JSON 是 Web 开发领域中最常用的数据传输格式之一,因为 JSON 的可读性较高,对于一些简单的 JSON 数据,我们不需要借助任何工具就可以轻易的读取。但对于复杂的 JSON 数据就需要借助工具才行,本…

公众号文案写作技巧有哪些?教你几招

公众号文案写作是每个公众号运营者心中的痛: 你是否每天纠结写什么? 你是否写着写着就词穷了? 你是否不知道该如何下手? 公众号文案应该怎么写?今天伯乐网络传媒就来给大家分享一份超实用的公众号文案写作技巧&…

增量模型和迭代模型的优点与缺点

增量模型: 举个例子: 用户有一个需求,功能包含A,B,C... ABC 增量模型: 开发完A我就直接上线供给用户去使用 开发完C我就直接上线供给用户去使用 开发完B我就直接上线供给用户去使用 增量模型的特点 增量模型的特点…

度量BGP监测源数量对AS可见性的影响

首先,本文介绍了两个公开的BGP数据源项目情况;其次,从可见AS数量和可见AS边关系数量两个方面来分析度量BGP监测源中对等AS的可见性。 BGP数据源介绍 BGP数据源有2个公开的项目,分别是RIPE RIS和Route Views,它们使用路…

VUE基础编程(三)

案例要求 基于Vue Cli和嵌套路由技术,完成以下功能: 站点打开后会默认显示如图3.1所示的“关于公司”页面,单击图3.1页面上的“公司简介”链接,站点会显示如图3.2所示的“公司简介”页面,单击图3.1页面上的“公司治理…

【JAVA程序设计】基于SSM的学校教务管理系统-有文档

基于SSM的学校教务管理系统-有文档项目获取项目简介开发环境项目技术功能结构文档目录运行截图项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可以确保100%成功运行。 项目简介 本项目是基于SSM的学校教务管理…

[附源码]java毕业设计校园失物招领平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

idea反编译

1、问题描述 只有jar包,反编译下,看几个配置; 2、问题说明 用的idea里面的插件,java Decoplier,可以反编译jar包,效果挺好的,反编译出来的.java没乱码,可以直接看; 2…

139.深度学习分布式计算框架-2

139.1 Spark MLllib MLlib(Machine Learnig lib) 是Spark对常用的机器学习算法的实现库,同时包括相关的测试和数据生成器。MLlib是MLBase一部分,其中MLBase分为四部分:MLlib、MLI、ML Optimizer和MLRuntime。 ML Optimizer会选择它认为最适合…

4款企业常用的工时管理系统盘点

4款企业常用的工时管理系统有:1、Excel;2、8Manage 工时表;3、诺明软件;4、Aceteamwork。 “时间就是金钱”,相信大家都听过这句话。对于企业来说,管理员工工时,其实就是管理企业的人力成本和实…

数据结构-难点突破(C++实现树的双亲表示法,孩子表示法,孩子兄弟表示法(树转化为二叉树))

文章目录1. 树的双亲表示法2. 孩子表示法3. 孩子兄弟表示法(树转化为二叉树)普通树的存储一半采用三种方式: 双亲表示法;孩子表示法;孩子兄弟表示法; 1. 树的双亲表示法 思路和图片来源 采用双亲表示法…

智慧停车解决方案-最新全套文件

智慧停车解决方案-最新全套文件一、建设背景痛点分析二、建设思路准确、安全、可靠、及时性原则统一规划、分布实施保护以往投资、整合现有资源资源共享和整体性、统一性原则可扩展性原则三、建设方案四、获取 - 智慧停车全套最新解决方案合集一、建设背景 痛点分析 随着经济…