移动应用测试

Posted huanghanqian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移动应用测试相关的知识,希望对你有一定的参考价值。

一.移动应用测试框架

1. Appium

Appium for ios and android是一款开源、跨平台、免费的自动化测试工具,可测试任何语言的移动APP框架,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台。有了该款工具,开发人员可以利用测试代码完全访问后端API和数据库。Appium是基于无需SDK和编译就可以对原生应用进行测试的理念而设计的。Appium可以测试iOS应用和Android应用,并且测试脚本可以用php,Python,Ruby,C#,Clojure,Java, Objective-C,javascript和Perl等语言编写。Appium 驱动苹果的UIAutomation 库和 Android 的 UiAutomator 框架,使用 Selenium 的 WebDriver JSON 协议。Appinm 的 iOS 支持是基于 Dan Cuellar's 的 iOS Auto. Appium 同时绑定了 Selendroid 用于老的 Android 平台测试。

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

   优点:

l  Open Source

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

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

l  社区较活跃

l  支持在Mac平台录制。

l  能够使用Appium服务器程序的'定位'工具提取标识符。

l  由Appium服务器桌面程序内建支持'Selendroid'。

l  还能使用供应商的框架:UIAutomation用于iOS,  UIAutomator和Selendroid分别支持android4.2+ 和 2.3+。

l  支持物理设备和模拟器。

l  支持原生,混合和手机网络程序的自动化。

缺点:

l  Appium服务器桌面程序常常有不稳定版本。

l  Window操作系统上对服务器桌面应用不支持脚本录制。

2. Calabash

Calabash是一款跨平台的应用测试框架,适用于iOS和Android,支持Cucumber,开源且免费,隶属于Xamarin公司。通过Calabash,开发者可以对应用进行多方位测试,比如截屏、手势识别、实际功能代码等。

Pros:

l  大型的社区支持。

l  简单的,富有感染力的类似于英语的测试语句。

l  支持屏幕所有的动作,比如滑动,缩放,旋转和敲击。

l  大型而热情的社区。

l  跨平台开发的支持(相同的代码在安卓和 iOS都适用)

Cons:

l  当测试步骤失败的时候,后续步骤会被忽略。这个会导致漏掉更严重的产品问题。

l  跑测试需要花费时间应为默认是总是在最开始安装应用,但是这个设定可以在代码添加钩子给覆盖掉。

l  需要 Calabash 框架在安装在 iOS 的 ipa 文件中。

l  在 iOS 上我们必须要应用的代码。

l  对 Ruby 之外的语言不友好。

3. KIF

KIF 的全称是 Keep It Functional是一款专为iOS设计的移动应用测试框架。所有测试使用 Objective-C 编写。因此,对于iOS开发者而言,用起来要更得心应手,可以称得上是一款非常值得收藏的iOS测试利器。

4. Robolectric

Robolectric for Android是一款专为Android开发者设计的测试框架,使用模拟器进行测试。它是一款已基本上摆脱了模拟器测试的老套路的速率单元测试框架。Robolectric可以解压Android SDK,允许你直接测试移动APP并解决你所遇到的任何问题。

5. UIAutomator

主要功能跟Appium类似,主要类UIDevice,UiObjec,UiSelector,UiCollection。UIdevice更 Appium的AppiumDriver类比。剩下的更WebElement类比只是划分得更详细。功能上也更Appium类似。通过 text,className等信息找到UI控件然后进行操作。

   优点:

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

l  官方支持

缺点:

l  只能测试Androidnative app

l  需要Android SDK4.1+

l  无法获取当前load的activity

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

l  debug过程比较麻烦

5. Gitorious

Gitorious移动测试框架是一款充分利用Sikuli自动化工具的iOS测试框架。该测试框架充分利用了屏幕截图和python脚本。Gitorious可以对移动APP进行细致测试,并且测试结果还可用于改善移动APP和解决问题。

Gitorious也是一个基于Git版本控制系统的Web项目托管平台,使用Ruby on Rails开发。而其移动测试框架(MTF)也是深受开发者欢迎。Gitorious移动测试框架是一款充分利用Sikuli自动化工具的iOS测试框架。使用自动化测试工具 Sikuli 作为框架的基础,通过屏幕截图和 Python 脚本让开发者执行测试过程。它使得 Sikuli 使用更加简单和高效,只支持 iOS。

   GitoriousMTF能够利用截屏和Python脚本,进行细致入微的测试,并将测试结果返还给开发者以提高应用质量及修复漏洞。

6. Frank

