App稳定性测试

一、什么是稳定性测试

1:稳定性测试概念

  稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务。

  稳定性测试其实也是性能测试范畴中的一种方式。

2:稳定性测试指标

  异常的次数
  异常的频率

3:稳定性测试工具

  1:首选Monkey
         Monkey是向系统发送随机的用户事件流(如按键输入、触摸屏输入和手势输入等),实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确保App的稳定性。

    通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常
  
2:MonkeyRunner

        monkeyRunner  对monkey 命令进行封装后的api

       3:Monkey 局限性

    1)发送的事件无法指定,是随机发送的

    2)测试的应用只能是app  

              3)Monkey虽然可以通过指令来发送事件,但是没有支持条件判断,也不支持读取待测界面的信息来执行验证操作

 

4:Monkey原理

 

  • Monkey 程序是由 Android 系统自带,使用 Java 语言写成,其本身是安卓系统下的一个monkey.jar文件。在Android文件系统中的存放路径是: /system/framework/monkey.jar;
  • Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
  • Monkey 启动方式:在 cmd 命令提示符里面输入命令行来启动 monkey 测试。
  • 命令行:adb shell monkey——monkey.shell——monkey.jar——安卓进程——设备上执行测试

 

 

 

 

二、如何用Monkey进行稳定性测试

1:Monkey环境搭建

  1)Android SDK环境:下载网址://www.androiddevtools.cn/

   

 

 

  2)设备(真机/模拟器)
    
夜神、mumu等都可以

2:Monkey支持参数

 

1)连接设备

  连接设备
  设备:开启USB调试选项
  通过在命令行输入adb devices来进行连接
  

 

 

2)事件数

  Monkey支持的所有命令:adb shell monkey查看
  必选的命令:COUNT:事件数  通过事件数量来测试稳定性
  

 

 

 3)事件间隔时间设置

  –throttle <milliseconds>     在事件之间插入固定延迟。通过这个选项可以控制Monkey发送事件的频率。时间单位是ms
例1:发送10个事件,持续执行时间1分钟
    adb shell monkey –throttle 6000 10
例2:模拟用户操作,持续执行时间1分钟
    adb shell monkey –throttle 500 120

 4)指定执行apk包

-p <allowed-package-name>       此参数指定了一个包,Monkey将只允许系统启动这些包里的Activity
-p <allowed-package-name1>  -p <allowed-package-name2>       如果用此参数指定了几个包,Monkey将只允许系统启动这些包里的Activity

例3:对58同城进行稳定性测试,执行100次事件
    adb shell monkey -p com.wuba 100

获取包名
adb shell pm list packages
5)日志

-v        Level 0       除启动提示、测试完成和最终结果之外,提供较少信息
-v-v        Level 1    提供较为详细的测试信息,如逐个发送到Activity的事件
-v-v-v    Level 2    提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

例4:对58同城进行稳定性测试,执行100次事件,分别查看不同日志级别记录的信息情况
    adb shell monkey -p com.wuba -v 100
    adb shell monkey -p com.wuba -v-v 100
    adb shell monkey -p com.wuba -v -v -v 100

日志导出到本地
adb shell monkey -p com.wuba -v-v-v 100 >d:\wuba.txt

6)seed值

在Monkey运行过程中,肯定会发现异常、奔溃、无响应等问题,对于此类问题如何进行复现呢?
-s <seed>    伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。

使用场景:
    复现bug,回归测试(验证bug)
adb shell monkey -s 1593077384911 -p com.wuba -v-v-v 100 >d:\wuba4.txt
adb shell monkey -s 100 -p com.wuba -v-v-v 50
7)调试选项
在Monkey运行过程中,我们可以通过结束进程的方式来终止Monkey的执行,当然在运行过程中遇到异常、奔溃等情况Monkey也会停止。为了保证执行的事件数执行完整,我们可以通过调试选项的设置来防止在运行过程中Monkey命令的提前结束。
–ignore-crashes        忽略在应用程序出现crash时导致的monkey停止
–ignore-timeouts        忽略在应用程序出现ANR问题时导致monkey停止
–ignore-security-exceptions    忽略应用程序发生许可错误时导致monkey停止

例5:对58同城进行稳定性测试,执行50次事件,忽略过程中遇到的异常,直到50次事件完成
    adb shell monkey -p com.wuba –throttle 500 –ignore-crashes –ignore-timeouts –ignore-security-exceptions -v-v-v 50

三、Monkey事件类型

 

1:操作事件简介

 

  monkey所操作的随机事件流中包含11大事件,分别是触摸事件、手势事件、二指缩放事件、轨迹球事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动activity事件、键盘事件、其他类型事件

 

2:操作事件简要说明

 

  1. 触摸事件:指在屏幕某处按下并抬起的操作,可通过–pct-touch参数来配置其事件百分比。
  2. 手势事件:指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作;可通过–pct-motion参数来配置其事件百分比
  3. 二指缩放事件:二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作;可通过–pct-pinchzoom参数来配置其事件百分比。
  4. 轨迹球事件:轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击,即一系列的曲线滑动操作;可通过–pct-trackball参数来配置其事件百分比。
  5. 屏幕旋转事件:模拟的Android手机的横屏和竖屏切换;可通过–pct-rotation参数来配置其事件百分比。
  6. 基本导航事件:现在手机上很少有上、下、左、右按键,这种事件一般用得比较少;可通过–pct-nav参数来配置其事件百分比。    — 用的比较少
  7. 主要导航事件:主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键,可通过–pct-majornav参数来配置其事件百分比。
  8. 系统按键事件:系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。
  9. 启动activity事件:启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过–pct-appswitch参数来配置其事件百分比。
  10. 键盘事件:键盘事件主要是一些与键盘相关的操作。比如点击输入框键盘弹起、点击输入框以外区域键盘收回等。可通过–pct-flip参数来配置其事件百分比。
  11. 其他类型事件:其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过–pct-anyevent参数来配置其事件百分比。  — 用的比较少
  12. 指定执行触摸事件--pct-touch 100次 adb shell monkey -v -v -v -s 6789 --throttle 300 --ignore-crashes --ignore-timeouts --pct-touch 100 -p com.android.calculator2 100 > 日期.log
  13.  

     

 

Tags: