测试工具对比汇总

一、

http://www.open-open.com/lib/view/open1404378881608.html

Android测试框架或者工具对比 

 

阅读目录

· 1. Appium测试 (功能测试,用户接受度测试,黑盒测试)

· 2. Robotium测试 (功能测试,用户接受度测试,黑盒+白盒测试)

· 3. AndroidTest (单元测试,逻辑测试,白盒测试)

· 4. Monkey (压力测试)

· 5. monkeyRuner (功能测试,用户接受度测试,黑盒测试)

· 6. UIAutomator - 官方 (黑盒测试,功能测试) - Rating: 7

· 7. MonkeyTalk (白盒测试,功能测试)

 

1. Appium测试 (功能测试,用户接受度测试,黑盒测试)

Website: http://appium.io/

Appium测试相当于黑盒测试。只是测试UI逻辑正确性。所以Appium测试框架提供的方法有限。获取一个AppiumDriver对象。该对象只是有很多findElements() 的方法,获取到UI元素。UI元素是WebElement,这个类提供的方法基本是获取信息为主,比如获取 nameclasstagNamelocationtextisSlectedisTouched等信息。还有一个点击事件产生函数 click()。遗憾的是没有longClick()事件。整个测试框架只有这2个比较有用的对象可以操作。所以整体上看,这个这个测试框架,只是测试 UI逻辑的正确性,不能升入测试业务逻辑流程。也没有办法去检测。

Pros

§ Open Source

§ 可以使用不同语言来编写测试代码

§ 可以测试不同平台程序:Android/iOS/Web/Hybrid

§ 社区较活跃

窗体顶端

窗体底端

 

2. Robotium测试 (功能测试,用户接受度测试,黑盒+白盒测试)

Website:https://code.google.com/p/robotium/

Pros:

§ Quite popular for android testing

§ 可以对源码测试,也可以测试apk

§ 可以测试Android NativeAndroid Hybrid App

§ 可以测试网络链接和声音等

§ Open Source

§ 社区较活跃,资料比较好找

窗体顶端

窗体底端

 

3. AndroidTest (单元测试,逻辑测试,白盒测试)

这个在https://developer.android.com/tools/testing/index.html SDK中有详细描述。能够针对Android各种组件进行测试,包含ActivityTestServiceTestContentProviderTest。能够获取每一个组件的 资源,并且注入代码进行测试。

1) Activity Testing 主要是测试Activity的,主要测试的方向是以下三个方向:

§ 对于Activity的生命周期的控制。

§ Dependency injection: Instrumentation allows you to create mock system objects such as Contexts or Applications and use them to run the activity under test. This helps you control the test environment and isolate it from production systems. You can also set up customized Intents and start an activity with them.(翻译不太好,大概就说依靠注入去产生模拟对象然后模拟系统环境。)

§ 控制UI的控件元素,然后产生触控事件。这个功能类似Appium描述的。

2) Service Testing 测试的是Service生命周期是否正常

3) Content Povider Testiing 因为provider是一个数据出入口,所以测试的是数据能否正常被读取出来,能否正常写入。测试这个provider提供的URI是否全部正常。测试一些非法的URI是否能够被拦截等。 总的来说Android自带的是单元测试。适合白盒测试。Android 自带的Test的话能够获取的UI界面或者什么的更多的信息,提供的测试方式也更多。

窗体顶端

窗体底端

 

4. Monkey (压力测试)

这个是Android提供的系统工具。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

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

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

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

SDK 有详细描述http://developer.android.com/tools/help/monkey.html。在SDK中有测试的详细参数描述。这个只是个测试工具不涉及编码

窗体顶端

窗体底端

 

5. monkeyRuner (功能测试,用户接受度测试,黑盒测试) 

SDKhttp://developer.android.com/tools/help/monkeyrunner_concepts.html 这个是用python编码实现的测试。主要有3个类MonkeyDeviceMonkeyImageMonkeyRuner。最主要是通过运行程序,在程序中提供按键或触摸事件的输入数值然后截屏,通过截屏对比是否是正常的运行。事件APIpress (string name, dictionary type) touch (integer x, integer y, integer type) drag (tuple start, tuple end, float duration, integer steps) startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags) 等事件,详细请参考API

