monkey test——学习资料
出处:
http://www.testwo.com/blog/6107
http://www.testwo.com/blog/6146
http://www.testwo.com/blog/6188
------------------------
Android的测试环境搭建——Mr.Monkey 移动测试培训课后总结(一)
2012-10-29 白云
一、相关概念及名词解释
- SDK根目录下有一个docs文件夹,docs下有一个offline.html即Android SDK的document;
- platform-tools下的adb的命令(android的安装等其他命令都会用到adb);
- tools下的emulator(Android模拟器);
- tools下的hierachyviewer、hprof-conv、monkeyrunner、ddms这几个批处理;
- 根目录下的AVD Manager,用来配置模拟器各项参数;
- SDK Manager,执行后得到Android的各个SDK版本。(Tips:SDK所在的目录不要有中文)。
Android系统和应用介绍及工具实践——Mr.Monkey 移动测试培训课后总结(二)
2012-11-05 白云
- 借助adb的一些命令
- 放到手机的sd卡中,通过手机的文件浏览器点击apk直接安装
- 借助一些工具,豌豆荚、91助手等

通过网上的一些反编译工具,反编译apk可以直接得到apk的源码,现在多数公司使用了Android的混淆编译,则反编译apk只能得到一堆乱码,无法看到源码结构。
res/drawable/icon.png 尝试:解压apk后,将icon.png换掉,再去重新安装apk,看下图标是否会变掉。
其余文件或文件夹为测试的非重点部分。
三、Android模拟器
进入sdk文件夹,双击AVD Manager.exe打开Android Virtual Device Manager窗口,点击“New”按钮,弹出Create new Android Virtual Device(AVD)窗口,“Name”为模拟器的名字;“Target”为模拟Android的哪个环境;SD Card的size为模拟手机SD卡的容量,通常无需设置;“Skin”为分辨率设置;Hardware通用不到,若测试到特殊功能重力感应等,可以设置。

设置完成后,点击“Create AVD”,则可以创建模拟器。新建成功后如下图:

可以在list中看到刚刚新建的模拟器,选中该模拟器,点击“Start”弹出如下窗口:

display to real size希望模拟器的屏幕调整到适应显示器的size,通常不需选中,点击“Launch”,模拟器显示如下:

tips:ctrl+f12切换模拟器的横竖屏.
四:Android的adb tool

使用命令:adb devices,如果环境设置成功,可以看到一个devices的list:

该list的三个状态:
- device:识别到设备并且是启动状态;
- no device:没有连接手机或者模拟器;
- offline:设备无法识别,adb命令工作不正常,模拟器长时间无响应,adb kill-server回车,重新执行adb devices 重启adb服务,从offline变为device。
把apk放到platform-tools文件夹下,adb install xxx.apk 有解压和安装的过程,最后给出success提示。

tips:要安装的apk文件名中不能有空格,如果带有空格会认为指定了多个文件(too many files specfied;only takes APK file and verifier file.),则无法安装成功。
如果一台电脑连接了多台设备(手机或者模拟器),执行adb install时会提示有多个devices,需指定一个device
adb -s emulator-5554 install xxx.apk 该指令表示xxx.apk该应用装到emulator-5554这个设备里。
-s即为设备指定。
adb install 的apk不是系统原生的apk,是把第三方apk装入设备来使用,安装进去的apk是在data目录中,使用adb shell 进入data所在的目录

