monkey测试
一、介绍app测试
(1)定义:App是基于移动互联网软件、及软硬件环境的应用软件
(2)app测试:App测试就是要找出App中的bug。通过各种手段何测试工具,判断App系统是否满足预期标准
(3)app测试范围:移动App由于增加了终端、外设和网络等多项元素,因而测试内容和项目也相应增加了
(4)app分类:app手工测试和app自动化测试
a、app的功能测试
1.安装、卸载测试:正常安装卸载后app的所有功能是否都正常
2.升级测试:升级之后app的数据是否丢失
3.业务逻辑测试:分解需求使用xmind思维导图工具梳理测试点编写用例用例评审后执行测试
4.UI测试:界面布局是否混乱 界面内容是否显示正确、清晰
5.异常测试:断网 弱网 网络切换 来电话 来短信 电量不足等提示
b.app适配性测试
适配测试:在不同的硬件设备上app能否正常运行的测试
不同的平台:MTK(联发科(芯片产商))/高通(芯片与cpu产商)/展讯(国内芯片)
不同的组件:屏幕、接口、听筒
不同的可选项:cpu、内存、存储
c.App兼容性测试:
兼容性测试:不同软件环境的App能否正常运行的测试
不同的操作系统:android ios以及系统版本
不同的手机品牌:小米 华为 苹果 oppo vivo 三星等以及型号
不同手机尺寸:4.8 5.1 5.5 6.1
不同屏幕的分辨率:1080*1920 1080*2340 1080*2400(宽1080个像素点*长2400个像素点)越高表示屏幕的像素点越多 图案就更清晰
不同网络:2G 3G 4G 5G wifi
d.app专项测试:
专项测试:因为app的终端是手机,严格来说属于手机的测试范畴
耗电测试:正向耗电测试(直接测试耗电量) 逆向耗电测试(系统资源占用情况)
后台耗电测试(后台运行耗电量)
流量测试:流量占用 后台流量
内存泄漏测试:内存占用 内存泄漏 内存不足
网络专项测试:弱网
蓝牙专项测试:蓝牙连接
T卡专项测试:2g 4g 8g 16g 32g手机存储卡
SIM卡专项测试:中国移动SIM卡 中国电信SIM卡 中国联调SIM卡
e. App稳定性测试:
1.稳定性测试:软件长时间持续运行,系统版本是否稳定,是否能持续的为用户提供服务
2. 稳定性指标:
异常次数
异常频率
3. App稳定性测试实战:
Monkey工具
Monkey是向系统发送随机的用户事件流(如按键输入,触摸屏输入和手势输入等),实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确保App的稳定性
==============================================================
二、搭建monkey的环境
1. Android SDK环境:
安装Android-SDK先解压adt-bundle-windows-x86_64-20140702.zip文件得
到如下三个文件和文件夹
2、
(1)安装Android-SDK首先需要配置ANDROID_HOME和path
电脑右下角点击Windows图标-选择计算机 空白处右键属性左侧栏选择高级系统设
置环境变量用户变量增加ANDROID_HOME
然后把sdk的路径放入变量值(以自己的路径为准,如下为我的sdk路径)
例如:路径:D:\app\adt-bundle-windows-x86_64-20140702\sdk
(2)
1. 配置path路径 (如下3个路径都需要添加,中间以;分号分割)
我的路径如下(以自己的路径为准):
D:\app\adt-bundle-windows-x86_64-20140702\sdk\platform-tools
D:\app\adt-bundle-windows-x86_64-20140702\sdk\tools
;%ANDROID_HOME%\platformtools;%ANDROID_HOME%\tools
(3)
1.配置aapt的环境变量 (以自己的实际路径为准)
D:\app\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W
(4) 安装模拟器
1. 设备(真机/模拟器):
安装夜神模拟器:(安装不成功则可选择安装逍遥模拟器,成功的忽略这条)
找到夜神模拟器的安装包双击,打开模拟器
2、
进入dos窗口输入命令:adb connect 127.0.0.1:62001 (显示如下图表示已经连接
上夜神模拟器了)
=======================================
三、adb命令
1、adb connect 127.0.0.1:62001
adb connect ip :连接某个设备(真机设备可以用usb(开usb调试)与wifi连接)
注意:要连接的真机ip必须和自己的pc网络在同一网络内adb不能跨局域网连接设备
手机设备:显示设备的序列号 b2355f8a
模拟器:显示ip地址和端口号 127.0.0.1:62001
device:已识别的设备 表示连接成功
unauthorized:没有授权需要手机授权才能连接
unkown:未识别的设备
offline:离线设备
3、adb version 查看当前adb版本
4、adb start-server:启动adb服务
5、adb kill-server:关闭adb服务
6、adb nodaemon server:
检查5037端口是否被占用 如果被占用则提示:
7、adb install 包名(apk路径包名)
路径:D:\app\baiduyuedu_3760.apk
案例:adb install D:\app\baiduyuedu_3760.apk
8、adb shell pm list package -3: 显示所有第三方app包名
9、adb uninstall packName(app包名):卸载apk应用包
包名:com.baidu.yuedu
案例:adb uninstall com.baidu.yuedu 删除包
10.
a dump badging apkpath(apk包的路径):获取app包的名称与aActivity
路径: D:\app\baiduyuedu_3760.apk
案例: aapt dump badging D:\app\baiduyuedu_3760.apk
11.
adb shell pm list packages:显示手机中所有的app包的名称
12\
adb reboot:重启模拟器
13.
adb shell:进入安卓手机目录
14、
adb get-serialno 获取手机序列号
15.
adb shell wm size:获取手机屏幕分辨率
16、
adb shell getprop ro.product.model:查看手机的设备型号
17、
adb shell cat /proc/cpuinfo:获取手机的 cpu 信息
18、
adb shell cat /sys/class/net/wlan0/address:获取手机的 mac 地址
19.
adb logcat:查看所有进程运行日志
20、
adb logcat | find “com.baidu.yuedu”:查看指定app百度阅读app日志
21.adb logcat -f /data/zz.txt :将日志写入到文件中并保存在手机上
22、adb logcat -> D:\f\hz15log.txt 将日志写入到文件中并保存到本地
23、adb push D:\f\hz15log.txt /data 上传文件到手机端
本地文件:D:\f\hz15log.txt
24、
adb pull androidpath windowspath:手机端上传文件到pc端
案例:adb pull /data/hz15log.txt (手机路径) D:\f(本地路径)
25、(1)adb devices 查看所有设备
(2)adb -s deviceName shell :进入到指定设备的目录
案例:adb -s 127.0.0.1:62001 shell
(3)安装应用到指定的设备目录
adb -s deviceName install xxx.apk:安装应用到指定的设备目录
案例:adb -s 127.0.0.1:62001 install D:\app\baiduyuedu_3760.apk
路径:D:\app\baiduyuedu_3760.apk
=============================
四、Monkey简介:
1. Monkey 就是SDK中附带的一个工具。Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
2、monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
3、该工具用于进行压力测试。然后开发人员结合monkey 打印的日志和系统打印的日志,分析测试中的问题
4、monkey原理:
命令行:adb shell monkey--》monkey.shell --》monkey.jar--》android进程--》设备上执行测试
5、mokey命令
1、
adb shell monkey help:monkey命令使用介绍
2、adb shell monkey 100:对模拟器或真机做100次随机操作
3、adb shell monkey –p app包名 100:对指定的app做100随机操作
先要知道包名:adb shell pm list package -3 获取包名:package:com.baidu.yuedu 备注(package不要)
adb shell monkey –p com.baidu.yuedu 100
2. Monkey稳定性实战:
(1)格式:adb shell monkey –p app包名 –throttle 1000 (毫秒) 100(1分40秒): 对指定的app每隔1秒做1次操作 做100次
案例:adb shell monkey -p com.baidu.yuedu --throttle 1000 100
(2)adb shell monkey –p app包名 –throttle 1000 36000: 每隔1秒对app随机做1次操作持续10小时(实际工作测app稳定性时使用)
案例:adb shell monkey -p com.baidu.yuedu --throttle 1000(1000毫秒=1秒) 36000(36000次每一次1s=10小时)
====================================================
Monkey日志分析:
1. Monkey日志命令:
-v:leve0 除启动提示、测试完成和最终结果之外、提供较少信息
-v -v:leve1 提供较为详细的日志,包括每个发送到Activity的事件信息
-v –v –v:leve2 最详细的日志,包括了测试中选中,未选中的Activity信息
2、
2. Monkey日志分析:
adb shell monkey –p app包名 --throttle 1000 –v-v-v 100:每隔1秒对app做1次随机操作,执行100次,并输出详细日志
包名:package:com.baidu.yuedu 删除(package:) com.baidu.yuedu
案例1:adb shell monkey -p com.baidu.yuedu -v 100
案例2:adb shell monkey -p com.baidu.yuedu -v -v 100
案例3:adb shell monkey -p com.baidu.yuedu -v -v -v 100
案例4:adb shell monkey –p com.baidu.yuedu --throttle 1000 –v-v-v 60
adb shell monkey –p app包名 --throttle 1000 –v-v-v 100>C:\Users\Desktop\applog.txt:输出日志文件到本地路径
案例:db shell monkey -p com.baidu.yuedu --throttle 1000 -v-v-v 60 >D:\f\banzhanglog.txt
Monkey日志分析:
1. Monkey日志分析:
正常情况:
如果Monkey测试顺利执行完成,在log的最后会打印出当前执行事件的次数
和所花费的时间;// Monkey finished 代表执行完成
异常情况:
查阅Monkey的输出日志:
1. 程序无响应的问题: 在日志中搜索 “ANR”
2. 崩溃问题:在日志中搜索 “Exception”
3. 如果有空指针,搜索“NullPointerException”
4. 如果Monkey执行中断,在log最后也能看到当前执行次数
APP中问题归纳?
https://www.cnblogs.com/xiaolehua/p/14203650.html
(1)pp出现ANR(无响应),是什么原因导致的?
那么导致ANR的根本原因是什么呢?简单的总结有以下两点:
1.主线程执行了耗时操作,比如数据库操作或网络编程
2.其他进程(就是其他程序)占用CPU导致本进程得不到CPU时间片,比如其他进程的频繁读写操作可能会导致这个问题。
细分的话,导致ANR的原因有如下几点:
1.耗时的网络访问
2.大量的数据读写
3.数据库操作
4.硬件操作(比如camera)
5.调用thread的join()方法、sleep()方法、wait()方法或者等待线程锁的时候
6.service binder的数量达到上限
7.system server中发生WatchDog ANR
8.service忙导致超时无响应
9.其他线程持有锁,导致主线程等待超时
10.其它线程终止或崩溃导致主线程一直等待。
(2)App出现crash(崩溃)原因有哪些?
为什么App会出现崩溃呢?百度了一下,查到和App崩溃相关的几个因素:内存管理错误,程序逻辑错误,设备兼容,网络因素等,如下:
1.内存管理错误:可能是可用内存过低,app所需的内存超过设备的限制,app跑不起来导致App crash。
或是内存泄露,程序运行的时间越长,所占用的内存越大,最终用尽全部内存,导致整个系统崩溃。
亦或非授权的内存位置的使用也可能会导致App crash。
2.程序逻辑错误:数组越界、堆栈溢出、并发操作、逻辑错误。
e.g. app新添加一个未经测试的新功能,调用了一个已释放的指针,运行的时候就会crash。
3.设备兼容:由于设备多样性,app在不同的设备上可能会有不同的表现。
4.网络因素:可能是网速欠佳,无法达到app所需的快速响应时间,导致app crash。或者是不同网络的切换也可能会影响app的稳定性。
(3)测试过程中遇到app出现crash或者ANR,你会怎么处理?
可以先把日志过滤出来: adb logcat | findstr xxxxx(过滤日志信息) ,然后再搜索其中的关键字,比如:exception、crash,看看是那些方法或者异常导致了问题的发送,初步定位问题原因后,可以交给开发人员去具体查找深层原因并修复。
(4)闪退的原因分为种:一、软件本身有问题;二、系统出现问题。
一、软件问题
(1)app 不兼容系统当前系统版本
(2)app有了新版本,没有跟新(软件对手机分辨率有一定的要求)
(3)软甲有bug
(4)下载和更新不是官网下载的,是第三方软件下载的
(5)网络差(软件对网速的要求比较高,如果用户使用 2 G/3 G 网络)
(6)分辨率不兼容(软件对手机分辨率有一定的要求)
(7)手机被植入病毒
二、系统出现问题
(1)手机内存不足,比如:打开很多app,导致后台反应出现问题
(2)软件授权出现问题
(3)设备已经越狱,导致系统不稳定,闪退成了常事
(4)手机 缓存垃圾太多
(5)安装路径位置错误(比如:安装外置存储卡)
(6)手机配置问题 (比如手机配置低)
==========================================
解决办法:
1、卸载重新下载新版本,(安装并设置手机储存空间为安装路径即可)
2、及时更新新的版本
3、拒绝从第三方下载(卸载非官方下载的软件)
4、重启应用
5、检查应用兼容性
6、检查应用权限(授予必要的权限即可。 )
7、卸载重装应用
8、清理手机存储空间
9、 恢复出厂设置
10、检查网络(切换好的网络环境)
=================================================================
Monkey日志分析:
1. Monkey日志分析:
重现异常以及回归验证:
-s:在命令中加上seed值 确保两次执行的序列号一样
如果第一次稳定性测试时出现了bug,那测试人员就需要重现bug和验证bug
所以需要重复两次操作一样,seed值相同就能确保monkey两次测试所触发的事件一致
格式1:adb shell monkey –p app包名 –s 1001 --throttle 1000 –v-v-v 100 >C:\Users\Desktop\applog.txt:输出日志文件到本地路径
案例1:adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 -v-v-v 60 >D:\f\log1.txt
格式2:adb shell monkey –p app包名 –s 1001 --throttle 1000 –v-v-v 100>C:\Users\Desktop\applog1.txt:输出日志文件到本地路径
案例2:adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 -v-v-v 60 >D:\f\log2.txt
==================================
Monkey调试:
1. Monkey调试:
在Monkey运行的过程中,我们可以通过结束进程的方式来终止Monkey的运行,当然在运行的过程中遇到异常、奔溃、等情况Monkey也会停止。为了保证执行的事件数执行完整我们可以通过调试选项的设置来防止在运行过程中Monkey命令提前结束
--ignore-crashes 忽略在应用程序出现crash(崩溃)时monkey停止
--ignore-timeouts 忽略在应用程序出现ANR(无响应)时monkey停止
--ignore-security-exceptions
忽略在应用程序出现许可时monkey停止
案例1:同时忽略以上三种错误(情况)
格式:
adb shell monkey -p app包名 -s 1001 --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 100>C:\Users\Desktop\applog1.txt
案例:adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 100>D:\f\log3.txt
案例2:忽略在应用程序出现crash(崩溃)时monkey停止( 情况)
adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 --ignore-crashes -v -v -v 100 >D:\f\log4.txt
案例3:--ignore-timeouts 忽略在应用程序出现ANR(无响应)时monkey停止
案例3:adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 --ignore-timeouts -v -v -v 100 >D:\f\log5.txt
案例4:--ignore-security-exceptions 忽略在应用程序出现许可时monkey停止 情况
案例4:adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 --ignore-security-exceptions -v -v -v 100 >D:\f\log6.txt
================================================================================
练习题:
1. Monkey练习:
对百度阅读进行稳定性测试,要求:模拟用户的触摸操作,并执行时间12小时,忽略crashes与anr报错,并输出日志以及稳定性测试报告
要求:写好把语句,截图,和txt文件的日志发出来
命令:adb shell monkey -p com.baidu.yuedu -s 1001 --throttle 1000 --ignore-crashes --ignore-timeouts -v-v-v 43200 >D:\f\loglx.txt