Android App 压力测试 monkeyrunner

Android App 压力测试

第一部分 背景
  1. 为什么要开展压力测试?
  2. 什么时候开展压力测试?
第二部分 理论
  1. 手工测试场景
  2. 自动测试创建
  3. Monkey工具
  4. ADB命令
  5. Monkey Script
  6. Monkey Runner
  7. 压力测试结果分析
  1.什么是CRASH? (crash 奔溃)
  2. 什么是ANR? (无响应)
第三部分 实践
  1. 一个App的压力测试实践
  2. Monkey高级参数的应用
  3. CRASH结果析取
  4. ANR结果析取
  5. Monkey Script实例
  6. MonkeyRunner实例

第一部分 背景
  1. 为什么要开展压力测试?
    提高产品的稳定性
    提高产品的留存率
    提高产品的使用率
2. 什么时候开展压力测试?
    首轮功能测试通过后
    下班后的夜间进行

第二部分 理论
1. 手工测试场景
  聊天步骤: 查找--添加--聊天
  TouchInput --- KeyEvent --- TouchSearch --- TouchName --- TouchFriend --- KeyEvent
  1.什么是Monkey? "Monkey是发送伪随机用户事件的功能"
  2.MOnkey在那里? "在任意的安卓手机系统里"
  3.什么是ADB? " 安卓调试桥 Android Debug Bridge"
  建立硬的连接 /用USB线;
  建立软的连接 /用ADB.
  4.什么是MonkeyScript?
    " MonkeyScript是一组可以被Monkey识别的命令集合. "
    " MonkeyScript可以完成重复固定的操作 "
  5.什么是MonkeyRunner?
    " MonkeyRunner提供了一系列的API."
    " MonkeyRunner可以完成模拟事件及截图操作 "
  6. Monkey和MonkeyRunner的区别?
    " Monkey 在adb shell中, 生成用户或者系统的伪随机事件 "
    " MonkeyRunner 通过API定义特定命令和事件控制设备 "
  7.MonkeyRunner APIs
    1. MonkeyRunner : " 用来连接设备或者模拟器 "
    2. MonkeyDevice : " 提供安装>卸载应用, 发送模拟事件 "
    3. MonkeyImage : " 完成图像保存, 及对比的操作 "
  8.MonkeyRunner的测试类型?
    多设备控制
    功能测试
    回归测试
9. 压力测试结果?
  1. CRASH: 即奔溃, 应用程序在使用中, 非正常退出..
  2. ANR: Application Not Responding 应用程序无响应.

logcat是android中的一个命令行工具,可以用于得到程序的log信息

