移动端测试面试题目大全

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

  1. 如何重启 adb服务

关闭server:adb kill-server

重启server:adb start-server

  1. 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

  1. 如何在电脑与手机之间传输数据?
    1. 向模拟器中传输文件:adb push

例如:adb push D:\demo\meituan.apk  /data/local/meituan.apk

    1. 从模拟器中获取文件:adb pull

例如: adb pull /data/local/meituan.apk D:\

  1. 如何静默安装APP

adb push D:\demo\meituan.apk  /data/local/meituan.apk

adb shell pm  install –f  /data/local/meituan.apk

  1. 如何使用adb启动停止一个app?

adb shell am start –W –S package/activity

adb shell am force-stop package

  1. 如何获取CPU、内存状态

adb shell  dumpsys meminfo  packagename

adb shell  dumpsys cpuinfo |findstr  packagename

App开发方式有三种

Native App 、Web App、Hybird App

monkey

  1. monkeyt进行压力测试的命令?

adb shell  monkey –p  < packagename >  <count>

  1. 如何重现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

参考答案

  1. -p com.example.think.helloworld 1000对这个包com.example.think.helloworld进行稳定性测试,发送1000次随机事件
  2. --pct-touch  20  其中设定触屏的事件占比为20%
  3. --pct-motion  30滑动事件占30%
  4. --throttle  300每次间隔事件为300毫秒
  5. --ignore-crashes Monkey会执行完所有的事件,不会因crash而停止
  6. --ignore-timeouts 忽略超时
  7. --ignore-security-exceptions忽略安全异常
  8. --ignore-native-crashes忽略本地异常
  9. --monitor-native-crashes监视系统中本地代码发生的崩溃
  10. -v -v  -v  日志详细等级,3个v代表最详细等级的日志
  11. 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、平均响应时间

简述开展服务器端压力测试的步骤

  1. 搭建服务端模块,启动服务
  2. 实施大量并发的测试场景
  3. 监控进程相关指标、内存、CPU
  4. 监控模块的执行情况,QPS、平均响应时间
  5. 收集数据并进行分析,生成曲线图
  6. 根据分析结果,得出测试结论

简述什么是持续性集成

  • 持续集成是指开发阶段,对项目进行持续性
  • 自动化编译、测试,以达到控制代码质量的手段
  • 持续集成是一种软件开发实践

持续集成都包含哪些内容?

  • 开发人员、版本控制
  • 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、内存、流量、电量、帧率/流畅度等等)。

请列举出交互性测试的测试要点

  • 客户端作为手机特性测试,包含被打扰的情况,来电,来短信,低电量测试等
  1. 使用应用时对来电的处理
  2. 使用应用时对短信息的处理
  3. 使用应用时闹铃响起
  4. 使用应用时锁屏、解锁
  5. 待机、插拔数据线、耳机不会影响客户端

请列举出Android的功能测试点

答出任意五点

  1. 安装\卸载(本机+第三方)
    App具体功能点
  2. 联网(默认的联网方式是什么?Wifi or Sim卡?网络切换是否有相应的提示说明?)
  3. 程序进入输入功能时,是否正常弹出键盘;键盘是否遮挡了应用需要输入内容的对话框
  4. app切换测试(最小化、多个app切换, home和程序间多次切换 )
  5. 关机、待机后app能否正常使用
    返回上一级操作,退出程序后的提示
  6. 当离开测试应用一段时间后,在回到测试应用时不能丢失用户数据
    衡屏竖屏切换时不能丢失用户数据
  7. 长按某一按钮是否会触发其他事件
  8. 注意PC端和APP的数据同步(比如某作者在PC端设置了禁止他人评论,那么在APP上也应该禁止)
  9. 如果在APP中内嵌了些超链接后,程序如何处理。如果调用设备的浏览器,能否正常切回到APP
  10. 各个页面间多次切换
  11. 权限的限制(拍照、语音、蓝牙)
  12. 互动分享:如果程序里面包括分享功能,那么检测点击分享的时候是否会正常给出分享提示,点击分享后所填写的分享内容是否正确
  13. 长时间开机且开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);

}

请列举出交互性测试的测试要点。

