转载:https://blog.csdn.net/a923751813/article/details/72884826

一  背景

1. 为什么开展压力测试

目标1:提高产品稳定性(产品稳定性是一项重要指标,据统计百分之七十用户会遇到不稳定问题,这时有的会忍受继续使用(比如QQ、微信等成熟产品),有的直接放弃(使用一些新产品),百分之五用户在遇到页面缓慢等问题会直接卸载)

目标2:提高产品的留存率

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

首轮功能测试后(开发提测时会有一些bug,此时若开展压力测试会误报一些问题)

下班后夜间进行(只需对工具进行设置,晚上进行压力测试,提高效率)

二 理论部分

1.手工测试场景

找陌生人聊天:查找->添加->聊天

2.自动测试场景

模拟事件流

3.Monkey(可帮助我们完成一系列的随机事件)

a. Monkey 是发送伪随机用户事件的工具

b.Monkey 在手机系统里,为了实现与其通信,需要使用ADB。

4.ADB

使终端(CMD)与手机之间建立连接:硬链接(usb线),软连接(adb)

5.Monkey Script(可以完成重复固定的操作)

定义:MonkeyScript是一组可以被Monkey识别的命令集合

但不能实现截图操作,这时可借助MonkeyRunner

6.MonkeyRunner

Monke Runner提供了一系列的API,可以完成模拟事件及截图操作。

与Monkey区别:

a. Monkey:在adb shell中,生成用户或系统的伪随机事件;

b.MonkeyRunner:通过API定义特定命令和事件控制设备。

测试类型:

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

7.压力测试结果

(1)什么是Crash

定义:即崩溃,应用程序在使用过程中,非正常退出

(2)什么是ANR

全称:Application Not Responding

三 实践部分

1.一个人APP的压测实践

环境:Android SDK,Python

步骤:1.手机和终端建立连接,adb devices(手机的开发者选项打开),获取手机的唯一标识名

2.往手机上安装测试app,adb install package.apk

3.发送压力指令,adb shell monkey 1000 (工具名称:monkey,1000:让monkey执行1000个随机命令,包括音量键up、down,home键,截屏键,各种输入键等)

4.获取app包名:adb logcat | grep START(logcat是输出手机上所有app的log信息,|:管道,将前一个命令的输出作为下一个命令的输入,grep start,抓取log信息中含有start标签的log信息进行输出)

在Windows系统中,可以用adb shell命令  pm list packages去获取APP包名

5.给指定包打压力

        adb shell monkey -p package 1000

2.Monkey高级参数的应用

a.throttle 参数---指定事件之间的间隔,adb shell monkey  --throttle <milliseconds>  (两个-,毫秒为单位)

b.seed 参数--指定随机生成数的seed值,adb shell monkey -s<seed> <event-count> (<seed>是数字,100.... 后边是事件数)

Monkey所谓的随机操作是基于seed值产生的,每一个seed值产生唯一的随机序列,对应唯一的操作,只要两个seed值相同,操作就相同,这样就可以复现bug。
要进行压力测试时,那么首先自己先定义一个seed值,然后让他去跑,等之后发现APP出现excpetion时,则只需要重新加上seed值就可以复现
c. 触摸事件--设定触摸事件百分比
只完成某种触摸操作,比如点击事件,adb shell monkey --pct-touch <percent>,点击事件百分比
-v 输出记录,加上这个参数,可以看到执行的详细操作
d.动作事件--设定动作事件百分比,adb shell monkey --pct-motion <percent>
e. 轨迹球事件:设定轨迹球事件百分比,adb shell monkey --pct-trackball<percent>
f. 基本导航事件:输入设备的上下左右方向键的导航,adb shell monkey --pct-nav<percent>
g.主要导航事件:中间键、返回键、菜单按钮键,adb shell monkey --pct-majornav<percent>
h. 系统导航事件:HOME键、BACK键、拨号、音量键,adb shell monkey --pct-syskeys<percent>
i.  启动Activity事件:在已有的Activity之间进行切换,adb shell monkey --pct-appswitch<percent>
j.不常用事件:adb shell monkey --pct-anyevent<percent>
k. 奔溃事件:忽略奔溃和异常,直到Events injected等于设定的值为止,adb shell monkey --ignore-crashes<event-count>
l. 超时时间:忽略超时时间,直到Events injected等于设定的值为止,adb shell monkey --ignore-timeouts<event-count>

注意:如果想指定两个事件,比如touch和motion那就让这两个事件的百分比之和是一百,否则,剩余的百分比会执行随机操作。

3.Crash结果析取

注意:crash关键字,开始crash log,在log的最后有一个seed值,我们可以用它来复现crash。如果加上ignore crash,不会有seed值,因为每次crash之后都是一次重新的开始。