Frank 也是一款备受欢迎的iOS应用程序测试框架。该框架提供了针对iOS平台的功能测试能力,可以模拟用户操作对应用程序进行黑盒测试,并使用Cucumber来编写测试用例。此外,使测试用例如同自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。Frank还会对应用测试操作进行记录,以帮助开发者进行测试回顾。

7. Fliptest

FlipTest是专为iOS设计的移动应用A/B测试框架,帮助你选择最适合你应用程序的用户界面。通过它,开发者可以无需重新向App Store提交应用或重构代码,只需添加一行代码,即可直接在iOS应用上进行A/B测试。

对于想要追求UI极致的开发者而言,FlipTest绝对是最合适的测试框架。Fliptest会为应用选择最恰当的用户界面,还会基于外观、可用性等众多因素返还测试结果,从而帮助开发者彻底解决UI问题。

8. Kiwi

Kiwi是一个适用于iOS开发的行为驱动开发(BDD)库,因其接口简单而高效,深受开发者的欢迎,也因此,成为了许多开发新手的首选测试平台。和绝大多数测试框架一样,Kiwi使用Objective-C语言编写,因此对于iOS开发者而言,绝对称得上是最佳测试拍档。

9. Robotium

   Robotium是Android平台上类似Selenium的集成测试工具,有JUnit基础的开发者非常容易上手。不仅如此,Robotium还是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架来达到对应用程序进行自动化测试的目的。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium对Activity,Dialog,Toast,Menu 都是支持的。

优点:

l  Quite popular for android testing

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

l  可以测试AndroidNative和Android Hybrid App

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

l  Open Source

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

l  让编写测试脚本工作变得轻而易举

l  能够对预装应用进行自动化测试

l  自动追踪当前的activity

l  由于采用了运行时绑定GUI 组件的方式,与 Appium 相比,它能够更加快速稳定的执行测试

l  可以在没有源代码,也不知道应用具体实现的条件下进行测试

l  支持Activities, Dialogs(对话框) ,Toasts, Menus(菜单), Context Menus(上下文菜单)和其他 Android SDK 的控件

缺点:

l  无法处理 flash 和 web 组件.

l  仅能够支持 Java 开发环境.

l  在较早期的设备上运行不够流畅.

l  由于不支持 iOS 设备,当自动化测试同时覆盖android 与 iOS 的情况时,测试会被中断.

l  没有内置的记录和回放功能.使用记录功能需要 TestDroid 和 Robotium Recorder 这样收费工具。

10. AppGrader

AppGrader是来自以色列的应用测试服务商uTest推出的一款测试产品。相比其他主流移动应用测试框架,AppGrader可能并不太为开发者所熟知,但它却能够为众多的Android开发者提供非常专业的意见参考。

通过AppGrader,开发者可以将自己所开发的应用与其他同类应用就图形、功能及其他方面进行比较,从而对应用进行改善。据悉,继AppGrader for Android之后,uTest还将推出AppGrader for iOS。

11. Appcelarator

  Appcelerator Titanium公司已经在移动开发领域拥有多年驰骋经验,其配合基于Java的开发环境能够将原生代码编译为运行在iOS、Android以及其它目标平台上的代码成果。随着2014年7月Appcelerator Studio 3.3与AppceleratorPlatform 2.0的发布,该公司向其中添加了一套MBaaS以及约25个相关API、Node.js支持能力以及在线分析功能。除此之外,Appcelerator还为自己的MBaaS发布了多种接口,开发人员可以利用原生SDK将其添加到应用程序当中。

12. MonkeyTalk

MonkeyTalk是世界上最强大的移动应用测试工具。MonkeyTalk自动为iOS 和Android 应用进行真实的、功能性交互测试。MonkeyTalk提供简单的"smoke tests",复杂数据驱动的测试套件。MonkeyTalk支持原生、移动和混合应用、真实设备或者模拟器。MonkeyTalk使得场景捕获非常容易,可以记录高级别可读的测试脚本。同样的命令可以用在iOS和Android应用上。您可以记录一个平台的一个测试,并且可以在另外一个平台回放。MonkeyTalk支持移动触摸和基于手势交互为主的移动体验。点击、拖拽、移动,甚至是手指绘制也可以被记录和回放。

二.移动应用测试工具

1. MobiReady

MobiReady使用行业最佳实践和标准测试移动设备,输入要测试的URL地址,测试完成后你会收到一个免费的报告大纲,可以对移动设备上的单个网页进行测试,也可以对整个网站进行测试。

2. FoneMonkey for iOS

