APP稳定性测试

APP稳定性测试

  • ①Andriod SDK环境搭建
  • ②Monkey稳定性测试

①Andriod SDK环境搭建

10.1Andrion SDK 环境搭建
APP稳定性测试_第1张图片
安装JDK
•下载 jdk-8u11-windows-i586_14459_BDdl.exe,双击安装选择默认位置即可
下载地址:JDK下载地址
配置 JDK

打开文件夹
APP稳定性测试_第2张图片
APP稳定性测试_第3张图片
复制根目录地址:
C:\Program Files\Java\jdk1.8.0_201
•右击“我的电脑”->属性->高级->环境变量->系统变量->新建
•变量名设置为:JAVA_HOME
APP稳定性测试_第4张图片
APP稳定性测试_第5张图片
点击path进去编辑 环境变量
APP稳定性测试_第6张图片

打开文件夹,复制地址:C:\Program Files\Java\jdk1.8.0_201\bin
APP稳定性测试_第7张图片
粘贴地址:
APP稳定性测试_第8张图片
C:\Program Files\Java\jdk1.8.0_201\lib
C:\Program Files\Java\jdk1.8.0_201\jre\bin
这两个环境变量设置步骤类似
设置完成后,打开cmd检查是否安装成功:
依次输入命令:
java -version
java
javac
出现以下界面即代表JDK安装成功。
APP稳定性测试_第9张图片
APP稳定性测试_第10张图片
APP稳定性测试_第11张图片
10.1.2安装配置 Android SDK

一、android-sdk 的下载安装

android-sdk是做android测试和开发的必备环境,下载地址:http://www.androiddevtools.cn/
APP稳定性测试_第12张图片
选择一个最新的版本下载,注意,这里有.exe和.zip两种文件可供下载。.exe的是一个安装程序,下载后需要自己双击安装.zip是一个压缩包,下载后,直接解压,将文件夹(可自行更改文件夹名称)放到你想要安装的路径就可以了。

二、SDK Manager的配置

下载完成后解压文件到D盘目录,如下,双击打开SDK manager.exe
APP稳定性测试_第13张图片
注意:这里要先安装 SDK Manager.exe,否则是不会有 build-tools 和 platform-tools这两个文件夹的。

1.打开后,Tools里面前三个是必须安装的

Android SDK Tools 里面有:uiautomatorviewer
Android SDK Platform-tools 里面有:adb
Android SDK Build-tools 里面有:appt
APP稳定性测试_第14张图片
2.SDK Platform下载一个最新的就可以了,它可以向下兼容(另勾选需要下载的API版本和对应的android版本)
APP稳定性测试_第15张图片
3.Extras里选择下面三个下载就可以了
Android Support Respository 是安卓兼容库,必须安装Google USB Driver 一般自己就安装好了。最后面一个是安卓模拟器加速器,这个随缘,无法安装不了就不用再折腾了。
APP稳定性测试_第16张图片
APP稳定性测试_第17张图片
APP稳定性测试_第18张图片
APP稳定性测试_第19张图片
或者:
tools全装
Android 5.1.1
Extras全装
如果公司用到Android R 的也可以装。
三、设置android-sdk环境变量
1、复制根目录地址:D:\android-sdk-windows
APP稳定性测试_第20张图片
2、右击 此电脑-属性-高级系统设置-环境变量;在“系统变量”中新建:ANDROID_HOME

变量名:ANDROID_HOME
变量值:根据自己的实际路径配置(sdk的安装路径)
APP稳定性测试_第21张图片
3.点击 path 将tools、Platform-tools文件和Build-tools 文件的路径添加到path里
APP稳定性测试_第22张图片
APP稳定性测试_第23张图片
4、运行adb
因为adb是在platform-tools这个目录下,所以添加了环境变量后,就可以直接在cmd里面运行adb了。
5、验证 android 是否配置成功
进入 cmd命令提示符界面,输入:adb 或android –h 命令,出现以下界面表示安装成功。
APP稳定性测试_第24张图片

②Monkey稳定性测试