4.ANR结果析取

注意:ANR log是以ANR开头。

没有使用monkey的情况下app出现anr情况,可以在手机中找到log文件,会放在traces文件的上边。

5.Monkey Script 实例

执行Monkey脚本的命令:adb shell monkey -f <scriptfile> <event-count.>

《Scriptfile》是编写的脚本文件。<event-count>是脚本执行的次数。
常用命令介绍:
实例讲解:在浏览器进行搜索关键字
脚本的格式:test.script
写完脚本开始执行,因为脚本是由monkey执行的,monkey是在手机里,所以需要把脚本push到手机上
adb push test.script /data/local/tmp/
然后开始执行,adb shell monkey -f /data/local/tmp/test.script  2
所启动的app需要允许adb 命令外界调起

6.Monkey Runner实例

API介绍:

虚拟器(模拟器):genymotion

Android App压力测试(慕课网学习笔记)相关推荐

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

    转载-原文地址:   http://www.cnblogs.com/findyou/p/3936063.html Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 本文重点 ...

  2. Android App 压力测试 monkeyrunner

    Android App 压力测试 第一部分 背景 1. 为什么要开展压力测试? 2. 什么时候开展压力测试? 第二部分 理论 1. 手工测试场景 2. 自动测试创建 3. Monkey工具 4. AD ...

  3. Android App压力测试

    前言:写这篇文章的目的,一是因为不少同学作为Android开发,很少会自己去做压力测试,不了解相关的技术,不知道压力测试是什么.怎么工作的:二是询问过身边的一些测试同学,他们进行压力测试的时候,很多情 ...

  4. Android App压力测试(Monkey和ADB)

    压力测试简介 压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分.压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试.通常 ...

  5. Maven慕课网学习笔记

    -唯快不破-maven快速入门 -稳扎稳打-maven核心知识 -实用为先-maven建立web项目 唯快不破-maven快速入门 Maven介绍与环境搭建 Maven是基于项目对象模型(POM),可 ...

  6. Android App专项测试-压力测试篇

    小伙伴们大家好,今天主要分享的主题是Android App专项测试.如何进行Android App专项测试压力测试呢?我们主要通过Android平台的一门工具Monkey.在学习本门课程之前,如果你具 ...

  7. 如何保证APP兼容性覆盖测试和手机APP测试如何进行兼容性测试?(学习笔记)

    1.背景 众所周知,APP兼容性覆盖测试一直以来被认为是一个高成本.耗时低效.耗人力的测试工作,且兼容性测试是一项必须要进行的测试项目,因为有不同的机型.系统平台.分辨率.网络.厂商.数据兼容以及不同 ...

  8. JavaWeb黑马旅游网-学习笔记02【注册功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  9. Android Monkey压力测试

    一. JAVA环境的搭建 安装jdk-8u151-windows-x64,可以到官网或者应用中心下载. JAVA环境变量的搭建: 在"我的电脑"-"属性"-&q ...

最新文章

  1. 基于深度学习的文本分类应用!
  2. python和表格关系_python – 单表继承上的SQLAlchemy一对多关系...
  3. php制作曲线柱形图的框架,用GD图库生成横竖柱状图折线图的类_php
  4. python:实现简单购物车增加商品、删除商品的功能
  5. orm查询部分字段_ORM问题第2部分–查询
  6. 肖仰华 | 知识图谱落地的基本原则与最佳实践
  7. 如何打造高质量的SSP广告引擎(内部干货分享)
  8. java merge_java – OptimisticLockException当使用JPA merge()
  9. Oracle回收站解决误删除表
  10. linux下部署Tesseract OCR及调用
  11. 一、Spark安装与部署
  12. SONY UP-D898MD 或 UP-X898MD驱动在WIN10 64下的安装
  13. Android Studio开发环境搭建
  14. TensorFlow北大公开课学习笔记-3.3反向传播
  15. nothing else left on those streets
  16. Util: Java生成文件的md5文件方法的代码
  17. 二维空间最近点对问题 python
  18. Google浏览器清理缓存
  19. 熬之滴水穿石:JAVA的世界(2)
  20. 控制微信小程序web view的返回按钮

热门文章

  1. “打卡土鸡”打通养鸡信息壁垒,解决土鸡信任危机
  2. Jquery 计算表格某一列的合计
  3. 解决孩子上课走神的好办法,99%的家长还不知道!
  4. 这张图,若你看到线是弯的,眼睛就可能出了问题!还测老花、近视、色盲
  5. disruptor example
  6. 使用java实现爬取淘宝商品页面数据
  7. 最全笔记程序推荐收集
  8. HackTheBox-BountyHunter靶场通关记录
  9. python中deepcopy函数_python中copy()和deepcopy()详解
  10. 全民客服-我的客服体验