窗体顶端

窗体底端

 

6. UIAutomator - 官方 (黑盒测试,功能测试) - Rating: 7

SDKhttp://developer.android.com/tools/testing/testing_ui.html

Pro:

§ 可以测试需要在不同app之间切换的情况

§ 官方支持

Cons

§ 只能测试Android native app

§ 需要Android SDK 4.1+

§ 无法获取当前loadactivity

§ 无法做网络链接测试和声音测试

§ debug过程比较麻烦

主要功能跟APPIUM类似,主要类UIDeviceUiObjecUiSelectorUiCollectionUIdeviceAppiumAppiumDriver类比。剩下的更WebElement类比只是划分得更详细。功能上也更Appium类似。通过 textclassName等信息找到UI控件然后进行操作。

窗体顶端

窗体底端

7. MonkeyTalk (白盒测试,功能测试)

 

 

 

二、

http://www.51testing.com/html/10/15002310-1927062.html

Android端手机测试体系

 

1.冒烟测试

  跟web端的测试流程一样,你拿到一个你们开发做出来的apk首先得去冒烟,也就是保证他的稳定性,指定时间内不会崩溃。这款原生sdk自带的monkey可以当做我们的测试工具。就跟我之前博客所说的,monkey测试模拟了用户的按键输入,触摸屏输入等等,看设备多久时间出异常。因为它得用到adb命令,那么同学们可能还得去自学一下adb命令。如果抓到crash(比如内存溢出,空指针异常什么的),及时向你家开发及时反馈,你也可以把它看成一个性能测试工具

2.安装,卸载测试

  这项对web应用可能测得比较少,这一块很可能归拢到我在后面讲的适配性测试里面。在不同机型测试你们应用的安装,以及卸载,看看会不会出现问题;

  这是个第三方手机助手蔓延的时代,那么发布到手机助手上,检查能不能装卸也是很重要的

3.在线升级

  一个手机apk得顺应时代的需求,定期时不时的进行更新,在我第一份工作里,很重要的一个内容就是测试在线升级功能。

  开发给你一个新版本,你得去测试安装卸载,以及功能流程

4.功能测试

  你测试了你们apk功能测试用例。涵盖三个方面:

4.1业务逻辑测试,测试你家公司apk的业务逻辑流的

4.2功能测试:测试你家apk的功能点的。反正我又不知道你家apk是啥,你自己照着需求书设计呗,测试方法不详细说了

4.3web端的交互测试。很多apk,比如淘宝啊,京东的app,会跟web客户端进行功能的交互,我想大家都用app来购物,那么你买的东西能正常在web端查看到,这就是你的测试点了。大家可以理解这个意思吧。

5.稳定性及异常性测试

  稳定性及异常性测试主要两点;

5.1.交互性测试:客户端作为手机特性测试,包含被打扰的情况13种,来电,来短信,低电量测试等,还要注意手机端硬件上,如:待机,插拔数据线、耳机等操作不会影响客户端。

5.2.异常性测试:主要包含了断网、断电、服务器异常等情况下,客户端能否正常处理,保证数据正确性。

  其实这一块又可以跟monkey牵扯到了哈哈

6.性能测试

  这一块我不太了解,还是把我自己的想法跟大家说下。

  测试点跟web应该差不多,比如尖峰性能啊,压力测试啊,基准性能等等

1.尖峰性能,在一个时间点,你app的用户量出现井喷现象,有名的双11抢猫猫活动嘿嘿

2.压力测试,逐渐加压

3.基准,压服务器端接口及客户端在不同网络环境下响应速度。主要为258原则

  对性能这**兴趣的同学,可以先学学性能有名的理发师模型,比较有趣的。

  在一块,我曾帮别人百度loadrunner测试手机apk,很幸运,他成功解决了他的问题。我的想法或许,android端或许,注意是或许,将app的什么sockettcp/IP映射到web端的测试工具上,比如jmeter,来进行测试,这是我的一个猜想。另外的大神或许会给我们好的测试方法意见

