app 面试题

必会面试题

  1. APP测试流程

测试用例的设计与评审

     UI:核对效果图

功能测试:核对需求功能

业务,异常情况

兼容、稳点性、压力测试、性能

正式环境测试

回归测试

测试报告

  1. APP测试方法
  1. 冒烟测试
  2. 安装、卸载、升级
  3. 业务测试(逻辑、功能点、关联性)
  4. 稳定性及异常性测试(交互性、异常性(断电、断网、弱网等))
  5. 性能测试(基准测试、大数据测试()主要测服务器接口、CPU、内存、吞吐量、耗电量,响应时间)
  6. 界面的易用性测试
  7. 适配性测试(分辨率、不同版本、机型、屏幕尺寸)
  8. 外网测试(WiFi、联通、移动、电信、2G、3G、4G
  1. web与APP的区别

兼容性

网络测试

异常测试

前台不变,改后台(增删改),前台界面是否同步

数据排序

压缩图片崩溃

加载、翻页、最后一页

点击链接正常跳转

  1. 如何查日志

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

  1. 工具使用monkey、Emmagee、DDMS

Monkey:

简要步骤:adb devices---了解包名--adb shell monkey -p 包名 -v 运行次数(多个参数的组合形成不同的用例以求最大的覆盖)--当崩溃或无响应时分析monkey日志

常规monkey命令(可直接在项目里使用):

adb shell monkey -p com.jiochat.jiochatapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\b.log

重现bug:monkey日志搜索关键词ANR exception,将之前的事件重新操作,尤其是seed值要一模一样,如monkey -p 包名 -v seed 0 500

日志分析:查看是否有crash等关键字,找上下文,进行简单分析将你所能定位的错误信息发给开发。

该工具用于进行压力测试。 开发人员结合monkey 打印的日志 和系统打印的日志,修改测试中出现的问题。Monkey 是SDK中附带的一个工具,所有的事件都是随机产生的,不带任何人的主观性

 

Emmagee

Emmagee是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具

优点:二、为什么使用Emmagee?
1、开源
2、使用方便,无需root权限
3、可以监控单个应用性能
4、浮窗显示实时展示数据
5、CSV格式保存性能数据,方便转换为其它格式
6、用户自定义采集性能数据频率

 

DDMS:

  1. 在设备中列出已连接的安卓手机或模拟器和运行的进程,可以直接强行杀掉app进程,对手机进行截屏。
  2. 分析app和系统的logcat日志,便于对问题的进一步分析和定位。

例如:当出现问题时,分析打印的调试日志里的数据,可以进一步分析是后台接口还是app客户端处理的问题

  1. 3、分析app使用上传下载的带宽,
  2. 4、直接读取和写入文件到手机机身内存或sd卡,包括系统目录。
  3. 5、分析cpu和内存

 

 

面试题大全

一、开场问题:(自由发挥)

1、请自我介绍一下;

 


2、为什么离开上一个公司呢?

个人职业规划不符合,自己想
3、做测试多久了?以前做过哪些项目?你们以前测试的流程是怎样的?用过哪些测试工具?

 

先开产品会讨论中间的问题以及需求的可行性,再开技术会开发写好技术文档以及接口文档,以及评估出各自的所需要的时间需要给出来,然后前后端进行开发,进行联调,写完测试用例组内会进行测试用例评审,然后开测试用例评审会,执行测试用例,有什么问题提禅道,没有问题了,写测试报告,完了我们测试验收,beta验收,上线验收

Postman、jemeter、monkey、等等
4、你觉得为什么要在一个团队中开展软件测试工作,测试的价值提现在哪里?

5、测试报告

测试结论(测试是否通过/是否满足发布要求/是否能够发布)

罗列发现的主要问题(或者说该版本存在的主要风险)

测试环境

测试版本(客户端,移动APP)

硬件环境

测试内容(测试范围)

测试用例执行情况(一共多少,执行了多少,未执行多少,通过多少,失败多少)

发现的严重缺陷有哪些(仅仅罗列最严重级别的bug)

二、技术方面:

1、代码能力:

1.1、请用自己最擅长的编程语言,将一个字符串反转并输出?

参考答案:
(1)、python实现:
方法1、使用[::-1]:
s = 'python' print s[::-1]
方法2、使用reverse()方法:
l = list(s) l.reverse() print ''.join(l)

(2)、java实现:
方法1、使用StringBuffer,一点技巧也没有:
public String reverse(String s){ return new StringBuffer(s).reverse().toString(); }
方法2、灵活运用了字符串功能:
public String reverse(String s){ char[] letters=s.toCharArray(); char temp; int len=letters.length; for(int i=len/2-1;i>=0;i--){ temp=letters[i]; letters[i]=letters[len-1-i]; letters[len-1-i]=temp; } return new String(letters); }

1.2、针对数十个安卓应用市场渠道包,请问如何进行大体的功能验证,简单叙述一下思路?

参考答案:可以自动化遍历某个目录下面的所有渠道包apk,然后循环:安装——》登录——》**操作——》退出——卸载

2、测试思路:

2.1、给你一个模块,比如注册模块,你会怎么样设计与执行测试?

参考答案:数据——》从哪里来(入口)——》到哪里去(出口)——》数据库(检验数据的正确性)

2.2、请说一下你以前公司功能测试通过的标准?(自由发挥)

首先需求和用例的覆盖率达到100%,剩余的bug不能有1、2级的致命和严重,剩余的bug数不能超过bug数的5%。

2.3、你认为app测试过程中,相对于web,要更多注意哪些测试点?或者说app测试和web测试有哪些不同之处?

参考答案:
1、“点击加载更多”的分页处理技术,是否有重复的数据,数据显示是否完整,到达最后一页后是否还有数据进行显示;
2、数据的排序方式;
2、界面跳转是否正确;
3、出现异常情况是否有提示,是否跳转到已经设定好的默认页面,如断网情况下,显示网络未连接,数据加载失败,或者如果此页面没有数据显示,显示友好提示信息;
4、图片处理的地方,是否容易出现程序崩溃现象,主要是图片压缩机制;
5、前台展示的数据,后台进行变动(增、删、改),是否是实时更新还是app一开始运行再进行加载;
6、前台主动发出请求,后台数据库中是否存在相应的数据同时包括数据的关联性(商家的会员进行下订单,数据库中生成一条订单的记录的同时,生成一条积分记录,该会员的积分进行相应的变化);
7、手机app网络环境测试重点:主要是针对2G、3G、4G、wifi三种网络环境进行测试 ;
8、手机app兼容性测试:主要是针对android各个系统版本进行测试,及测试屏幕分辨率进行测试;

3、测试技术:

3.1、说说会用哪些抓包工具?怎么用的?

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

3.2、什么是alpha测试和beta测试?

alpha测试:在公司场地,由员工主导的测试行为;beta测试:在客户场地,由客户主导进行的测试。

3.3、请写出一个SQL来查询分数前五5的所有人?(面试问的最多的,连续被三家公司问过)

mysql:select * from 分数表 order by 分数 desc limit 5; oracle:select top 5 * from 分数表 order by 分数 desc;

3.4、linux常用命令有哪些?

cd命令:切换到某个目录
ls命令:列出当前目录的所有文件、文件夹
pwd命令:列出当前目录的路径
cp命令:复制
mv命令:剪切
grep命令:管道
find命令:查找
rm命令:删除
ps命令:查看进程
kill命令:杀掉某个进程
cat命令:查看某文件
tar命令:打包
chmod命令:赋权限
chown命令:改变文件的所有者
vim命令:文本编辑

3.5、请说明Android手机和IOS手机,系统有什么区别?

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

3.6、请简要介绍一下安卓系统四层架构?

从上到下,依次是:应用程序层——》应用程序框架层——》系统运行库层——》Linux核心层

3.7、简单介绍一下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.8、常用的adb命令有哪些?请随便写一个monkey脚本,并解释其中参数的含义?

参考答案:
(1)、adb devices、adb install、adb uninstall、adb shell pm **、adb shell am **,
更多adb命令可参考:http://www.jianshu.com/p/a010d34c8fb8

(2)、adb shell monkey -p com.xiaoniu.finance -s 123 --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v 2000 > d:\xnonline-monkey-test1.txt
-p:app包名、
--throttle:每个操作的间隔时间,单位ms
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-security-exceptions:忽略安全异常
-v -v -v:日志详细等级,3个v代表最详细等级的日志
d:\xnonline-monkey-test1.txt:代表将产生的日志,放到本地PC的D盘,并命名为:xnonline-monkey-test1.txt

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

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

3.10、请说一下以往工作中都曾具体做过哪些工作?其中最擅长哪部分工作(功能,自动化(UI和接口),性能)?这部分你是怎么做的?(自由发挥)

3.11、请简单介绍一下实用过的安卓UI自动化测试工具?

参考答案:
appium:是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。
robotium:是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。

3.12、你觉得app的性能测试,即专项测试,需要重点关注那些方面?

参考答案:内存、cpu占用、耗电量、流量、流畅度等

4、技术热情:(考察个人潜力,自由发挥)

4.1、你为什么来选择做测试?
4.2、你认为理想的测试流程是什么样子?
4.3、你认为如何提高个人的软件测试技术?
4.4、谈谈软件测试职业发展,以及个人未来的打算?

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以尝试回答一些 Android App 面试题,希望能对你有所帮助。 1. 什么是 Activity?它有哪些生命周期方法? Activity 是 Android 应用程序中的一个基本组件,用于呈现用户界面和处理用户交互。Activity 有如下生命周期方法: - onCreate() - onStart() - onResume() - onPause() - onStop() - onRestart() - onDestroy() 2. 什么是 Fragment?它有哪些生命周期方法? Fragment 是 Android 应用程序中的另一个基本组件,用于构建灵活的用户界面。Fragment 有如下生命周期方法: - onAttach() - onCreate() - onCreateView() - onViewCreated() - onStart() - onResume() - onPause() - onStop() - onDestroyView() - onDestroy() - onDetach() 3. 什么是 RecyclerView?它与 ListView 有什么区别? RecyclerView 是一个强大的 Android 视图组件,用于显示大量数据集合。与 ListView 相比,RecyclerView 具有更好的性能和灵活性,可以轻松实现复杂的布局和动画效果。此外,RecyclerView 还支持可定制的布局管理器和适配器,可用于实现不同类型的列表和网格视图。 4. 什么是 Intent?它有哪些类型?它们有什么区别? Intent 是 Android 应用程序中的一个基本组件,用于在不同的组件之间进行通信和交互。它有如下两种类型: - 显式 Intent:用于启动应用程序内的另一个组件,如 Activity、Service 或 BroadcastReceiver。 - 隐式 Intent:用于启动其他应用程序中的组件,如系统应用程序或第三方应用程序。 5. 什么是 Service?它与 Activity 有什么区别? Service 是 Android 应用程序中的一个基本组件,用于在后台执行长时间运行的任务,如下载文件、播放音乐或处理网络请求。与 Activity 不同,Service 没有用户界面,通常在后台默默地运行。此外,Service 可以与其他应用程序组件通信,如 Activity 和 BroadcastReceiver。 希望这些简答能够帮助你更好地了解 Android App 开发。如果你有更深入的问题,欢迎继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值