第三方apk安装在data/app下(在此文件夹下显示的为包名,即开发定义的app package name,一般来讲是com.(公司名).(app name)),原生系统应用安装在system/app下
adb push 假设安卓系统有root权限,第三方应用需要模拟该应用被合到rom中,rom恢复出厂设置后仍有这个应用,把该apk push到system/app下,操作如下:把该apk放到platform-tools目录下,执行adb push xxx.apk system_app,该apk是原生存在于系统中而非用户安装的。
adb pull 将原生apk拿出 adb pull xxx.apk windows指定目录
tips:此时要注意退出adb shell环境(ctrl+c),在命令行下执行该操作。(注意该apk要带全路径)
测试中最常用的命令:adb logcat 查看系统所有日志,用来调试和查看APP的日志。
hprof converter
hprof是一个以.hprof结尾的文件,该文件是查内存时使用dump的命令,dump下来的一个文件即hprof(查看内存泄露)
通过如下方法得到hprof文件(hprof无法直接查看,需要下载MAT插件,查看时仍然会提示无法查看,需要使用命令hprof-conv a.hprof b.hprof,将a.hprof文件进行转换查看,转换后的hprof文件也会保存在tools文件夹下):
- Android默认有一个工具ddms,直接dump下来 hprof文件(选中进程,点击DUMP HPROF file)
- Android自带的工具Monkey
安装MAT插件的方法:
- 进入Eclipse-->Help-->Install new software,add MAT的下载链接,如下图:

- 选中需要下载的插件,点击“Next”,进行安装;
- 重启Eclipse,在Window/Preferences窗口下会多出一个 Memory Analyzer项:如下图:

PS:以上MAT插件的安装步骤是从网上搜的。
open file 打开hprof-convz转换后的.hprof文件,会自动调用mat打开。

下面即为logcat,主要关注红色error的log。
六、Hierarchy Viewer
sdk/tools/hierarchyviewer.bat 双击该批处理文件打开Hierarchy Viewer:


可以得到当前选中控件的id,可得到对应界面的按钮。三种颜色代表该控件整个生命周期的内存占用率。
点击黑色标注的进程,点击“Inspect Screenshot”得到一个从0%到200%的扩展界面,精细到界面的每个像素。
-------------------------
Monkey test——Mr.Monkey 移动测试培训课后总结(三)
2012-11-15 白云
希望对大家还有帮助。。
- Android的SDK 里面,Monkey的tools是一个命令行工具,当连接Android设备时,只要在命令行里输入相应命令就能运行tools;
- Monkey test是一项压力测试,可以在规定的次数范围内做任何随机的操作,随机操作包括点击、滑动、Application切换、横竖屏、应用关闭等等,用户能做的操作统统可以模拟;
- Monkey test跑出来crash的bug等级永远为1,版本release前,Monkey跑出的结果中crash要为0。业内标准:final release前,Monkey跑完的总次数应为25W次,其结果里不允许有nullPointException出现.




-v -v -v 日志级别为level 2 日志的详细程度越来越详细



备注:activity和service的区别,activity是android应用的核心概念,简而言之activity为用户交互管理者,有一个可视界面呈现,而service是在后台运行,没有界面呈现。
五、Monkey test实例2
想要跑完脚本后再去总结过程中出现的crash或者系统无响应,需要指定参数--ignore-crashes --ignore-timeouts,若不指定,遇到问题就会停止运行,效率会降低。
当且仅当设备有滚轮时需要设定--pct-trackball,如果没有滚轮需设置为0。
monkey可以不指定-p后的应用,若为了有针对的跑需要指定。
六、检查结果