FoneMonkey for iOS是一款专门用于iPhone应用的功能测试工具,允许开发者对执行应用界面的自动脚本进行交互式的创建、编辑和回放。使用FoneMonkey for iOS,开发者可以创建支持自动运行用户操作序列并验证结果的测试套件。FoneMonkey for iOS不仅能实现类似QA测试的体验,还可以轻而易举地将其整合到持续集成环境中。

3. iPhoney

iPhoney是一款专门用于iPhone Web应用测试的模拟器,但注意它并不是iPhone模拟器,它是一款可下载的程序,精确到了像素级别,对于iPhone应用程序和网站设计人员非常有用。它可以为开发者提供一个与iPhone实际大小相同的Web浏览环境,支持Safari,支持屏幕旋转,可以隐藏地址栏,支持页面缩放操作,可以开启/关闭插件,如Flash插件,最新版本是1.2,支持自动升级,它是开源的,你还可以进行个性化开发,能够让开发者对应用设计进行完整的视觉质量测试。但非常遗憾的是它只能运行在Mac OS X 10.4.7或更高版本的操作系统中。

4. TestFairy

TestFairy是百分百免费的,其为应用开发者提供了一些很好的特性。其中一个较为突出的特点是客户端录像,而不是仅仅的屏幕截图。录像可以提供确切的客户端测试信息,包括CPU、内存、GPS、网络监控、日志、事故报告等等。

5. W3C mobileOK Checker

W3C mobileOK Checker能够帮助开发者对应用的移动设备友好程度进行评估,支持在一个网页上执行一系列的测试,以确定它的移动设备友好程度,并且还会生成报告,以告诉开发者所测应用是否对移动设备友好,以及哪些地方需要进行改进。

6. Modify Headers

Modify Headers这款工具对于移动Web开发及HTTP操作、隐私等测试很有帮助。通过Modify Headers,开发者不仅可以对HTTP request headers执行添加、修改和过滤等操作,对应用功能进行测试,还可以极大地加快其移动Web应用开发进程。

7. Ubertesters

Ubertesters是一个全面的测试解决方案,为分发新的构建和报告错误提供一个广泛的工具。你甚至可以为测试启用/禁用特定的构建。Ubertesters 提供免费的100MB存储和两个项目。目前支持iOS和Android应用,在未来会支持Windows。

8. Google Play本地应用测试

早在2014年7月,Google Play团队就宣布“GooglePlay Developer Publishing API ”对所有开发者有效。

这里包括一些测试(例如功能测试),比如:

l  电子邮件通知提醒

l  优化建议

l  增强收益统计

l  深度链接以及网站验证优化搜索结果

9. Google Android Emulator

Android碎片化问题颇为严重,而Google官方所推出的这款Android模拟器能够让开发者无需使用任何物理设备,即可在Mac、Windows、Linux等PC端对应用进行直接测试。

10. Android SDK Emulator

Android SDK模拟器为开发者提供了Android应用测试、构建及调试所必备的API库和工具。该模拟器能够帮助开发者极大地提高开发效率,无论是开发还是调试,均可以快速完成。

11. dotMobi模拟器

dotMobi 模拟器模拟一个真实的手机浏览器,允许开发者对某一特定的网站能否良好地适配移动Web浏览器进行测试。并且,还拥有一个从主页寻求额外支持的功能。这个在线测试工具也需要安装Java运行环境。

12. iPad Peek

在线测试网站iPadPeek在iOS开发者中口碑颇高,其能够直接在线模拟测试网站兼容性的功能也是十分强大。支持横竖屏预览,无论是iPad还是iPhone,开发者只需登陆iPad Peek网站,在其首页对话框中输入需要查看的域名地址,即可进行完美测试。此外,iPad Peek还支持本地预览。

三.第三方的测试平台

1. TestFlight

TestFlight是一个老牌的iOS App测试分发服务平台。它在国内应用也很多,网上有不少教程,有人甚至用它来部署企业应用。它主要解决的是iOS应用测试分发困难问题,可向指定的人分发应用,双方需要注册TestFlight账号,以及下载TestFlight App,即可在App里测试应用。可惜的是,TestFlight被苹果收购后,就关闭了Android测试服务,同时,因为服务器在国外,国内访问速度也很慢。

2. HockeyApp

HockeyApp 是一个用来分发内测App、并收集崩溃报告的测试平台,支持 Mac OS X 、iOS 和 Android 平台,允许开发者发布iOS、Android、Windows Phone以及Mac OS应用的beta版本。同样,因为身处美国,访问速度也很慢。自从被微软收购后,好像改进就不多了。

HockeyApp不提供免费计划,不过你可以试用一个月。其功能包括:

l  跨平台统一处理更新

l  事故报告和分析可以通过版本控制来整合

l  用户容易反馈

l  分析用户、硬件和操作系统

l  团队和用户管理

3. UserTesting

UserTesting 测试的是产品的可靠性,也是依靠人工来进行测试,其每一位测试人员需要49美元,可以在移动设备上测试网站、App甚至是原型。在测试申请提交后大约一小时左右,你就会收到来自测试用户的回馈,包括一段记录测试过程的视频和一份完整的文字报告。开发者可以通过这些内容详细地了解用户的使用习惯,以及产品在使用过程中遇到的各种问题。

4. TestObject

TestObject 服务是柏林一家公司创立,其所提供的云服务能够让应用开发商在一系列Android设备上自动远程测试其应用。开发商只需要上传其应用,并模拟用户与应用交互来生成一项测试。系统将会自动跟踪该交互,并以该交互为基础创建一个测试脚本。然后该脚本将会在云端中不同的设备上自动执行。测试结束后,TestObject 会发送一份详细的测试结果报告。该服务的计费方式主要是依据测试所花费的时间和测试设备的数量。

5. Testdroid

Testdroid 是一项帮助开发者从事手机应用测试的云端服务,由 Bitbar 公司推出。开发者们可以将开发完毕等待测试的应用上传到 Testdriod ,该服务提供了 200 多种不同移动端设备,以供测试,包括智能手机、平板电脑甚至是相机。

6. UTest

UTest 主要的业务是通过自己构建的一个全球测试员网络为开发人员和技术公司提供软件测试以帮助这些开发者们更好的找到并解决软件中的问题。通过这个平台早期创业公司可以相对较为廉价的为其推出的移动应用获得真实世界的专业测试。

7. 蒲公英内测平台

蒲公英是专为 iOS、Android 开发者提供的免费应用内测、托管的平台,旨在解决开发者将应用分发给内测用户时的繁杂、低效的问题。

蒲公英拥有 Web、iOS、Android、Mac、Windows 多平台客户端和开放 的API 接口。通过客户端,开发者可以直接上传、管理自己的应用,测试用户也可以通过客户端直接提交反馈、上传问题截图。通过开放 API,开发者可以直接在自己的程序中上传 App、获取平台数据信息。这些功能,很大程度的帮助开发者们更容易的分发、测试应用。

   蒲公英 SDK 为开发者提供应用内测数据收集分析、版本更新提示、数据分析统计、应用内提交用户反馈等强大的功能,帮助开发者不漏掉内测中任何一个问题,轻松开发出完美应用。

8. 易测云手机APP测试平台

易测云和 Testin 有点类似,也提供Android 兼容性测试,不过,它还提供了功能性的自动化测试。有点遗憾的是目前尚不支持 iOS。

9. Testin云测

Testin云测试平台是一个基于真实终端设备环境,基于自动化测试技术的云端服务。Testin 在云端部署了多部测试终端,用户上传 App 后,就可以用这些云端的终端进行测试,生成结果。Testin主要是针对 Android App 进行兼容性测试,解决碎片化问题。

Testin云测主打的是一站式测试服务,覆盖App开发的整个生命周期。其中包括应用内测、兼容测试、功能测试(众测等)、崩溃分析,同时根据行业领域细分提供不同行业的服务解决方案。

10.腾讯优测

腾讯优测平台提供的服务包括兼容测试、源码缺陷分析、远程真机租用服务,而涉及内测及崩溃分析功能的则是在腾讯的另一个产品Bugly中实现,不过两个平台并未打通,使用起来可能会有些复杂。

11.百度MTC

百度MTC平台主推兼容测试和人工测试。

12.阿里云测

阿里云测平台提供兼容测试,稳定性测试、功能测试,远程真机租用。

13.搜狗云测

搜狗云测平台提供遍历测试、兼容性测试、脚本编写录制。

四.国内主流的第三方测试平台对比

1.服务能力

纵观Testin云测,腾讯优测,百度MTC,阿里云测,搜狗云测这5家的服务,Testin云测覆盖的测试环节最为完善,足够满足移动创业团队及开发者等人员的使用需求。我们直接用一个表格来体现它们的服务能力:

由于Testin云测是全球范围内的移动云测试行业鼻祖,所以其服务能力是5家中沉淀最佳的移动测试平台。此外,Testin针对金融领域推出的解决方案也领先于测试行业。而其他4家,在专业定制服务和测试报告准确性要稍弱一些。