第三部分 实践
  1. 一个App的压力测试实践
    压力测试过程步骤:
    1. 在手机开发者选项中, 将USB调试选中.
    2. 确认手机和电脑成功连接. 确认软连接命令 在cmd中,输入adb devices
    3. 安装测试App 使用命令安装 "adb install package.apk" <需要将安装包放到platform-tools里>
    4. 压力测试 ,发送压力命令 adb shell monkey 1000 <进行1000此随机测试>
    当看到Events injected: 100 时说明成功执行完毕,
    5. 获取App包名 " adb logcat | grep START "
    windows 需要先执行" adb shell "进入shell, 然后在执行" logcat | grep START "
    点击 想要测试app, 就可以看到想要测试的包名."com.android.bbkcalculator "
    6. 给指定包大压力 " adb shell monkey -p com.android.bbkcalculator 1000 "

  2. Monkey高级参数的应用
    1. throttle 参数 " 指定事件之间的间隔 "
    adb shell monkey --throttle <milliseconds毫秒数>
  2. seed 参数
    seed: 指定随机生成数的seed值, 也就唯一指定了随机操作序列了
    所谓随机,其实也是有规律的,特定的seed值,就对应唯一的随机操作序列.
    -s 后面的数字,就是seed值
  3. 触控事件
    设定触控事件百分比 " adb shell monkey --pct-touch <percent> "
    添加 -v 参数 ,可以将随机操作的详情列出来
    查看Event Percentages: 0表示触控事件.
  4. 动作事件
    设定动作事件的百分比 " adb shell monkey --pct-motion <percent> "
  5. 轨迹球事件
    设定轨迹球事件百分比 "adb shell monkey --pct-trackball <percent>"
  6. 基本导航事件
    设定基本导航事件百分比, 输入设备的上 下 左 右
    " adb shell monkey --pct-nav <percent> "
  7. 主要导航事件
    设定主要导航事件百分比, 兼容中间键, 返回键, 菜单按键
  8. 系统导航事件
    设定系统导航事件百分比, HOME, BACK, 拨号及音量键
    " adb shell monkey --pct-syskeys <percent> "
  9. 启动Activity事件
    设定启动Activity的事件百分比
    " adb shell monkey --pct-appswitch <percent> "
  10. 不常用事件
    设定不常用事件的百分比
    " adb shell monkey --pct-anyevent <percent> "
  11. 奔溃事件
    忽略奔溃和异常
    " adb shell monkey --ignore-crashes <event-count> "
  12 超时事件
    忽略超时事件
    " adb shell monkey --ignore-timeouts <event-count> "

  3. CRASH结果析取
    1. 出现crash后, 将cmd里面的, CRASH下面的log信息赋值出来给开发.
    2. 出现奔溃后, 可以记录下seed值,好进行奔溃的复现操作.
    4. ANR结果析取
    1. 析取ANR的异常信息
    2. 查看ANR下面的log信息
    3. 出现ANR,记录下日志,及seed值,可以进行后期的复现操作.
    4. 当然也可以通过查看文件,看anr信息
    先使用adb shell进入安卓系统的shell,
    使用 cd / data/ anr目录里找到anr的文件, 如trace.txt. 打开可以看到anr信息.
 5. Monkey Script实例
    完成一些重复的固定的操作,使用monkeyScript
    执行monkey脚本的命令: "adb shell monkey -f <scriptfile脚本文件> <event-count执行次数>"
  1.DispatchTrackball命令,
    轨迹球事件
    DispatchTrackball(long downtime,long eventide,int action,float x,float y, float pressure, float size,
    int metastate,float xprecision, float yprecision,int device,int edgeflags)
    //action 0代表按下, 1代表弹起, x和y代表坐标点
    // 命令需要成对使用,一个按下0, 一个弹起1,
  2.DispatchPointer命令,
    点击事件
    DispatchPointer(long downtime,long eventide,int action,float x,float y, float pressure, float size,
    int metastate,float xprecision, float yprecision,int device,int edgeflags)
    //action 0代表按下, 1代表弹起, x和y代表坐标点
    // 命令需要成对使用,一个按下0, 一个弹起1,
  3.DispatchString命令,
    输入字符串事件
    DispatchString(String text)
  4.LaunchActivity命令
    启动应用
    LaunchActivity(package,Activity)
  5.UserWait命令
    等待事件
    UserWait(1000) //等待1秒
  6. DispatchPress命令
    按下键值
    DispatchPress(int keycode) //keycode 66 回车键
 6. MonkeyRunner实例
    //monkeyruner脚本为python语言编写
    fom com.android.monkeyrunner import MonkeyRunner
   1. MonkeyRunner API - alert
    警告框
    void alert(string message,string title, string okTitle)
    实例: MonkeyRunner.alert(‘hello monkey friend‘,‘this is a title‘,‘OK‘)
  2. MonkeyRunner API - waitForConnection
    等待设备连接,有多个device id, 需要指明具体哪个设备.
    waitForConnection(float timeouts,string deviceid)
  3. MonkeyDevice API - drag
    拖动
    drag(tuple start,tuple end, float duration, integer steps)
    start 起点位置,
    end 终点位置,
    duration 手势持续的时间,
    step 插值点的步数,默认10.
  4. MonkeyDevice API - press
    按键
    press(string keycode,dictionary type)
    keycode名, DOWN , UP , DOWN_AND_UP
   5. MonkeyDevice API - startActivity
     启动应用
     startActivity(package+‘/‘+activity)
   6. MonkeyDevice API - touch
    点击
    touch(integer x, integer y, integer type)
    x和y 为坐标轴
    type: DOWN , UP , DOWN_AND_UP
   7. MonkeyDevice API - type
    输入
    type(string message)
   8. MonkeyDevice API - takeSnapshot
    截屏
    MonkeyImage takeSnapshot()
   9. MonkeyImage API - sameAs
    图像对比
    boolean sameAs(MonkeyImage other, float percent)
   10. MonkeyImage API - writetoFile
    保存图像文件
    void writeToFile(string path, string format)
    path: 文件存储的路径
    format: 图像文件的格式png ,JPG等
   11. MonkeyRunner.sleep(1) //添加等待时间

 1 //monkeyrunner的python脚本实例
 2 #-*-UTF-8 -*-
 3 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
 4 # 连接设备
 5 device = MonkeyRunner.waitForConnection(3, "192.168.110.120:2525")
 6 # 启动App
 7 device.startActivity("com.example.testbrowser2/com.example.testbrowser2.myapplication.MainActivity")
 8 MonkeyRunner.sleep(2)
 9 # 点击搜索输入框