客户端作为手机特性测试,包含被打扰的情况,来电,来短信,低电量测试等

    1. 使用应用时对来电的处理
    2. 使用应用时对短信息的处理
    3. 使用应用时闹铃响起
    4. 使用应用时锁屏、解锁
    5. 待机、插拔数据线、耳机不会影响客户端

安装、卸载测试主要针对编译后源程序生成的APK安装文件

1)验证app能否正确安装运行卸载,以及操作过程和操作前后对系统资源的占有情况

2)安装运行卸载的提示,报告等

3)检查安装路径,文件是否合理,组件是否正确注册等

  • 验证数字签名
  • 升级后可以正常使用
  • 在线跨版本升级

异常测试

  • 在断网、断电、服务器异常等情况下,客户端能否正常处理,保证数据的正确性。
    • 使用应用时断网
    • 断网时启动应用
    • 使用应用时断电
    • 服务器异常,客户端能否正常处理
    • Client端更新时断开了
    • Client端更新时Service端挂了

业务逻辑测试点需要考虑哪些因素?

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

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

相关文章

Linux简单命令收录(cal,passwd,clear)【下】

1、cal NAME cal - display a calendar 显示日历 SYNOPSIS cal [options] [[[day] month] year] cal [options] [timestamp|monthname] 用法&#xff1a; cal [选项] [[[日] 月] 年] cal [选项] <时间戳|月份名> OPTIONS -1…

web知识点大总结

#第一章 Web基础知识 Web开发基本概念 1、万维网是一个由许多相互链接的超文本组成的系统&#xff0c;通过互联网访问。 2、web&#xff1a;worldwideweb&#xff0c;万维网&#xff0c;简称web&#xff0c;www&#xff0c;通常称为网页。 3、web开发&#xff1a;进行网页页…

Linux命令集—— cat AND more

1、cat NAME cat - concatenate files and print on the standard output 连接所有指定文件并将结果写到标准输出。【经常用来显示文件的内容&#xff0c;类似DOS的TYPE 命令】 SYNOPSIS cat [OPTION]... [FILE]... cat [选项]... [文件]... With no FILE, or when FILE…

Linux简单命令集——less

NAME less - opposite of more more的对立面 注意 与more命令类似&#xff0c;less命令也用来分屏显示文件的内容&#xff0c;但是less命令允许用户向前或向后浏览文件。例如&#xff0c;less命令显示文件内容时&#xff0c;可以用⬆键和⬇键分别将屏幕内容下移一行和上移一…

《重构-改善既有代

重要列表 1、如果你发现自己需要为程序添加一个特性&#xff0c;而代码结构使你无法很方便地达成目的&#xff0c;那就先重构哪个程序&#xff0c;使特性的添加比较容易的进行&#xff0c;然后再添加特性 2、重构前&#xff0c;先检查自己是否有一套可靠的测试机制&#xff0…

Myeclipse 6.5 优化

1、取消自动validation validation有一堆&#xff0c;什么xml、jsp、jsf、js等等&#xff0c;我们没有必要全部都去自动校验一下&#xff0c;只是需要的时候才会手工校验一下&#xff01; 取消方法&#xff1a; windows–>perferences–>MyEclipse Enterprise Workbench–…

Linux简单命令集——head

NAME head - output the first part of files 输出文件的第一部分SYNOPSIS head [OPTION]... [FILE]...head [选项]... [文件]...head命令在屏幕上显示指定文件file的开头若干行&#xff0c;行数由参数值来确定。显示行数的默认值是10。-c, --bytes[-]NUM print the firs…

操作系统中避免死锁的银行家算法【表面C++实际C语言】一学就废的菜鸡代码

文章目录银行家算法实验原理数据结构初始化输出资源分配量安全性算法银行家算法完整代码测试数据测试结果第一题第二题银行家算法 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源&#xff0c;但系统在进行资源分配之前&#xff0c;应先…

GitHub 使用指南

目录切换分支删除已有文件只删除远程仓库中的文件&#xff0c;不删除本地仓库中的文件同时删除远程仓库和本地仓库中的文件提交文件git查看本地分支连接的是哪个远程分支切换分支 查看本地和远程所有分支 git branch -a当前本地分支为绿色&#xff0c;当前所在分支前带有“*”号…

百度EBG测试部AI测试工程师面经

