您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > Android

Android Monkey压力稳定性测试

时间:2020-07-22 09:42:05  来源:  作者:

1、什么是稳定性测试?

通过随机点击屏幕一段时间,看看App会不会崩溃,能不能维持正常运行。

2、什么是monkey?

Monkey是一个命令行工具,使用Android/ target=_blank class=infotextkey>安卓调试桥(adb)来运行它,模拟用户触摸屏幕、滑动、按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,可以根据获取的log信息进行修复。

3、Monkey结构

Android Monkey压力稳定性测试

 

4、Monkey使用步骤

① 连接方式

有线连接:数据线连接设备

无线连接:输入adb connect 192.168.199.152 IP地址

② 先确认设备(模拟器或者真机)是否连接成功

输入命令:adb devices,出现设备号则表示连接成功

③ 确定待测应用的包名

打开待测应用后,输入命令:adb shell dumpsys activity | find "mFocusedActivity"查看包名 专业版包名: com.zhongyou.special.pad 169030

④ 执行monkey测试命令

输入命令:adb shell monkey -p com.zhongyou.special.pad -v -v 1000 --throttle 500 --pct-touch 50 –-pct-motion 50 >D:monkey.txt

⑤ 中断monkey运行

如果想中断运行中的monkey CTRL+C

adb shell ps | find “monkey” 返回进程号

adb shell kill [刚才查到的进程号]

5、Monkey 压力测试参数

命令格式:adb shell monkey [限制命令 参数值][事件名 百分比] 事件次数

Android Monkey压力稳定性测试

 

基础参数

-p <允许的包名列表>

用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果没有指定包, monkey将允许系统启动设备中的所有app。

指定一个包:adb shell monkey -p com.shjt.map 100

指定多个包:adb shell monkey -p fishjoy.control.menu –p com.shjt.map 100

-v

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示:

Level 0 : adb shell monkey -p com.shjt.map -v 100 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

Level 1 : adb shell monkey -p com.shjt.map -v -v 100 // 提供较为详细的日志,包括每个发送到Activity的事件信息

Level 2 : adb shell monkey -p com.shjt.map -v -v -v 100 // 最详细的日志,包括了测试中选中/未选中的Activity信息

-s(随机数种子)

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示例:

monkey测试1:adb shell monkey -p com.shjt.map –s 10 100

monkey测试2:adb shell monkey -p com.shjt.map –s 10 100 --throttle <毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒;如果没有指定这个参数,monkey会尽可能快的生成和发送消息。

例:adb shell monkey -p com.shjt.map --throttle 3000 100

发送的事件类型

点击事件百分比,即参数--pct-touch

滑动事件百分比,即参数--pct-motion

轨迹球事件百分比,即参数--pct-trackball

基本导航事件百分比,即参数--pct-nav

系统按键事件百分比,即参数--pct-syskeys

其他事件百分比,即参数--pct-anyevent

调试选项(不常用)

--hprof:指定该项后在事件序列发送前后会立即生成分析报告

--ignore-crashes:忽略崩溃

--ignore-timeouts:忽略超时

--ignore-security-exceptions:忽略安全异常

--kill-process-after-error:发生错误后直接杀掉进程

--monitor-native-crashes:跟踪本地方法的崩溃问题

6、Monkey 日志分析

Monkey 测试出现错误后,一般的分析步骤看Monkey的日志 (注意第一个swith以及异常信息等)

1. 程序无响应的问题: 在日志中搜索 “ANR”

2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug

3、搜索"crash" 、"error"

7、应用内存使用日志

adb shell dumpsys meminfo com.zhongyou.special.pad | find " Dalvik Heap"

top [ -m ] [ -n ] [ -d ] [ -s ] [ -t ] [ -h ]

输入命令:adb shell top -d 10 -m 1 -s rss >D:ram.txt

参数含义:

-m // 最多显示多少个进程-n // 刷新次数-d // 刷新间隔时间(默认5秒)-s // 按哪列排序 -t // 显示线程信息而不是进程 -h // 显示帮助文档

参数含义:

PID : progress identification,应用程序ID

S : 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数

#THR : 程序当前所用的线程数

VSS : Virtual Set Size虚拟耗用内存(包含共享库占用的内存)

RSS : Resident Set Size实际使用物理内存(包含共享库占用的内存)

PCY : 前台(fg)和后台(bg)进程

UID : User Identification,用户身份ID

Name : 应用程序名称



Tags:Android Monkey   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1、什么是稳定性测试?通过随机点击屏幕一段时间,看看app会不会崩溃,能不能维持正常运行。2、什么是monkey?Monkey是一个命令行工具,使用安卓调试桥(adb)来运行它,模拟用户触摸屏...【详细内容】
2020-07-22  Tags: Android Monkey  点击:(65)  评论:(0)  加入收藏
▌简易百科推荐
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  像程序那样思考    Tags:Android开发   点击:(8)  评论:(0)  加入收藏
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  YuCoding    Tags:Android   点击:(8)  评论:(0)  加入收藏
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很...【详细内容】
2021-12-08  网易Leo    Tags:Android开发   点击:(16)  评论:(0)  加入收藏
前言在Android开发过程中,有些时候会根据需要引用别的项目到当前项目里面,而且以Module形式引用。所以本篇博文就来分享一下怎么以Module形式引用别的项目到当前项目中,方便开...【详细内容】
2021-12-07  网易Leo    Tags:Android开发   点击:(22)  评论:(0)  加入收藏
作者:fundroid这篇文章偏阅读一些,大家可以了解下 Android 的一些最新动向。每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分...【详细内容】
2021-11-30  像程序那样思考    Tags:Android开发   点击:(15)  评论:(0)  加入收藏
一、 准备工作1、安装JDK,下载地址(可能需要一个oracle账号,大家百度一下或者自行注册一个就行。尽可能选择8或者11,这两个是长期版本)Java SE | Oracle Technology Network | Or...【详细内容】
2021-11-23  永沧    Tags:Android   点击:(28)  评论:(0)  加入收藏
使用Maven Publish Plugin插件。(官方支持)一、在Library的build.gradle中配置plugins { id &#39;com.android.library&#39; id &#39;kotlin-android&#39; id &#39;k...【详细内容】
2021-11-05  羊城小阳    Tags:Android   点击:(37)  评论:(0)  加入收藏
谷歌离推出Play Store应用程序的新数据隐私部分又近了一步。应用程序开发人员现在可以通过谷歌在Play控制台的新 "数据安全表 "填写相关细节。该公司表示,所需信息将从2022年...【详细内容】
2021-10-20    中关村在线  Tags:安卓   点击:(58)  评论:(0)  加入收藏
架构究竟是什么?如何更好的理解架构?我们知道一个APP通常是由class组成,而这些class之间如何组合,相互之间又如何产生作用,就是影响这个APP的关键点。细分的话我们可以将其分为类...【详细内容】
2021-09-17  像程序那样思考    Tags:Android架构   点击:(52)  评论:(0)  加入收藏
概述当Android应用程序需要访问设备上的敏感资源时,应用程序开发人员会使用权限模型。虽然该模型使用起来非常简单,但开发人员在使用权限时容易出错,从而导致安全漏洞。本文中,...【详细内容】
2021-09-07  SecTr安全团队    Tags:Android开发   点击:(66)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条