10 device.touch(100,100,"DOWN_AND_UP")
11 MonkeyRunner.sleep(1)
12 # 输入查询词
13 device.type(‘test input abcd‘)
14 MonkeyRunner.sleep(1)
15 # 点击回车键
16 device.press("KEYCODE_ENTER","DOWN_AND_UP")
17 MonkeyRunner.sleep(1)
18 # 点击搜索按钮
19 device.touch(400,100,"DOWN_AND_UP")
20 MonkeyRunner.sleep(5)
21 # 截图
22 image = device.takeSnapshot()
23 image.writeToFile("F://image/test.png","png")
24 # 点击清除按钮
25 device.touch(300,100,"DOWN_AND_UP")
26 MonkeyRunner.sleep(3)
27 //使用 AndroidSDK\tools目录的uiautomatorviewer.bat ,启动该软件来获取手机的按钮的坐标位置.
时间: 2024-11-05 18:44:12

Android App 压力测试 monkeyrunner的相关文章

Android APP压力测试(三)之Monkey日志自动分析脚本

Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 2.脚本原理 3.操作实例 1.Monkey日志分析脚本 1).脚本文件:Monkey_Log分析.bat @ECHO OFF ECHO.::::::::::::::::::::::::::::::::::::::::::::::::: ECHO.::             分析Monkey日志 

Android APP压力测试(二)之Monkey信息自动收集脚本

Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志.手机日志.手机屏幕截图.测试手机信息,自动按次按时间点保存信息.只需轻轻一点,腾出手腾出脑想干吗干吗,执行结束应该有信息的都有收集,一定程序提升了效率,节约了时间.可以偷空看看美图.聊天扯淡...哦不,是学习提高审美观,沟通交流增进同事情感... 转载请注明出处:Find

Android APP压力测试(一)之Monkey工具介绍

Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常.此文主要给自己查阅用. [目录] 1.Monkey简介 2.Monkey参数说明 3.Monkey实例 4.Monkey测试结果分析 1.Monkey简介 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设

android app压力测试(一)---monkey介绍及基本使用

前言:  很久之前,就听说了monkey:但是monkey是干什么用:如何使用:我们还是带着最简单的问题开始学习吧; ps:我的博文格式变化了,阅读了很多博文,发现这个样式阅读起来很有条理,我也参考一下下..呵呵-- [目录] 一:Monkey简介 二:Monkey的特性 三:Monkey的命令参数说明 四:Monkey使用实例 一:Monkey简介 说:monkey是一只调皮的猴子,在app中乱按.乱摸.乱跳: 模拟用户触摸屏幕.滑动轨迹球.按键等操作:对模拟器或者手机上的软件进行压力测试:

App压力测试MonkeyRunner整理

压力测试结果:CRASH:崩溃,应用程序在使用过程中,非正常退出ANR:Application Not Responding 命令很多,不用死记,用到复制.粘贴就行,达到目的最重要. 简单通俗易懂点讲就是,跟猴子一样乱点,查看日志是否有崩溃的日志, 配置好环境,设置好操作次数,关屏幕执行,第二天来看结果就行 MonkeyRunner APIsMonkeyRunner:用来连接设备或模拟器MonkeyDevice:提供安装.卸载应用,发送模拟事件MonkeyImage :完成图像保存,及对比的操作

Android APP压力测试(二)之Monkey信息自动收集脚本【转】

前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息,主要收集Monkey测试日志.手机日志.手机屏幕截图.测试手机信息,自动按次按时间点保存信息.只需轻轻一点,腾出手腾出脑想干吗干吗,执行结束应该有信息的都有收集,一定程序提升了效率,节约了时间.可以偷空看看美图.聊天扯淡...哦不,是学习提高审美观,沟通交流增进同事情感... 转载请注明出处:Findyou   http://www.cnblogs.com/findyo

android app 压力测试工具-monkey tool

一.什么是Monkey? Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey测试是一种为了测试软件的稳定性.健壮性的快速有效的方法. 二.Monkey的特征1.测试的对象仅为应用程序包,有一定

Android APP压力测试-Monkey

压力测试-Monkey学习 Monkey测试特点 什么是Monkey test? 如其名,像猴子一样,虽然什么都不懂,但是可以乱点一通,可以理解为压力测试.在规定的时间或次数范围内做任何随机的操作,随即操作包括点击.滑动...... Monkey测试目标:通过模拟用户随机操作时间,暴露应用内Crash,降低Crash率 Monkey Test范围预期:除了一些系统设置,我们希望范围维持在待测试应用内,另外可以补充一些中断测试 只能发现Crash,单复现和解决Crash还是需要靠开发人员 暴露所有

Android App压力测试之Monkey

本文为慕课网<Android App压力测试>的学习笔记,视频地址 http://www.imooc.com/video/13007 Monkey是发送伪随机用户事件的工具. MonkeyScript实现自动测试的脚本,是一组可以被Monkey识别的命令集合,可以完成重复固定的操作.不支持截屏. MonkeyRunner提供一系列api操作. Monkey与MonkeyRunner的区别: Monkey:在adb shell中,生产用户或系统的伪随机事件 MonkeyRunner:通过API定