Monkey测试之monkey测试策略

上一篇 / 下一篇  2012-08-28 13:45:10 / 个人分类:工作

 Monkey测试方案:

 Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象、目的及类型如下:

 测试的类型分为:应用程序的稳定性测试和压力测试

 测试对象分为:单一apkapk集合

 测试的目的分为:解决问题的测试(忽略异常的测试)和验收测试(不忽略异常的测试)

 

 首先是应用程序的稳定性测试:

 a、单一apk 

  b、apk集合

 

 

单一apk

不忽略异常

monkey -p com.android.mms --throttle 1000 -s 100 -v -v -v 15000 > /mnt/sdcard/monkey_test.txt &    

 

忽略异常

monkey -p com.android.mms --throttle 1000 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-carshes --monitor-native-crashes -v -v -v 15000 > /mnt/sdcard/monkey_test.txt & 

 

 

APK集合

不忽略异常

monkey --pkg-whitelist-file /data/whitelist.txt --throttle 1000 -s 100 -v -v -v 15000 > /mnt/sdcard/monkey_test.txt &    

 

忽略异常

monkey --pkg-whitelist-file /data/whitelist.txt --throttle 1000 -s 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-carshes --monitor-native-crashes -v -v -v 15000 > /mnt/sdcard/monkey_test.txt & 

 

在进行单个apk验收测试时,则使用单一apk且不忽略异常的命令执行;在进行单个apk解决问题的测试时,则使用单一apk且忽略异常的命令执行,这样可以在一次执行的过程中发现应用程序中的多个问题。

 

其次是应用程序的压力/健壮性测试,其主要是缩短monkey测试中事件与事件之间的延迟时间,验证在快速的事件响应的过程中,程序是否能正常运行。这种压力/健壮性测试主要是针对单一apk来执行;我们可以将--throttle的值设定为500或者更小,一般都使用500毫秒的延迟事件。

 

在进行apk的集合测试时,对于高频率使用的apk、长时间使用的apk都要包含在执行的应用程序中间。

APK分类具体:

高频率使用的apk如:PhoneContactsMessageSettingsFile ManagerGalleryInput Method

长时间使用的apk如:PhoneBrowserMusic playerCameraVideo playerEmailChat

其他的apk如:CalendarNotepadCalculatorFM RadioGoogle Search

 

Monkey测试结果初步分析方法:

 Monkey测试出现错误后,一般的差错步骤为以下几步:

1、 找到是monkey里面的哪个地方出错

2、 查看Monkey里面出错前的一些事件动作,并手动执行该动作

3、 若以上步骤还不能找出,可以使用之前执行的monkey命令再执行一遍,注意seed值要一样

一般的测试结果分析:

1、 ANR问题:在日志中搜索“ANR

2、 崩溃问题:在日志中搜索“Exception

 

如何详细分析monkey日志:

 将执行Monkey生成的log,从手机中导出并打开查看该log;在log的最开始都会显示Monkey执行的seed值、执行次数和测试的包名。

 首先我们需要查看Monkey测试中是否出现了ANR或者异常,具体方法如上述。

  然后我们要分析log中的具体信息,方法如下:

 查看log中第一个Switch,主要是查看Monkey执行的是那一个Activity,譬如下面的log中,执行的是com.tencent.smtt.SplashActivity,在下一个swtich之间的,如果出现了崩溃或其他异常,可以在该Activity中查找问题的所在。

:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.tencent.smtt/.SplashActivity;end

   // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.tencent.smtt/.SplashActivity } in package com.tencent.smtt

在下面的log中,Sending Pointer ACTION_DOWNSending Pointer ACTION_UP代表当前执行了一个单击的操作;

Sleeping for 500 milliseconds这句log是执行Monkey测试时,throttle设定的间隔时间,每出现一次,就代表一个事件。

SendKey(ACTION_DOWN) //KEYCODE_DPAD_DOWN   代表当前执行了一个点击下导航键的操作;

Sending Pointer ACTION_MOVE     代表当前执行了一个滑动界面的操作。

:Sending Pointer ACTION_DOWN x=47.0 y=438.0

:Sending Pointer ACTION_UP x=47.0 y=438.0

Sleeping for 500 milliseconds

:SendKey (ACTION_DOWN): 20   // KEYCODE_DPAD_DOWN

:SendKey (ACTION_UP): 20   // KEYCODE_DPAD_DOWN

Sleeping for 500 milliseconds

:Sending Pointer ACTION_MOVE x=-2.0 y=3.0

:Sending Pointer ACTION_MOVE x=4.0 y=-3.0

:Sending Pointer ACTION_MOVE x=-5.0 y=-3.0

:Sending Pointer ACTION_MOVE x=3.0 y=4.0

:Sending Pointer ACTION_MOVE x=-4.0 y=1.0

:Sending Pointer ACTION_MOVE x=-1.0 y=-1.0

:Sending Pointer ACTION_MOVE x=-2.0 y=-4.0

如果Monkey测试顺利执行完成,在log的最后,会打印出当前执行事件的次数和所花费的时间;// Monkey finished代表执行完成。Monkey执行中断,在log的最后也能查看到当前已执行的次数。Monkey执行完成的log具体如下:

Events injected: 6000

:Dropped: keys=0 pointers=9 trackballs=0 flips=0

## Network stats: elapsed time=808384ms (0ms mobile, 808384ms wifi, 0ms not connected)

// Monkey finished

 


TAG:

shatingyu的个人空间 引用 删除 shatingyu   /   2013-02-18 17:27:38
谢啦,终于搞懂了
shatingyu的个人空间 引用 删除 shatingyu   /   2013-02-18 17:27:12
5
引用 删除 asongchen   /   2012-12-29 14:49:11
5
 

评分:0

我来说两句

Open Toolbar