10.2.1 什么是稳定性测试?
通过随机点击屏幕一段时间,看看 app 会不会奔溃,能不能维持正常运行。
10.2.2Monkey 是什么?
Monkey 测试是 Android 平台自动化测试的一种手段,通过 Monkey 程序模拟用户触摸屏幕、滑动 Trackball、按键等操作来对设备上的程序进行测试,检测程序多久的时间会发生异常。和 MonkeyRunner 几乎是完全不同的,MonkeyRunner 相当于是搞自动化测试的了
官方介绍:
https://developer.android.com/studio/test/monkey.html
10.2.3Monkey 介绍
Monkey 程序由 Android 系统自带,使用 Java 语言写成,在 Android 文件系统中的存放,路径是:/system/framework/monkey.jar
Monkey.jar 程序是由一个名为“monkey”的 Shell 脚本来启动执行,shell 脚本在Android 文件系统中的存放路径是:/system/bin/monkey
Monkey 命令启动方式
①可以通过 PC 机 CMD 窗口中执行: adb shell monkey {+命令参数}来进行 Monkey测试。
②在 PC 上 adb shell 进入 Android 系统,通过执行 monkey {+命令参数} 来进行Monkey 测试。
③在 Android 机或者模拟器上直接执行 monkey 命令,可以在 Android 机上安装Android 终端模拟器。
④查看被测 app 包名:adb shell pm list packages
10.2.4Monkey 架构
APP稳定性测试_第25张图片
10.2.5Monkey 弱点
Monkey 虽然可以根据一个指定的命令脚本发送按键消息,但不支持条件判断,不支持读取待测界面的信息来执行验证操作。
10.2.6Monkey 压力测试参数
APP稳定性测试_第26张图片
那么这个 option 通常又分为 4 大类:常用选项,事件选项,约束选项,调试选项
①常用选项的参数通常有:
-v 用于反馈信息级别(一个-v 表示一个层级,两个-v 表示两个层级,通常最多三个-v)
示例 Level0:
adb shell monkey -p com.swartz.cicada –v 100
说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息 相应源代码如图所示了,这十分有利于调试了
示例 Level1:
adb shell monkey -p com.swartz.cicada -v-v 100
说明
提供较为详细的日志,包括每个发送到 Activity 的事件信息
示例 Level2:
adb shell monkey -p com.swartz.cicada -v-v-v 100
说明
最详细的日志,包括了测试中选中/未选中的 Activity 信息
②时间选项的参数通常有:
-s 表示伪随机数生成的 seed 值,如果 seed 值相同,则两次 monkey 所产生的事件序列也是一样的
示例:
Monkey 测试 1:adb shell monkey -p com.swartz.cicada –s 10 100
Monkey 测试 2:adb shell monkey -p com.swartz.cicada –s 10 100
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的 Seed 值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这
个操作序列伪随机的;
–throttle:每个事件结束后的间隔时间
③约束选项的参数通常有
-p 指定文件名
count 指定要发送的事件数
-c 用此参数指定一个或几个类别,activity 必须指定一个 category,才能被启动,否则将会启动不了
④调试选项的参数通常有:
–dbg-no-events:初始化启动的 activity,但是不产生任何事件。
–hprof:指定该项后在事件序列发送前后会立即生成分析报告
–ignore-crashes:忽略崩溃
–ignore-timeouts:忽略超时
–ignore-security-exceptions:忽略安全异常
–kill-process-after-error:发生错误后直接杀掉进程
–monitor-native-crashes:跟踪本地方法的崩溃问题
工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。
monkey 测试命令如下:
adb shell monkey -p com.swartz.cicada -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > E:\monkey_log\20170831.txt
kill 此参数用来杀掉进程:kill pid 先执行 adb shell 再 ps |grep monkey 查询结果如下
图中 15248 即为 PID 再 kill pid(15248)即可
在这里插入图片描述
例子:
adb shell monkey -p com.tpnet.hlquery --throttle 100 --pct-touch 50 --pctmotion 50 -v -v -v 1000 >c:\monkeytest.txt
测试 com.tpnet.hlquery 这个 app,间隔 100 毫秒,50%的触摸事件,50%
的滑动事件,三个-v 输出详细的日志,执行 1000 个事件,日志输出到
c:\monkeytest.txt
ps: 命令运行前手机先解锁,win8 以上要用管理员身份打开 cmd。

