Android测试及其相关工具的使用.docx

上传人:b****1 文档编号:3327080 上传时间:2023-05-05 格式:DOCX 页数:41 大小:368.18KB
下载 相关 举报
Android测试及其相关工具的使用.docx_第1页
第1页 / 共41页
Android测试及其相关工具的使用.docx_第2页
第2页 / 共41页
Android测试及其相关工具的使用.docx_第3页
第3页 / 共41页
Android测试及其相关工具的使用.docx_第4页
第4页 / 共41页
Android测试及其相关工具的使用.docx_第5页
第5页 / 共41页
Android测试及其相关工具的使用.docx_第6页
第6页 / 共41页
Android测试及其相关工具的使用.docx_第7页
第7页 / 共41页
Android测试及其相关工具的使用.docx_第8页
第8页 / 共41页
Android测试及其相关工具的使用.docx_第9页
第9页 / 共41页
Android测试及其相关工具的使用.docx_第10页
第10页 / 共41页
Android测试及其相关工具的使用.docx_第11页
第11页 / 共41页
Android测试及其相关工具的使用.docx_第12页
第12页 / 共41页
Android测试及其相关工具的使用.docx_第13页
第13页 / 共41页
Android测试及其相关工具的使用.docx_第14页
第14页 / 共41页
Android测试及其相关工具的使用.docx_第15页
第15页 / 共41页
Android测试及其相关工具的使用.docx_第16页
第16页 / 共41页
Android测试及其相关工具的使用.docx_第17页
第17页 / 共41页
Android测试及其相关工具的使用.docx_第18页
第18页 / 共41页
Android测试及其相关工具的使用.docx_第19页
第19页 / 共41页
Android测试及其相关工具的使用.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Android测试及其相关工具的使用.docx

《Android测试及其相关工具的使用.docx》由会员分享,可在线阅读,更多相关《Android测试及其相关工具的使用.docx(41页珍藏版)》请在冰点文库上搜索。

Android测试及其相关工具的使用.docx

Android测试及其相关工具的使用

 

Android测试及其相关工具的使用

 

1.Android自动测试之Monkey

1.1.什么是Monkey

Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。

它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。

Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

1.2.Monkey的特征

1、测试的对象仅为应用程序包,有一定的局限性。

2、Monky测试使用的事件流数据流是随机的,不能进行自定义。

3、可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

1.3.Monkey的基本用法

基本语法如下:

$adbshell

monkey[options]

如果不指定options,Monkey将以无反馈模式启动,并把事件任意发送到安装在目标环境中的全部包。

下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:

$adbshell

monkey-pyour.package.name-v500

下面的是更加具体的命令行示例:

$adbshell

monkey-s12--throttle450-p包名--kill-process-after-error--ignore-timeouts--ignore-security-exceptions-v10000

1.4.关于Monkey测试的停止条件

MonkeyTest执行过程中在下列三种情况下会自动停止:

1、如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。

2、如果应用程序崩溃或接收到任何失控异常,Monkey将停止并报错。

3、如果应用程序产生了应用程序不响应(applicationnotresponding)的错误,Monkey将会停止并报错。

通过多次并且不同设定下的Monkey测试才算它是一个稳定性足够的程序。

1.5.Monkey命令参数介绍

1)参数:

-p

参数-p用于约束限制,用此参数指定一个或多个包(Package,即App)。

指定

包之后,Monkey将只允许系统启动指定的APP。

如果不指定包,Monkey将允许系统启动设备中的所有APP。

*指定一个包:

adbshellmonkey-pcom.htc.Weather100

说明:

com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

*指定多个包:

adbshellmonkey-pcom.htc.Weather–pcom.htc.pdfreader-pcom.htc.photo.widgets100

*不指定包:

adbshellmonkey100

 说明:

Monkey随机启动APP并发送100个随机事件。

*要查看设备中所有的包,在CMD窗口中执行以下命令:

>adbshell

#cddata/data

#ls

