Android应用自动化测试——理论、工具和实践(上)

摘要

  桌面应用程序与浏览器端的自动化测试都已经历了十年的发展,无论是从工具上还是项目管理方 法论上都已经趋于成熟。而移动设备端应用程序的自动化测试近两年才刚起步,似乎一切尚处于探讨与研究阶段。但我们似乎已经看到其爆炸性的需求增长势头。可 以从这两方面着眼分析:其一,移动应用从数量上和逻辑复杂程度上的增长,以及产品发布周期的紧缩,使得快速回归测试迫在眉睫;其二,安卓系统的开放性造成 硬件厂商百家争鸣的局面,设备款式之多,迫使移动应用的兼容性测试提上日程。纵观当前智能手机两 大主流阵营iPhone与Android,似乎安卓应用开发商与设备制造商更能体会兼容性测试的切肤之痛。鉴于此,并结合传统桌面系统上的自动化测试经 验,我们在此探讨基于Android平台应用程序的关键字驱动自动化测试的可能性,并摸索一条适合在移动应用开发过程日新月异的现实情况中切实有效的实现 和实施自动化测试的路子。

  理论基础

  在传统的桌面应用软件与浏览器端应用的自动化测试领域,已经有相当成熟的工具可供用户选择,例如商业工具HP QTPIBM Robot/RFT,Borland SilkTest等;开源工具如Selenium,Watir等。剖析这些工具,它们似乎都有着相同的功能结构:

  ● 对被测应用界面对象/界面元素的捕获与识别,并对其进行管理与操作;

  ● 对于测试脚本的编辑功能与语法解析功能;

  ● 对于测试数据的组织与管理;

  ● 对于脚本执行结果的分析与输出;

  如果细说,还可以牵扯到如脚本录制功能,插件管理功能,与测试管理工具、缺陷跟踪工具的整合等内容,涵盖面相当广泛。但所有这些都是为了一个目的:模拟测试人员行为,达到功能性回归测试的目的。本文尝试从以下最关键的几点来分析自动化测试工具的核心构成部分。

  1、关键字驱动

  关键字测试的主要思路是以面向对象的方式来管理被测应用的对象、对象的相关操作、测试数据以及这些测试数据之间的组合关系。关键字驱动是自动化测试中行之有效的方式,它可以帮助测试工程师更方便的维护测试脚本、构建复杂的业务逻辑测试用例、并节省手工测试的执行时间(尤其是在回归测试阶段)。关键字驱动主要由以下三种元素构成:

  1)被测对象,即被测应用界面上的元素;

  2)针对这些对象的操作,如点击(按钮)、填充(文字)、选择(单选框/多选框);

  3)以及基于这些操作的数值;

  上述三种元素可以描述为以下表格:


对象


操作


数值


文本框


输入


文本值


按钮


点击



选择框


选择


选项值

  或者以面向对象的文法表述为:

  对象.操作(值)

  该语句是关键字驱动脚本的构成基础。

  2、对象库

  对象库是用于储存被测应用程序界面对象(界面元素)的地方。它是关键字驱动测试工具的关键点。有了它,用户可以更容易的维护被测对象、更快速的构建测试脚本。它是如何做到这些的呢?让我们看看下面的结构:

 实践

  探讨完上述关于不同测试工具的使用特点,更准确的说,是安卓应用自动化测试工具的特点,我们不妨来实践(其实是模拟)一个移动应用的测试过程。这里我们选用API Demo作为被测应用,选用DroidPilot作为测试工具。

  分析被测应用

  被测应用API Demo使用标准Android SDK作为开发控件,且被测应用未加扰码,因此,界面上所有元素可以被DroidPilot识别。

   对于一些非标准Android SDK控件开发的应用,这里有两种情况:一种情况控件完全由自己开发,如果是这种情况,DroidPilot完全无法识别对象;另一种情况是在标准控件基 础上做了二次开发,这样的话DroidPilot只能识别到原生SDK那一层。对于这两种情况,都可以联系DroidPilot开发团队为非标准控件度身 定制专属插件,用于识别被测控件。

  对于扰码问题,正如上述《前置条件》章节所描述的,DroidPilot本身是无能为力的,只能请开发团队去掉扰码,打包一个不加扰码的测试包给测试团队使用了。

  设计测试用例

  这里我们假设一个测试用例是进入\App\Activity\Animation\Fade in\界面,对界面的元素(按钮、文本框、多选框、单选框、下拉列表)进行操作,并验证文本框的文字是否符合我的预期结果。测试步骤如下:


测试用例1 -验证\App\Activity\Animation\Fade in\界面元素


前置条件:API Demo已经启动,停留在起始页


步骤


动作


期望结果


1


点击App项


 


 


点击Activity项


 


 


点击Animation项


 


 


点击Fade in项


 


 


在文本框输入"put your text here"


 


 


勾选Checkbox1


 


 


向下滑动一次屏幕


 


 


点击下拉框


 


 


勾选Venus


 


 


检查文本框