查找关键字crash
//sending event表示目前已经执行的测试次数
查看有效crash,注意crash:后的进程(pid),及其后的package name是被测对象;java.lang.NullPointerException下会给出错误在开发工程中的第几行。
tips:指定要保存log的路径(> d:\test.txt)可以进入D盘下的test.txt进行crash关键字的筛选
注意事项:
- 在进行monkey的测试时,最好不进行adb的操作;
- 跑monkey时需要记录3个log,monkey的log(重新指向到某个txt中),dump system的log(查看系统占有),android本身的log logcat。
monkey test——学习资料的更多相关文章
- webapi的学习资料
猿教程_-webapi教程-WebAPI教程 猿教程_-webapi教程-Web API概述 猿教程_-webapi教程-新建Web Api项目 猿教程_-webapi教程-测试Web API 猿教程 ...
- netty学习资料
netty学习资料推荐官方文档和<netty权威指南>和<netty in action>这两本书.下面收集下网上分享的资料 netty官方参考文档 Netty 4.x Use ...
- iOS 开发学习资料整理(持续更新)
“如果说我看得比别人远些,那是因为我站在巨人们的肩膀上.” ---牛顿 iOS及Mac开源项目和学习资料[超级全面] http://www.kancloud.cn/digest/ios-mac ...
- 最新JavaScript、Ajax典藏级学习资料下载分类汇总 (2011年12月21日更新)
其他网站开发相关资料 超强HTML和xhtml,CSS精品学习资料下载汇总 最新htm ...
- VC++/MFC(VC6)开发技术精品学习资料下载汇总
工欲善其事,必先利其器,VC开发MFC Windows程序,Visual C++或Visual Studio是必须的,恩,这里都给你总结好了,拿去吧:VC/MFC开发必备Visual C++.Visu ...
- C/C++编程语言学习资料尽收眼底 电子书+视频教程
Visual C++(VC/MFC)学习电子书及开发工具下载请看这里 史无前例的网络最全最强C/C++资料索引: C/C++编程语言学习资料尽收眼底 电子书+视频教程 VC++/MFC(VC6)开发技 ...
- yaf学习资料
yaf学习资料 文档 鸟哥的官方文档 Yaf框架结合PHPUnit的集成测试 php yaf框架扩展实践六--单元测试.计划任务.第三方库等 php yaf框架扩展实践一--配置篇 yaf实战例子 y ...
- [整理]FPGA学习资料汇总
01.特权同学倾情奉献海量FPGA学习资料 http://pan.baidu.com/s/1pJIb32F
- Python学习资料下载地址(转)
[转]Python学习资料和教程pdf 开发工具: Python语言集成开发环境 Wingware WingIDE Professional v3.2.12 Python语言集成开发环境 Wingwa ...
随机推荐
- PHP读取xml并写入数据库示例
<?php $xml = simplexml_load_file('books.xml'); // print_r($xml); // echo "<br/>"; ...
- C#实现鼠标滚筒缩放界面的效果
elementCanvas继承UserControl 声明属性: #region 缩放属性添加 float ratio = 1.0f; public float Ratio { set { ratio ...
- 移动端真机debug调试神器 vConsole学习(一)之基础
参考 使用方法 移动端真机debug调试神器 vConsole的引入说明(原生态与WebPack) 移动端使用vconsole调试console vConsole ——开源的前端 console 调试 ...
- B-Tree和 B+Tree的数据存储结构
B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引.B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的.在讲B ...
- java实现spark常用算子之Repartitions
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- js之数据类型(对象类型——构造器对象——函数1)
函数它只定义一次,但可能被多次的执行和调用.JavaScript函数是参数化的,函数的定义会包括形参和实参.形参相当于函数中定义的变量,实参是在运行函数调用时传入的参数. 一.函数定义 函数使用fun ...
- css 单位
CSS 有几个不同的单位用于表示长度. 一些设置 CSS 长度的属性有 width, margin, padding, font-size, border-width, 等. 长度有一个数字和单位组成 ...
- element-ui 表格可编辑添加删除
<template> <div id="Cold_all"> <div class="Cold_Left"> <el- ...
- 实现单点登录功能的思路以及kafka同步数据
单点登录以及用户数据同步思路与方案 当公司业务分布于多个子系统时, 同一用户在A系统注册,即可在其他所有关联系统使用, 并支持登录A系统后,自动在其他系统登录,退出同理. 在A平台修改通用的用户数据( ...
- java_day09_GUI事件
第九章:GUI事件 1.AWT事件模型概述 使用AWT或者Swing中的容器.组件和布局管理器就可以构建出图形界面,但是这时候该界面还并不能和用户进行交换,因为图形界面中的组件还没有添加事件监听器,所 ...