APP测试面试题汇总

🍅 视频学习:文末有免费的配套视频可观看

🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快

一、基础篇

1、请介绍一下,APP测试流程?

APP测试流程与web测试流程类似,分为如下七个阶段:

1.根据需求说明书编写测试计划;

2.制定测试方案,主要是测试任务、测试人员和测试时间的分配;

3.测试准备,包括搭建测试环境,准备测试数据,确定测试方法;

4.测试用例的设计与编写,进行用例评审及补充完善;

5.执行测试时首先进行冒烟测试,然后对主功能流程进行测试,包括客户端的单个功能模块,及功能业务逻辑功能交互,回归测试;

6.提交测试结果,包括测试用例,测试计划;

7.日常维护性测试;

图片

APP测试周期可根据项目的开发周期来确定测试时间,一般测试时间为两三周,根据项目情况以及版本质量可适当缩短或延长测试时间。

2、APP测试需要提前准备哪些测试资源?

具体要准备的测试资源,根据实际项目来,可以从以下几个方面出发:

1.IOS设备、Android设备(选取市面上主流手机产品);

2.支付宝/银联支付的项目,需要提前申请支付宝/银联账户等等;

3.有秒杀专题的题目,需要规划秒杀时间表;

4.有优惠券使用的项目,需要添加优惠券数据;

3、APP测试和Web测试的区别?

单纯从功能测试的层面上来讲的话,APP 测试、web 测试在流程和功能测试上是没有区别的。

相同点:

1.同样的测试用例设计方法;

2.同样的测试方法:都会依据原型图或效果图检查UI;

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 一般使用 Appium; Web 一般使用 Selenium;

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

4、相对于 Web 项目,APP有哪些专项测试

1)干扰测试:中断,来电,短信,关机,重启等。

2)弱网络测试(模拟2g、3g、4g、5g,wifi网络状态以及丢包情况);网络切换测试(网络断开后重连、3g切换到4g、5g/wifi 等)。

3)安装、更新、卸载,中断、前后台切换。

  • 安装:需考虑安装时的中断、弱网、安装后删除安装文件,全新安装、升级安装、第三方工具安装等情况;

  • 卸载:需考虑第三方工具卸载、直接卸载卸,载后是否删除app相关的文件;

  • 更新:分强制更新、非强制更新、增量包更新、断点续传、弱网状态下更新;

  • 中断:来电中断、短信中断、闹钟中断、手机锁定、手机断电、手机死机;

4)界面操作:关于手机端测试,需注意手势,横竖屏切换,多点触控,前后台切换。

5)安全测试:安装包是否可反编译代码、安装包是否签名、权限设置,例如访问通讯录等。

6)边界测试:可用存储空间少、没有SD卡/双SD卡、飞行模式、系统时间有误、第三方依赖(QQ、微信登录)等。

7)权限测试:设置某个App是否可以获取该权限,例如是否可访问通讯录、相册、照相机等。

5、Android手机和IOS手机,系统有什么区别?

1.两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。

IOS 沙盒运行机制:

  • 每个程序都有自己的虚拟地址空间。所以,程序之间不能进行访问。

  • 默认只会将应用的最后运行数据,记录在RAM里面。

Android 虚拟机运行机制:

  • 所有的应用程序都是运行在虚拟机中,用户界面其实是由虚拟机传递的,并且通过虚拟机,Android的任何程序都就可以轻松访问其他程序文件。

  • 所有的Android的应用程序都是运行在RAM里面的,所以会发现有时候Android用着用着就开始有点卡顿。

2.两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。

3.IOS中用于UI指令权限最高,安卓中数据处理指令权限最高。

6、IOS和Android的APP测试有什么区别?

1.物理按键:Android长按home键呼出应用列表和切换应用,然后右滑则终止应用;iOS所有的返回上一层,只能靠页面功能实现。

2.多分辨率测试:Android端20多种;IOS较少。

3.手机操作系统:Android较多,IOS较少且不能降级,只能单向升级;新的IOS系统中的资源库不能完全兼容低版本中的IOS系统中的应用,低版本IOS系统中的应用调用了新的资源库,会直接导致闪退。

4.操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等。

5.push测试:Android点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;IOS点击home键关闭程序和屏幕锁屏的情况(红点的显示)。

6.安装卸载测试:Android可以通过手机自带的应用市场或者是第三方的手机助手进行下载,下载和安装的平台和工具和渠道比较多;IOS主要有app store,iTunes和testflight下载。

7.升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号)。

8.支付方式:对于一些有内购功能的APP,Android直接调用第三方支付渠道完成支付;IOS需要先在APP store里绑定支付方式,然后通过APP store去完成支付操作。

9.消息推送机制:Android使用第三方或者自建平台进行消息推送;IOS的消息推送渠道由苹果官方提供。

7、介绍一个APP抓包工具?

一般用Fiddler,主要用来做app抓包使用,先在Fiddler客户端做好各项配置,端口设置为8888;然后在手机上设置代理,就可以抓包,主要看的是服务器返回的值、还能够修改传入参数、传出的参数、模拟网络延时,构造不同场景。

8、APP日志如何抓取?

  • 可以使用adb命令:adb logcat | find "com.sankuai.meituan" >d:\test.txt

  • 也可以用ddms抓取,手机连上电脑,打开ddms工具;

  • 或者在Android Studio开发工具中,打开DDMS;

9、常用的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

10、adb三个组件是指?

ADB作为一个客户端/服务器架构的命令行工具,主要由3个部分组成。

  • adb clent(客户端):可以通过它对Android应用进行安装、卸载及调试。

  • adb service(服务器):管理客户端到Android设备上abd后台进程的连接,负责管理client和damon进行通信。

  • adb daemon(守护进程):运行在Android设备上的adb后台进程。

二、进阶篇

1、介绍一下Android四大组件?

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

  • Activity:应用程序中,一个Activity就相当于手机屏幕,它是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序可以包含许多活动,比如事件的点击,一般都会触发一个新的Activity。

  • BroadcastReceiver广播接收器:应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

  • ContentProvider内容提供者:内容提供者主要用于在不同应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。只有需要在多个应用程序间共享数据时才需要内容提供者。例如:通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处:统一数据访问方式。

  • Service服务:是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要长期运行的任务(一边打电话,后台挂着QQ)。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持正常运行,不过服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉后,所有依赖于该进程的服务也会停止运行(正在听音乐,然后把音乐程序退出)。

2、Activity生命周期?

生命周期即活动从开始到结束所经历的各种状态,从一个状态到另一个状态的转变,从无到有再到无,Activity本质上有四种状态:

  • 运行(Active/Running):Activity处于活动状态,此时Activity处于栈顶,是可见状态,可以与用户进行交互。

  • 暂停(Paused):当Activity失去焦点时,或被一个新的非全面屏的Activity,或被一个透明的Activity放置在栈顶时,Activity就转化为Paused状态。此刻并不会被销毁,只是失去了与用户交互的能力,其所有的状态信息及其成员变量都还在,只有在系统内存紧张的情况下,才有可能被系统回收掉。

  • 停止(Stopped):当Activity被系统完全覆盖时,被覆盖的Activity就会进入Stopped状态,此时已不在可见,但是资源还是没有被收回。

  • 系统回收(Killed):当Activity被系统回收掉,Activity就处于Killed状态。

如果一个活动在处于停止或者暂停的状态下,系统内存缺乏时会将其结束(finish)或者杀死(kill)。这种非正常情况下,系统在杀死或者结束之前会调用onSaveInstance()方法来保存信息,同时,当Activity被移动到前台时,重新启动该Activity并调用onRestoreInstance()方法加载保留的信息,以保持原有的状态。

在上面的四中常有的状态之间,还有着其他的生命周期来作为不同状态之间的过渡,用于在不同的状态之间进行转换。

3、请介绍一下,Android SDK中自带的几个工具?

有如下几个工具:

  • ddms:Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik[虚拟机]调试监控服务。

  • monkey:Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

  • uiautomator:UIAutomator是Eclipse自带的用于UI自动化测试工具,可仿真APP上的单击、滑动、输入文本等操作。

  • monitor:同uiautomator

  • adb:ADB的全称为Android Debug Bridge,就是起到调试桥的作用。通过ADB我们可以在Eclipse中方面通过DDMS来调试Android程序,就是debug工具。

4、你所了解的APP测试工具?

APP自动化测试工具:

  • Appium

  • Airtest

  • uiautomator2(python)

APP稳定性测试工具:

  • Monkey

  • MonkeyRunner

  • Maxim

  • UICrawler

APP性能测试工具:

  • Perfdog

  • SoloPi

APP弱网测试&抓包工具:

  • Fiddler

  • Charles

APP兼容性测试工具:

  • TestIn

  • 腾讯优测

  • 百度MTC

  • 阿里MQC

APP安全测试工具:

  • OWASP ZAP

  • Drozer

  • MobSF

  • QARK

