• 2
  • 3
分享

1、引言

最近再整理测试开发相关的面试题,不是因为我有什么想法,而是被求职者折磨了。

既然都准备寻找新的环境,那还不做充足的准备,总想着吃老本,希望遇到的面试官技术都不太好的。

不可否认,有的时候确实能碰巧蒙混过关,

但是在小鱼这里,就一个字:不要想,现实点!!!

但是,为了能让各位求职者提前刷刷题,

我也整理了一份移动APP的面试题。

这份面试题,能记住,就可以完成小鱼80%的面试问答,

剩余的 20%,会根据求职者的简历,进行扩展了哦。

今天的移动APP面试题,分两部分,针对不同的求职者和面试官,

毕竟不是所有的面试官都会这么深的技术。

2、基础篇

2.1开篇介绍,APP测试流程

面试移动APP测试开发的同学,面试官的抛出的第一个问题,就是

请介绍一下APP的测试流程:

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

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

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

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

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

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

    ⑦日常维护性测试;

    为了能更形象,更具体,更容易记住,小鱼把脑图贴出来。

11.png

为了各位求职者, 小鱼我也是煞费苦心了。

2.2 移动APP测试需要准备环境资源

主要以实际项目为准,当然,也可以从以下几点入手点:

    IOS设备,Android 设备(主流设备为主);

    支付宝/银联项目,需要提前申请支付宝/银联账号等;

    秒杀类项目,需要规划秒杀时间;

    优惠券类项目,需要添加优惠券数据;

2.3 移动APP测试和Web测试的区别

移动APP和Web测试,异同点如下:

相同点:

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

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

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

    测试应用系统的稳定性;

不同点:

    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);手机设备可根据 手机型号、分辨率、屏幕尺寸不同。

2.4 移动APP专项测试

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

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

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

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

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

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

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

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

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

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

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

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

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

    1)  IOS 沙盒运行机制:

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

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

    2)Android 虚拟机运行机制:

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

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

    两者后台制度不同:

        ①IOS中任何第三方程序都不能在后台运行;

        ②安卓中任何程序都能在后台运行,直到没有内存才会关闭。

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

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

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

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

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

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

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

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

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

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

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

2.7 如何抓取日志

三个方法可供选择:

    ①使用adb命令:adb logcat | find “com.sankuai.meituan” >d:\test.txt

    ②用ddms抓取:手机连上电脑,打开ddms工具;

    ③在Android Studio开发工具中,打开DDMS;

2.8 adb常用命令

1、查看帮助手册列出所有的选项说明及子命令:

adb help

2、 获取设备列表及设备状态:

adb devices

3、安装应用:

adb install 路径\xx.apk

重新安装命令:

adb install -r

4、获取设备的状态,

adb get-state

敲黑板:

设备状态有三种

    正常链接:device

    异常:offline

    未连接:unknown

5.卸载应用

adb uninstall  <包名>

敲黑板:

adb uninstall <包名>, 后面的参数是应用的包名,区别于 apk 文件名。

6.将 Android 设备上的文件或者文件夹复制到电脑本地

如复制 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/

8.结束和启动adb服务:

结束 adb 服务命令:

adb kill-server

启动adb服务命令:

adb start-server

9.打印及清除系统日志:

打印 Android 的系统日志

adb logcat

清除日志

adb logcat -c

10.查找包名/活动名

adb logcat | findstr START

2.9 adb三个组件是指?

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

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

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

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

3、进阶篇

3.1 介绍一下Android四大组件?

3.1.1 Android四大基本组件:

        Activity

        BroadcastReceiver广播接收器

        ContentProvider内容提供者

        Service服务。

3.1.2 分别介绍四大组件:

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

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

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

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

3.2 Activity生命周期

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

    2、Activity本质上有四种状态

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

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

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

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

3.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工具。

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

3.4.1 四种启动介绍

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

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

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

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

3.4.2 启动时间标准

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

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

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

3.5 谈谈冷启动

3.5.1 冷启动前系统执行任务

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

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

        ①加载和启动应用程序;

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

        ③创建APP的进程;

3.5.2 冷启动后创建应用步骤

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

        ①创建APP对象;

        ②开启一个主线程;

        ③创建启动页的Activity;

        ④加载View;

        ⑤布局view到屏幕;

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

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

3.6 谈谈所了解的 APP测试工具

3.6.1 自动化测试工具

    Appium

    Airtest

uiautomator2(python)

3.6.2 APP稳定性测试工具

    Monkey

    MonkeyRunner

    Maxim

    UICrawler

3.6.3 APP性能测试工具:

    GT

    Perfdog

    SoloPi

3.6.4 APP弱网测试&抓包工具:

    QNET

    Fiddler

    Charles

3.6.5 APP兼容性测试工具:

    TestIn

    腾讯优测

    百度MTC

    阿里MQC

