Android APP 测试之Monkey

Android APP 测试之Monkey,第1张

1

    安装Androidsdk

2

    运行cmd

        查看导出文件,此文件无crash和anr报错信息

3

        在Monkey测试过程中可能会出现程序崩溃(CRASH)和程序无响应的情况(ANR),要将测试的log信息获取到,从而解决bug

        测试过程中出现crash现象时,根据seed值来完成bug的复现:adbshell monkey -p (包名   ) -s (seed值) -v 1000 

        测试过程中出现ANR现象,会输出相应的信息,以ANR开头,获取到信息进行问题的解决,同样可以通过seed来进行复现adbshell cd /data/anr切换到设备路径下ls可以看到tracestxt里面即为log信息

4

        monkeyscriptmonkeyscript是monkey的脚本语言,是一组可以被monkey识别的命令集合,可以帮我们完成一系列的被固定的重复性 *** 作,monkey通过脚本来进行测试,只是一个记事本文件,缺点是在坐标、按键等方面没有逻辑性。

常用API的介绍

        完成monkeytxt脚本的编写,保存到某一路径下 切换到monkeytxt路径下adbpush monkeytxt /data/local/temp/(设备的任一路径,无规定)adbshell切换到设备下 cd /data/local/temp 切换到monkeytxt路径下 monkey -f monkeytxt -v 10 执行monkey脚本及执行次数。

完成MonkeyScript的自动化Monkey测试

作为开发人员,我们需要编写必要的单元测试以验证程序的稳定性,而且单元测试也可以用来验证重构的结果。

Android官方现在提供了两种测试途径Android Unit Test 和Android Instrument Test。 本篇主要介绍他们各自的运行方式,测试结果和测试覆盖率结果生成方式,以及在项目中如何同时使用它们。

两种测试方式可以同时在项目中使用,Android Unit Test负责逻辑验证,Android Instrument Test负责验证在真实环境下的逻辑执行(smoke test就够了)。

Android Studio 15

Android gradle plugin 150

在项目中使用Instrument Test是Android的默认方式。

然后运行时请使用 "jacocoTestReport" gradle task

生成的覆盖率结果会在以下文件夹中

并在运行时请使用 "jacocoTestReport" gradle task

测试结果的存放路径为

只需要更新一下SDK,然后重新Clean一下项目即可解决。

但是国内已经无法正常的更新和下载SDK了,需要作几个设置:

使用国内镜像 镜像地址在附件中端口80

使用工具进行连接

设置Eclipse的更新地址 将地址设置为 本机 8580

重新打开SDK Manager 将需要更新或者下载的选项勾上并按 Install Packages即可。

