App稳定性测试

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

指标:

  异常的次数

  异常的频率

App的稳定性测试如何实施?

首选Monkey

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

Monkey运行原因

1、Monkey 程序是由 Android 系统自带,使用 Java 语言写成,其本身是安卓系统下的一个monkey.jar文件。在Android文件系统中的存放路径是: /system/framework/monkey.jar;

2、Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;

3、Monkey 启动方式:在 cmd 命令提示符里面输入命令行来启动 monkey 测试。

4、命令行:adb shell monkey——monkey.shell——monkey.jar——安卓进程——设备上执行测试

Monkey原理图:


一、所需软件:

Python3.7

Pycharm社区版

SDK  下载网址:http://www.androiddevtools.cn/

雷神模拟器

58同城apk


二、SDK环境搭建

1、下载 android-sdk,这个是做 android 测试和开发的必备环境,如果不

会下载的话,在 QQ 群:902061117 群文件下载

1、解压后,里面有个 SDK manager.exe 双击打开

3.勾选你要现在的 API 版本和对应的 android 版本,后面模拟器会用到

,然后坐等下载

在系统变量新建:ANDROID_HOME,对应变量值为:

E:\android-sdk-windows(sdk 安装路径)

2.path 添加两个变量,将以下箭头所指的两个文件路径添加到 path 里

path下添加如下两个路径:

E:\android-sdk-windows\tools 和  E:\android-sdk-windows\platform-tools

adb环境

1.因为 adb 是在 D:\androidsdk\android-sdk-windows\platform-tools

这个目录下的,所以上面添加了环境变量后,可以直接在 cmd 里面运行了。

2.在 cmd 输入 adb 可以查看对应版本号

三、连接雷神模拟器---adb connect 127.0.0.1:5555

首先要打开USB调式选项(默认是没有开启调式模式的)

开启调式模式操作步骤:依次打开设置--关于-连击5次版本号,再返到我设置主页就可以看到开发者选项

雷电模拟器:adb connect 127.0.0.1:5555

使用指令:adb devices

连接信息解释

手机设备:显示设备的序列号,即b2355f8a

模拟器:显示ip地址和端口,即127.0.0.1:62001

device:已识别的设备,连接成功

unauthorized:没有授权,需要手机上授权后才能连接

unkown:未识别的设备

offline:离线设备

主流安卓模拟器连接方式:
夜神模拟器:adb connect 127.0.0.1:62001
逍遥安卓模拟器:adb connect 127.0.0.1:21503
天天模拟器:adb connect 127.0.0.1:6555
海马玩模拟器:adb connect 127.0.0.1:53001
网易MUMU模拟器:adb connect 127.0.0.1:7555 MacOS:adb connect 127.0.0.1:5555
genymotion模拟器:adb connect 127.0.0.1:5555
谷歌原生模拟器:adb connect <设备的IP地址>:5555


Monkey

Monkey命令-事件数

Monkey支持的所有命令

adb shell monkey

必选的命令

COUNT:事件数

通过事件数量来测试稳定性

adb shell monkey 次数   即,adb shell monkey  50

注:可能小伙伴发现这速度也忒快了,我看都没看清,这人的速度也没这么快,不合理。哈,那接着,控制每一次操作的间隔时间


Monkey命令-事件间隔

--throttle <milliseconds>     在事件之间插入固定延迟。通过这个选项可以控制Monkey发送事件的频率。时间单位是ms(毫秒)1000毫秒=1秒

例1:发送10个事件,持续执行时间1分钟

adb shell monkey --throttle 6000 10,即10个事件,做完一个事件就等待6秒后再执行

备注:扯了半天,小伙伴想知道我要去检测公司的app倒 底要怎么整


Monkey命令-指定包

-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

知识点:

有可伙伴可能会问,我压根不知道我学习的app的名包叫啥那怎么找呢?

aapt dump badging D:\test\xxx.apk(APK的全名),如手机淘宝.apk

Monkey命令-日志设置

-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

Monkey命令-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

  在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

部份参数:

--pct-touch:触摸事件 --pct-trackball :轨迹事件

--pct-motion:动作事件(手势) --pct-nav :基本导航事件

--pct-appswitch:启动activity事件 -pct-majornav:主要导航事件

--pct-rotation:屏幕旋转事件 --pct-syskeys:“系统”按键事件

总结:

1、Monkey是对安卓apk进行随机事件的操作,通过报告来查看apk是否稳定

2、只适用安卓平台