2)参数:

-v

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:

日志级别Level0

示例adbshellmonkey-pcom.htc.Weather–v100

说明缺省值,仅提供启动提示、测试完成和最终结果等少量信息

日志级别Level1

示例adbshellmonkey-pcom.htc.Weather–v-v100

说明提供较为详细的日志,包括每个发送到Activity的事件信息

日志级别Level2

示例adbshellmonkey-pcom.htc.Weather–v-v–v100

说明最详细的日志,包括了测试中选中/未选中的Activity信息

3)参数:

-s

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。

*示例:

 Monkey测试1:

adbshellmonkey-pcom.htc.Weather–s10100

Monkey测试2:

adbshellmonkey-pcom.htc.Weather–s10100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。

操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

4)参数:

--throttle<毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒;

*示例:

adbshellmonkey-pcom.htc.Weather–throttle3000100

5)参数:

--ignore-crashes

用于指定当应用程序崩溃时(Force&Close错误),Monkey是否停止运行。

如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

*示例1:

adbshellmonkey-pcom.htc.Weather--ignore-crashes1000

测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

*示例2:

adbshellmonkey-pcom.htc.Weather1000

测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

6)参数:

--ignore-timeouts

用于指定当应用程序发生ANR(ApplicationNoResponding)错误时,Monkey是否停止运行。

如果使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。

7)参数:

--ignore-security-exceptions

用于指定当应用程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。

如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。

8)参数:

--kill-process-after-error

用于指定当应用程序发生错误时,是否停止其运行。

如果指定此参数,当应用程序发生错误时,应用程序停止运行并保持在当前状态(注意:

应用程序仅是静止在发生错误时的状态,系统并不会结束该应用程序的进程)。

9)参数:

--monitor-native-crashes

用于指定是否监视并报告应用程序发生崩溃的本地代码。

10)参数:

--pct-{+事件类别}{+事件类别百分比}

用于指定每种类别事件的数目百分比(在Monkey事件序列中,该类事件数目占总事件数目的百分比)

参数:

使用说明:

示例:

--pct-touch{+百分比}

调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)

adbshellmonkey-pcom.htc.Weather--pct-touch101000

--pct-motion{+百分比}

调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成)adbshellmonkey-pcom.htc.Weather--pct-motion201000

--pct-trackball{+百分比}

调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)

adbshellmonkey-pcom.htc.Weather--pct-trackball301000

--pct-nav{+百分比}

调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

adbshellmonkey-pcom.htc.Weather--pct-nav401000

--pct-majornav{+百分比}

调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:

5-way键盘的中间按键、回退按键、菜单按键)

adbshellmonkey-pcom.htc.Weather--pct-majornav501000

--pct-syskeys{+百分比}

调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、StartCall、EndCall及音量控制键)

adbshellmonkey-pcom.htc.Weather--pct-syskeys601000

--pct-appswitch{+百分比}

调整启动Activity的百分比。

在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法

adbshellmonkey-pcom.htc.Weather--pct-appswitch701000

--pct-anyevent{+百分比}

调整其它类型事件的百分比。

它包罗了所有其它类型的事件,如:

按键、其它不常用的设备按钮、等等

adbshellmonkey-pcom.htc.Weather--pct-anyevent1001000

指定多个类型事件的百分比:

adbshellmonkey-pcom.htc.Weather--pct-anyevent50--pct-appswitch501000

注意:

各事件类型的百分比总数不能超过100%

 

2.Android自动测试之monkeyrunner

2.1.什么是monkeyrunner

monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。

通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。

monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。

monkeyrunner与Monkey的差别

Monkey:

Monkey工具直接运行在设备或模拟器的adbshell中,生成用户或系统的伪随机事件流。

monkeyrunner:

monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。

2.2.monkeyrunner的测试类型

网络释义:

1、多设备控制(Multipledevicecontrol):

monkeyrunnerAPI可以跨多个设备或模拟器实施测试套件。

