zoukankan      html  css  js  c++  java
  • 手机monkey测试BUG重现及解决方法

    目录

    1.1 Monkey测试简介...1

    1.2 Monkey程序介绍...1

    1.3 Monkey命令的简单帮助...2

    1.4 Monkey命令参数介绍...2

    1.5 Monkey测试步骤...2

    1.6 Monkey测试问题分析及处理技巧...3

    1.7 Monkey测试注意事项...3

    1.8 Monkey测试命令...3

    1.9 Monkey测试问题分析...4

    1.1 Monkey测试简介
    Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

    1.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测试了。

    1.3 Monkey命令的简单帮助
    要获取Monkey命令自带的简单帮助,在CMD中执行命令:
    adb shell monkey –help

    1.4 Monkey命令参数介绍
    可参考MTK相关文档。

    Android_Monkey_Test_SOP.pdf

    Monkey_Test_SOP_Customer_MT6572_4.x .pdf

    1.5 Monkey测试步骤
    步骤1:下载user版本后手动导入APR工具。

    步骤2:导入完毕后重启手机,连接usb线,运行logServerInstall.bat。

    步骤3:运行后手机会自动重启,重启完毕后手机端键入*#*#2012#*#*,能够进入对应界面即为apr安装成功。

    步骤4:手机连接电脑,开启adb:键入adb shell ps logserver,查询logserver的PID值,然后键入adb shell kill PID(logserver PID)。

    步骤5:再次键入adb shell ps logserver查看logserser已被kill掉。

    步骤6:手机连接电脑,开启USB存储,在手机内存(或SD卡)中,新建一个名为whitelist的txt文件,该文件中输入想跑的模块名,每个模块输入后回车输入下一个,若对模块名称不熟悉可参考monkey测试报告,内有模块排练信息。

    例如:com.chinamobile.cmccwifi

    com.cmcc.mobilevideo

    com.hisunflytone.android

    步骤7:上一步完成后,手机端进入对应的apk模块,如:whitelist中想跑新浪微薄,uc浏览器的话,手机端分别进入这些应用,把首次使用提示框点掉,记得勾选上永远不提示的选项以免跑monkey无法正常测试。

    步骤8:手机连接电脑,打开adb。

    步骤9:键入adb shell,回车后键入

    monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 200000 >/mnt/sdcard/Stability_base.txt

    步骤10:此时,既能正常开始monkey,并记录开始时间。

    步骤11:Monkey结束后手机连接电脑,运行getDataLog.bat,生成 datalog。连接usb存储,在是手机上找到Stability_base.txt文件,查看最后修改时间,该时间即为monkey运行最后结束时间。

    1.6 Monkey测试问题分析及处理技巧
    Monkey测试主要是测试负责,研发这边配合测试进行问题复现及给出测试建议,重点工作还是monkey问题分析,包括冻屏、死机重启、crash等。由于这类问题分析起来比较麻烦,所以一般如果没有相关分析经验可以先定位问题,准备好相关的log配合MTK分析或者找部门内部有相关经验的研发人员配合分析。

    1.7 Monkey测试注意事项
    注意事项:

    1. 测试关闭所有网络开关(wifi及数据连接)

    2. 开启安全设置下的未知来源

    3. 手机连接电源充电

    4. 若有有关于音频的模块,请插入耳机避免影响其他同事

    5. 若测试信息模块时需要安装测试工具testwizard.apk,自动生成通话记录,短信(数量为10)

    6. 若测试文件管理器需要在T卡内存放有图片/音乐/apk/视频/txt这类文件

    7. 测试图库是需要T卡内存放100个图片及视频的,同样音乐和视频播放器也需要存放不少于50个片源

    8. 测试电子邮件的需要新建两个以上的账户

    9. 测试前运行一遍手机上方带有的首次提示的说明,如输入法,文件夹窗口,apk提示语等

    10. 若测试时遇到问题想重新开始测试,必须拔掉电板后重新键入adb指令重新开始。

    1.8 Monkey测试命令
    1. 跑ALL apk命令

    monkey --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 800 -v -v -v 200000>/mnt/sdcard/Stability_all.txt

    2. 跑白名单命令

    monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 200000 >/mnt/sdcard/Stability_base.txt

    3. 跑黑名单命令

    monkey --pkg-blacklist-file /mnt/sdcard/blacklist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 200000 >/mnt/sdcard/Stability_base.txt

    1.9 Monkey测试问题分析
    Monkey测试log为标准MTK log,常见问题也是以下几种:Crash、NE、KE、ANR等。

    测试前首先关闭MTK log,将sdcard卡和手机内存中的旧的log清理赶紧,最相关干扰文件一并清理干净,否则后期取出log很容易造成困扰。


    注意事项:
    1)每个模块使用3台手机测试,测试完成后恢复出厂设置在测试其他模块,避免残留文件影响其他模块测试结果.

    2)测试部分需要资源的模块,测试前需要先导入资源.
    信息:导入500条短信
    联系人:导入500个联系人
    音乐:导入100个歌曲
    视频:导入20个视频
    浏览器:插入有钱的SIM卡,开启数据连接,连接WIfi
    FM收音机:插入耳机
    Email:登录邮箱帐号

    3)部分模块第一次进入有使用说明或者协议说明,需要手动点击完成后在测试.
    应用市场:勾选不再提醒,完成所有提示确认
    主题:勾选不再提醒,完成所有提示确认
    相机:勾选不再提醒,完成所有提示确认
    图库:勾选不再提醒,完成所有提示确认
    ......
    因为应用太多就不列举出来了,每个模块测试前先手动进入查看,完成所有导航在进行测试.


    Monkey测试命令

    1.
    跑ALL APK命令:(>2小时)
    monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 30000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt

    跑单个APK命令(>6小时):
    monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 90000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt

    跑单个APK命令(>2小时):
    monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 30000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt

    2.
    跑ALL APK命令(>12小时):
    monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt

    跑ALL APK命令(>12小时)加入黑名单:
    monkey --pkg-blacklist-file /mnt/sdcard/blacklist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt

    跑单个APK命令(>12小时):
    monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 180000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt
    3.
    跑ALL APK命令(>24小时):
    monkey --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt

    跑ALL APK命令(>24小时)加入黑名单:
    monkey --pkg-blacklist-file /mnt/sdcard/blacklist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt

    跑单个APK命令(>24小时):
    monkey --pkg-whitelist-file /mnt/sdcard/whitelist.txt --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 1000 -v -v -v 360000 1 >> /mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt


    注:跑单个APK时一定记住在手机存储根目录里面放一个白名单文件:whitelist.txt,txt文本写入要测的模块APK应用的包名即可,表示只跑指定apk,如果是在手机根目录中放blacklist.txt,填写相应包名,指跑除blacklist.txt上指定应用的所有应用。Monkey跑完后检查log里面是否有crash、anr(在根目录下的/mnt/sdcard/Stability_base.txt 2>> /mnt/sdcard/Stability_base_err.txt)


    其实仅仅就是拿到手机后,将/mnt/sdcard放入whitelist.txt或则blacklist.txt,里面放上应用包名,然后adb shell---》mokey命名,就可以了


    命令解释:

    参数: --throttle <毫秒>

    用于指定用户操作(即事件)间的时延,单位是毫秒;

    参数: --ignore-crashes

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

    到事件计数完成。
    参数: --ignore-timeouts

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

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

    参数: ignore-native-crashes
    忽略本地代码导致的崩溃。设置忽略后,Monkey将执行完所有的事件,不会因此停止

    参数: --monitor-native-crashes

    用于指定是否监视并报告应用程序发生崩溃的本地代码。

    参数: -s
    用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。示例:
    Monkey测试1:adb shell monkey -p com.htc.Weather –s10 100

    Monkey 测试2:adb shell monkey -p com.htc.Weather–s 10 100
    两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;


    参数: -v

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

    日志级别 Level 0

    示例 adb shell monkey -p com.htc.Weather –v 100

    说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

    日志级别 Level 1

    示例 adb shell monkey -p com.htc.Weather –v -v 100

    说明 提供较为详细的日志,包括每个发送到Activity的事件信息

    日志级别 Level 2

    示例 adb shell monkey -p com.htc.Weather –v -v –v 100

    说明 最详细的日志,包括了测试中选中/未选中的Activity信息

  • 相关阅读:
    多表联合查询,利用 concat 模糊搜索
    order by 中利用 case when 排序
    Quartz.NET 3.0.7 + MySql 动态调度作业+动态切换版本+多作业引用同一程序集不同版本+持久化+集群(一)
    ASP.NET Core 2.2 基础知识(十八) 托管和部署 概述
    ASP.NET Core 2.2 基础知识(十七) SignalR 一个极其简陋的聊天室
    ASP.NET Core 2.2 基础知识(十六) SignalR 概述
    ASP.NET Core 2.2 基础知识(十五) Swagger
    ASP.NET Core 2.2 基础知识(十四) WebAPI Action返回类型(未完待续)
    linux磁盘管理 磁盘查看操作
    linux磁盘管理 文件挂载
  • 原文地址:https://www.cnblogs.com/Zcxxf/p/6839963.html
Copyright © 2011-2022 走看看