基于Android平台应用程序的关键字驱动自动化测试
测试工具
目前市面上的安卓自动化测试工具主要分为三种类型:
Ø 通过界面图像的对比识别对象 – 这类工具的代表是以色列的PerfectoMobile.com。这是一款纯Web操作方式的工具,可以支持测试脚本跨平台执行;
Ø 通过在源码级识别对象 – 这类工具的代表是芬兰的TestDroid.com。它是以EclipsePlug-in的方式工作,可以将录制的操作步骤生成Robotium或MonkeyRunner脚本;
Ø 通过数字签名识别对象 – 这类工具的代表是DroidPilot.com。它可以说是高度模仿HPQTP的操作方式,对于自动化测试工程师来说,也许会有似曾相识的感觉;
接下来,我们准备从以下几个方面剖析这三类工具对于关键字驱动自动化测试的支持:
1. 与被测apk的通信– 捕获对象、控制行为
2. 脚本编辑器– 构建测试脚本、解析测试脚本
3. 并发控制多台设备– 脚本一次编译,可跨设备执行
4. 与其它测试工具的整合– 测试用例管理、缺陷跟踪
1. 与被测apk的通信– 捕获对象、控制行为
首先来看PerfectoMobile。这款工具是纯Web操作方式。它对应用程序界面对象的识别是通过图像对比来判断,所以严格来讲,这并不能称之为“对象”。但不得不承认,这种做法使得跨平台(iOS, Android, Blackberry…)的对象识别成为可能。同样道理,即是从图像来识别对象,也是通过图像来操作对象。当对象库中的该图像在当前屏幕的对比匹配率达到一定程度,即可认为找到了该对象,从而也就可以对相应区域进行点击、滑动等操作了。
另一种是TestDroid的做法,直接从代码级截获对象。在Eclipse开发工具装上TestDroid插件,直接点击录制按钮,即可启动被测应用。所录的操作步骤,可以生成Robotium或MonkeyRunner脚本(注:Robotium和MonkeyRunner是Android平台最流行的两款开源测试工具)。这种直接在代码级操作的做法,尽管能毫无阻拦的拿到任何想要的对象信息,但是也有几点待商榷之处:1. 对于测试工程师直接来到代码级进行操作,从代码安全性考虑,这并不是对于所有企业都可行;2.这种做法仅限于Android应用,不能做到像图片识别那样跨平台。当然,对于iOS引用来说,是否需要花力气去做自动化测试,还是可以商议的,毕竟它的设备种类不太多,省去了许多兼容性测试的成本。
第三种是DroidPilot的做法,即上面《前置条件》章节提到的通过签名模式与被测应用取得通信。这种做法虽然也是仅限于Android平台,但毕竟可以抛开源码,更贴近于测试工程师的工作行为。然而,正如所提到的,这种做法难免遭遇“扰码”的阻碍。所以,用这种方式做自动化测试,必须要求被测应用不能加任何扰码信息。其实这里还有一点是关于反编译之后,被测应用的行为是否会发生改变的问题。这里可以确定的是,由于反编译之后,仅仅是改变了被测应用与测试工具之间的临时签名信息,对于被测应用压缩包中的信息并无任何改动,所以,被测应用的行为是可重复、可验证的。
2. 脚本编辑器 – 构建测试脚本、解析测试脚本
对于PerfectoMobile,由于它是以纯Web方式操作,即脚本的编辑和执行都是在浏览器端操作,这样可以让客户免于安装客户端。他在Web端提供了一种脚本设计器,可以通过拖拽设备模拟按键(如打电话,发短信,音量键、返回键等)到设计窗口,编排顺序以产生测试用例。近年PerfectoMobile又提供了HP QTP插件,使用户可以用QTP来制作脚本,并把做好的脚本上传到他们的网站,借助他们的设备来执行脚本。所以,这款工具的脚本构造能力还是相当强大的。而且,由于与QTP结合,使得自动化测试工程师更能平滑的从桌面应用程序自动化测试过渡到移动应用自动化测试。
TestDroid则通过流行的开源工具Eclipse作为脚本编辑器。它以Eclipse插件的形式存在。通过该插件来录制脚本、回放脚本。录制的脚本可以生成Robotium或MonkeyRunner脚本语言。这些脚本语言对于开发工程师来说也许会很熟悉,因为有不少安卓开发工程师自己也会用这些工具来制作一些简单的自动化测试脚本用于每日脚本构建(Daily Build)后的冒烟测试(Smoke Test)。对于测试工程师来说,上手这类Jave或Python语言视乎要比QTP所用的VB Script要稍微吃力一点,且对于Eclipse这类开发工具的使用熟练程度也不及QTP。尽管如此,对于在语言和工具的学习曲线这方面的开销,比起日后Eclipse所能提供的强大而灵活的脚本编辑能力来说,应该也是值得的。
DroidPilot则是完全自己开发的脚本解析器,选用的语言也是VB Script。而且它也提供了一种脚本设计器,这种设计器可以通过点选界面对象和针对对象的操作,来构建测试流程,并把设计好的测试流程转换成为脚本语言。这种设计器虽然可以快速构建简易的测试流程,但是对于复杂一点的测试逻辑,还需要测试工程师自己在脚本中完善。但无论如何,这个动作已经大大简化了测试工程师的代码量,且操作效率甚至比录制更灵活,因为它可以在任意操作步骤之间增加或删减步骤,且能调整操作步骤的前后顺序。
3. 并发控制多台设备 – 脚本一次编译,可跨设备执行
PerfectoMobile号称拥有市面上所有智能手机(iOS,Android, Blackberry…),而且这些手机部署在全球不同国家。用户登录Web控制台后,可以对这些手机进行任意操作:打电话、发短信、安装/卸载被测应用等。它不但等做到测试脚本跨设备执行,甚至还可以跨平台执行,因此,可以说,他在兼容性测试方面还是考虑的比较全面的。然而,似乎有一点遗憾的是,制作好的脚本并不能并发的在多台设备上执行,而是需要手工选择设备执行。而且,对于被测应用的部署也是一样的,缺乏批量部署这样的功能。这可能限制了并发性兼容性测试的工作效率。
TestDroid由于是使用Eclipse插件形式工作,这个插件在录制和回放脚本的时候同一时间只能链接一台机器。尽管这样做对于脚本的编辑和调试来说已经够用了,但还无法满足批量设备的兼容性测试。因此,他们又额外开发了一个在线平台,用户只需要将开发好的脚本和被测应用上传到他们的服务器,这些应用和脚本就会被自动部署于服务器端的大量安卓设备,并执行测试。最后,用户会收到兼容性测试报告。
DroidPilot有专门的脚本编辑工具ScriptDesigner,而且这个工具也是限定了只能连接一台设备进行脚本编辑和回放。如果需要连接多台设备进行兼容性测试的话,就需要用到DroidPilot的另一款工具——AutoRunner。通过这款工具,用户可以将多个脚本在多台设备上执行回放,还可以设置按设备顺序回放,还是多设备并发回放。并且还能自定义回放起始时间。
4. 与其它测试工具的整合 – 测试用例管理、缺陷跟踪
PerfectoMobile在Web端是没有整合任何测试管理工具的,纯粹是提供设备给用户使用,用于制作测试脚本和回放。近年由于新开发的QTP Plug-in,使得它能借助HP测试管理工具Quality Center用于管理测试脚本和跟踪缺陷。
TestDroid由于走的是开源工具路线,可以借助Eclipse的相关插件来达到管理测试脚本的效果。例如,使用Eclipse的svn插件,可以使得脚本保存于svn数据库,有利于测试团队协同工作。但是对于缺陷跟踪管理这一块,似乎还没有明确的工具整合进来。
DroidPilot在设计之初就考虑到了与一些开源测试管理工具的整合,例如,用TestLink作为测试用例管理,用Bugzilla/Mantis作为缺陷管理工具。因此,DroidPilot提供了与这些开源工具之间对接的http协议接口。
转载地址:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=198279