zoukankan      html  css  js  c++  java
  • Monkey测试

    1、App兼容性测试

    碎片化:安卓设备操作系统版本从2.0--7.0版本多,厂商多

    安卓app兼容性:系统版本、分辨率、厂商

    怎么做?---把公司的APP兼容性做一下测试?

    A、获取待测手机型号:需求人员给兼容性清单,如果没有,调研系统占有率,厂商占有率,得出一份兼容性列表

    B、把兼容性列表交与测试负责人审核

    C、手机的获取(采购、借同事的手机(测试经理去采用)、云测平台)

    云测平台:testing云测平台、百度云测、腾讯优测、阿里云测

    云测平台:兼容性原理(深度遍历算法、云租赁(stf))

    2、App版本升级测试

    升级方式:强制(静默)升级、可选升级

    该如何测试?

    强制(静默)升级:升级提示信息(打开APP是否有提示、点击取消不能使用app)、升级后的新版本测试

    可选升级:升级提示信息(点击取消也能使用)、新版本测试、老版本也要测试

    3、App渠道包测试

    渠道包(平台包):安卓手机应用市场(130多个)

    怎么测试?

    选择一个平台的apk测试所有功能,其余的apk都必须测试(安装、打开页面、主要功能、支付功能)(自动化测试)

     

    4、Android SDK

    adb命令使用前提:

    手机需要打开USB debug

    Adb命令运用:

    安装APK:adb install apk文件名称.apk

    重装APK:adb install -r apk文件名称.apk

    卸载APK:adb uninstall apk包名

    查看手机上的运行日志:adb logcat

    查看手机是否连接:adb devices

    A为手机路径,B为电脑路径,意思为:把文件从手机中复制到电脑上:adb pull <A> <B>

    A为手机路径,B为电脑路径,意思为:把文件从电脑复制到手机上:adb push <B> <A>

    进入手机的超级终端Terminal:adb shell  

    重新挂载文件系统 :adb remount

    重启手机:adb reboot

     

    使用adb shell命令时出错:

    问题分析:出现此问题是由于端口占用引起,把占用端口的进程kill掉

    解决方法:

    adb nodaemon server

    netstat -ano | findstr "5037”

    然后去任务管理器关掉相应进程

     

    5、Monkey命令行工具

         可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行稳定测试。

    Monkey包括许多选项,它们大致分为四大类:

    基本配置 选项,如设置尝试的事件数量。

    运行约束选项,如设置只对单独的一个包进行测试。

    事件类型和频率。

    调试选项。

          5.1 Monkey参数

    1) 参数:  -p

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

    * 指定一个包: adb shell monkey -p com.htc.Weather  100

    说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

    * 指定多个包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader  -p com.htc.photo.widgets 100

    * 不指定包:adb shell monkey 100

     说明:Monkey随机启动APP并发送100个随机事件。

         5.2 获取包名

    获取包名:

    aapt dump badging c:softwareCalcTest.apk

         5.3 查看日志

     参数:  -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信息

          5.4  时延、Seed

    参数:  --throttle <毫秒>

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

    * 示例:adb shell monkey -p com.htc.Weather –throttle 3000 100

     

    参数:  -s

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

    * 示例:

       Monkey测试1:adb shell monkey -p com.htc.Weather –s 10 100

         Monkey 测试2:adb shell monkey -p com.htc.Weather –s 10 100

    两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽   然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的

            5.5   三个忽略报错

    参数:  --ignore-crashes

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

    * 示例1:adb shell monkey -p com.htc.Weather --ignore-crashes 1000

      测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

    * 示例2:adb shell monkey -p com.htc.Weather 1000

      测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

     

    参数:  --ignore-timeouts

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

     

    参数:  --ignore-security-exceptions

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

     

    参数:  --kill-process-after-error

    用于指定当应用程序发生错误时,是否停止其运行。如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

          5.6  事件百分比

    参数:  --pct-{+事件类别} {+事件类别百分比}

    用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)

     

    参数:

    使用说明:

    示例:

     

    --pct-touch {+百分比}

    调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)

    adb shell monkey -p com.htc.Weather --pct-touch 10 1000

     

    --pct-motion {+百分比}

    调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)adb shell monkey -p com.htc.Weather --pct-motion 20 1000

    --pct-trackball {+百分比}

    调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

    adb shell monkey -p com.htc.Weather --pct-trackball 30 1000

    --pct-nav {+百分比}

     

    调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

    adb shell monkey -p com.htc.Weather --pct-nav 40 1000

     

    --pct-majornav {+百分比}

    调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

    adb shell monkey -p com.htc.Weather --pct-majornav 50 1000

    --pct-syskeys {+百分比}

    调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

    adb shell monkey -p com.htc.Weather --pct-syskeys 60 1000

     

    --pct-appswitch {+百分比}

    调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

    adb shell monkey -p com.htc.Weather --pct-appswitch 70 1000

     

    --pct-anyevent {+百分比}

    调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等

     

    用Monkey test测试,为了方便分析问题,可以在命令monkey命令后面加上 “|logcat -v time”,这样就能边测试边打印Log(记得用终端保存Log文本)例如:

    adb shell monkey –p com.htc.Weather –v 20000|logcat -v time

    但是这个组合在monkey测试完成后,logcat仍然在执行,测试时需要注意。

     

    预期结果是日志不报错。

         5.7  日志文件

    两个文件:

    日志文件:  adb shell monkey –p com.htc.Weather –v 20000|logcat -v time>a.log

    崩溃日志文件:

    如果测试monkey碰到crash或者anr(程序强制性退出或不响应)现象时,在抓取log的同时需要提供traces.txt,步骤如下:

    1. 测试版本需要具备root权限

    2. 进入data/anr目录下面

    3. 将traces.txt文件拷贝到TF卡中,然后拷贝出来发给软件分析即可

    4.  adb shell cat /data/anr/traces.txt> d: races.txt  复制文件到电脑

         adb  pull /data/anr/traces.txt  c:  复制文件到电脑

           5.8  下载日志文件

    1、获取包名  com.sky.jisuanji

    2、编写monkey命令

    monkey -p com.sky.jisuanji --throttle 1000 -s 5 -v -v --ignore-crashes --ignore-timeouts 100 |logcat -v time >test.log

    3、如果出现 can't create test.log: Read-only file system ,两种解决方案

    换个有权限的路径。

    修改根目录权限:

    mount当前挂载情况

    mount -o remount -o rw / 重新挂载需要修改权限的目录

    4、下载日志文件和崩溃日志文件

    Dos命令下:

    adb pull /data/data/test.log c:html

    adb pull /data/anr/traces.txt c:html

    5、通过日志文件搜索exception定位问题交给开发修复bug啦。。。

     

    原创不易,转载请说明出处http://www.cnblogs.com/yyym 谢谢!
  • 相关阅读:
    LeetCode 1275. 找出井字棋的获胜者 Find Winner on a Tic Tac Toe Game
    LeetCode 307. 区域和检索
    LeetCode 1271 十六进制魔术数字 Hexspeak
    秋实大哥与花 线段树模板
    AcWing 835. Trie字符串统计
    Leetcode 216. 组合总和 III
    Mybatis 示例之 复杂(complex)属性(property)
    Mybatis 示例之 复杂(complex)属性(property)
    Mybatis 高级结果映射 ResultMap Association Collection
    Mybatis 高级结果映射 ResultMap Association Collection
  • 原文地址:https://www.cnblogs.com/yyym/p/7347136.html
Copyright © 2011-2022 走看看