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环境:下载网址:http://www.androiddevtools.cn/

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

2:Monkey支持参数

1)连接设备

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

2)事件数

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

3)事件间隔时间设置

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

-p 此参数指定了一个包,Monkey将只允许系统启动这些包里的Activity
-p -p 如果用此参数指定了几个包,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值再次运行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:操作事件简要说明

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

你可能感兴趣的:(App稳定性测试)