5、介绍一下冷启动、暖启动、热启动、首屏启动?

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

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

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

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

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

标准:

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

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

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

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

首先定义一个变量,这个变量填写用到的包名。
package=com.xueqiu.android

清除缓存数据:
adb shell pm clear $package

停止进程:
adb shell am force-stop $package

通过以上命令就做好了冷启动的环境,下面启动app并获取数据。启动App
adb shell am start -S -W $package/.view.WelcomeActivityAlias

-S表示启动之前先停止应用进程
-W是表示等待对应的activity启动完成

获取数据:
bash adb logcat |grep -i displayed

获取的时间如下:

图片

6、谈谈对冷启动的理解?

应用的启动可以分为冷启动,热启动和温启动,而启动最慢、耗时最长的就是冷启动。

冷启动开始时,系统会依次执行三个任务去启动APP:

  • 加载和启动应用程序;

  • APP启动后,立即创建一个空白的启动Window;

  • 创建APP的进程;

在这三个任务执行后,系统创建了应用进程,那么应用进程接下来会执行下一步:

  • 创建APP对象;

  • 开启一个主线程;

  • 创建启动页的Activity;

  • 加载View;

  • 布局view到屏幕;

  • 进行初始绘制显示视图;

当应用进程完成初始绘制之后,系统进程用启动页的Activity来替换当前显示的空白Window,这个时刻用户就可以使用App了。

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看。

2024花15天学完自动化测试全套教程,简单易上手,允许白嫖,拿走不谢!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习59-ARM7(自动设备号和混杂设备)

知识零碎&#xff1a; 头文件查找&#xff1a; /arm/路径下的头文件 linux驱动程序的编写&#xff0c;编译&#xff0c;运行过程 -------------------------------------------------------------------------------------------------------------------------------- 1.…

30秒出服装设计稿,森马用Serverless+AIGC 整“新活”!

“创新项目如何去赋能我们的业务&#xff0c;这件事情在森马很重要。阿里云函数计算帮我们屏蔽掉了想把AI落地到实际业务场景中 GPU 算力资源储备、采购成本、技术门槛等很多难题&#xff0c;从而迅速做出决策&#xff0c;快人一步站在正确的起点&#xff0c;体验新技术对整个服…

用友裁应届

下半年准备来用友的24应届生们&#xff0c;请三思&#xff01;&#xff01;&#xff01; 我是23届某9研究生&#xff0c;2月份用友以绩效低为由被裁&#xff08;我一个应届生跟老员工比绩效&#xff0c;搞笑呢&#xff09;。 半年被裁&#xff0c;找工作太难了&a…

LangChain之各个输出解析器的使用

Model I/O 在LangChain中&#xff0c;Model I/O被称为&#xff1a;模型的输入与输出&#xff0c;其有输入提示(Format)、调用模型(Predict)、输出解析(Parse)等三部分组成。 makefile 复制代码 1.提示模板: LangChain的模板允许动态选择输入&#xff0c;根据实际需求调整输入内…

【mysql】mysql中的数据类型知多少?

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

WiTUnet:一种集成CNN和Transformer的u型架构,用于改进特征对齐和局部信息融合

WiTUnet:一种集成CNN和Transformer的u型架构&#xff0c;用于改进特征对齐和局部信息融合 摘要IntroductionRelated workMethod WiTUnet: A U-Shaped Architecture Integrating CNN and Transformer for Improved Feature Alignment and Local Information Fusion. 摘要 低剂量…

Python | Leetcode Python题解之第52题N皇后II

题目&#xff1a; 题解&#xff1a; class Solution:def totalNQueens(self, n: int) -> int:def backtrack(row: int) -> int:if row n:return 1else:count 0for i in range(n):if i in columns or row - i in diagonal1 or row i in diagonal2:continuecolumns.add…

反汇编:OllyDBG/objdump分析

一、OllyDBG 1、 2、可以通过file->open的方法打开需要查看的程序 或者是 dll文件 3、反汇编窗口中&#xff1a;各列的含义&#xff1b; 反汇编中的第一列&#xff1a;是指令在内存中存放的地址&#xff1b; 反汇编中的第二列&#xff1a;是所谓的汇编语言中的操作码&…

海洋微生物清净节能剂属于节能环保型产品 我国市场参与者数量不断增长