3、根据公司不同产品的特性可设置不同概率来针对性测试或回归(如抖音他的滑动频率高)

如果对软件测试、接口测试、自动化测试、性能测试、持结集成、面试经验交流。感兴趣可以893694563,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

测试工程需要明白的Monkey测试的更多相关文章

  1. Monkey测试log的保存与分析

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  2. monkey测试入门2--测试步骤、常用参数、常规monkey命令

    <凤栖梧> 柳永 伫倚危楼风细细,望极春愁,黯然生天际.草色烟光残照里,无言谁会凭栏意? 拟把疏狂图一醉,对酒当歌,强乐还无味,衣带渐宽终不悔,为伊消得人憔悴. 简要步骤:adb devi ...

  3. monkey测试小记

    本篇中不记录环境搭建,只是介绍一些经验和小秘诀吧. 一.使用安卓模拟器进行测试. 在刚刚接触到monkey测试的时候,用的真机进行测试,点击几万次甚至更多的时候,发现系统变慢了.也许是错觉,但是系统经 ...

  4. monkey测试===easyMonkey测试【推荐】

    easymonkey测试: easymonkey是基于monkey测试的一个二次开发工具.(关于monkey测试参见之前blog) easymonkey的特点就是方便,解决了很多参数命令上设置的麻烦, ...

  5. [转]Monkey测试简介

    转自:http://www.cnblogs.com/manuosex/p/3215270.html 在android手机上做自动化测试,monkey比cts,Android UnitTest 好用多了 ...

  6. 手机monkey测试BUG重现及解决方法

    目录 1.1 Monkey测试简介...1 1.2 Monkey程序介绍...1 1.3 Monkey命令的简单帮助...2 1.4 Monkey命令参数介绍...2 1.5 Monkey测试步骤.. ...

  7. Android软件测试Monkey测试工具

    前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括android测试框架.CTS.Monkey.Monkeyrunner.benchmark.其 ...

  8. ActiveX添加测试工程, 出现的问题[非选择性参数][找不到成员]

    ActiveX 添加测试工程 1.新建工程MFC application, 2.添加完毕,在main Dialog中, 右键[Insert Activex Control],选择你的ActiveX控件 ...

  9. Monkey测试结果分析

    Monkey测试结果分析 什么是monkey Monkey 测试是 Android 自动化测试的手段之一,它通过模拟用户的按键输入.触摸屏输入等,测试设备多长时间出现异常.Monkey 是一个命令行工 ...

随机推荐

  1. flutter获取状态栏高度及安全区域

    获取状态栏高度: final double statusBarHeight = MediaQuery.of(context).padding.top; 所谓安全区域,就是适配现在一些刘海屏之类的非常规 ...

  2. log4j.properties配置文件及详解

    log4j配置文件有三个主要的组件:Logger,Appender和Layout,分别为日志类型,日志输出目的地,日志输出格式. 1. 配置日志级别及appenderName log4j.rootLo ...

  3. Object--Date--calendar--System--StringBuilder--基本数据类型包装类型

    Object java.lang.Object类是Java语言中的根类,即所有类的父类 默认toString()方法打印的是对象在堆中的地址值 默认equals()方法比较的也是地址(String中对 ...

  4. SqlServer 数据库备份到服务器,及删除

    一:备份 1.在数据库管理下 新建一个维护计划,然后下图中点击 标红的按钮 新建计划作业,建好后就可以 SqlServer 代理下的作业里可以看到刚新建的作业. 2.SqlServer 代理下的作业  ...

  5. JMeter结果树响应数据中文乱码

    打开apache-jmeter-2.11\bin\jmeter.properties文件,搜索"encoding"关键字,找到如下配置: # The encoding to be ...

  6. 多线程编程<一>

    1 /** 2 * 通过制定synchronized限定符,可以同步用于对象的一个或多个方法.当调用同步的方法时,对象会被加锁,直到方法返回. 3 * @author Burke 4 * 5 */ 6 ...

  7. 两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库

    两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...

  8. Git使用教程七——Git实用技能

    Git实用技能 1.图形管理工具 Github for Desktop Source tree 老牌的GitGUl管理工具了,也号称是最好用的Git GUI工具.功能丰富,基本操作和高 级操作都非常流 ...

  9. Java特性和优势

    Java特性和优势 简单性 面向对象性 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性

  10. Linux串口调试详解

    测试平台 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL 目标机内核:Linux 4.1.15 目标机添加串口设备 一般嵌入式主板的默认镜像可能只配置了调试串口,并用于 consol ...