【20191220】【app 测试】

news/2024/11/28 13:56:00/

【Monkey 测试】【我把猴子搞定了】

一、Monkey测试原理

Monkey Test是一种基于Android 的Linux内核提供API对手机进行自动化事件模拟的工具,原生集成在Android系统里,无需额外安装。如果不要进行复杂的日志操作,是不需要使用者有任何编程能力的,虽然前期环境配置较多,但是配置好后一劳永逸,且没有android系统版本的限制,从android 2.3一直到7.1.1都支持。
它向系统发送伪随机(有序的随机事件)的用户事件流(如按键输入、触摸屏输入、手势输入等,可以通过Monkey 参数来控制百分比),随机模拟人工操作、多次模拟事件来测试应用的负荷程度,实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

二、环境搭建

1. 配置 java 环境:下载并安装jdk 包配置环境变量:添加系统变量 JAVA_HOME配置path 变量(编辑-新建) %JAVA_HOME%bin验证方法:cmd 命令窗口中输入 “java” ,显示版本信息及用法则配置成功
2. 配置Android 开发环境 sdk 环境:下载并安装 sdk 包配置环境变量:添加 ANDROID_HOME 配置path 变量  %ANDROID_HOME%tools 如果是2.3版本,想在任意命令行上执行adb命令,还需要在path中加入%ANDROID_HOME%\platform-tools,即%ANDROID_HOME%\tools与%ANDROID_HOME%\platform-tools同时加入path中,tools目录运行android命令,platform-tools目录运行adb命令验证方法:cmd 命令窗口中注入 “adb”,显示adb版本及用法则配置成功

三、测试准备及验证

  1. 连接adb
    ①真机adb连接
    1.手机通过 USB 或 wifi 连接电脑
    2. 打开“开发者选项”-打开usb相关项(注意usb配置问题,vivo x9Plus 需点击usb配置为 MIDI ) 备注:小米手机的打开方式。打开“设置”“关于手机”“MIUI版本”对该项连续点击7次,点击完后会提示你进入了开发者模式。
    3. 在root权限下才能执行monkey 命令,否则会提示权限,且执行不成功(设置次数很大时也立即中断) 手机root通过第三方软件,如一键root、root 大师等app,以及刷机(谨慎)
    4. 执行adb devices ,验证手机是否连接成功,成功会显示

C:\Users\97655>adb devices
List of devices attached
e4b54822 device

②模拟器 adb连接1.同手机操作,打开 “开发者选项”,默认root权限2.cmd窗口 输入命令连接模拟器:adb connect 127.0.0.1:模拟器端口号(百度可查)3.输入命令: adb devices 验证
  1. 获取软件包名
    ① cmd 命令窗口执行命令:adb shell pm list packages

C:\Users\97655>adb shell pm list packages
package:com.android.cts.priv.ctsshim
package:com.vivo.weather.provider
package:com.qualcomm.qti.auth.sampleextauthservice

		② cmd 窗口执行: adb shell - su (获取root权限)- cd /data/data/ - ls 

3.计算并编写monkey 命令
① 确定执行延迟时间、执行次数、seed 值、事件百分比等参数
② 新建空 txt 文本,用于本地记录monkey 日志
③ txt 文档中编写命令 : 如adb shell monkey -p ym.app.vrm -s 500 –throttle 450 –ignore-crashes –ignore-timeouts –monitor-native-crashes -v -v 200000 > E:\Work\monkey.txt

四、Monkey 测试执行

	①在monkey执行前,开启cmd窗口执行日志获取命令adb logcat -v time>E:\Work\Logcat.txt②新开 cmd 窗口,执行monkey 命令,执行前优化手机,清理后台进程等adb shell monkey -p ym.app.vrm -s 500 --throttle 450 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v  200000 > E:\Work\monkey.txt

常见问题可解(后续更新):
a、测试时随即操作,wifi关闭
b、app退出
c、减少旋转/滑屏/菜单等系统操作事件

五、Monkey 测试终止

monkey 测试过程中,即使拔掉 usb 线,断掉与电脑的连接,测试也不会停止,如果已经拔掉,adb 连接中断后,只能强制关机来终止测试
方法一:
使用命令杀掉进程
adb shell ——> ps ▏grep monkey ——> kill Pid(进程号)
方法二:
强制关机,长按电源键超过8s(monkey测试过程中会影响关机操作,所以要长按超过8s,关机重启后停止)

六、Monkey测试命令详解

*adb shell monkey -p 包名 -v 次数 //命令基本语法,后可接多个参数,如下:
*
-p com.hytera //应用的包名,monkey会通过包名来找到应用,启动activity执行monkey测试;

–pct-touch 40 //触摸事件占比40%

–pct-motion 25 //手势事件占比25%

–pct-appswitch 10 //Activity切换事件占比10%

–pct-rotation 5 //将横竖屏切换事件调整到5%

–pct-pinchzoom 5//将双指缩放调整占比到5%

-s 12358 //指定命令执行的seed值(随机指数),每个值对应的事件流是唯一的,如果需要复现,这个值就必须一致,才能完全模拟相同的事件流。

