Android 压力测试

一.背景

1.为什么要开展压力测试?

  • 提高产品的稳定性
  • 提高产品的留存率

2.什么时候开展压力测试?

  • 首轮功能测试通过后
  • 下班后的夜间进行

二.理论

1.什么是Monkey

  • Monkey 是发送伪随机用户事件的工具。

2.什么是MonkeyScript

  • MonkeyScript 是一组可以被Monkey识别的命令集合
  • MonkeyScript 可以完成重复固定的操作

3.什么是MonkeyRunner

  • MonkeyRunner 提供了一系列的Api,通过这些Api可以完成模拟事件及截图操作。

4.Monkey 和MonkeyRunner的区别

  • Monkey:在adb shell 中,生成用户或系统的伪随机事件。
  • MonkeyRunner:通过Api 定义特定命令和事件控制设备。

5.MonkeyRunner Api

  • MonkeyRunner:用来连接设备或模拟器
  • MonkeyDevice:提供安装、卸载应用,发送模拟事件
  • Monkeylmage:完成图像保存,及对比的操作。

6.MonkeyRunner 的测试类型

  • 多设备控制
  • 功能测试
  • 回归测试

7.压力测试结果(异常)

  • CRASH:及崩溃,应用程序在使用过程中,非正常退出。
  • ANR:Application Not Responding

三.实践

一.基础

1.准备测试环境

  • 准备Android SDK环境
  • 准备Python 环境

2.连接设备

在cmd中输入adb devices 进行检测设备,如下图
这里写图片描述
并安装一个app.

3.发送压力指令
Android 压力测试_第1张图片

4.获取App 报名

cmp=com.xxx.xxx (报名)
Android 压力测试_第2张图片

5.给指定包进行压力测试
Android 压力测试_第3张图片

二.Monkey 高级参数的应用

  • throttle 参数:指定事件之间的间隔
    Android 压力测试_第4张图片

  • seed参数:指定随机生成数的seed值
    应用场景:当app进行压力测试时,可加上该值。如果在测试过程中出现异常,而且我们需要进行复现时。在此运行相同命令便可。
    Android 压力测试_第5张图片

  • 触摸事件:设定触摸事件百分比

  • 应用场景:因为monkey 是随机事件。而当我只需要触发点击事件时,便可设置改值
    Android 压力测试_第6张图片
    Android 压力测试_第7张图片

此时你若想看详细的点击情况,可以加 -v
Android 压力测试_第8张图片

  • 动作事件:设定动作事件百分比

Android 压力测试_第9张图片
Android 压力测试_第10张图片

  • 轨迹球事件:设定轨迹球事件百分比
    Android 压力测试_第11张图片
    Android 压力测试_第12张图片

  • 基本导航事件:设定基本导航事件百分比,输入设备的上、下、左、右

adb shell monkey --pct-nav <百分比> 
  • 主要导航事件:设定主要导航事件百分比,兼容中间键、返回键,菜单按键(软件盘上的一些导航键)
adb shell monkey --pct-majornav <百分比>
  • 系统导航事件:设定系统导航事件百分比,HOME、BACK、拨号及音量键
adb shell monkey --pct-syskeys <百分比>
  • 启动Activity 事件:设定启动Activity的事件百分比
adb shell monkey --pct-appswitch<百分比>
  • 不常用事件:设定不常用事件的 百分比
adb shell monkey --pct-anyevent <百分比>
  • Crash 异常测试结果析取
    测试命令
    这里写图片描述
    这里写图片描述
    异常分析:
    Android 压力测试_第13张图片

然而,有时我们为了更好的解决该异常,会想让该异常重现
这里写图片描述

重现异常
Android 压力测试_第14张图片
Android 压力测试_第15张图片

  • 崩溃事件:忽略崩溃和异常(在遇到奔溃事件,继续进行应用压测,直到数量满足event-count)

这里写图片描述

Android 压力测试_第16张图片

这里写图片描述
- 超时事件:忽略超时事件(当程序执行时遇到ANR异常时,忽略ANR,继续执行事件,直到数量满足event-count)

adb shell monkey --ignore-timeouts 

Monkey Script

定义:当你想在App中进行固定的压测事件(比如搜索)时,可以使用Monkey Script

执行Monkey脚本的命令

adb shell monkey -f <scriptfile> <event-count>

写脚本会用到的命令

Android 压力测试_第17张图片

Android 压力测试_第18张图片

Android 压力测试_第19张图片

Android 压力测试_第20张图片

Android 压力测试_第21张图片

Android 压力测试_第22张图片

获取屏幕坐标点位置的工具

C:\Users\Administrator\AppData\Local\Android\Sdk\tools\bin 下 uiautomatorviewer.bat 。点击打开即可。

Android 压力测试_第23张图片

脚本
Android 压力测试_第24张图片

注意:在项目mainfest 中的Activity中加入代码,如下图,否则无法从外部调起该Activity
Android 压力测试_第25张图片

在编写完脚本后,我们还需要将脚本从电脑 push 到手机文件夹中。然后才能执行脚本
1.cmd 切换到脚本所在路劲
例如:
这里写图片描述
2.执行 push 命令
这里写图片描述

3.检验是否成功 push
Android 压力测试_第26张图片
4.运行脚本
Android 压力测试_第27张图片

MonkeyRunner Api

配置python环境,编辑py 文件

你可能感兴趣的:(Android,测试)