Monkey稳定性测试实战之Monkey对APP随机测试

Monkey稳定性测试实战之Monkey对APP随机测试

2023年6月30日发(作者:)

Monkey稳定性测试实战之Monkey对APP随机测试Monkey测试简介 Monkey测试是Android平台⾃动化测试的⼀种⼿段,通过Monkey程序模拟⽤户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进⾏压⼒测试,检测程序多久的时间会发⽣异常。开发⼈员结合monkey 打印的⽇志 和系统打印的⽇志,修改测试中出现的问题, Monkey 是SDK中附带的⼀个⼯具,所有的事件都是随机产⽣的,不带任何⼈的主观性。Monkey程序介绍 1) Monkey程序由Android系统⾃带,使⽤Java语⾔写成,在Android⽂件系统中的存放路径是:/system/framework/ 2) 程序是由⼀个名为“monkey”的Shell脚本来启动执⾏,shell脚本在Android⽂件系统中的存放路径是:/system/bin/monkey;这样就可以通过在CMD窗⼝中执⾏: adb shell monkey {+命令参数}来进⾏Monkey测试了。

Monkey命令的简单帮助要获取Monkey命令⾃带的简单帮助,在CMD中执⾏命令: adb shell monkey –help2.环境搭建⼀、 环境搭建安装通过 adb命令 安装 apk包 : adb install apk包名

根据⾃⼰的需要,使⽤其它命令对apk进⾏测试: ⽐如通过adb shell monkey -v -p 100来简单输出测试信息,如图

3.随机测试查看apk包名:Cmd -->cd apk安装包⽬录下 aapt dump badging 包名.apk 或者直接查看⼿机中存在的apk包,进⼊adb shell 命令后-⼿机的data/data⽂件夹-ls查看所有包名找到要测apk的包名Cmd -> adb shell -> cd data/data -> ls2.运⾏Monkey,对此包进⾏300 次⽆规律点击测试在adb shell环境中:monkey –p 包名字 –v 300

或者在windows外⾯执⾏该命令:adb shell monkey -p 包名字 -v 300

或者运⾏monkey,对此包进⾏300次⽆规律点击后将⽇志导出到电脑的某⼀位置adb shell -p 包名 -v 点击数 > 电脑某⼀位置

3、测试停⽌后,查看导出的monkey⽇志,发现问题。

在log的最开始都会显⽰Monkey执⾏的seed值、执⾏次数和测试的包名。⾸先我们需要查看Monkey测试中是否出现了ANR或者异常, ⽆响应问题(ANR问题):在⽇志中搜索“ANR ”(此处有空格) 崩溃问题:在⽇志中搜索“Exception”,快速定位到关键事件信息然后查看Monkey⾥⾯出错前的⼀些事件动作,并⼿动执⾏该动作,找出重现步骤,给开发。4.命令讲解 monkey –p mple -s 23 --throttle2000 --ignore-crashes --ignore-timeouts -v -v -v 100000>/data/local/tmp/ 2>&1 & 1. -p后⾯接着的对应的包名,如果是整机测试,就不需要 -ppackage_name 2. --ignore-crashes --ignore-timeouts 这⾥是在monkey测试的过程中遇到carash或者timeout的情况时忽略掉,⼀般不设置时,出现carash或者timeout时,Monkey测试会终⽌。这⾥是防⽌Monkey测试终⽌。 4. -v 指的是Monkey测试时打印log级别。 5. 100000 这⾥是指点击的次数,对于单个应⽤程序这个次数设置在100000次就可以了;如果是整机,⼀般设置在500000次。/data/local/tmp/测试的log记录在⼿机上/data/local/tmp/ 下⾯的⾥⾯,这个名字可以⾃⼰写。 6. 2>&1 固定的写法,这个也很重要,代表的意思是中间忽略的东东的⽇志⼀并输⼊到指定的⽂件中。 7. 最后单独的⼀个"&" 是⼀旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。 8. 测试所有模块 monkey -s 23 --ignore-crashes --ignore-timeouts -v-v -v 100000> /data/local/tmp/ 2>&1 &5.参数详解1)参数: -p参数-p⽤于约束限制,⽤此参数指定⼀个或多个包(Package,即App)。指定包之后,Monkey将只允许系统启动指定的APP。如果不指定包,Monkey将允许系统启动设备中的所有APP。* 指定⼀个包:adb shell monkey -p r 100

说明:r为包名,100是事件计数(即让Monkey程序模拟100次随机⽤户事件)。* 指定多个包:adb shell monkey -p r –p der -p s 100* 不指定包:adb shell monkey 100 说明:Monkey随机启动APP并发送100个随机事件。*要查看设备中所有的包,在CMD窗⼝中执⾏以下命令: >adb shell #cd data/data #ls2) 参数: -v ⽇志详细程度⽤于指定反馈信息级别(信息级别就是⽇志的详细程度),总共分3个级别,分别对应的参数如下表所⽰:⽇志级别 Level0⽰例 adb shellmonkey -p r –v 100 说明缺省值,仅提供启动提⽰,测试完成和最终结果等少量信息⽇志级别 Level 1⽰例 adb shellmonkey -p r –v -v 100 说明提供较为详细的⽇志,包括每个发送到Activity的事件信息⽇志级别 Level 2⽰例 adb shellmonkey -p r –v -v –v 100 说明最详细的⽇志,包括了测试中选中/未选中的Activity信息3)参数: -s⽤于指定伪随机数⽣成器的seed值,如果seed相同,则两次Monkey测试所产⽣的事件序列也相同的。* ⽰例: Monkey测试1:adb shell monkey -p r –s 10 100 Monkey 测试2:adb shell monkey -p r–s 10 100两次测试的效果是相同的,因为模拟的⽤户操作序列(每次操作按照⼀定的先后顺序所组成的⼀系列操作,即⼀个序列)是⼀样的。操作序列虽然是随机⽣成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产⽣的随机操作序列是完全相同的,所以这个操作序列伪随机的;

4) 参数: --throttle <毫秒>⽤于指定⽤户操作(即事件)间的时延,单位是毫秒;* ⽰例:adb shell monkey -p r –throttle 3000 1005) 参数: --ignore-crashes⽤于指定当应⽤程序崩溃时(Force& Close错误),Monkey是否停⽌运⾏。如果使⽤此参数,即使应⽤程序崩溃,Monkey依然会发送事件,直到事件计数完成。*⽰例1:adb shellmonkey -p r --ignore-crashes 1000 测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数⽬达到1000为⽌;* ⽰例2:adb shellmonkey -p r 1000测试过程中,如果Weather程序崩溃,Monkey将会停⽌运⾏。5.禁⽤进程如果想中断运⾏中的monkey CTRL+Cadb shell ps | grep monkey 返回进程号adb shell kill [刚才查到的进程号]6.查看包名A、⼿机安装包名查看器'B、aapt命令: aapt dump badging *.apkC、源码下⽂件查看(需要将apk解压)D、adb logcat抓取当前Android机运⾏的app的包名命令⾏输⼊adb logcat > e:⼿机操控app,ctrl+c停⽌,去e:这个⽂件下搜索关键字如Displayed ,⼀般都能找到!

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688094475a80135.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信