APP的性能测试分为服务器端的性能和手机端的性能,服务器端的性能相信大家都比较清楚,而手机端的性能测试,通常比较麻烦些,因为同样一个软件在不同配置的手机终端上运行,其性能表现是不一样的,这个很好理解,比如,同一个版本的LOL,在配置高的电脑上运行,肯定要比在配置差的电脑上运行流畅。
先介绍一下APP性能测试现在常用的adb工具以及monkey命令。
Monkey的简单介绍#
1、什么是monkey ?
Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
Monkey测试目的:测试软件的稳定性、健壮性。
2、monkey 的特征
(1)测试的对象仅为应用程序包,有一定的局限性。
(2)Monky测试使用的事件流数据流是随机的,不能进行自定义。
(3)可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
1.在使用Monkey命令之前,先要下载一个ADT工具,这个工具在我整理的测试工具里面可以下载,
ADT内含SDK管理,安卓虚拟设备管理器。
2.下载完成之后,如果未配置Java环境变量,需要下载jdk,然后配置环境变量。因为eclipse工具是用于Java开发的编辑器。
3.配置完成之后,需要在cmd页面先进入sdk目录下的platform-tools中,例如你的sdk安装在D盘,进入cmd页面,输入 D: ,然后回车,cd 进入platform-tools目录中。
4.然后输入命令adb devices可以查看电脑连接了哪几台手机设备,手机设备可以用真机的usb连接到电脑上,也可以在电脑上下载手机模拟器或者用eclipse工具中自带的手机模拟器 (这个自带模拟器比较卡)。
常用的adb命令#
1. adb connect + IP ,可以链接某个设备
2. 查看设备
adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
3.关闭adb
adb kill-server
4.开启adb
adb start-server
5. 安装软件
adb install
这个命令将指定的apk文件安装到设备上
例如 adb install 路径app-weichi-release.apk
当有多个设备接入ADB客户端,就要指定设备名称
adb -s 设备名 install 包名
例如 adb -s emulator-5556 install 路径helloWorld.apk
如果显示success,那么就安装apk包成功,显示Failure,则安装失败。
检查错误,排错,再执行如下命令:abd install -r 包名.apk
6. 卸载软件
adb uninstall <软件名>
adb uninstall -k <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件.
7.发送文件
adb push 本地文件路径文件名称 目标路径
这是将本地文件推送到远程端
adb pull 远程文件路径名称 本地路径
这是将远程文件拉到本地
8.登陆设备shell
adb shell 登录设备shell
进入之后就可以执行shell命令了,比如cd ,pwd,ls等。
9.伪随机事件操作命令
之前介绍过利用monkey命令可以对app进行多次伪随机事件操作,目的是验证app在进行多次操作,压力较大的情况下,app是否会崩溃,如果app崩溃就说明该app性能出现问题。
具体命令如下:
adb shell monkey -p 包名 -v 次数
这个命令将会启动app,并且触发多个次数事件,
执行这个命令后会出现 Monkey Seed=种子值。
adb shell monkey -p -s seed值 包名 -v 次数
复制seed值,可以执行一样的事件和过程。
先讲一下怎么获取app的包名?
1.输入命令 adb logcat | findstr START (查找手机日志中含有START的字符)
2.等日志停下来,启动app(启动app会产生日志)
3.复制多出来的日志到记事本或者文本中(最后几行,多出来的日志就是刚才启动app产生的日志)
4.找到{cmp=包名/.activity},这样就能找到该app的包名了。
当然获取包名还有其他的方法,这里不多解释。
在执行伪随机事件次数的那个命令后,运行结束后,查看实际运行次数和输入命令的那个次数是否一致。
运行结束后,最后几排可以看到一排这样的内容
Events injected:次数
看这个次数是否与输入命令的那个次数是否一致,如果不一致,就说明该app运行有问题,需要取下日志进行分析。
adb logcat 实时查看累计日志
adb logcat -C 清除日志
adb logcat -v time 〉本地路径文件名称 (将日志导入后面的文件)
建议在伪随机事件次数操作之前先清除日志,如果运行有问题,可直接将日志导出来分析。
拿到导出的日志,就可以进行分析定位app运行存在的问题了。
logcat日志分析的基本步骤#
1,如果是ANR(application not run)问题, 则搜索"ANR" 或 'anr in'关键词。 快速定位到关键事件信息 。
2,如果是空指针导致系统crash,会有这些关键字:java.lang.NullPointerException。
发现之后剩下的事情就交给开发解决啦……
这期就讲就分享这么多吧,下一期分享用DDMS工具分析app内存,是否出现内存泄漏问题,MAT工具的使用,以及监控流量电量cpu等等指标的app监控工具iTest的使用。
一起学习,共同进步!
2017.11.1
By Tiger