有人有手机APPmonkey测试视频教程程吗,monkey和adb都可以

xqtesting 的BLOG
用户名:xqtesting
文章数:519
评论数:193
访问量:631160
注册日期:
阅读量:5863
阅读量:12276
阅读量:389470
阅读量:1080475
51CTO推荐博文
课程名称介绍(实际内容远大于这里介绍的)购买与观看地址【内容已全面升级】移动手机APP测试从零开始(初级篇)经典视频重现江湖,销量遥遥领先!近期讲升级视频内容,已购买的用户可以继续观看哦或者【内容已全面升级】移动手机APP测试从零开始(中级篇)或者【即将全面更新】移动手机APP测试从零开始(提升篇)此处内容将会有翻天覆地的变化,和老版完全不同,敬请期待或者依照环境安装配置那节笔记,我们已经把adb设为了环境变量,所以可以直接使用了1、启动与关闭adbadb kill-server&adb start-server&2、查看我们现在运行的devices列表因为我机器只启动了一个模拟器,所以只有一个device。3、&在Eclipse中运行Android程序必须得有Android源码工程。那如果只有apk文件,我们则可以用adb install、adb uninstall和am。3.1 安装先进入apk所在目录,然后用如下两种命令都可以上面这个是如果有多台模拟器或真机时使用,下面这个是只有一台的时候使用,后续的命令一样的道理,多台时需要使用-s参数指定device3.2 重新安装adb install -r AppTest.apk3.3 卸载如果用adb命令卸载,需要知道apk所在的包名,问开发即可。如果闲这个麻烦,在模拟器中卸载即可,和在真机中卸载方式一样一样的。以上是完全卸载,如果想保留数据和缓冲目录,只卸载应用程序,使用以下命令:adb uninstall -k com.example.apptest3.4 使用命令运行apk其中MainActivity是这个apk的主activity4 查看logcatadb logcat5、push和pull6、获取apk的package name出现上述情况的时候,再次输入su,同时要注意看手机上,会出现授权提示上图就是我们能看到的apk包名。详细命令如下adb&shellsucd&data/appls注释:第一行:进入adb命令行模式第二行:获取系统权限第三行:进入data/app&目录第四行:列出当前目录下的文件及目录&PS:adb命令列表下列表格列出了adb支持的所有命令,并对它们的意义和使用方法做了说明.Options-d仅仅通过USB接口来管理abd如果不只是用USB接口来管理则返回错误-e仅仅通过模拟器实例来管理adb如果不是仅仅通过模拟器实例管理则返回错误-s &serialNumber&通过模拟器/设备的允许命令号码来发送命令来管理adb (如&&emulator-5556&P)如果没有指定号码,则会报错Generaldevices查看所有连接模拟器/设备的设施的清单查看&Querying for Emulator/Device &Instances&获取更多相关信息help查看adb所支持的所有命令&version查看adb的版本序列号&Debuglogcat [&option&] [&filter-specs&]将日志数据输出到屏幕上&bugreport查看bug的报告,如dumpsys ,dumpstate ,和logcat&信息&jdwp查看指定设施的可用的JDWP信息可以用&forward jdwp:&pid&端口映射信息来连接指定的JDWP进程,例如:adb &forward tcp:8000 jdwp:472jdb -attach localhost:8000Datainstall &path-to-apk&安装Android为(可以模拟器/设施的数据文件.apk指定完整的路径)&pull &remote& &local&将指定的文件从模拟器/设施拷贝到计算机上&push &local& &remote&将指定的文件从计算机上拷贝到模拟器/设备中&Ports and Networkingforward &local& &remote&用本地指定的端口通过Socket方法远程连接模拟器/设施端口需要描述下列信息:tcp:&portnum&local:&UNIX domain socket name&dev:&character device name&jdwp:&pid&ppp &tty& [parm]&通过USB运行ppp:&tty& & the tty for PPP stream. For &exampledev:/dev/omap_csmi_ttyl.[parm]& &mdash zero or more PPP/PPPD options, such as defaultroute &,local , notty , etc.需要提醒的不能自动启动PDP连接&Scriptingget-serialno查看adb实例的序列号查看&Querying for Emulator/Device &Instances&可以获得更多信息get-state查看模拟器/设施的当前状态wait-for-device如果设备不联机就不让执行,也就是实例状态是&device&时可以提前把命令转载在adb的命令器中,在命令器中的命令在模拟器/设备连接之前是不会执行其他命令的,示例如下:adb wait-for-device shell getprop需要提醒的是,这些命令在所有的系统启动起来之前是不会启动adb的,所以在所有的系统启动起来之前也不能执行其他的命令,例如,运用install&的时候就需要Android包,这些包需要系统完全启动,例如:adb wait-for-device install &app&.apk上面的命令只有连接上了模拟器/设备连接上了adb服务才会被执行,而在Android系统完全启动前执行就会有错误发生Serverstart-server选择服务是否启动adb服务进程&kill-server终止adb服务进程&Shellshell通过远程Shell命令来控制模拟器/设备实例查看获取更多信息&for more informationshell [&shellCommand&]&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)随笔 - 13&
&&&&&&&&&&&
压力测试结果:CRASH:崩溃,应用程序在使用过程中,非正常退出ANR:Application Not Responding
MonkeyRunner APIs MonkeyRunner:用来连接设备或模拟器 MonkeyDevice:提供安装、卸载应用,发送模拟事件 MonkeyImage :完成图像保存,及对比的操作
Monkey:在adb shell中,生成用户或系统的伪随机事件MonkeyRunner:通过API定义特定命令和事件控制设备
MonkeyRunner提供了一系列的API
可以完成模拟事件及截图操作MonkeyScript是一组可以被Monkey识别的命令集合可以完成重复固定的操作
1.为什么要进行压力测试?App不稳定提高产品的留存率
2.什么时候开展压力测试首轮功能测试通过后下班后的夜间进行
如何实现自动化测试:模拟各种事件流
adb:Android Debug Bridgeadb与手机里的monkey进行通讯adb调试应用的入口
adb shell monkey 1000activityResuming(com.android.documentsui)表示app从前台调入后台...又从后台恢复到前台的过程
获取App包名adb logcat|findstr START (cmp后面的是app的包名)
给指定包打压力adb shell monkey -p package 1000
-v作用:命令行上的每一个-v都将增加反馈信息的详细级别比较常用的是-v -v -v ,即最多详细,一般会保存到指定文件中供开发人员查找bug原因时使用
--throttle参数指定事件之间的间隔adb shell monkey -p packagename --throttle 间隔毫秒
seed参数指定随机生成数的seed值如果用相同的seed值再次运行monkey,将生成相同的事件序列adb shell monkey -s&seed&&event-count&adb shell monkey -p com.bit_health.android -s
触摸事件设定触摸事件百分比adb shell monkey --pct-touch &percent&adb shell monkey -v -p com.bit_health.android --pct-touch 100 1000可以在输出结果中的Event percentages中查看是否是触摸事件百分百,0表示触摸事件
动作事件设定动作事件百分比adb shell monkey --pct-motion &percent&这里设定的百分比要与其他事件的百分比之和等于100adb shell monkey -v -p com.bit_health.android --pct-touch 50 --pct-motion 30 500
轨迹球事件设定轨迹球事件百分比adb shell monkey --pct-trackball &percent&
基本导航事件设定基本导肮事件百分比,输入设备的上、下、左、右adb shell monkey --pct-nav &percent&
主要导航事件设定主要导航事件百分比,兼容中间键、返回键、菜单按键adb shell monkey --pct-majornav &percent&
系统导航事件设定系统导航事件百分比,HOME、Back、拨号、音量键adb shell monkey --pct-syskeys &percent&
启动Activity事件设定启动Activity的事件百分比adb shell monkey --pct-appswitch &percent&
不常用事件设定不常用事件的百分比adb shell monkey --pct-anyevent &percent&
崩溃事件忽略崩溃和异常adb shell monkey --ignore-crashes &event-count&
超时事件忽略超时事件adb shell monkey --ignore-timeouts &event-count&如果发生了ANR事件,可以在手机中查看1.输入adb shell命令,进入到手机2.跳转anr目录,cd /data/anr/3.在anr目录中,more traces.txt 查看报错信息
Monkey Script1.DispatchTrackball命令轨迹球事件DispatchTrackball(long downtime,long eventide,int action,float x,float y,float pressure,float size,int metastate,float xprecision,float ypercision,int device,int edgeflags)
action 0代表按下,1代表谈起,x和y代表坐标点
2.DispatchPointer命令点击事件DispatchPointer(long downtime,long eventide,int action,float x,float y,float pressure,float size,int metastate,float xprecision,float ypercision,int device,int edgeflags)action 0代表按下,1代表谈起,x和y代表坐标点
3.DispatchString命令输入字符串事件DispatchString(String text)
4.LaunchActivity命令启动应用LaunchActivity(package,Activity)
5.UserWait命令等待事件UserWait(1000)
6.DispatchPress命令按下键值DispatchPress(int keycode)#keycode 66 回车键
实例:重复点击搜索100次1.启动App2.点击输入框3.输入查询词4.点击键盘的回车5.点击搜索按钮6.等待结果的出现7.点击clear按钮
手机不能执行电脑上的脚本将脚本push到手机中adb push mook.script /data/local/tmp/
之后执行adb shell monkey -f mook.script 2执行的效果是无法正确启动app(!!!)需要在mainfest清单文件中声明android:exported="true"意思是允许该activity被外部调用
使用monkey script编写脚本最大的困难是没有调试功能也没有截屏操作
MonkeyRunner1.MonkeyRunnner API-alert
void alert(String message,String title,String okTitle)
2.MonkeyRunner Api-waitForConnection
等待设备连接,有多个device id,需要指明具体哪个设备
waitForConnection(float timeout,String deviceid)
3.MonkeyDevice API -drag
drag(tuple start,tuple end ,float duration,integer steps)
start 起点位置
duration手势持续的时间
steps 插值点的步数,默认10
4.MonkeyDevice API -press 按键 press(String keycode,dictionary type) keycode名,Down,UP,DOWN_AND_UP 5.MonkeyDevice API -startActivity 启动应用 startActivity(package+'/'+activity)6.MonkeyDevice API - touch
touch(integer x,integer y,integer type)
x 坐标值, y坐标值
type:DOWN,UP,DOWN_AND_UP
7.MonkeyDevice API - type
type(String message)
8.MonkeyDevice API - takeSnapshot
MonkeyImage takeSnapshot()
9.MonkeyImage API - sameAs
boolean sameAS(MonkeyImage other,float percent) 10.MonkeyImage API - writetoFile
保存图像文件
void writetoFile(String path,String format)
阅读(...) 评论()51CTO学院-移动手机APP测试从零开始视频教程(初级篇)【小强测试出品】_文档下载
亿万文档 免费下载
当前位置: &
& 51CTO学院-移动手机APP测试从零开始视频教程(初级篇)【小强测试出品】
51CTO学院-移动手机APP测试从零开始视频教程(初级篇)【小强测试出品】
了解手机app测试的基本知识,以及常见的adb、monkey等命令用法
移动手机APP测试从零开始视频教程(初级篇)【小强测试出品】
了解手机app测试的基本知识,以及常见的adb、monkey等命令用法
非0年工作经验,有测试基础的
课程目标:
2.掌握移动手机app测试的方法
4.了解Android四大组件与生命周期
6.掌握自动化测试adb命令
适合对象:
有一定的移动互联网测试经验
认识移动互联网与职业发展
[免费观看]
app测试杂谈以及如何学习移动测试
[免费观看]
APP测试点总结
[免费观看]
各种云测大集合
Word文档免费下载: (下载1-2页,共2页)
51CTO学院-移动手机APP测试从零开始视频教程(提升篇)【小强测试出品】_计算机软件及应用_IT/计算机_专业资料。掌握基本测试框架的使用,如robotium、appium ...51CTO 学院 网址: 51cto 学院-零基础学习自动化测试之 QTP【小强测试出品】课程目标带领学员从基础开始一步步动手实践学习 QTP,掌握 QTP 的所有...51CTO学院-Jmeter性能测试全程实战视频课程【小强测试出品】_计算机软件及应用_IT/计算机_专业资料。熟练使用jmeter进行性能测试。51CTO 学院 网址: 51...51CTO学院-软件测试最佳实践【小强测试出品】_计算机软件及应用_IT/计算机_专业...51CTO学院-移动手机APP测... 暂无评价 2页 免费 测试工程师职业学习路线......51CTO 学院 网址: 51cto 学院-疯狂 LoadRunner 性能测试实战【小强测试出品】课程目标以最佳应用的角度来讲解 LoadRunner,帮助学员快速应用到实际工作...51CTO 学院 网址: 51cto 学院-测试环境搭建快速实战【小强测试出品】课程目标讲解了当前流行测试环境的搭建过程,包括但不限于 php、java、net 以及...51CTO学院-从零开始掌握Cocos2d-JS视频教程_计算机软件及应用_IT/计算机_专业资料。让学院充分了解Cocos2d-JS的使用方法和技巧。QQ/电话:400-851-9651 网址:edu...51CTO学院-性能测试之Resin性能调优视频课程【小强测试出品】_计算机软件及应用_IT/计算机_专业资料。熟悉resin,并独立进行性能方面的调优 ...51CTO学院-Unity3D实战技术视频教程(初级篇)_计算机软件及应用_IT/计算机_专业资料。通过本系列课程(初级、中级、进阶)的学习,真正做到无基础到游戏开发高手的人生...51CTO学院-测试工程师职业发展详谈【小强测试出品】_计算机软件及应用_IT/计算机_专业资料。明确自己的发展方向,跳槽目标,了解目前的薪资福利 ...android app性能监控工具,同时支持monkey测试
android app性能监控工具,同时支持monkey测试
发布时间: 3:33:25
编辑:www.fx114.net
本篇文章主要介绍了"android app性能监控工具,同时支持monkey测试",主要涉及到android app性能监控工具,同时支持monkey测试方面的内容,对于android app性能监控工具,同时支持monkey测试感兴趣的同学可以参考一下。
以一定的频率来监控app的cpu,内存,流量,电量等性能指标,输出到xls文件中。再通过xls软件即可方便的绘制出性能曲线,用于app客户端的性能测试。同时,该app支持对安装在手机里的app进行monkey测试,而不需要连接数据线通过adb工具来启动monkey测试。
程序实现的思路很简单
1、获取已安装的应用app list,排除系统应用,因为我们的目标是去测试各种应用app
2、上述app list中,选择一个待测试的app,即可进行手工测试,或者monkey测试,同时测试过程中自动采集相关的性能数据,cpu ,内存,流量,电量。
那么如何获取已安装应用的app list呢?
1、通过PackageManager的getInstalledApplications方法获取所有安装的app list
* get information of all applications.
* @param context
context of activity
* @return packages information of all applications
private List&ApplicationInfo& getPackagesInfo(Context context) {
PackageManager pm = context.getApplicationContext().getPackageManager();
List&ApplicationInfo& appList = pm
.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
return appL
2、过滤掉系统应用
* get information of all running processes,including package name ,process
* name ,icon ,pid and uid.
* @param context
context of activity
* @return running processes list
public List&Programe& getRunningProcess(Context context) {
Log.i(LOG_TAG, &get running processes&);
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List&RunningAppProcessInfo& run = am.getRunningAppProcesses();
PackageManager pm = context.getPackageManager();
List&Programe& progressList = new ArrayList&Programe&();
boolean launchT
for (ApplicationInfo appinfo : getPackagesInfo(context)) {
launchTag =
Programe programe = new Programe();
if (((appinfo.flags & ApplicationInfo.FLAG_SYSTEM) & 0)
|| ((appinfo.processName != null) && (appinfo.processName
.equals(PACKAGE_NAME)))) {
for (RunningAppProcessInfo runningProcess : run) {
if ((runningProcess.processName != null)
&& runningProcess.processName
.equals(appinfo.processName)) {
launchTag =
programe.setPid(runningProcess.pid);
programe.setUid(runningProcess.uid);
programe.setPackageName(appinfo.processName);
programe.setProcessName(appinfo.loadLabel(pm).toString());
if (launchTag) {
programe.setIcon(appinfo.loadIcon(pm));
progressList.add(programe);
return progressL
3、将上述app list放到listview中
private class ListAdapter extends BaseAdapter {
List&Programe&
int tempPosition = -1;
* save status of all installed processes
* @author andrewleo
class Viewholder {
TextView txtAppN
ImageView imgViAppI
RadioButton rdoBtnA
public ListAdapter() {
programe = processInfo.getRunningProcess(getBaseContext());
public int getCount() {
return programe.size();
public Object getItem(int position) {
return programe.get(position);
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
其中listview的每一个item中均有一个RadioButton,选中即可进行后续的操作,手工测试或者monkey测试。
那么又如何进行性能数据采集呢?
这就需要用到service了。被测程序启动的时候,同时启动监测service,该service负责相关数据的采集。
电量的监控,service注册一个电量变化时间的额广播接收器即可。
流量的监控,android2.2以上的版本,可以直接调用TrafficStats这个类读取app相关的流量值,包括上下行,总流量等。低于android2.2版本的手机,则需要读取系统文件。这个要根据不同的手机来区别对待,因为碎片化的原因,很多手机存放cpu 内存 流量等值的文件并不是在一个特定的目录。各有不同。
cpu监控,均是通过读文件的方式进行获取.
某一具体进程的cpu占用,可以在这个目录读取,/proc/processPid /stat
整个系统的cpu占用,可以在这个目录读取,/proc/stat
* read the status of CPU.
* @throws FileNotFoundException
public void readCpuStat() {
Log.i(LOG_TAG,&READ CPU ,PID=&+pid);
String processPid = Integer.toString(pid);
String cpuStatPath = &/proc/& + processPid + &/stat&;
// monitor cpu stat of certain process
RandomAccessFile processCpuInfo = new RandomAccessFile(cpuStatPath,
String line = &&;
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.setLength(0);
while ((line = processCpuInfo.readLine()) != null) {
stringBuffer.append(line + &\n&);
String[] tok = stringBuffer.toString().split(& &);
processCpu = Long.parseLong(tok[13]) + Long.parseLong(tok[14]);
processCpuInfo.close();
} catch (FileNotFoundException e) {
Log.e(LOG_TAG, &FileNotFoundException: & + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
// monitor total and idle cpu stat of certain process
RandomAccessFile cpuInfo = new RandomAccessFile(&/proc/stat&, &r&);
String[] toks = cpuInfo.readLine().split(&\\s+&);
idleCpu = Long.parseLong(toks[4]);
totalCpu = Long.parseLong(toks[1]) + Long.parseLong(toks[2])
+ Long.parseLong(toks[3]) + Long.parseLong(toks[4])
+ Long.parseLong(toks[6]) + Long.parseLong(toks[5])
+ Long.parseLong(toks[7]);
cpuInfo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
内存的监控,可以直接调用ActivityManager的getProcessMemoryInfo方法,然后然会PSS值。
* get the memory of process with certain pid.
* @param pid
pid of process
* @param context
context of certain activity
* @return memory usage of certain process
public int getPidMemorySize(int pid, Context context) {
Log.i(LOG_TAG,&GET PSS MEM,PID=&+pid);
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
int[] myMempid = new int[] { pid };
Debug.MemoryInfo[] memoryInfo = am.getProcessMemoryInfo(myMempid);
memoryInfo[0].getTotalSharedDirty();
// int memSize = memoryInfo[0].dalvikPrivateD
// TODO PSS
int memSize = memoryInfo[0].getTotalPss();
// int memSize = memoryInfo[0].getTotalPrivateDirty();
return memS
又如何做到定时采集呢?
直接在service启动的时候,调用一个timertask,或者用handler的postDelayed方法。其中task里面再次调用handler的postDelayed方法,即可做到定时采集。
private Runnable task = new Runnable() {
public void run() {
if (!isServiceStop) {
dataRefresh();
handler.postDelayed(this, delaytime);
Intent intent = new Intent();
intent.putExtra(&isServiceStop&, true);
intent.setAction(&com.klaus.test.myservice&);
sendBroadcast(intent);
stopSelf();
当然,这个service是前台运行的。在onstart函数中调用service的startForeground方法即可。
又是如何不通过数据线连接手机就可以执行monkey测试的呢?
直接在app中调用如下命令行即可
String cmd = &monkey -p &+packagename+& -s
--pct-touch &+touchevent+& --pct-motion &+motionevent+& & &--throttle 500 &1000000&;
当然需要在su模式下才能运行。
android自带的monkey测试,以前都是通过adb shell去驱动的,现在直接在手机里运行,不再通过adb桥接。
主线程UI,service,monkey线程,如何通信?
通过Handler机制进行通信,通过handler,三者可以进行通信。
版权声明:本文为博主原创文章,未经博主允许不得转载。
本文标题:
本页链接:Android稳定性测试利器-Monkey介绍及环境配置
一、什么是Monkey
Monkey是Android中的一个命令行工具,可以运行在Android模拟器或手机设备中。它向系统发送伪随机的用户事件流(如屏幕的点击、滑动和系统按键操作等),实现对正在开发的app进行压力测试。Monkey主要用于对android系统中开发的app进行稳定性测试。
Monkey在使用时需要通过USB将手机设备与PC相连,在PC端使用Adb shell命令调用设备端的Monkey程序,设备端的Monkey程序自己生成随机的操作序列来执行。
二、Monkey的特征
Monkey包括许多选项,它们大致分为三大类:
& 基本配置选项,如设置事件数量。
& 设置操作事件类型和频率。
& 记录运行过程中遇到的崩溃或者ANR信息。
在Monkey运行的时候,会对测试中的系统进行监测,针对特殊情况进行特殊处理,主要包括以下三种:
& 如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。
& 如果应用程序崩溃,Monkey将停止并报错。
& 如果应用程序产生了ANR的错误,Monkey将会停止并报错。
按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。
三、Monkey的运行环境搭建
1. 首先搭建monkey的运行环境
在Windows下基于SDK下载:下载AndroidSDK并在windows下安装的官网地址请参照:/intl/zh-cn/sdk/index.html#Other,截图如下:
2. 设置sdk下面tools的环境变量
下载安装完成后,鼠标右击“计算机”-》属性-》高级系统设置-》环境变量-》
点击Path,将platform-tools文件所在路径添加到环境变量中,例如:“E:\android-sdk-windows\platform-tools”添加到变量值中,与之前的变量值用分号隔开。如下图示例:
3. 下载安装JDK ,下载完成之后点击安装,并且配置JDK的环境变量,具体方法网上很多资料,大家可以参考。2
4. 设置完成后,进行测试。
1).通过USB 将手机连接电脑 。
2).电脑端点击菜单上的开始键-&运行,或者使用快捷键(WIN+R),输入cmd,打开电脑的DOS命令行。如下图:
3).接下来在命令行中输入运行monkey的命令。
如:adb shell monkey –p sogou.mobile.explorer –v 1000
其中:sogou.mobile.explorer为需要测试的应用程序包名。
输入命令点击回车,如果被测试的包被调起运行,到此环境搭建完毕!
关注我 微信号: 搜狗测试
关注下,有惊喜!微信搜索公众号:meitianyixi
扫一扫有惊喜

我要回帖

更多关于 adb monkey 的文章

 

随机推荐