文字="textColorPrimary"

  开发测试脚本

  先使用DroidPilot脚本编辑工具抓取各个屏幕的对象,然后把这些对象选入脚本设计器,按照测试用例的顺序来排列,如下图:

 如下图,传统模式,测试工程师可能在第一轮测试才有一次Full Test,在后续的回归测试中,可能只能做到部分回归。

  如果引入自动化测试工程师,同步开发测试脚本(理想情况,每个应用自动化比率达到70%~80%,整体自动化比率达到60%~70%),有可能使得回归测试比率有所提高。

  从零做起

  既然如此,何不从现在开始,从零开始,在项目中尝试引入自动化测试,哪怕只是抽调部分人力着手部分应用的自动化测试,至少可以达到Daily Build Smoke Test的效果。再者,移动应用自动化测试行业正处于起步阶段,此时介入也不失为一个好时机。

  结论

  回顾上述讨论的内容,我们设想能在移动应用自动化测试领域延续桌面系统自动化测试的成功经验,从理论基础、工具支 持、以及后续项目管理方面都做了一番探讨。尽管主要还是局限于安卓应用的自动化方面,对于iOS提及较少。不难理解,iOS本身支持的机型有限,对于设备 兼容性测试并不是重点关注的内容。而在功能性回归测试方面,它本身也有相关工具支持。至于像Blackberry之类的平台,因为本身并没有呈现爆炸性的 应用增长,所以也没有列在讨论范围。所以,本文仍以安卓平台作为自动化测试的突破口,希望从中能结合市面上的一些商用工具,尝试实践以“关键字驱动”为基 础的自动化测试,而非原始的以“坐标点”为基础的屏幕点击测试。对于开源工具也没有提及,原因是考虑到像Robotium和MonkeyRunner之类 的流行工具可能更贴近于开发工程师使用,而非更贴近于测试工程师。所以,我们希望在上述的讨论中能带给读者在测试项目中新的启发。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-16 20:58:04

Android应用自动化测试——理论、工具和实践(上)的相关文章

巧用Terraform和Packer开源工具完成云上自动运维

2017年在线技术分会--运维/DevOps在线技术峰会上,来自阿里云的黎山分享了利用开源DevOps工具完成云上的自动运维的实践.她首先通过对5个应用场景的分析引出了"自动化能自动化的一切"的理念.然后介绍了使用Terraform和Packer开源工具完成云上自动运维的具体实现过程.最后对多工具组合案例进行了分享.   以下内容根据直播视频整理而成.   云计算的特点是开箱即用,可以随时扩缩容,不用考虑硬件的损坏问题,而且有丰富的云平台和云产品供选择. 应用场景分析 应用1 某应用1

Pury — 一个新的 Android App 性能分析工具

本文讲的是Pury - 一个新的 Android App 性能分析工具, 手机应用存在的目的,就是在帮助用户做他们想做的事情的同时,提供最好的用户体验 -- 而用户体验的重中之重是应用的性能.但有时候开发者们却以性能为借口,既没有达到既定目标,又写着低质量并难以维护的代码.在这里我想引用 Michael A. Jackson 的一句话: "程序优化守则第一条:别去做它.程序优化守则第二条(仅限于专业人员):别去做它,现在还不是时候." 在开始任何优化之前,我们要先认清问题的症结所在.

XCoreRedux框架:Android UI组件化与Redux实践

XCoreRedux框架:Android UI组件化与Redux实践 @author: 莫川 https://github.com/nuptboyzhb/ XCoreRedux源码+Demo:https://github.com/nuptboyzhb/XCoreRedux 使用android studio打开该项目. 目录结构 demo 基于xcore框架写的一个小demo xcore XCoreRedux核心代码库 pics 文档的pic资源 前言 Android开发当中的Code Archi

Android 应用热修复工具 AndFix

AndFix 详细介绍 AndFix 是阿里巴巴开源的 Android 应用热修复工具,帮助 Anroid 开发者修复应用的线上问题.Andfix 是 "Android hot-fix" 的缩写. AndFix 支持 Android 2.3 - 6.0,ARM 和 x86 架构,dalvik 运行时和 art 运行时.AndFix 的分支是 .apatch 文件. AndFix 方法体取代实现规则: Bug 修复过程: 使用 生成 .apatch 文件: usage: apkpatch

api-开发是使用位置服务(android自带API),无法上传实时坐标,只能上传第一个点的坐标?

问题描述 开发是使用位置服务(android自带API),无法上传实时坐标,只能上传第一个点的坐标? 开发是使用位置服务(android自带API),无法上传实时坐标,只能上传第一个点的坐标?有大神知道这是为什么吗?急急急!!! 解决方案 http://blog.csdn.net/qiannuo/article/details/6791873

android安装问题Manager.exe连接不上

问题描述 android安装问题Manager.exe连接不上 我的SDK Manager.exe为什么连接不上?怎样才能连接上? 解决方案 是点击SDK目录下的.exe文件不能弹出Manager对话框吗? 如果是,可能需要重新下载SDK了, 如果是从eclipse里面点击图标,需要设置一下 Window - Preferences - Android - SDK location需要添加下SDK的路径

代码-android 使用自定义控件后,在模拟器上无限重启

问题描述 android 使用自定义控件后,在模拟器上无限重启 如题.我自定义了一个title,作为公共的title,特别简单,代码如下 title的布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/

Twitter开源Android自动截屏工具Screengrab

Twitter近日宣布开源Android应用截屏工具Screengrab,方便开发者在应用中整合截屏功能.Screengrab集成在Twitter的Fastlane开发者工具中,目前源代码已经托管到GitHub. 与Screengrab功能类似的开源截屏工具还有Android-screeshot-lib和Facebook的Screenshot-tests-for-android. 与很多互联网巨头类似,Twitter也是积极的开源者,通过开源相关工具和代码,Twitter一方面能够推销自己的工具

android开发银联支付在小米4c上直接ANR异常,别的手机没事,什么原因???

问题描述 android开发银联支付在小米4c上直接ANR异常,别的手机没事,什么原因??? android银联支付,点击调起银联,在别的手机上运行正常,在小米4c上直接ANR异常,什么原因??? 解决方案 http://jingyan.baidu.com/article/b2c186c8e49428c46ff6ff43.html