7.UI测试

  界面易用,简介,符合用户者的口味。

8.适配性测试

  也就是兼容性测试。

1.手机分辨率:320*240 480*320800*480等等

2.不同手机版本,2.3,4.2,4.3等等,用户面尽量测的覆盖率高一点

3.手机系统,很多手机厂商喜欢在android原生系统的基础进行修改,你得测试啦

4.手机尺寸:3.4,5.0,4.7等等,这里我来插一下话,我在自学android开发的时候有时候会想,如何将自己开发的app调到适合这么多android机型。百分比是个不错的选择

9.电量及流量测试

  用户除了你app的基础功能,适配,UI美观。还关心耗不耗流量跟电量。一般非唤醒状态,后台状态会比较低耗能。这个测试范围,得看你的公司定下的基准。广播貌似可以**用电量,大家了解了可以留言告诉我学习学习哈哈

10.内存泄露

  这个东西你可以用monkey抓到,当然也可以DDMS

11.回归测试工具

  这个版块的测试工具为大家介绍monkeyrunnerrobotiumappnium

  我一直认为一般小公司,用测试工具,主要是主要功能的回归 。只有大公司才有本钱请大神用自动化黑盒工具来做大规模的测试覆盖。因此我把这三个工具归属于回归测试工具

11.1monkeyrunner

  该monkeyrunner工具提供了编写控制Android设备或**器从Android的代码之外程序的API。随着monkeyrunner,您可以编写安装一个Android应用程序或测试包,运行它,发送击键它,需要它的用户界面截图,并将截图工作站上的Python程序。

  脚本用jythonwhat is jythonIt is A mix of python and Java。因此可以用java api,当然你也可以扩展。

11.2appnium

Appium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOSAndroidFirefoxOS平台。Appium使用WebDriverjson wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。AppiumIOS系统的支持得益于Dan Cuellar’s对于IOS自动化的研究。Appium也集成了Selendroid,来支持老android版本。

  跨架构,native hybrid webview

  跨设备:android ios

  跨语言:java python ruby

  跨app,多个app直接交互

native本地应用,如android的信息应用

hybrid nativewebview的结合

webview 浏览器应用

11.3robotium

Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium ActivityDialogToastMenu 都是支持的。

robotium底层是androidinstrument,通过Solo对象来创建一系列操作。但是只能android端,不像appnium跨设备。

  这里扩展一下大家的知识面,如何定位元素,我总结了三个,还有其他方法,请大家留言。

  针对坐标的:

1.monkeyrecorder,之前的博客有详细讲

2.hierarchyviewersdk自带的工具。很多朋友会问商业机为什么不行,因为谷歌做了安全措施。无版本限制,如果你想测4.2以上版本也可以。注意,开发板或者模拟器可以用。

  效率为获得一个界面的所有节点和图片时间为10s左右

3.uiautomator 4.2以上android版本的定位利器,可以真机哟。他也是可以做功能测试的

 

 

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:justin ma
链接:http://www.zhihu.com/question/20188761/answer/14272698
来源:知乎

不考虑后端接口测试,移动终端自动化可以做的事情还是比较多的
比如 兼容性测试(安卓特别有需求),性能测试,回归测试,压力测试,稳定性测试,功能覆盖测试等等

自动化的手段无非是1.识别控件 2.模拟用户操作
识别的手段有(安卓):
插入额外代码(监听UI事件),GUI图形识别,monkey的dump命令(限于模拟器或root的设备),4.0之后可以用easy monkey; 当然,最简单就是直接截取手机传感器时间,翻译成键盘或者触屏事件

模拟用户操作的手段(安卓):
插入额外代码(http server什么的), monkey port, 直接发传感器事件

这些方法各有优缺点,需要根据测试需求综合运用


ios就简单了,你就用instruments的automation工具写js脚本即可,当然也可以用通用的GUI图形识别手段

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值