Android测试开发环境(含ADB和Monkey)
来源:互联网 发布:单片机乐谱 编辑:程序博客网 时间:2024/05/01 23:55
1、Android开发的三种环境
1.1、Android Studio
AndroidStudio 是Google 官方在2013 Google I/O 大会上发布的Andrid 开发IDE,专门用于开发Android项目,安装包里集成了Android SDK,不需再安装ADT,是目前主流的Android应用开发环境。
1.2、Eclipse+Android SDK+ADT
Eclipse默认只能用于开发普通的JAVA应用程序,AndroidSDK提供了开发Android应用程序所需的API库和构建、调试Android应用程序所需的开发工具
如果要通过Eclipse来开发Android应用程序,就需要另外安装AndroidSDK,默认情况下Eclipse不会和Android SDK进行关联。为了两者连接起来,Android的开发团队专门针对Eclipse IDE定制了一个插件:Android Development Tools(ADT),ADT也需要单独安装,安装完成之后在Eclipse里经过一系列的配置,这套Android开发环境就完成了。
1.3、ADT
集成式的安卓开发工具,安装包中包含了Eclipse和Android SDK,而且是默认关联的。
2、搭建ADT
2.1、安装JDK
如果机器是32位的就32位JDK,如果机器是64位的就安装64位JDK,安装完成后要配置环境变量JAVA_HOME和PATH。
2.2、安装ADT
解压到某个目录下就可以了,同样区分32位和64位,安装完成之后需要配置ANDROID_HOME(***\adt-bundle-windows-x86_64-20140321\sdk)和PATH(%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools\android-4.4.2;)。
2.3、连接真机或者启动模拟器
如果是连接真机就需要手机打开USB调试模式,并通过数据线与电脑连接
如果是使用模拟器不需要做以上工作,启动模拟机就可以了。
3、Android模拟器
3.1、原生态模拟器
只要第二章节的ADT安装配置完成,就可以在dos里通过androidavd启动Android虚拟设备管理器。
3.2、非原生模拟器
使用最广泛的就是Genymotion模拟器,是运行最快Android模拟器,也有使用夜神模拟器的,安装启动后的操作方法和原生模拟器差别不大。
4、ADB命令实战
全称是AndroidDebug Brige,就是起个桥梁连接的作用,是Android SDK提供的Debug工具。借助ADB工具,我们可以管理终端设备或模拟器的状态,进行很多操作,如安装APP、升级、运行Shell命令登录。如果是终端设备,ADB就是连接Android手机与PC的桥梁,可以让用户在电脑上对手机进行全面操作;如果是模拟器,adb也可以对模拟器进行操作。
5、uiautomatorviewer
uiautomatorviewer是Android SDK提供的一个GUI工具,在**/tools/目录下。使用uiautomatorviewer可以从PC端获取一个设备或APP的UI布局结构,并且可以查看各个控件的相关属性。这是非常重要的,特别是当编写UI自动化测试代码时,就可以使用该工具获取APP的UI界面中的元素属性。
1、使用uiautomatorviewer之前必须要连接一个模拟器或真机,而且最好只有一个。
2、启动uiautomatorviewer的GUI工作界面,启动后点击左起第二个图标DeviceScreeshot,就可以捕捉到当前已连接设备的UI界面;如果要检查其他APP或其他页,就操作连接设备,然后再点击图标DeviceScreeshot重新捕获。
3、左侧是捕获到的设备或APP的某一页,可以移动鼠标选择某一个控件,右侧上方显示当前界面的布局结构,右侧下方显示所选控件的属性。点击右侧上方的黄三角按钮可以来查看不能被测试工具(如uiautomator)访问到的控件,因为这些控件只设置了有限的属性,。这种情况下你可以要求开发者为这些控件添加必要的属性,比如如果是ImageView或者ImageButton应该添加android:contentDescription属性。
如果就可以获取被点击区域的控件属性了,为实现UI自动化做准备。但如果想要知道他是如何和手机设备通信,然后获取控件信息的,就需要反编译uiautomatorviewer.jar,从源码了解它的原理。
6、Android测试之工具
6.1、monkey介绍
monkey是Android SDK中自带的一个命令行工具,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar;可以通过开发机器上的命令行或脚本来启动。Monkey表面上运行在开发机器上,其实是运行在模拟器/真实终端设备的adb shell中中,所以必须用其环境中的shell(/system/bin/monkey)来运行,可以通过在每条命令前加上adb shell来达到目的,也可以进入Shell后直接输入Monkey命令。
Monkey测试一般是在产品功能稳定之后进行,专擅于对APP作长稳测试。
通过monkey命令可以模拟用户向目标程序发送随机的事件流,效果等同于手动操作APP,并产生对应的日志,开发测试人可以通过分析monkey日志定位测试过程中出现的问题,实现对APP的自动化和压力测试。
6.1.1、Monkey支持的事件
Monkey支持11种事件,主要是以下5种.....
Touch触摸事件 由屏幕中的一个down-up事件,即在屏幕某处按下并抬起的操作
Trackball滚动球事件 由一个或多个随机的移动事件组成,有时会伴随着点击事件
motion滑动事件 由屏幕上某处一个down事件、一系列随机的移动事件和一个up事件组成
nav基本导航事件 由方向输入设备的上下左右按键所触发的事件组成
majornav主要导航事件 通常会导致UI界面中的动作事件,如5-way键盘的中间键,回退 按键、菜单按键
6.1.2、Monkey测试的特征
1、测试的对象仅为应用程序包,有一定的局限性
2、使用的事件流都是随机产生的,不能自定义也不含任何的主观性
3、可以对测试的事件数量、类型和频率等参数进行设置
6.2、monkey命令讲解
Monkey一般是产品相对稳定之后使用,使用步骤:
1、启动模拟器或者连接真机,使用adbdevices验必须是device状态
2、确定被测试应用的PackageName
3、开始使用monkey发送测试命令(通过adbshell或者先进入设备的shell环境)。
当通过开发机器上的命令行(如dos)运行monkey命令时,基本语法如下:
约束选项:
-p PackageName 指定一个包名,每个Android应用都有一个唯一的包名,指定之后
Monkey将只允许系统启动这个包里的Activity。如果应用程序还需要访
问其它包里的Activity(如选择取一个联系人),那些包也需要在此同时指
定(使用多个 -p选项,每个-p选项只能用于一个包)。如果不指定任何
包,Monkey将允许启动设备系统全部包里的Activity。
常用选项:
用于指定反馈信息级别,就是日志的详细程度,总共分3个级别,
-v 仅提供启动提示、测试完成和最终结果等少量信息;
–v -v 提供较为详细的日志,包括每个发送到Activity的事件信息;
–v -v –v 提供最详细的日志,包括了测试中选中/未选中的Activity信息
事件选项:
--throttle 毫秒 每两组事件流(一个touch事件流有一个action-up和一个action-down
组成)之间sleep一段时间,模拟用户的真实使用场景,只有在俩v或三
v时才生效;如果不指定,系统会尽快的发送事件流,造成太大压力也
不便于观察。
-s seed值 如果指定了伪随机数生成器的seed值,就会产生固定事件流,如果用
相同的seed值再次运行Monkey,它将生成相同的事件序列。如果不指
定,seed值就随机产生,事件流也是随机产生的
--pct-touch * 指定触摸/点击事件在事件流中的百分比
--pct-trackball * 指定滚轮事件在事件流中的百分比
--pct-motion * 调整motion事件在事件流中百分比。
--pct-nav * 调整基本导航事件在事件流中百分比。
--pct-majornav 调整主要导航事件在事件流中的百分比
调试选项:
--ignore-crashes 通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。
如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
--ignore-timeouts 通常,当应用程序发生任何超时错误(如“Application Not Responding”
对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向
系统发送事件,直到计数完成。
--monitor-native-crashes 监视并报告Android系统中本地代码的崩溃事件
随机事件数: 最后指定
6.3、monkey日志分析和案例分析
6.4、Python+monkey自动化实战
#coding=gbkimport os #import 导入一些系统设置import os.path ##第一步##获取正在连接的设备并存入ds[]数组中os.system("cls") #os.popen(): 执行系统命令,和os.system功能类似print "adb devices检查设备..." #print: 向屏幕输出信息,参数可以是数组或字符串 rt = os.popen('adb devices').readlines() #popen的readlines属性: 把输出的每一行信息(连续多个空行就用一个'\n'代替)当做一个元素,生成一个数组并返回n = len(rt) - 2 #len(): 如果是数组就计算元素个数,-2是因为第一行不是设备,最后一个是'\n'print rt print "检测到" + str(n) + "台设备:" #str(): 如果参数是数值,就转换成字符串if n == 0:print "python结束运行......"exit()ds = range(n) #range(): range(1,5)返回从1到4的数组;range(5)返回从0到4的数组,python的数组是可变的 for i in range(n): #for..in..: 遍历数组逐个循环,这段循环的作用就是把检测到的所有设备赋值到ds[]数组中,并逐个打印出来nPos = rt[i+1].index("\t") # '\t' 制表符,作用是换行显示 ds[i] = rt[i+1][:nPos] print str(i+1) + " - " + ds[i]print " "##第二步##从ds[]数组选择一个设备存入dev中nSel = 1if n == 1: #if或for语句块 没有结束标志,语句块内每行必须一个tab键(不能用空格)缩进,某一行不缩进就代表语句块结束了。 dev = ds[0]elif n > 1:nSel = input("选择设备编号:") #input(): 返回数值类型,如int,floatdev = ds[nSel-1]##第三步##这以上的代码就为了获取这个34行的dev,以下代码是创建***.cmd文件 fn = raw_input("输入文件(夹)名:") #raw_input(): 返回字符串类型,如stringif not os.path.isdir("D:\\" + fn): #os.path.isdir(): 判断文件夹是否存在,返回boolean值 os.mkdir("D:\\" + fn) #os.mkdir(): 创建文件夹fd = open(fn + '.cmd', 'w') #open(): 打开文件,返回文件句柄fd.write("@set number=0\n")#set在dos里定义变量fd.write(":loop\n")#cmd脚本的标签,与goto语句一起使用fd.write("adb -s ")#指定设备的命令fd.write(dev)fd.write(" shell monkey -p com.android.browser --monitor-native-crashes --pct-touch 80 --pct-motion 15 \--pct-nav 5 -s %random% -v -v --throttle 500 320000 >d:\\")#-s %random%的意思是防止产品相同的时间避免重复执行同一种动作fd.write(fn)fd.write("\\%random%.log\n")fd.write("@ping -n 15 127.1 >nul\n")#ping自己15次用来延迟fd.write("adb -s ")fd.write(dev)fd.write(" reboot\n")#reboot指定的真机或模拟器,模拟器可能无法重启fd.write("@ping -n 100 127.1 >nul\n")fd.write("@set /a number=number+1\n")#dos里/a是加,/y是复制fd.write("@if %number%==5 exit\n")#pause是按任意键继续......fd.write("@goto loop")fd.close() #关闭文件 print "批处理生成完毕"
Second、执行cmd脚本
Third、Windows计划任务
7、查看APP的Package Name和入口Activity
- Android测试开发环境(含ADB和Monkey)
- Android App压力测试(Monkey和ADB)
- Android Monkey测试入门-2-ADB安装和卸载命令
- 玩转Android monkey之环境配置和ADB命令
- Android自动化测试手段之Monkey(adb shell monkey)
- Android自动化测试手段之Monkey(adb shell monkey)
- Android自动化测试手段之Monkey(adb shell monkey)
- adb环境搭建和monkey操作流程
- monkey 测试 adb shell monkey
- android自动化测试(1)-----ADB、monkey、monkeyRunner自动化测试android-sdk配置
- Android monkey和monkeyrunner测试
- Android自动化测试框架开发(二)Monkey、MonkeyRunner介绍和分析
- Android开发中的压力测试工具Monkey
- Android Monkey测试apk的开发
- android测试之一:测试环境ADB搭建
- monkey测试环境搭建
- monkey测试环境搭建
- Monkey测试环境搭建
- STL之set
- PHP操作sql数据库
- Anroid中MediaMuxer,MediaCodec,MediaExtractor用例
- iOS报-[__NSDictionaryI objectAtIndexedSubscript:]: unrecognized selector sent to instance 0x15f762920
- java中的compareto方法
- Android测试开发环境(含ADB和Monkey)
- C语言实践(第四周)
- 剑指Offer---面试题37:两单链表中第一个公共节点
- 搞懂unix、linux、ios、android的大致区别
- Error occured processing XML 'Cannot find class [springmvc.extention.BeanArgumentResolver]
- D3设置绝对定位与获取百分比长度的具体值
- 问题:LINUX通过网站解压zip覆盖网站进行升级失败,忘记apache授权
- Android adb 启动应用
- 路由策略和策略路由配置与管理-2