一、问题的提出
最近二两年来,一直在从事移动设备的自动化测试工作,可以说小有心得。但最近由于种种原因,面临着对移动设备的自动化测试工具的更换工作。所以,一个问题呈现在面前。我们需要为我们的项目选出一款新的自动化测试工具,具体来说就是我们要选出可以支持iOS,android,windows phone甚至是黑莓等设备的自动化测试工具。当然在讲我的案例前,我希望针对我们对工具的选型工作能够对大家有参考作用,以便未来在您可能遇到类似的问题时,也能够有章可循。
日常我们目前公司的mobile app基本上实际上是web based 的app,所以在此之前我们的所有自动化测试脚本都是建立在基于对web自动化测试工作支持较好的sahi上。而我们的mobile automation则是使用chrome浏览器来模拟mobile client,使用sahi来进行自动化工作,整体来讲,mobile 应用的自动化工具是很成功的,自动化覆盖率比较好,而且运行的速度较快,也为公司节省了许多金钱。但实际上我们也面临一个问题,就是我最终发布的应用实际上是一个hybrid应用,而且在实际测试工程中,手工测试人员由于觉得大部分自动化测试跑在chrome上,他们对自动化的信任度也不能够达到较高的程度,所以他们觉得,有必要把自动化测试覆盖掉的用例也要手工跑一下,以免出现意外。当然我们非常认可同事的认真工作的态度,但我们确实也应该解决这一问题,让automation真正跑在设备上。基于以上,我们打算更换一款工具,能够让我们的自动化测试跑在真实设备上,而非模拟器上。
那么现在问题来了,我们选什么呢?所以我们得先分析一下需求。首先,我们的自动化必须能够跑在设备上。其次,工具必须能够支持iOS,android,windows phone,blackberry等。除这两项硬性规定外,我们的需要工作尽可能好用,能够支持企业级应用,当然如果能够免费最好。
二、 找到至少两组备选方案
首先我们得借助一下google,百度,查询一下有没有适合的工具。
首先映入眼帘的是它。
我们先来看一下 appium 能干什么?看简要说明它主要能够实现 iOS,Android 以及FireFox OS 设备的自动化测试,包括 native,hybrid 及手机 web 应用。最重要的是它还是开源的。Appium 是跨平台的,即你可以写一套测试脚本同时运行在 android 及 iOS 平台上。Appium 是基于客户端/服务器架构,它实际上是提供一套 Restful API.它从客户端接收连接,侦听命令,然后在移动设备上执行命令。在客户端我们可以使用任何语言来编写测试脚本。服务端可以运行在不同的机器上。
我们再来看看这个家伙,叫做 SeeTest automation:
SeeTest automation 支持 iOS,Android, Blackberry 及windowsphone 的自动化测试。它能够在真实设备上录制也可以在模拟器上录制,可同时在不同的设备运行测试,插件丰富,包括 HPUFT(QTP),WebDriver(selenium),JunIT,微软 visual studio 和 pathon。可以与ALM 连接,Jenkins 和其它持续集成工具。可以通过 usb 或是无线网线与设备进行联接。
这个 SeeTest automation 功能还是真奇全,但这个软件是商业软件,它还有配套的SeeTest Could 以及虚拟化软件。价格比较昂贵,功能强劲。
我们再在看一款,叫 KeyNote DeviceAnyWhere,这是一款和 SeeTest Automation 差不多的软件,支持支持 iOS,Android, Blackberry 及 windowsphone 的自动化测试。而且它也对设备提供云的支持。功能强,价格贵,是一款企业级的商业软件。
三、对比
通过对备选软件的对比,相信很容易能够得出您所需要的适合的移动设备自动化测试工具。可能也有看官在好奇我们最终选了什么软件。我可以负责任的告诉大家,做为一家有钱任性的大公司,我们毫不犹豫的选择了商业软件,而且那两款商用软件都有啊。
抛开钱的问题,做为一家企业,你有可能会有这样的潜在需求,即你希望你的设备是可以集中管理的,比如说,我在大连有一个移动设备中心,然后在北京也有一个,在上海也有一个,如果贵公司是全球企业,可能你在美国,英国等都有一个移动设备中心,如果需要设备是共享的,那么如果你选择的自动化测试工具提供云的支持,那么每个中心的设备大家都是共享可用的,你也可以最大化的利用到每一台设备。
当然,大多数互联网公司 我相信会更可能选择开源的appium,它免费,又可以自己动手定制,一般来讲中国大多数互联网公司对自动化测试云的要求不是那么强烈,如果真有要求,我们一般也会自己想办公,利用现有的开源软件及技术,自己来搭建。
讲到这里,实际上我们应该已经了解到,对于任何一种工具的选择,我们首要考虑其功能性,看能够满足我们的要求。其它,看价格。性价比高的优先考虑。最后我们一定将潜在的需求也列出来,是否有设备云的要求,是否有持续集成的要求,是否对我们所擅长的编程语言有支持,以及是否有利用扩展等。
除此外,如果您打算入手商业工具,这里还建议各们先试用,小范围使用评估并反馈结果。一般商业软件都有试用期,通常为一个月,如果试用一个月不够,通常情况下要求延长试用期也是可行的。
最后:
可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。
这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!