您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。

您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。

2、功能测试(Functionaltesting):

monkeyrunner可以为一个应用自动贯彻一次功能测试。

您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。

3、回归测试(Regressiontesting):

monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。

4、可扩展的自动化(Extensibleautomation):

由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。

除了使用monkeyrunnerAPI之外,您还可以使用标准的Pythonos和subprocess模块来调用AndroidDebugBridge这样的Android工具。

2.3.Monkeyrunner运行环境

您可以直接使用一个代码文件运行monkeyrunner,抑或在交互式对话中输入monkeyrunner语句。

不论使用哪种方式,您都需要调用SDK目录的tools子目录下的monkeyrunner命令。

如果您提供一个文件名作为运行参数,则monkeyrunner将视文件内容为Python程序,并加以运行;否则,它将提供一个交互对话环境。

monkeyrunner的命令语法为:

monkeyrunner-plugin

2.4.MonkeyRunner实例及使用说明

#Importsthemonkeyrunnermodulesusedbythisprogram

fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice,MonkeyImage

#Connectstothecurrentdevice,returningaMonkeyDeviceobject

device=MonkeyRunner.waitForConnection()

#Takesascreenshot

result=device.takeSnapshot()

#Writesthescreenshottoafile

result.writeToFile('./shotbegin.png','png')

#Dragscreen

foriinrange(1,3):

device.drag((200,300),(100,300),0.1,1)

MonkeyRunner.sleep

(1)

#Takesascreenshot

result=device.takeSnapshot()

#Writesthescreenshottoafile

result.writeToFile('./shotend.png','png')

使用方法:

将代码拷贝到记事本并保存为.py格式的文件(最好和MonkeyRunner放在同一目录),如Demo.py,然后运行CMD并进入MonkeyRunner目录,使用MonkeyRunnerDemo.py运行

 

实例详解:

1.导入模块

fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice,MonkeyImage

2.连接当前设备,并返回一个MonkeyDevice对象

device=MonkeyRunner.waitForConnection()

3.截图并保存

result=device.takeSnapshot()

result.writeToFile('./shotbegin.png','png')

4.滑动屏幕2次:

foriinrange(1,3):

device.drag((200,300),(100,300),0.1,1)

MonkeyRunner.sleep

(1)

说明:

这是Python中的一个for循环,意思是遍历1~3(不含3)所有整数,遍历做什么呢?

第二行就是我们要做的事情,“drag”就是拖动事件指令,后面的括号里就是参考,表示从第一个坐标开始到一个坐标结束,0.1表示所用时间,最后的1可以理解为采样点,默认为10,这里设置的是1,在本实例中1和10区别不大。

第三行就是等待的意思,滑动一次后等待1秒再继续。

截图并保存

result=device.takeSnapshot()

result.writeToFile('./shotend.png','png')

和第三步是一样的,只是保存的名字不一样,这样就实现了测试前和测试后的结果对比。

除了实例中的导入,截图,保存截图,滑动屏幕,还有很多方法,只要搞清楚怎么用了,剩下的就是自己排列组合来做成一个个的Case了。

其它方法介绍:

1.安装Android包,注意,此方法返回的返回值为boolean,由此可以判断安装过程是否正常;

device.installPackage('myproject/bin/MyApplication.apk')

device.removePackage('com.example.android.notepad')

print('卸载成功')

device.installPackage('ApiDemos.apk')

print('安装成功')

2.启动一个Activity;

device.startActivity(component='com.android.htccontacts/com.android.htccontacts.ContactsTabActivity')

3.时延(秒);

MonkeyRunner.sleep(3)

4.触击屏幕;

device.touch(507,72,"DOWN_AND_UP")

5.执行adbshell命令;

device.shell("inputtextgoup01")

6.发送按键指令

按下HOME键device.press('KEYCODE_HOME','DOWN_AND_UP')

按下BACK键device.press('KEYCODE_BACK','DOWN_AND_UP')