下面来看下整体的步骤:
**step1:**下载安装 mumu模拟器,地址:https://mumu.163.com/
**step2:**安装好打开mumu模拟器
**step3:**打开命令行 Win + r cmd
**step4:**连接模拟器:adb connect 127.0.0.1 : 7555
**step5:**查看是否连接成功:adb devices
**step6:**查看安装包名:adb shell pm list packages
APP稳定性测试_第27张图片
ps: adb shell (进入Android系统) exit退出
APP稳定性测试_第28张图片
**step7:**测试包(以网易云音乐包为例):
adb shell monkey -p com.netease.cloudmusic -v 1000
adb shell monkey -p com.netease.cloudmusic -v -v 1000
adb shell monkey -p com.netease.cloudmusic -v -v -v 1000
APP稳定性测试_第29张图片
**step8:**日志结果分析
APP稳定性测试_第30张图片
也可指定:
adb shell monkey -p com.netease.cloudmusic --throttle 100 --pct-motion 50 -v -v -v 1000 >D:\test.txt

10.2.7Monkey 结果分析
①初步分析方法:Monkey: seed=20 count=100 --随机种子和运行次数
:AllowPackage: com.swartz.cicada --指定的测试包
:IncludeCategory: android.intent.category.LAUNCHER --Category 包含 LAUNCHER
:IncludeCategory: android.intent.category.MONKEY --Category 包含 MONKEY
// Selecting main activities from category android.intent.category.LAUNCHER
// + Using main activity com.swartz.cicada.LauncherActivity (from package
com.swartz.cicada)
// Selecting main activities from category android.intent.category.MONKEY --查询结果列表
// Seeded: 20 --随机种子
// Event percentages:
// 0: 15.0% --事件 0 为 touch 事件,就是相当于按下之后弹起来的一个动作
// 1: 10.0% --事件 1 为 motion,相当于说从起始点到终点有移动了多少步,就是步骤数量
// 2: 2.0% --事件 2 为 pinchzoom,为两个手指有同时按下去后,都向中间移动后 up起来,相当于一个缩放的动作。
// 3: 15.0% --事件 3 为 trackball,为轨迹球事件
// 4: -0.0% --事件 4 为 rotation 为屏幕旋转百分比隐藏事件
// 5: 25.0% --事件 5 为 nav 导航事件,就是上下左右
// 6: 15.0% --事件 6 为 majornav 主导航事件,会产生一些窗口的事件
// 7: 2.0% --事件 7 为系统按键
// 8: 2.0% --事件 8,app 应用的打开就是用的这个事件// 9: 1.0% --事件 9,键盘的开,关
// 10: 13.0% --事件 10,按键按下在弹起等动作
日志结尾:
如果 Monkey 测试顺利执行完成,在 log 的最后,会打印出当前执行事件的次数和所花费的时间;Monkey
finished 代表执行完成。
(如果 Monkey 执行中断,在 log 的最后也能查看到当前已执行的次数。)
②详细分析:
Monkey 测试出现错误之后,一般的分析步骤分为以下几种:
•看 Monkey 日志(注意第一个 switch 以及异常信息等)
•程序无响应问题,在日志中搜索 “ANR”
•奔溃问题: 在日志中搜索 “Exception”
ANR 问题:在日志中搜索“ANR”(什么是 ANR:Application Not Responding,即应用无响应,具体有关 ANR 的知识详见:):https://www.tuicool.com/articles/IfQvY3
•ForceClosed 和程序异常退出问题:在日志中搜索“致命”
③查看 Monkey 里面错误前的一些事件动作,并手动执行该动作。
如果 Monkey 测试顺利执行完成,在 log 的最后,会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成。
Monkey 执行中断,在 log 的最后也能查看到当前的已经执行的次数。
10.2.8Monkey 测试怎样确定内存泄露
①内存泄漏弹出 out of memory 对话框
②对于有内存泄漏但是没有单出 out of memory 对话框的情况,可以通过 logcat 文件GC 出信息,(GC:java 的垃圾回收机制)•GC_FOR_ALLOC: 因为在分配内存时候内存不够引起的
•GC_EXPLICIT 表明 GC 被显式请求触发的,如 System.gc 调用,
•GC_CONCCURRENT: 表明 GC 在内存使用率达到一定的警戒值时候,自动触发
•GC_BEFORE_OOM 表明在虚拟机抛出内存不够异常 oom 之前,执行最后一次回收内存垃圾

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