–throttle 400 //控制monkey每个操作之间的时间间隔,固定延迟400ms

–ignore-crashes //日志中记录crash但是monkey测试继续

–ignore-timeouts //日志记录anr,继续执行monkey测试

-v 指定log级别,默认级别为level 0 ,V个数越多日志级别程度越高,详细程度越高。为了方便问题定位,一般级别设置为level 2 -v-v-v

500000 //随机事件数

-hprof 查看内存泄漏

#monkey测试过程中可以另起一个cmd窗口做一些辅助测试

获取logcat日志信息
adb shell logcat -v time > log.txt

获取内存信息
adb shell dumpsys meminfo <进程名>

获取CPU消耗信息
adb shell top -n 1 | find “进程名”

获取电量信息
adb shell dumpsys battery

获取GPU信息
adb shell dumpsys gfxinfo <进程名>

获取流量信息
adb shell cat /proc/uid_stat/<被测应用的uid>/tcp_rcv

查看被测应用的进程id
adb shell ps | grep <被测应用的包名>

查看被测应用的用户id
adb shell cat /proc/$pid/status

切换wifi状态
adb shell am

获取当前的网络状态
adb shell ifconfig wlan0

——保存monkey日志的几种方式————-
1.保存到PC中
adb shell monkey [option] > path

2.保存到手机中
adb shell -> monkey [option] > /mnt/sdcard/filename

3.运行日志和异常日志分别保存
monkey [options] 1> path1 2> path2

monkey自定义脚本编写模板,将脚本放在手机中;文件格式没有要求
-f scriptfile

eg:
adb push monkey.sh /sdcard/data/
adb shell monkey -f /sdcard/data/monkey.sh -v 1 // 1表示执行1次。

参考自链接:https://blog.csdn.net/weixin_38021928/article/details/80328813


http://www.ppmy.cn/news/786741.html

相关文章

当前版本与卡刷包android_手机端提取Android 8.x及以上版本卡刷包中的system文件

本教程全在手机端进行&#xff0c;仅适用于Android平台&#xff0c;当然部分步骤在电脑端也能够操作。 请务必尽可能的让手机空有足够的空间 你需要&#xff0c;Termux或者魔改版的Termux(UTermux)两者均可&#xff0c;以及解压system.img文件所需要用到的ZArchiver 本教程演示…

root方法参考,ROOT操作

有大神知道Y71a怎么root么&#xff0c;试了好多方法了 Y71a需要借助root软件才能root&#xff0c;以下以KINGROOT软件为例说明操作流程。 方法如下&#xff1a; 1、网上搜索KINGROOT下载。 2、在手机上安装KINGROOT应用。 3、打开KINGROOT软件&#xff0c;点击开始ROOT。 …

基于simulink使用颜色识别来进行道路跟踪(附源码)

一、前言 此示例演示如何使用颜色信息来检测和跟踪在可能不存在车道标记的主要住宅环境中设置的道路边缘。基于颜色的跟踪示例说明了如何使用色彩空间转换块、霍夫变换块和卡尔曼滤波器块来检测和跟踪使用色调和饱和度的信息。 二、模型 下图显示了基于颜色的道路跟踪模型&a…

1.Git使用技巧-常用命令1

Git使用技巧-常用命令 文章目录 Git使用技巧-常用命令一、git 创建仓库demo 二、本地仓库常用命令提交详解git commitgit commit --amend 三、 推送到远程分支git push 总结参考 一、git 创建仓库 创建远端仓库&#xff1a; git init – bare // 创建远端裸仓库&#xff1b; 远…

红米note7声音小

试了很多种方法&#xff0c;最终可行的是吧听筒网灰尘弄一下。 转载于:https://www.cnblogs.com/zhaogaojian/p/11288043.html

Spring+SpringMVC+Mybatis SSM框架详解

一、JDBC编程 1、JDBC 简介 JDBC其实就是 Java 官方提供的一套规范&#xff08;接口&#xff09;&#xff0c;用于帮助开发人员快速实现不同关系型数据库的连接。 程序运行的时候&#xff0c;数据都是在内存中的。当程序终止的时候&#xff0c;通常都需要将数据保存到磁盘上…

第四篇:SSM框架(Spring、SpringMVC、Mybatis)

SSM框架 面试题-Spring 1. 什么是Spring框架 我们一般来说,Spring是一个轻量级的java开发框架。它是为了解决企业应用开发的复杂性而创建的。Spring 的核心是控制反转&#xff08;IoC&#xff09;和依赖注入(DI)面向切面编程&#xff08;AOP&#xff09;。 IOC容器有哪些? …

声音小现象描述

项目背景&#xff1a;我们是4250R的rum的项目&#xff0c;目前项目上遇到播放普通音乐上面喇叭R上面比Q上面的声音要小。 以下是Q和R上面的log: 以下是pcm的数据log&#xff1a; R上面dirac算法之前的数据1531 R上面dirac算法之后的数据 19B0 Q上面dirac算法之前的数据1531 Q上…