1. 查找进程命令是什么?

adb shell ps

adb shell ps |findstr 名称

2. 如何获取包名

1)获取手机上的所有包名信息。

adb shell pm list packages

2) 获取手机上包含xxx信息的包名

adb shell pm list packages |findstr xxx

3) 在不知道包名的前提下获取包名,先打开需要查找的APK后,敲入一下命令

adb shell dumpsys windows w | findstr name=

4)对获取到的包名执行随机点击事件

adb shell monkey -p com.android.bbkcalculator 3000 >e:\123.txt (先在E盘创建个123.txt文件,本句话的意思是:当对此com.android.bbkcalculator包执行操作3000次时,将日志记录到指定的E盘123.txt文件中)

3. Monkey如何模拟手动操作? 
答:--throttle参数

语法:adb shell  monkey -p 包名  --throttle 1000 1000

eg:   adb shell monkey -p com.android.bbkcalculator --throttle 1000 1000

 注意:前面一个1000是毫秒数,后面一个1000是执行次数,意思是对指定的APK 执行1000次  ,每次延时1秒,进行随机操作。

4. 杀死进程的方法 (force-stop 和clear)

1) 根据包名杀死进程的命令。(此命令只是将程序停止工作)

adb shell am force-stop 【包名】

注意:这种方法会强制停止APP进程,不会清除APP进程在系统中产生的数据

2)  杀死后台进程的命令

adb shell pm clear 【包名】

执行完成以后打开手机确定一下

注意:区别于上面杀死进程的命令,这个会将后台程序杀死。

5. 如何重现Monkey中发现的错误? 
答:使用seed

语法:adb shell monkey -p 包名 -s 50 100

eg: adb shell monkey -p  com.android.bbkcalculator -s 50 100

注意:seed值 可以简单形象的理解为flag,建立一个标签。一般用于monkey跑命令中。我第一次设定这个seed 值等于100,去跑monkey命令,就会对指定的APP程序随机点击100次,跑随机事件;

第二次我跑命令的时候,还是用这个seed值,那么就会跟一次跑随机事件会一模一样,是个伪随机事件。 Monkey测试1:adb shell monkey -p com.android.bbkcalculator  –s 50 100

Monkey 测试2:adb shell monkey -p com.android.bbkcalculator  –s 50 100 也就是说着两个命令执行的事件顺序是一模一样的! -s 代表 seed,50由自己随意定义

6. Monkey如何控制事件流所占比? 

答:--pct-touch等pct参数

语法:  adb shell monkey -p 包名 --pct-touch 100 10

eg:  adb shell monkey -p com.android.bbkcalculator --pct-touch 100 10

7. Monkey除了做伪随机事件外,能不能写脚本? 
答:能。

8、如果能写脚本怎么做? 
答:两种方式,指定事件类型+事件百分比,或者使用 -f参数加脚本文件。

9、Monkey测试一般测试多久? 
答:超过3个小时。

10. android monkey的测试结果怎么分析

在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。

首先我们需要查看Monkey测试中是否出现了ANR或者异常,无响应问题(ANR问题):在日志中搜索“ANR ”(此处有空格),

崩溃问题:在日志中搜索“Exception”,快速定位到关键事件信息 。然后查看Monkey里面出错前的一些事件动作,并手动执行该动作,找出重现步骤,给开发。

11. monkey测试流程?

答:简要步骤:
1). 查看设备是否已连接:adb devices

2). 测试前首先关闭MTK log,将sdcard卡和手机内存中的旧的log清理赶紧

3). 了解并得到包名

4). 运行测试稳定性命令: adb shell monkey -p 包名 -v 运行次数(多个参数的组合形成不同的用例以求最大的覆盖)

5).当崩溃或无响应时分析monkey日志

12.Monkey测试注意事项

注意事项:

  1. 测试关闭所有网络开关(wifi及数据连接)
  2. 开启安全设置下的未知来源
  3. 手机连接电源充电
  4. 若有有关于音频的模块,请插入耳机避免影响其他同事
  5. 若测试信息模块时需要安装测试工具testwizard.apk,自动生成通话记录,短信(数量为10)
  6. 若测试文件管理器需要在T卡内存放有图片/音乐/apk/视频/txt这类文件
  7. 测试图库是需要T卡内存放100个图片及视频的,同样音乐和视频播放器也需要存放不少于50个片源
  8. 测试电子邮件的需要新建两个以上的账户
  9. 测试前运行一遍手机上方带有的首次提示的说明,如输入法,文件夹窗口,apk提示语等
  10. 若测试时遇到问题想重新开始测试,必须拔掉电板后重新键入adb指令重新开始。

13. 如何将测试报告记录在本地:

将命令改为:  adb shell monkey –p com.android.bbkcalculator –-throttle 100 –-pct-touch 50 –-pct-motion 50 –v –v 10 >D:\monkeylog.txt

