51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4102|回复: 0
打印 上一主题 下一主题

[转贴] 基于Android平台应用程序的关键字驱动自动化测试 – 理论、工具和实践(二)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-8-31 14:23:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 anthony.wang 于 2012-9-12 11:00 编辑

前置条件

这一章我们要开始讨论基于安卓应用的自动化测试。在此之前,我们需要先关注两点安卓系统独有的两大特点:“Root机”与“扰码”。这两点是在上述桌面应用自动化测试中不曾碰到过的。为什么会提及这两点呢?原因很简单,就是关乎于安卓应用界面对象的识别。

设备是否需要Root

如果只是为了识别图像或浅层对象,如文本或坐标,测试工具不需要Root权限就可以办到。但是对于一些深层次的对象属性,如可见性、宽度、滚动属性等,恐怕就要获得系统Root权限才能截获。然而,是否有办法可以绕过系统Root权限就能捕捉深层对象属性呢?毕竟,出于各种原因的考虑,Root机的动作不是所有测试人员都愿意做的。安卓系统的设计中规定,两个应用之间是互相独立的,双方各不干涉。不过,如果双方都具备相同的签名,则可互相通信。如此看来,签名就像一把钥匙,打开之后,测试工具就可以与被测应用通信了。

被测apk的签名与扰码

如果用签名的办法来获取对象,就有可能会引入另一个问题:对被测应用的反编译。毕竟,不是所有测试人员都能很容易的拿到代码编译一个测试版本。很多时候,是开发团队打包一个apk交予测试人员进行测试的。所以,要是测试工具与被测应用获得相同的签名,必须先经过反编译之后,设置相同的一个临时签名,再重新进行编译和打包。这样又会引入另一个问题:如果最初的apk加入了扰码,导致无法正确反编译怎么办?就像签名一样,扰码也是一种保护Android APK的手段之一。遇到这种情况,似乎只能联系开发团队去掉扰码了。

上述两点是因为要抓取被测应用对象而引入的问题。当然,对于界面对象属性要求不高的话,也可以直接截取屏幕图片作为对象,这是这样做,就只能通过图像对比的方式来识别对象了。接下来,我们来看看市面上一些现有工具的做法。

工具

目前市面上的安卓测试工具主要分为三种类型:

Ø
通过界面图像的对比识别对象 这类工具的代表是以色列的PerfectoMobile.com。这是一款纯Web操作方式的工具,可以支持测试脚本跨平台执行;

Ø
通过在源码级识别对象 这类工具的代表是芬兰的TestDroid.com。它是以Eclipse Plug-in的方式工作,可以将录制的操作步骤生成RobotiumMonkeyRunner脚本;

Ø
通过数字签名识别对象 这类工具的代表是DroidPilot.com。它可以说是高度模仿HP QTP的操作方式,对于自动化测试工程师来说,也许会有似曾相识的感觉;

接下来,我们准备从以下几个方面剖析这三类工具对于关键字驱动自动化测试的支持:

1.
与被测apk的通信 捕获对象、控制行为

2.
脚本编辑器 构建测试脚本、解析测试脚本

3.
并发控制多台设备 脚本一次编译,可跨设备执行

4.
与其它测试工具的整合 测试用例管理、缺陷跟踪

1.
与被测apk
的通信捕获对象、控制行为

首先来看PerfectoMobile。这款工具是纯Web操作方式。它对应用程序界面对象的识别是通过图像对比来判断,所以严格来讲,这并不能称之为“对象”。但不得不承认,这种做法使得跨平台(iOS, Android, Blackberry…)的对象识别成为可能。同样道理,即是从图像来识别对象,也是通过图像来操作对象。当对象库中的该图像在当前屏幕的对比匹配率达到一定程度,即可认为找到了该对象,从而也就可以对相应区域进行点击、滑动等操作了。

另一种是TestDroid的做法,直接从代码级截获对象。在Eclipse开发工具装上TestDroid插件,直接点击录制按钮,即可启动被测应用。所录的操作步骤,可以生成RobotiumMonkeyRunner脚本(注:RobotiumMonkeyRunnerAndroid平台最流行的两款开源测试工具)。这种直接在代码级操作的做法,尽管能毫无阻拦的拿到任何想要的对象信息,但是也有几点待商榷之处:1. 对于测试工程师直接来到代码级进行操作,从代码安全性考虑,这并不是对于所有企业都可行;2. 这种做法仅限于Android应用,不能做到像图片识别那样跨平台。当然,对于iOS引用来说,是否需要花力气去做自动化测试,还是可以商议的,毕竟它的设备种类不太多,省去了许多兼容性测试的成本。

第三种是DroidPilot的做法,即上面《前置条件》章节提到的通过签名模式与被测应用取得通信。这种做法虽然也是仅限于Android平台,但毕竟可以抛开源码,更贴近于测试工程师的工作行为。然而,正如所提到的,这种做法难免遭遇“扰码”的阻碍。所以,用这种方式做自动化测试,必须要求被测应用不能加任何扰码信息。其实这里还有一点是关于反编译之后,被测应用的行为是否会发生改变的问题。这里可以确定的是,由于反编译之后,仅仅是改变了被测应用与测试工具之间的临时签名信息,对于被测应用压缩包中的信息并无任何改动,所以,被测应用的行为是可重复、可验证的。

2.
脚本编辑器
构建测试脚本、解析测试脚本

对于PerfectoMobile,由于它是以纯Web方式操作,即脚本的编辑和执行都是在浏览器端操作,这样可以让客户免于安装客户端。他在Web端提供了一种脚本设计器,可以通过拖拽设备模拟按键(如打电话,发短信,音量键、返回键等)到设计窗口,编排顺序以产生测试用例。近年PerfectoMobile又提供了HP QTP插件,使用户可以用QTP来制作脚本,并把做好的脚本上传到他们的网站,借助他们的设备来执行脚本。所以,这款工具的脚本构造能力还是相当强大的。而且,由于与QTP结合,使得自动化测试工程师更能平滑的从桌面应用程序自动化测试过渡到移动应用自动化测试。



下一篇:

基于Android平台应用程序的关键字驱动自动化测试 – 理论、工具和实践(三)
http://bbs.51testing.com/thread-804241-1-5.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-20 00:57 , Processed in 0.077406 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表