百度EBG测试部AI测试工程师 1、自我介绍 自我介绍尽量多说一点&#xff0c;她会问你“还有吗&#xff1f;” 2、项目介绍 简历上的项目都让介绍了。会问这个项目是做什么的&#xff0c;是由谁开发&#xff0c;项目如何得到的&#xff0c;在测试过程中实现了什么。 3、自己…

一学就废的并查集它来了

文章目录题目描述输入输出样例输入样例输出提示算法思想代码实现寻找根节点汇总连接情况完整代码关于flag的初值题目描述 某省调查城镇交通状况&#xff0c;得到现有城镇道路统计表&#xff0c;表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城…

一道很简单的贪心算法题~【贪心:我不要脸的伐?】

文章目录题目描述输入输出样例输入样例输出C语言代码实现思路排序处理完整代码C代码实现排序完整代码彩蛋题目描述 小健有一家自己的商店&#xff0c;主营牛奶饮品&#xff0c;最近资金紧张&#xff0c;他想以尽可能低的价格进购足够的牛奶以供日常的需要。所以小健想要求助你…

Eclipse 中修改java编译版本

修改方法是&#xff1a; 1&#xff1a;Preferences-->Java-->Compiler->Compiler compliance level&#xff0c;选择一个需要的版本&#xff0c;比如从默认的1.4改为5.0 2&#xff1a;如果只想修改一个工程的Compiler compliance level,就右单击工程&#xff0c;选择属…

百战c++(1)

Public和private的区别 public和private是类里的关键字&#xff0c;用于规定类内数据或者成员函数的访问权限。private类型的数据或者函数&#xff0c;只能在相应的类内被访问&#xff0c;而public类型的数据或者函数被访问的权限比较宽&#xff0c;还可以在其它类或者其它函数…

一学就废的三种简单排序【冒泡、插入、选择】

文章目录其他排序算法冒泡排序算法实现代码实例插入排序算法实现代码实例选择排序算法实现代码实例其他排序算法 一学就废的归并排序 冒泡排序 排列顺序从前到后或者从后往前都可&#xff0c;本文选择从后到前的顺序&#xff0c;升序排列&#xff1a;比较相邻两个元素&#x…

百战c++(2)

delete 和 delete []的真正区别 delete 对应 new delete[]对应new[]对于简单类型包括简单类型数组&#xff0c;delete 与delete[]没有区别。对于自定义类型数组&#xff0c;delete 只会删除一个元素&#xff0c;delete 则会删除所有元素。 指针和数组的区别 野指针是什么 野指…

shell预先定义的特殊变量

文章目录$#$*$$$# 表示命令行上参数的个数&#xff0c;但不包括shell脚本名本身 为脚本ex1赋予两个变量&#xff0c;测试$#的输出结果 [cmybogon test2]$ . ex1 ma.c mb.c 2 # echo $# 7 # cat $1 $2 $3 | wc -l 2 # echo $#脚本ex1的具体内容 [rootlocalhost test]$ cat ex1…

Linux实验一:常用的Linux命令

文章目录一、实验目的二、实验要求三、实验内容1、系统的使用2、命令的使用3、文件操作4、系统询问与权限口令5、其它常用命令四、实验操作1、基本命令的使用2、文件和目录操作3、创建用户帐户一、实验目的 1、熟悉Linux的桌面环境&#xff1b; 2、了解Linux所安装的软件包 3、…

Linux实验二:vi编辑器的使用

文章目录一、实验目的二、实验要求三、实验内容1、创建文件2、编辑文件一、实验目的 1、练习并掌握Linux提供的vi编辑器来编译C程序 2、学会利用gcc、gdb编译、调试C程序 3、本次实验的目的是让同学们了解如何使用vi编辑器进行创建和编辑文件 二、实验要求 1、文件编辑器vi…

百战c++(os1)

Linux中的锁 互斥锁&#xff1a;mutex&#xff0c;用于保证在任何时刻&#xff0c;都只能有一个线程访问该对象。当获取锁操作失败时&#xff0c;线程会进入睡眠&#xff0c;等待锁释放时被唤醒 读写锁&#xff1a;rwlock&#xff0c;分为读锁和写锁。处于读操作时&#xff0…