3.6.6 APP安全测试工具:

    OWASP ZAP

    Drozer

    MobSF

    QARK

4、总结

今天分享的内容,只是移动APP测试开发面试的一部分;

关于自动化方面和性能方面,没有涉及到太多,这在后期的系列博文中会专门推出 关于自动化 和性能专题。

所以,小伙伴不要着急哦。

但是,如果这篇博文的内容在实际工作中熟练应用过,那么恭喜你,你可以在吊打90%面试官了。

但是,吊打小鱼这类的BT的面试官,还是欠点火候;

毕竟,剩余10%的面试官,还是留给10%的求职者吧;

更多关于面试相关的博文,可直接点击下发链接:

从P6 到P7,到底要做哪些准备,掌握多少知(姿)识(势),小鱼亲身分享!!

记住这几点,你的offer会拿到手软

一本正经的聊一聊面试官的心理

吊打面试官系列之:Online出现问题,不要慌,排查方法给安排!

吊打面试官系列之:UI自动化面试题汇总,对标P7,从此再也不怕面试官了

最后,关注Carl_奕然,带你学习更多测试开发的知识,让你也成为测试开发专家。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 第1步:设计测试自动化策略许多团队通常会遇到困难,因为他们没有面向目标的测试自动化策略。它将所有团队成员保持在同一页面上。它通知和传达预定义的目标和计划,每个人都可以从中了解他们所做的是对还是错,并调整下一步行动。如果没有清晰的战略,团队很容易改变方向,选择错误的解决方案,并且无法以有助于实现业务价值的方式使用测试自动化。这是看待它的一个好方法:测试自动化就像构建并拥有自己的软件来测试其他应用程序。它应该以与软件开发相同的方式以清晰的愿景和计划进行管理。第2步:丰富测试自动化基础了解测试自动化的所有基础知识至关重要,从敏捷和DevOps方法、框架构建、自动化金字塔、架构、自动化方法到报告和指标...
            0 0 1283
            分享
          •     对于那些正在认真寻求如何测试或者进一步改善测试效果的团队和组织来说,可以研究下业界大佬是如何组织测试和质保活动的,肯定能学到不少东西。显而易见的是,诸如谷歌、微软和亚马逊这样的公司,如果不是对产品质量给予了恰当的关注,不可能像现在这样成功。  但是对这些软件巨头们的研究表明,成功并没有放之四海而皆准的秘诀。我们可以一起来学习一下世界上最著名的五家公司是如何组织他们的质量保证工作的。  谷歌- 寻找最佳实践  谷歌,这个世界上最大的搜索引擎公司,是如何组织测试工作的呢?这要视产品和团队而定。举个例子,负责搜索引擎的团队,维护了一个庞大又严谨的测试框架。因为搜索是谷歌的核心业务,团队想要保...
            2 1 1847
            分享
          •   PICT(Pairwise Independent Combinatorial Testing,成对独立组合测试)是微软开发的一款测试用例生成工具(生成配对测试用例的工具很多,感兴趣的可以参考http://www.pairwise.org/tools.asp的介绍),它可以生成测试用例和测试配置,其理论基础是成对测试技术(Pairwise Testing,之前有文章单独介绍过,在此不多介绍)。  一、PICT安装  通过官网链接?http://download.microsoft.com/download/f/5/5/f55484df-8494-48fa-8dbd-8c6f76cc014b...
            13 13 3053
            分享
          •   继 3 月 28 日发布 SU7 后,蓝鲸财经记者号称“从可靠信源获悉”,小米或将于今年年底发布 SUV 车型。  小米官方此前在“答网友 100 问”中提到了第一辆车为什么选择了轿车,而不是 SUV。小米称汽车是“工业之王”,而轿车是每个时代 “时代精神”典型代表,是每个时代 “时代精英”第一选择。  小米 SU7 定位“C 级高性能生态科技轿车”,提供双电机版本和单电机版本车型选择,并提供容量为 73.6 千瓦时以及 101 千瓦时电池可选,售价 21.59 万元-29.99 万元。作者:汪淼原文链接:IT之家(ithome.com)
            0 0 749
            分享
          • 用postman进行接口测试的时候,我们经常会把接口地址的全路径填在url地址栏当中。这种做法不太好的地方在于,当你需要从一个测试环境切换到另一测试环境时, 需要把所有的url全部修改一遍,当你有 500个用例都需要修改,直接累瘫。那在postman当中,如何更方便的修改测试环境呢?其实只需要两步。第一步,点击 postman 左侧工具栏的 environment, 点击 + 号添加新的测试环境。 一个测试环境当中可以创建很多环境变量,有了环境变量,在请求数据中就可以引用这些变量。在这里,我创建一个了一个开发环境,一个线上环境,里面都有一个叫 baseUrl 的变量。第二步,在请求发送界面,点...
            0 0 2792
            分享
      • 51testing软件测试圈微信