海洋微生物清净节能剂属于节能环保型产品 我国市场参与者数量不断增长 海洋微生物清净节能剂是一种环保型燃油添加剂&#xff0c;通常以海洋微生物或其代谢产物为基材制成。海洋微生物清净节能剂可以有效降低尾气排放量、改善燃油燃烧效率&#xff0c;在各类燃油设备中拥有广阔…

STM32读写备份寄存器BKP

今天学习的读写STM32的备份寄存器BKP的步骤&#xff0c;这节知识是比较简单的&#xff0c;一共也就两大部&#xff1a; 这个BKP寄存器的意思就是在芯片的VB引脚上接个电池&#xff0c;就能保存其寄存器中的数据掉电不丢失。先来看看电池的接法&#xff1a; 好&#xff0c;下面…

git 清除已提交的记录

git 清除已提交的记录 步骤一 首先确保你本地没有做任何更改 提交你的当前更改&#xff1a; bashCopy codegit add . git commit -m "Committing current changes"执行 rebase 命令&#xff1a; bash Copy code git rebase -i HEAD~2如果你不想保留当前更改&#xf…

使用Github+Picgo+npm实现免费图床

本文参考自 Akilar&#xff0c;原文地址&#xff1a;https://akilar.top/posts/3e956346/ Picgo的配置 Github图床仓库内容不能超过1GB&#xff0c;因为Github原则上是反对仓库图床化的&#xff0c;超过1GB之后会由人工审核仓库内容&#xff0c;如果仓库被发现用来做图床&…

与Apollo共创生态:我们携手远航

目录 小程一言会议记录 回望7年发展展望未来小程有感 小程一言 4月22日&#xff0c;百度Apollo在北京车展前夕举办了以“破晓•拥抱智变时刻”为主题的智能汽车产品发布会。我在观看后也是很是触动 作为在校大学生的我&#xff0c;从大一开始知道Apollo开始&#xff0c;Apollo…

什么是智慧民航?详解实现智慧民航目标的关键工具与技术

一、 智慧民航是什么&#xff1f; 智慧民航是指运用现代信息技术&#xff0c;特别是互联网、大数据、云计算、物联网和人工智能等&#xff0c;对民航业的各个环节进行优化和革新的一种模式。它致力于实现民航服务的个性化、运营的高效化、管理的智能化和监管的精准化&#xf…

六西格玛培训:利弊权衡与企业实践策略探讨

在当今竞争激烈的商业环境中&#xff0c;企业追求卓越品质、降低成本、提升顾客满意度和增强员工能力显得尤为重要。六西格玛培训作为一种卓越的管理方法&#xff0c;正逐渐受到越来越多企业的青睐。它旨在通过严谨的数据分析和流程优化&#xff0c;帮助企业实现持续改进&#…

密文域可逆信息隐藏技术综述(上)

加密图像可逆信息隐藏是一种加密原始图像后&#xff0c;在密文图像中可逆地隐藏附加数据&#xff0c;并且在数据提取后&#xff0c;原始图像可以被无损重建的技术。RDH-EI的分类如图1所示。 按对图像的加密方法&#xff0c;现有RDH-EI算法可分为对称加密域和非对称(公钥)加密域…

机器学习day1

一、人工智能三大概念 人工智能三大概念 人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;和深度学习&#xff08;DL&#xff09; 人工智能&#xff1a;人工智能是研究计算代理的合成和分析的领域。人工智能是使用计算机来模拟&#xff0c;而不是人类…

Linux网络配置以及DHCP

一、网络配置 将Linux主机接入到网络&#xff0c;需要配置网络相关设置 一般包括如下内容&#xff1a; 主机名 IP/netmask 路由&#xff1a;默认网关 DNS服务器 主DNS服务器 次DNS服务器 第三个DNS服务器 1.1显示网络接口的信息 ifconfig命令用于显示和配置网络接口的信…

STM32使用PWM控制舵机

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 舵机简介 2. 硬件连接 3. 代码实现 3.1 PWM.c 3.2 PWM.h 3.3 Servo.c 3.4 Servo.h 3.5 main.c 3.6 完整工程文件 PWM和OC输出详解&#xff1a; STM32定时器的OC比较和PWM​​​​​​​ 1. …

YOLOv8-pose针对视频实时提取打印对应关节点序号及坐标

因为我在找如何提取YOLOv8-pose的关键点的时候&#xff0c;大多都是针对静态图像&#xff0c;视频直接套用不太行&#xff0c;因此就改进了一下&#xff0c;如下&#xff1a; 初步代码&#xff1a; import torch # 导入PyTorch库 import cv2 as cv # 导入OpenCV库并重命名为…