2.产品能力

  在这些移动测试环节中,兼容测试和崩溃分析是开发团队需求度最高的两大服务,所以产品方面,我们就以这两个为代表进行评估。

兼容测试

兼容性测试是众多移动互联网企业的“必需品”,由于涉及的信息点太多,如果全部阐述的话,显然会是不小的篇幅。所以,这次我们就只拿出兼容测试基本点作比较。

由表格信息可以看出5家服务中,Testin云测在兼容测试中覆盖的点最为全面的,其次才是阿里MQC和百度MTC。不过还有重要的一点在表中没有体现,Testin基于云端提供移动相关测试设备超过50000部,目前是全球最大的真机测试实验室,这一庞大真机数很好的保证了兼容测试的广度;而其与ARM、intel、高通等芯片商在底层架构方面的合作,则确保了其在移动应用测试深度上的能力。

崩溃分析

崩溃分析这一块,拥有这一服务的国内3家企业以及其他海外产品中,百度的服务可能会相较弱一点,海外产品里Crittercism还算是不错的。不过在所有崩溃分析服务中,Testin与Bugly要更好一点。深究的话,Testin云测的SDK要稍胜一筹,原因在于它的SDK中可加入摇一摇反馈这一功能,这一点在移动内测中甚为重要。

3.总结

综上所述,这5个主流第三方移动测试平台无论是在公司服务、产品等方面都有些许的相似,但最大的区别就是各个服务的完善程度各不相同。如果需要给出结论的话,起家最早的Testin云测应该居于首位,市场份额也是一家独大。除了具有覆盖完整App开发周期的测试服务外,还面向移动应用、移动手游、金融行业等领域推出了相应的解决方案,这也是其他4家所欠缺的。

五.众测的意义

众测是一种全新的应用质量管理方式,为开发者提供一种完全开箱即用、按需付费的 SaaS 服务,不仅提供了测试规划、功能测试、兼容性测试、可用性测试、Beta 测试等测试服务,开发者还可以直接使用众测平台的 Bug 管理、用例管理、项目管理、崩溃监控等在线工具,帮助中小开发者无需招聘专业的测试团队也可以轻松将应用质量管理好。

最早的众测是系统、软件类产品的内测,帮助相关公司在上线前发现bug,进而完善修复,其意义非常明确,且目前这类平台依旧火热。

而如今的众测更偏向3C类产品的评测,其名头也是越做越大,比如最大智能硬件众测平台、最大3C众测平台、硬件孵化室等等。

以现状来看,大多创业公司由于团队人手、资金限制等原因,在开发 Android、iOS 双版本已极度耗费体力的情况下,去做消除 bug、优化体验等工作分身乏术,此时众测能够提供一个平台为他们提高应用质量。比如兼容性测试报告让不少厂商意识到自己的产品可能正在被看不见的BUG拉向深渊。而众测的作用就在于越来越多的厂商将能够依靠用户反馈的分析报告解决用户体验的难题

众测希望从用户中发掘出更好的内容,并且通过众测的形式来拉近厂商与消费者,实现用户、品牌与平台的共赢。平台用户(导购平台拥有着一群想要买到好东西的用户/粉丝)可以通过申请,免费申领到自己心仪的产品,并撰写众测报告(客观、真实评价),共消费者跟商家参考。

众测能够利用大众的测试能力和测试资源,在短时间内完成大工作量的产品体验,并能够保证质量,第一时间将体验结果反馈至平台,再由平台管理人员将信息搜集,交给开发人员,这样就能从用户角度出发,改善产品质量。

 

参考资料

1.《十大免费移动程序测试框架(Android/iOS)》

https://www.douban.com/note/319239560/

2.《移动开发者必备的十大应用测试工具》

http://www.csdn.net/article/2014-04-11/2819260-10-most-useful-mobile-app-testing-tools

3.《分享5款移动应用测试工具》

http://www.csdn.net/article/2015-03-10/2824160

4.《移动开发利器 六款测试工具不容错过》

http://tech.sina.com.cn/s/2009-07-29/07291004119.shtml

5.《寻找完美平台App测试方案》

http://www.jianshu.com/p/c23cc3697590

6.《第三方主流移动云测试平台服务评测》

http://news.yesky.com/news/13/101095513.shtml

 

以上是关于移动应用测试的主要内容,如果未能解决你的问题,请参考以下文章

移动 App 应用测试方法与思路

移动应用测试篇——移动应用的研发团队

移动应用测试篇——移动应用的发展

软件测试工程师必备干货,移动应用测试建议收藏

移动应用测试篇——移动应用研发团队的构成

APP移动端测试高级