51Testing软件测试论坛

标题: 基于Android平台应用程序的关键字驱动自动化测试 – 理论、工具和实践(一) [打印本页]

作者: anthony.wang    时间: 2012-8-29 12:45
标题: 基于Android平台应用程序的关键字驱动自动化测试 – 理论、工具和实践(一)
本帖最后由 anthony.wang 于 2012-9-12 10:59 编辑

基于Android平台应用程序的关键字驱动自动化测试

理论、工具和实践

摘要

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


理论基础

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

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

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

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

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

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

1.
关键字驱动

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

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

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

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

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


  对象
  
  操作
  
  数值
  
  文本框
  
  输入
  
  文本值
  
  按钮
  
  点击
  
  
  
  选择框
  
  选择
  
  选项值
  


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

对象.操作(值)

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

2.
对象库

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

[attach]81155[/attach]

如果对象都保存在对象库,它们可以被集中管理。与此同时,测试脚本(一个或多个)可以根据自身也许需求随意调用这些对象来使用。这使得多位测试工程师协同开发测试脚本成为可能。




[attach]81156[/attach]

对象库也可以分为两层,一层面向用户视角,另一层面向程序视角。这两层之间的对象是一一对应关系。这样做有助于测试脚本(测试用例)独立于被测应用程序。例如,应用程序的界面对象Obj 1改变了,但所有引用了该对象的测试脚本无需改动,因为它们是引用的对象Obj A,而非直接引用Obj 1

3.
测试数据组织结构

当我们提到测试用例的时候,通常指的是一系列操作步骤以及针对这些步骤所用到的测试数据。在之前的章节中,我们已经探讨了基于被测对象的操作步骤,现在我们来谈谈测试数据相关的内容。

测试数据,通常可以理解为填入被测表单各个字段中的数值。这些数值需要被很好的组织和保存,以防止数据冗余。可问题是,如何有效的组织和存放这些数据?

在前面关于对象库的文章中,我们可以看到,其实测试数据也可以像对象那样被保存于数据库。可以存于数据库的表中,也可以存在表格文件,如Excel .csv文件。这些表中的字段(表结构)需要跟被测表单中的字段一一对应。

[attach]81157[/attach]

在每次测试迭代中,测试用例从数据表中挑选其中一条数据用以执行,所以,表格中的数据需要设计为可重复利用的。当然,期望结果也可以存放于表格中,例如,这次操作的期望结果或返回值。

至此,我们已经讨论了关键字驱动的测试脚本、对象库和测试数据的组织。这几样应该都是自动化测试的关键点。但是,这些关键点能否直接套用与安卓应用的自动化测试呢?这些我们将继续在接下来的章节中讨论。


下一篇:

基于Android平台应用程序的关键字驱动自动化测试 – 理论、工具和实践(二)
http://bbs.51testing.com/thread-803373-1-5.html


作者: 愚人    时间: 2012-8-30 14:25
是不是好多东西没显示出来呀
作者: msnshow    时间: 2012-8-30 21:49
基本上很难,想起来虽然很简单
作者: zqyysr309    时间: 2012-8-31 09:51
有点小迷茫
作者: stserein    时间: 2012-8-31 10:55
安卓平台貌似很难啊,都看不懂
作者: iRobot    时间: 2012-9-4 10:06
谁能讲的清楚“关键字驱动”和“数据驱动”?
作者: Elim    时间: 2012-9-4 18:23
路过。。
作者: Elim    时间: 2012-9-4 18:26
再次路过。。
作者: wongwongwong    时间: 2012-9-5 10:00
学习了~
作者: anthony.wang    时间: 2012-9-6 11:44
回复 2# 愚人


    文章太长,我用了5篇帖子才贴完。
作者: Ezekiel    时间: 2012-9-10 10:38
可以讨论一下移动端应用的测试跟PC端应用的测试有多大区别。目前在移动端游戏可是占了大头,而且用户行为也比较丰富,已经不局限于键盘+鼠标的操作了。另外就是手机特有的中断性测试,例如电话、短信。这方面也可以深入谈谈。
作者: anthony.wang    时间: 2012-9-12 11:07
据我观察,目前移动应用开发团队好像很少专职的测试人员(至少我认识的几家小公司是这样),搞开发的弟兄们自己充当测试的角色了。如果有专职测试的团队会考虑得更深入全面些。

另外,我在每一篇帖子最后都增加了下一篇帖子的链接,方便大家点过去阅读。
作者: 大力拉    时间: 2012-9-13 10:23
回复 6# iRobot


    我是这样理解的:关键字我就把它看作对象,关键字驱动其实就是对象驱动。把对象组织起来,成为测试用例,就是关键字驱动测试啦~ 再来说数据驱动。测试用例少不了测试数据。比方说我们要填一张表单,设计了不同的数据,有些数据能正常输入,有些数据是非法数据……这些数据都可以设计在一张表格,每次测试用例执行就根据表格里的数据执行,这就是所谓的数据驱动。其实,这两种方式相辅相成,很难单独应用的。不知这样解释合理不?反正我自己是这么理解的。。。楼主这篇文章可以贴在技术讨论区或工具讨论区哟~:)
作者: anthony.wang    时间: 2012-9-14 17:30
回复 13# 大力拉


    有见地!多谢提醒。
作者: Ezekiel    时间: 2012-9-17 14:53
回复 4# zqyysr309


    移动应用方面的自动化测试应该是未来的发展方向,可以多关注一下。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2