Feb232012更新:还有Sikuli(firsttime=0发布于2013-12-075条评论•作者保留权利赞同25反对,不会显示你的姓名知乎用户,Coding/Reading/Hiking/Running知乎用户、曹媛媛、石存沣等人赞同1、Monkey是AndroidSDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出。实际上该工具只能做程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。2、MonkeyRunner也是AndroidSDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本用Python来写,对测试人员来说要求较高,有比较大的学习成本。3、Instrumentation是早期Google提供的Android自动化测试工具类,虽然在那时候JUnit也可以对Android进行测试,但是Instrumentation允许你对应用程序做更为复杂的测试,甚至是框架层面的。通过Instrumentation你可以模拟按键按下、抬起、屏幕点击、滚动等事件。Instrumentation是通过将主程序和测试程序运行在同一个进程来实现这些功能,你可以把Instrumentation看成一个类似Activity或者Service并且不带界面的组件,在程序运行期间监控你的主程序。缺点是对测试人员来说编写代码能力要求较高,需要对Android相关知识有一定了解,还需要配置AndroidManifestxml文件,不能跨多个App。4、UiAutomator也是Android提供的自动化测试框架,基本上支持所有的Android事件 *** 作,对比Instrumentation它不需要测试人员了解代码实现细节(可以用UiAutomatorviewer抓去App页面上的控件属性而不看源码)。基于Java,测试代码结构简单、编写容易、学习成本,一次编译,所有设备或模拟器都能运行测试,能跨App(比如:很多App有选择相册、打开相机拍照,这就是跨App测试)。缺点是只支持SDK16(Android41)及以上,不支持HybirdApp、WebApp。5、Espresso是Google的开源自动化测试框架。相对于Robotium和UIAutomator,它的特点是规模更小、更简洁,API更加精确,编写测试代码简单,容易快速上手。因为是基于Instrumentation的,所以不能跨App。配合AndroidStudio来编写测试的简单例子6、Selendroid:也是基于Instrumentation的测试框架,可以测试NativeApp、HybirdApp、WebApp,但是网上资料较少,社区活跃度也不大。7、Robotium也是基于Instrumentation的测试框架,目前国内外用的比较多,资料比较多,社区也比较活跃。缺点是对测试人员来说要有一定的Java基础,了解Android基本组件,不能跨App。8、Athrun是淘宝出的一个移动测试框架/平台,同时支持iOS和Android。Android部分也是基于Instrumentation,在Android原有的ActivityInstrumentationTestCase2类基础上进行了扩展,提供一整套面向对象的API。这里有详细介绍。9、Appium是最近比较热门的框架,社区也很活跃。这个框架应该是是功能最强大的,它的优点:它的哲理是:它的设计理念:相关限制:总结:在iOS部分是封装了UIAutomation;Android42以上是用UiAutomator,Android23~41用的是Instrumentation,也就说Appium同时封装了UiAutomator和Instrumentation。所以Appium拥有了以上几大框架的所有优点:跨App,支持NativeApp、HybirdApp、WebApp,还支持N种语言来编写你的测试脚本。如果你在Windows使用Appium,你没法使用预编译专用于OSX的app文件,因为Appium依赖OSX专用的库来支持iOS测试,所以在Windows平台你不能测试iOSApps。这意味着你只能通过在Mac上来运行iOS测试。Client/Server架构,运行的时候Server端会监听Client端发过来的命令,翻译这些命令发送给移动设备或模拟器,然后移动设备或模拟器做出响应的反应。正是因为这种架构,所以Client可以使用Appiumclientlibraries多种语言的测试脚本,而且Server端完全可以部署在服务器上,甚至云服务器。Session,每个Client连接到Server以后都会有一个SessionID,而且Client发送命令到Server端都需要这个SessionID,因为这个seesionid代表了你所打开的浏览器或者是移动设备的模拟器。所以你甚至可以打开N个Session,同时测试不同的设备或模拟器。DesiredCapabilities,其实就是一个键值对,设置一些测试的相关信息来告诉Server端,我们需要测试iOS、还是Android,或者换是WebApp等信息。AppiumServer是Nodejs写的,所以可以直接用NPM来进行安装。AppiumClients,MacOS和Win下提供GUI,不需要装Nodejs,方便测试人员 *** 作。用Appium自动化测试不需要重新编译App;支持很多语言来编写测试脚本,Java、Javascript、PHP、Python、C#、Ruby等主流语言;不需要为了自动化测试来重造轮子,因为扩展了WebDriver。(WebDriver是测试WebApps的一种简单、快速的自动化测试框架,所以有Web自动化测试经验的测试人员可以直接上手);移动端自动化测试应该是开源的;开源;支持NativeApp、HybirdApp、WebApp;支持Android、iOS、FirefoxOS;Server也是跨平台的,你可以使用MacOSX、Windows或者Linux;显示全部编辑于2015-03-201条评论•作者保留权利赞同4反对,不会显示你的姓名知乎用户,hellorabbit郝思远、manNor、徐佳琦等人赞同当前有很大的趋势是转向移动应用平台,Android是最广泛使用的移动 *** 作系统,2014年大约占80%以上的市场。在开发Android应用的时候要进行测试,现在市场上有大量的测试工具。本文提到的开源Android软件测试工具包括:AndroidTestKit,AndroidJUnit4,Appium,calabash-android,Monkey,MonkeyTalk,NativeDriver,Robolectric,RoboSpock,Robotium,UIAutomator,Selendroid。AndroidTestKitAndroidTestKit是一组Google开源测试工具,用于Android平台,包含EspressoAPI可用于编写简洁可靠的AndroidUI测试。OSChinaURL:AndroidTestKit首页、文档和下载相关资源AndroidapplicationtestingwiththeAndroidtestframework–TutorialEspressoforAndroidishere!AndroidJUnit4AndroidJUnit4是一个让JUnit4可以直接运行在Android设备上的开源命令行工具。OSChinaURL:AndroidJUnit4首页、文档和下载AppiumAppium是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持iOS,Android和FirefoxOS平台。Appium驱动苹果的UIAutomation库和Android的UiAutomator框架,使用Selenium的WebDriverJSON协议。Appinm的iOS支持是基于DanCuellar's的iOSAutoAppium同时绑定了Selendroid用于老的Android平台测试。OSChinaURL:Appium首页、文档和下载相关资源AppiumTutorialAndroidUItestingwithAppiumCalabash-androidcalabash-android是一个基于Cucumber的Android的功能自动化测试框架。Calabash允许你写和执行,是开源的自动化移动应用测试工具,支持Android和iOS原生应用。Calabash的库允许原生和混合应用的交互测试,交互包括大量的终端用户活动。Calabash可以媲美SeleniumWebDriver。但是,需要注意的是web应用和桌面环境的交互跟触摸屏应用的交互是不同的。Calabash专为触摸屏设备的原生应用提供APIs。OSChinaURL:calabash-android首页、文档和下载相关资源AbetterwaytotestAndroidapplicationsusingCalabashCalabashAndroid:querylanguagebasicsMonkeyMonkey是Google开发的UI/应用测试工具,也是命令行工具,主要针对压力测试。你可以在任意的模拟器示例或者设备上运行。Monkey发送一个用户事件的pseudo-random流给系统,作为你开发应用的压力测试。OSChinaURL:UI/ApplicationExerciserMonkeyMonkeyTalkMonkeyTalk是世界上最强大的移动应用测试工具。MonkeyTalk自动为iOS和Android应用进行真实的,功能性交互测试。MonkeyTalk提供简单的"smoketests",复杂数据驱动的测试套件。MonkeyTalk支持原生,移动和混合应用,真实设备或者模拟器。MonkeyTalk使得场景捕获非常容易,可以记录高级别,可读的测试脚本。同样的命令可以用在iOS和Android应用上。你可以记录一个平台的一个测试,并且可以在另外一个平台回放。MonkeyTalk支持移动触摸和基于手势交互为主的移动体验。点击,拖拽,移动,甚至是手指绘制也可以被记录和回放。OSChinaURL:MonkeyTalk首页、文档和下载相关资源UsingMonkeyTalkinAndroidStudioNativeDriverNativeDriver是WebDriverAPI的实现,是原生应用UI驱动,而不是web应用。OSChinaURL:NativeDriver首页、文档和下载RobolectricRobolectric是一款Android单元测试框架,使用AndroidSDKjar,所以你可以使用测试驱动开发Android应用。测试只需几秒就可以在工作站的JVM运行。Robolectric处理视图缩放,资源加载和大量Android设备原生的C代码实现。Robolectric允许你做大部分真实设备上可以做的事情,可以在工作站中运行,也可以在常规的JVM持续集成环境运行,不需要通过模拟器。OSChinaURL:Robolectric首页、文档和下载AdditionalresourcesBetterAndroidTestingwithRobolectric20UsingRobolectricforAndroidtesting–TutorialRoboSpockRoboSpock是一个开源的Android测试框架。提供简单的编写BDD行为驱动开发规范的方法,使用Groovy语音,支持GoogleGuice库。RoboSpock合并了Robolectric和Spock的功能。OSChinaURL:RoboSpock首页、文档和下载相关资源RoboSpock–BehaviorDrivenDevelopment(BDD)forAndroidRobotiumRobotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势 *** 作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行 *** 作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium40版本已经支持对WebView的 *** 作。Robotium对Activity,Dialog,Toast,Menu都是支持的。OSChinaURL:Robotium首页、文档和下载相关资源Robotium–TestingAndroidUserInterfaceAndroiduserinterfacetestingwithRobotium–TutorialUIAutomatoruiautomator测试框架提高用户界面(UI)的测试效率,通过自动创建功能UI测试示例,可以在一个或者多个设备上运行你的应用。OSChinaURL:uiautomator首页、文档和下载相关资源AutomaticAndroidTestingwithUiAutomatorSelendroidSelendroid是一个Android原生应用的UI自动化测试框架。测试使用Selenium2客户端API编写。Selendroid可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试。OSChinaURL:Selendroid首页、文档和下载相关资源MobileTestAutomationwithSelendroidRoadtosetupSelendroidandcreatefirsttestscriptofandroidapplicationUpandrunningwith:Selendroid一些停止维护的Android测试工具一些几乎没有继续维护的开源Android测试工具项目(至少是最近几个月都没有更新的项目)。EmmageeEmmagee是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具。Emmagee同时还提供非常酷的一些特性,比如定制间隔来收集数据,使用浮动窗口呈现实时进程状态等。OSChinaURL:Emmagee首页、文档和下载SiroccoScirocco(scirocco-webdriver)是开源的应用自动化测试工具,可以从Eclipse访问必要的测试设备。Scirocco提供自动化的Android应用测试功能,代替手工测试。Scirocco支持谷歌的NativeDriver,把AndroidDriver作为主要的测试库。Scirocco包括三个部分:NativeDriver,AndroidDriver,scirocco插件(一个Eclipse插件;可以自动执行scenario测试和制作测试报告截图)。OSChinaURL:Scirocco首页、文档和下载viasoftwaretestingmagazine内容来源:开源中国社区显示全部发布于2015-03-27添加评论•作者保留权利赞同11反对,不会显示你的姓名知乎用户,拥抱移动互联网

以上就是关于Android APP 测试之Monkey全部的内容,包括:Android APP 测试之Monkey、在Android中同时使用unit test和instrument test作为单元测试、运行Android studio的测试程序报错,求助,如何解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10168098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存