按下下导航键device.press('KEYCODE_DPAD_DOWN','DOWN_AND_UP')

按下上导航键device.press('KEYCODE_DPAD_UP','DOWN_AND_UP')

按下OK键device.press('KEYCODE_DPAD_CENTER','DOWN_AND_UP')

相应的按键对应的名称如下:

home键:

KEYCODE_HOME

back键:

KEYCODE_BACK

send键:

KEYCODE_CALL

end键:

KEYCODE_ENDCALL

上导航键:

KEYCODE_DPAD_UP

下导航键:

KEYCODE_DPAD_DOWN

左导航:

KEYCODE_DPAD_LEFT

右导航键:

KEYCODE_DPAD_RIGHT

ok键:

KEYCODE_DPAD_CENTER

上音量键:

KEYCODE_VOLUME_UP

下音量键:

KEYCODE_VOLUME_DOWN

power键:

KEYCODE_POWER

camera键:

KEYCODE_CAMERA

menu键:

KEYCODE_MENU

3.Android自动测试之CTS

3.1.什么是CTS

CTS是CompatibilityTestSuite的简称,是android的兼容性测试套件,定制了andoird后,必须通过最新的CTS检测,以保证标准的APK能在平台上安装运行,通过了CTS后,将测试报告给Google,以取得androidmarket认证,CTS的测试框架如下图:

 

CTS有两种方式,一种是自己编译CTS,另一种是直接使用从官网上下载的编译好的。

自己编译则:

$.build/envsetup.sh

$makects

编译好后的的文件是out/host/linux-x86/cts/android-cts.zip,如果你的代码是最新的,则这个文件和官方网站的放的编译好的文件是一样的。

如果要自己修改CTS的测试代码,在android代码根目录下的cts目录下

CTS的makefile:

build/core/tasks/cts.mk

CTS的程序文件:

out/host/linux-x86/bin/cts

CTS的测试计划:

out/host/linux-x86/cts/android-cts/repository/plans

CTS的测试用例:

out/host/linux-x86/cts/android-cts/repository/testcases

CTS的测试结果:

out/host/linux-x86/cts/android-cts/repository/results

CTS的配置:

out/host/linux-x86/cts/tools/utils/host_config.xml

3.2.搭建CTS测试环境

首先在LINUX机器上安装android的SDK环境,既然已经开始关注CTS了,LINUXSDK环境这部分应该很熟悉了,这里省略。

可以参考

修改~/.bashrc加入SDK的工具目录

exportPATH=$PATH:

~/android-sdk-linux/platform-tools:

~/android-sdk-linux/tools

保存退出后运行下面语句使修改的环境变量在当前终端生效

$source~.bashrc

打开终端输入命令:

adbdevices,连接上这会显示设备ID,

如果未连接上则会以?

代替,此时可以通过输入以下命令进行连接

$adbkill-server

$sudoadbstart-server

$adbdevices

还有问题的话参考另外一篇文章AndroidSDKUSB配置

3.3.设备端的设置

1.在Android4.0及以上版本,手机必须是用户(user)模式,不是工程(eng)模式,通过adbshell进去看一下,如果提示符号是#则为eng模式,如果是$则为用户模式。

把手机设置为英文语言。

2.安装TTS,Android4.0进Settings>Speechsynthesis>Installvoicedata,Android2.3.5

Settings>Voiceinput&output>Text-to-speechsettings>Installvoicedata

这一步是为了保证安装了AndroidMarket,如果没有安装需要用adb手动安装.

3.插入一张空白的SD卡,测试过程中会擦除修改SD卡上的数据

4.恢复出厂设置。

Settings>Privacy>Factorydatareset

5.“USB调试”被选中.Settings>Applications>Development>USBdebugging

6.允许模拟地点.Settings>Applications>Development>Allowmocklocations

7.保持唤醒状态Settings>Applications>Development>StayAwake

8.去掉锁屏Settings>Security&location&security>Setupscreenlo

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2