老师给的硬核移动端测试面试题目,大家看看靠谱吗
以后我把各岗位的题目更新个遍,当然大部分都是我自己总结的保证质量哈
ADB工作原理
- 当用户启动一个adb客户端,客户端首先确认是否已有一个adb服务进程在运行。如果没有,则启动服务进程。当服务器运行, adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,所有的adb客户端都是用端口 5037与adb服务器进行对话的。
- 接着服务器将所有运行中的模拟器或设备实例建立连接。它通过扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。一旦服务器找到了adb守护程序,它将建立一个到该端口的连接。请注意任何设备和模拟器实例会取得两个连接的端口,一个偶数端口用来控制与控制台的连接,和一个奇数端口用来控制与adb连接。
ADB 的使用
- 显示当前运行的虚拟设备:adb devices
- 查看adb所支持的所有命令:adb –help
- 查看adb的版本序列号:adb version
- 进入模拟器的shell模式:adb shell
- 如何重启 adb服务
关闭server:adb kill-server
重启server:adb start-server
- APP的安装与卸载
在模拟器安装软件:adb install –r *.apk
在模拟器卸载软件:adb uninstall 包名
adb install –r *.apk
- 只连接一个设备
- adb install 安装包路径
- 连接多个设备,需要指定一个设备
- adb –s 设备序列号 install 安装包路径
- 覆盖安装,保留数据
- adb –s 设备序列号 install -r 安装包路径
例:adb -s 192.168.56.101:5555 install - r E:/test.apk
- 如何在电脑与手机之间传输数据?
- 向模拟器中传输文件:adb push
例如:adb push D:\demo\meituan.apk /data/local/meituan.apk
- 从模拟器中获取文件:adb pull
例如: adb pull /data/local/meituan.apk D:\
- 如何静默安装APP
adb push D:\demo\meituan.apk /data/local/meituan.apk
adb shell pm install –f /data/local/meituan.apk
- 如何使用adb启动停止一个app?
adb shell am start –W –S package/activity
adb shell am force-stop package
- 如何获取CPU、内存状态
adb shell dumpsys meminfo packagename
adb shell dumpsys cpuinfo |findstr packagename
App开发方式有三种
Native App 、Web App、Hybird App
monkey
- monkeyt进行压力测试的命令?
adb shell monkey –p < packagename > <count>
- 如何重现Crash/ANR过程?
添加参数 –s seed
3、请对下列monkey命令进行解释(需要解释各参数的含义)。
adb shell monkey -p com.example.think.helloworld --pct-touch 20 --pct-motion 30 --throttle 300 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000 > D:/monkey2.log
参考答案
- -p com.example.think.helloworld 1000对这个包com.example.think.helloworld进行稳定性测试,发送1000次随机事件
- --pct-touch 20 其中设定触屏的事件占比为20%
- --pct-motion 30滑动事件占30%
- --throttle 300每次间隔事件为300毫秒
- --ignore-crashes Monkey会执行完所有的事件,不会因crash而停止
- --ignore-timeouts 忽略超时
- --ignore-security-exceptions忽略安全异常
- --ignore-native-crashes忽略本地异常
- --monitor-native-crashes监视系统中本地代码发生的崩溃
- -v -v -v 日志详细等级,3个v代表最详细等级的日志
- D:/monkey2.log D:/monkey2.log:代表将产生的日志,放到本地PC的D盘,并命名为:monkey2.log
客户端性能测试需要关注哪些方面?
CPU,内存,流量、电量以及客户端在不同网络环境下响应速度等等。
如何使用Fiddler抓取HTTPS包
Fiddler https相关设置
在浏览器中安装证书
APP兼容性测试需要考虑哪些因素?
- 系统版本(android&ios平台,不同版本)
- 分辨率(小屏、大屏、全屏)
- 手机品牌(华为、小米OPPO、VIVO等)
WAP 页面兼容性测试有哪些因素?
- 不同平台的不同浏览器(safari、chrome等)
- 分辨率(小屏、大屏、全屏)
- 转发到QQ、微信、微博等第三方平台
调试App相关的bug常用哪些工具?
- 网络相关工具,fiddle、wareshark、charles
- adb、am、logcat等
- 云平台,bug复现
调试Web页面常用哪些工具?
- Chrome调试工具,可设置移动APP UA
- WEINRE (WEb INspector REmote)
服务器端压力测试工具有哪些?
LoadRunner
JMeter
自主研发的工具
服务器端压力测试需要监控哪些指标?
CPU
内存(虚拟内容、实际内存)
QPS、平均响应时间
简述开展服务器端压力测试的步骤
- 搭建服务端模块,启动服务
- 实施大量并发的测试场景
- 监控进程相关指标、内存、CPU
- 监控模块的执行情况,QPS、平均响应时间
- 收集数据并进行分析,生成曲线图
- 根据分析结果,得出测试结论
简述什么是持续性集成
- 持续集成是指开发阶段,对项目进行持续性
- 自动化编译、测试,以达到控制代码质量的手段
- 持续集成是一种软件开发实践
持续集成都包含哪些内容?
- 开发人员、版本控制
- CI服务器、构建脚本
- 反馈机制、集成构建
持续集成的意义有哪些?
- 减少风险、减少重复过程
- 任何时间、任何地点生成可部署的软件
- 增加项目可见性、建立团队对产品的信心
android的四大组件是什么?并对android的四大组件的功能进行描述。
1)Activity,Service,BroadcastReceiver,ContentProvider
2)Activity是会显示视图控制组件的用户接口,并对事件作出响应, Activity是Android应用程序的最基本的组件。Android应用程序中一个单独的屏幕通常就是一个Activity。
Service是具有一个较长生命周期且没有用户界面的程序,只能在后台运行,可以和其他组件进行交互。
BroadcastReceiver用户用来接收应用或系统中的广播,并作出响应。
Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
腾讯的GT是什么工具?
参考答案
GT(随身调)是APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(。利用GT,仅凭一部手机,无需连接电脑,您即可对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等等)。
请列举出交互性测试的测试要点
- 客户端作为手机特性测试,包含被打扰的情况,来电,来短信,低电量测试等
- 使用应用时对来电的处理
- 使用应用时对短信息的处理
- 使用应用时闹铃响起
- 使用应用时锁屏、解锁
- 待机、插拔数据线、耳机不会影响客户端
请列举出Android的功能测试点
答出任意五点
- 安装\卸载(本机+第三方)
App具体功能点 - 联网(默认的联网方式是什么?Wifi or Sim卡?网络切换是否有相应的提示说明?)
- 程序进入输入功能时,是否正常弹出键盘;键盘是否遮挡了应用需要输入内容的对话框
- app切换测试(最小化、多个app切换, home和程序间多次切换 )
- 关机、待机后app能否正常使用
返回上一级操作,退出程序后的提示 - 当离开测试应用一段时间后,在回到测试应用时不能丢失用户数据
衡屏竖屏切换时不能丢失用户数据 - 长按某一按钮是否会触发其他事件
- 注意PC端和APP的数据同步(比如某作者在PC端设置了禁止他人评论,那么在APP上也应该禁止)
- 如果在APP中内嵌了些超链接后,程序如何处理。如果调用设备的浏览器,能否正常切回到APP
- 各个页面间多次切换
- 权限的限制(拍照、语音、蓝牙)
- 互动分享:如果程序里面包括分享功能,那么检测点击分享的时候是否会正常给出分享提示,点击分享后所填写的分享内容是否正确
- 长时间开机且开app,看是否会出现异常情况
Android应用程序结构是什么?
参考答案:Linux Kernel(Linux内核)、Libraries(系统运行库或者是c/c++核心库)、Application Framework(开发框架包)、Applications(核心应用程序)
请对Appium进行简要的介绍。
Appium是一个开源、跨平台的测试框架,可以用来测试原生,移动Web及混合的移动端应用,支持ios,android平台的测试。
Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库, Android 系统的UIAutomator框架。
PO框架设计思路,需要包含哪些包,实现哪些功能。
base里面有个BaseTest.java,这个类的主要作用是启动和关闭APP的作用
pages存放页面元素类,每一个java类,都是一个页面,存放的都是对应页面的所有元素及操作
testcases存放测试用例的地方,在这个包下,还会有很多子包,子包的个数根据测试的系统的模块来划分,比如有登录模块,首页模块等,那么子包的名字就应该写成login、home
utils封装了各种工具类,包括读取excel,appium api封装类,读取数据库类,读取属性文件类和生成driver的类等。
Android Service两种启动方式的区别
1、采用start的方式开启服务
特点:如果服务已经开启,不会重复的执行onCreate(), 而是会调用onStartCommand()。服务停止的时候调用 onDestory()。服务只会被停止一次。一旦服务开启跟调用者(开启者)就没有任何关系了。开启者退出了,开启者挂了,服务还在后台长期的运行。
开启者不能调用服务里面的方法。
2、采用bind的方式开启服务
bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。绑定者可以调用服务里面的方法。
请叙述Appium的四大设计理念
- 不需要为了自动化,而且重新编译或修改测试app
- 不必局限于某种语言或者框架来编写和运行测试脚本的运行
- 一个移动自动化的框架不应该在接口上重复造轮子
- 移动端自动化测试应该是开源的
Appium架构原理
(1)Appium服务器。Appium服务器是Appium框架的核心。它是一个基于Node.js实现的HTTP服务器。Appium服务器的主要功能是接受从Appium客户端发起的连接,监听从客户端发送来的命令,将命令发送给bootstrap.jar(iOS手机为bootstrap.js)执行,并将命令的执行结果通过HTTP应答反馈给Appium客户端。
(2)Bootstrap.jar。Bootstrap.jar是在Android手机上运行的一个应用程序,它在手机上扮演TCP服务器的角色。当Appium服务器需要运行命令时,Appium服务器会与Bootstrap.jar建立TCP通信,并把命令发送给Bootstrap.jar;Bootstrap.jar负责运行测试命令。
(3)Appium客户端。它主要是指实现了Appium功能的WebDriver协议的客户端Library,它负责与Appium服务器建立连接,并将测试脚本的指令发送到Appium服务器。现有的客户端Library有多种语言的实现,包括Ruby、Python、Java、JavaScript(Node.js)、Object C、PHP和C#。Appium的测试是在这些Library的基础上进行开发的。
启动/关闭Service的代码实现
public void start(View v){
Intent intent =new Intent(this,MyService.class);
startService(intent);
}
public void stop(View v){
Intent intent =new Intent(this,MyService.class);
stopService(intent);
}
请列举出交互性测试的测试要点。
客户端作为手机特性测试,包含被打扰的情况,来电,来短信,低电量测试等
- 使用应用时对来电的处理
- 使用应用时对短信息的处理
- 使用应用时闹铃响起
- 使用应用时锁屏、解锁
- 待机、插拔数据线、耳机不会影响客户端
安装、卸载测试主要针对编译后源程序生成的APK安装文件
1)验证app能否正确安装运行卸载,以及操作过程和操作前后对系统资源的占有情况
2)安装运行卸载的提示,报告等
3)检查安装路径,文件是否合理,组件是否正确注册等
- 验证数字签名
- 升级后可以正常使用
- 在线跨版本升级
异常测试
- 在断网、断电、服务器异常等情况下,客户端能否正常处理,保证数据的正确性。
- 使用应用时断网
- 断网时启动应用
- 使用应用时断电
- 服务器异常,客户端能否正常处理
- Client端更新时断开了
- Client端更新时Service端挂了
业务逻辑测试点需要考虑哪些因素?
老师给的硬核移动端测试面试题目,大家看看靠谱吗相关推荐
- 想不到Github有如此硬核的Java高级面试“备战”仓库,太腻害了
有人调侃我们说: 程序员不如送外卖.送外卖是搬运食物,自己是搬运代码,都不产出新的东西-- 透支体力,又消耗健康,可替代性极强,30岁之后就要面临被优化的危险-- 想跳槽,但是更高的平台难进,同级别的 ...
- ios和android测试面试题目,App测试面试题总结
前言 现在面试个测试岗位,都是要求全能的,web.接口.app啥都要会测,那么APP测试一般需要哪些技能呢? 面试app测试岗位会被问到哪些问题,怎样让面试管觉得你对APP测试很精通的样子? 本篇总结 ...
- 2022渗透测试-面试题目大全
1.拿到一个待检测的站,你觉得应该先做什么? (1)信息收集 1.获取域名的 whois 信息,获取注册者邮箱姓名电话等. 2.查询服务器旁站以及子域名站点,因为主站一般比较难,所以先看看旁 站有没有 ...
- 安全/渗透测试面试题目分享((面经更新至题目(问题和答案都持续更新 欢迎讨论
1.有一个账户管理系统有我们常见的登陆/修改密码/后台/修改资料这些功能点,你来分析一下哪些地方可能会出现哪些安全问题? 2.你所认为的CSRF和XSS的区别在哪?你觉得XSS的本质是什么? 3.PO ...
- 超硬核!兔兔阿里p7学长给的面试知识库
一个阿里p7学长给的nosql面试知识库,绝对真实,学会了去面呀. 最近整理了一下超硬核系列的文章和面经系列的文章,可以持续关注下: 超硬核系列历史文章:(我保证每篇文章都有值得学习的地方,并且对小白 ...
- 程序员硬核宝典(面试题集、在线免费工具箱)
今天给大家分享一些程序员面试题集以及一个在线免费工具箱,废话休说,直奔主题: 一.程序员硬核知识 1.大厂面试指北 http://notfound9.github.io/interviewGuide/ ...
- sensei鼠标测试软件,「硬核测试:游戏鼠标精准度」赛睿SENSEI 310
原标题:「硬核测试:游戏鼠标精准度」赛睿SENSEI 310 作为赛睿最热销游戏鼠标之一,310有SENSEI(对称)和RIVAL(右手)两个版本,均采用今天要测的TrueMove3引擎,是基于PMW ...
- 抖音、腾讯、阿里、美团春招服务端开发岗位硬核面试(二)
在上一篇 文章中,我们分享了几大互联网公司面试的题目,本文就来详细分析面试题答案以及复习参考和整理的面试资料,小民同学的私藏珍品????. 首先是面试题答案公布,在讲解时我们主要分成如下几块:语言的基 ...
- 《袁老师访谈录》第八期|温维佳教授/香港科大(广州)功能枢纽署理院长【问诊未来·院长系列:科研教授的硬核创业之道】...
2020年3月7日晚8时,香港科大商学院内地办事处重磅推出的<袁老师访谈录>[问诊未来•院长系列],成功举办了第二次线上直播.之后,将陆续邀请来自香港科大各大学院的10位院长,分别进行不同 ...
最新文章
- Android优化五:布局优化
- 美团在Redis上踩过的一些坑-1.客户端周期性出现connect timeout
- java虚拟机10.内存模型与线程
- edit box小技巧
- ubuntu9.10之grub.cfg详解
- Linux下本地yum源配置和局域网yum源配置
- 为UIView绘制单边的boder
- python投票问题,程序列出在python中获得多数投票的候选人
- 平行四边形 java_Java编写三角形和平行四边形
- 香港20年十大最具影响力电影
- kitty终端使用笔记
- Switch语句用法及案例
- 阿里巴巴 DevOps 转型后的运维平台建设
- c语言中error c2065: c: 未声明的标识符,error C2065:未声明的标识符错误
- Hadoop学习笔记(16)Hive的基本概念、Hive的下载与安装、MySQL数据库下载与安装
- JAVA线程池原理-1
- Jmeter 正则表达式说明
- python新闻评论分析_Python文本数据分析与处理(新闻摘要)
- 读《java的讲座》后感,专题讲座听后感作文500字
- 2021年6月单页落地页阿狸子订单管理系统豪华版无加密版本