热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Monkey测试(APP稳定性)

目录1、Monkey简介2、monkey程序介绍3、Monkey测试前准备4、Monkey测试命令5、 Monkey测试结果(pass或者fail)的判断6、MonkeyLog的简
目录

1、Monkey简介

2、monkey程序介绍

3、Monkey测试前准备

4、Monkey测试命令

5、 Monkey测试结果(pass或者fail)的判断

6、Monkey Log的简单分析

7、汇总如图

1、Monkey简介

Monkey是Androld中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

2、monkey程序介绍

(1)Monkey程序由Android系统自带,使用java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar
(2)Monkey.jar程序是由一个名为“monkey”的shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/system/bin/monkey;我们就可以通过在cmd窗口执行adb shell monkey{+命令参数}来进行monkey测试了。《Monkey测试(APP稳定性)》
(3)monkey中的一些常用指令《Monkey测试(APP稳定性)》
(4)例如:怎样进入手机路径下win+r进入命令窗口输入adb shell    输入ls《Monkey测试(APP稳定性)》

3、Monkey测试前准备

1、执行Monkey测试前,一定要确保屏幕处于解锁状态。
2、设置屏幕超时时间为最大时间(设置->显示->休眠->30分钟或者从不)。以防测试过程中手机锁屏,影响Monkey测试。
3、打开usb调试,确保adb可以连接。
4、抓取adb log,(如果出现anr,需要将/data/anr下的anr log拿出来,需要手机有root权限)。
Application not responsing

4、Monkey测试命令

(1)adb shell monkey -p 包名 –ignore-timeouts –ignore-crashes -v -v –throttle 200 1000000
例如我们的App进行测试,命令如下:
adb shell monkey -p 包名 –ignore-timeouts –ignore-crashes–ignore-security-exceptions -v -v –throttle 200 1000000
注:我们在测试过程中,建议不要忽略这些异常,尽可能的暴露出app中存在的问题,如果选择忽略出现crach,anr等现象,手机中就不会有提示,不便于判断测试是否正常。忽略异常是想要对此模块执行完成,尽可能多的发现更多问题,但是这个问题的判断只能通过log去分析,不便于测试的判断。所以我们测试建议使用下边的命令:
adb shell monkey -p 包名 -v -v -v –throttle 500 360000 >D:monkeylog.txt

(2)-p
用于约束限制,用此参数指定一个或多个包(Package)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。

(3)ignore-crashes
用于指定当应用程序崩溃时(Force & Close 错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,知道事件计数完成。

(4)ignore-timeouts
用于指定当应用程序发生ANR(APPlication No Responding)错误时Monkey是否停止运行。如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

(5)ignore-security-ecxeptions
用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

(6)-v
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下所示:
①日志级别Level0
示例:adb shell monkey -p com.android.contacts -v –throttle 200 1000000
缺省值,仅提供启动提示、测试完成和最终结果等少量信息。
②日志级别Level1
示例:adb shell monkey -p com.android.contacts -v -v –throttle 200 1000000
提供较为详细的日志,包括每个发送到Activity的事件信息。
③日志级别Level2
示例:adb shell monkey -p com.android.contacts -v -v -v –throttle 200 1000000
提供最详细的日志,包括了测试中选中/未选中的Activity信息。

(7)throttle
在每次操作(即事件)间的延时,单位是毫秒,一般我们设置延时时间为500ms。比较接近人的手动操作,如果在测试中发生了anr,可以将间隔设置为500ms,进行测试验证。

(8)-s
s其实就是seed,它是随机数的事件序列定一个值,若出现问题下次可以重复同样的序列进行排错。例如下面其实就是指定了一个seed为1080的随机事件序列
adb shell monkey -s 1080 -p com.android.contacts -v -v –throttle 200 1000000

5、 Monkey测试结果(pass或者fail)的判断

adb shell -p cn.xiaochuankeji.tieba -v -v -v –throttle 500 200

6、Monkey Log的简单分析

adb shell monkey -p 包名 -v -v -v –throttle 500 100>路径\文档名

7、汇总如图

《Monkey测试(APP稳定性)》

 


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 数组的排序:数组本身有Arrays类中的sort()方法,这里写几种常见的排序方法。(1)冒泡排序法publicstaticvoidmain(String[]args ... [详细]
author-avatar
淘美国
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有