其它资料可参考:

Monkey基本使用流程及测试报告分析: https://www.cnblogs.com/persistz/p/6209024.html

Android模拟器端口被占用解决:  https://blog.csdn.net/u014769864/article/details/72649543

monkey实战--测试步骤、常用参数、常规monkey命令: https://blog.csdn.net/u011649536/article/details/45043781

Monkey面试整理的更多相关文章

  1. 就目前市面上的面试整理来说,最全的BAT大厂面试题整理在这

    原标题:就目前市面上的面试整理来说,最全的BAT大厂面试题整理在这 又到了面试求职高峰期,最近有很多网友都在求大厂面试题.正好我之前电脑里面有这方面的整理,于是就发上来分享给大家. 这些题目是网友去百 ...

  2. 面试整理之DOM事件阶段

    因为快面试了,打开<JavaScript高级程序设计>,对DOM事件进行整理了下 本文主要解决的问题: 事件流 DOM事件流的三个阶段 先理解流的概念 在现今的JavaScript中随处可 ...

  3. java面试整理(会持续更新..)

    本人出道至今,经历了大大小小百余场战斗,,,下面整理的面试题有些有答案,有些没答案,那个谁说过:"要抱着怀疑的态度去编程,所以,即便有答案,也不一定正确,即便我本地正确,但是由于屏幕前的你和 ...

  4. 面试整理(1):原生ajax

    接到电话面试,有一些送分题答的不好,在这里整理一下 问题:原生ajax的工作流程是怎么样的? 老用封装好的工具,原生的ajax其实并不熟悉,今天复习一下.主要参考http://www.w3school ...

  5. java面试整理

    IO和NIO的区别 这是一个很常见的问题,如果单纯的只回答IO和NIO的区别,只能算及格.我个人觉得应该从以下几个方面回答: 1).IO简介, 2).TCP的三次握手,因为这也是两者的区别之一, 3) ...

  6. java核心技术面试整理

    [前方高能,是这半年BAT,京东,远景,华为,中兴以及苏研发中心被问到的Java公共问题的一个整理] ------------------------------------------------- ...

  7. 年底Android面试整理(附答案)

    面试,无非都是问上面这些问题(挺多的 - -!),聘请中高级的安卓开发会往深的去问,并且会问一延伸二.以下我先提出几点重点,是面试官基本必问的问题,请一定要去了解! 基础知识 – 四大组件(生命周期, ...

  8. c++ 面试整理

    1. 继承方式 public    父类的访问级别不变 protected    父类的public成员在派生类编程protected,其余的不变 private        父类的所有成员变成pr ...

  9. [转帖]c++ 面试整理

    1. 继承方式 public    父类的访问级别不变 protected    父类的public成员在派生类编程protected,其余的不变 private        父类的所有成员变成pr ...

随机推荐

  1. winform 通用自动更新程序

    通用自动更新程序 主要功能: 1. 可用于 C/S 程序的更新,集成到宿主主程序非常简单和配置非常简单,或不集成到主程序独立运行. 2. 支持 HTTP.FTP.WebService等多种更新下载方式 ...

  2. Maven 教程(9)— Maven坐标详解

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79544532 Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种j ...

  3. python cython c 性能对比

    我们用以下方法计算百万以上float型数据的标准偏差,以估计各个方法的计算性能: 原始python numpy cython c(由cython调用) python 原始方法: # File: Std ...

  4. Java8 日期与时间 API

    在 Java 中,想处理日期和时间时,通常都会选用 java.util.Date 这个类进行处理.不过不知道是设计者在当时没想好还是其它原因,在 Java 1.0 中引入的这个类,大部分的 API 在 ...

  5. 修改Ubuntu系统的用户名和主机名

    1.前言 当我们拿到别人拷贝的系统时,往往需要修改拷贝系统的密码.用户名和主机名,本文简单介绍在Ubuntu下如何进行相关配置文件的修改. 2.如何修改 (1)修改root的密码 运行下面的命令对对r ...

  6. python字符串的拼接

    方式一:使用"+"拼接(拼接字符串较多时会影响拼接效率) 方式二:使用","拼接(只能用于print打印,赋值操作会生成元组) 方式三:使用"%&qu ...

  7. Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】

    k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,易宝支付,北森等等. kubernetes1.9版本发布2017年12月15日,每三个月一个迭代 ...

  8. 调用日志输出错误:TypeError: 'int' object is not callable等

    *)TypeError: 'int' object is not callable 错误信息: Traceback (most recent call last): File "Visual ...

  9. Throwable中几个常见方法。

    getMessage();//获取异常信息,返回字符串.例如: toString();//获取异常类名和异常信息,返回字符串.例如: printStackTrace();//获取异常类名和异常信息,以 ...

  10. 为什么要用 redis 而不用 map 做缓存?

    缓存分为本地缓存和分布式缓存.以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例 ...