基于 IBM Rational Robot 的自动化功能测试框架(转)
上一篇 / 下一篇 2007-02-02 13:25:31 / 个人分类:测试工具
陈 国伟(chenguow@cn.ibm.com), 高级软件工程师, IBM 中国软件开发中心实验室
x%mlf'\02006 年 9 月 28 日
!`B&F dO*f0本文介绍了构建在 IBM Rational Robot 基础之上的自动化功能测试框架,来帮助组织更好的进行自动化的功能测试。
?-ti&rQ0~01. 前言51Testing软件测试网M'Fm(Y,f.k"]/g$~
测试本身就是一项异常艰苦的工作,而成功的进行自动化的功能测试,对很多软件开发组织来讲,更是困难重重。本文介绍了构建在IBM Rational Robot基础之上的自动化功能测试框架,来帮助组织更好的进行自动化的功能测试。51Testing软件测试网 J u9sC,J/P;yc2FX
2. 现实的挑战
'} qfFG$Z r`P02.1 自动化测试的迫切需求51Testing软件测试网 c I)Q.B]E?&bg ]"K.]
随着业务的变化,软件产品的种类越来越多,软件产品的升级越来越快,在很多的软件开发组织中,测试部门承受着巨大的压力,他们一方面要测试越来越多的软件产品,一方面要应对越来越短的测试时间,同时,还要面对捉襟见肘的测试资源。51Testing软件测试网,\6nyK,Ot
每个版本发布都包括新增加的功能和已有的功能,已有的功能已经在以前的版本中进行过测试,但是还需要在此版本中执行回归测试。在这种情况下,测试部门往往会考虑到,既然回归测试的测试用例都已经存在并且已经在上一个版本中执行过,那么在新版本中能否自动的执行这些测试?如果能这样的话,将极大的节省时间和资源,将有限的资源投入到新功能的测试上,缓解测试的压力。
0}*E]Rw,P0通常情况下,软件开发组织会使用自动化测试工具,使用录制回放方式来进行功能测试的自动化。但是录制回放方式并不能解决全部问题。51Testing软件测试网b2P]:\0[k%Vj1Qi
2.2 录制回放中存在的问题51Testing软件测试网mvj3aj |4nr
业界的经验表明,虽然录制回放方式能够快速的生成测试,但是仅仅单纯的使用录制回放是不够的。51Testing软件测试网 v#X7J+xN-iPY[
首先,也是最主要的原因,就是使用录制回放方式,往往需要耗费时间和资源来调试、维护脚本。这些工作量随着脚本数量的增加,可能会增大到几乎不可能再对脚本进行有效维护的地步;其次,使用录制回放方式,要求应用已经开发完成并且在录制中不出现错误,但是往往当应用达到此条件时已经没有足够的时间进行测试;最后,使用录制回放方式,要求每个测试人员均会使用测试脚本语言“编程”,而当前大多数软件开发组织测试人员专注于业务,往往没有兴趣和精力来“编程”。
.\4A(vSH6N0所以,录制回放方式并不能解决所有的问题,在自动化的功能测试上,需要有测试框架的支持。51Testing软件测试网"r ^ o1@o/v
3. 解决之道51Testing软件测试网5U'@3SaS
3.1 概述
1VnH t4[&z1t0IBM Rational Robot是一款优秀的自动化测试工具,自动化功能测试框架是基于Robot之上构建的。如下图:
q&RQ Y&G:cKw:^?0图 1. 基于Robot的自动化功能测试框架51Testing软件测试网.\%k*il KM9S E6`4Qd
'f8_#{J~q `]} v0业务测试人员类似于当前软件开发组织中使用手工执行测试的测试人员。可以看到,在解决方案中,除传统的业务测试人员外,增加了技术测试人员角色。技术测试人员偏重于自动化测试相关技术,实际上并不直接执行测试。51Testing软件测试网z+}O s*]8sd8kn
解决方案的核心是使用Robot的SQABasic脚本开发的Robot测试技术框架。此Robot测试技术框架以表驱动为指导思想,读入动态结构,解释并执行动态结构中的每一项,是自动化测试的引擎。同时,为了提高Robot测试技术框架的易用性,在解决方案中还包括测试设计工具,它是使用其它编程语言,比如JAVA、Dephi等开发的应用程序。在测试设计工具中,测试技术人员首先建立和待测试应用一一对应的静态结构,此静态结构以页面为单位,随后业务测试人员从静态结构中选择不同的页面,组成测试动态结构,即测试用例,随后,此动态结构被Robot测试技术框架读入并解释执行。51Testing软件测试网3Md7O9R!W`[ e
3.2 Robot测试技术框架
]A~0i$]j%C8W2j7l03.2.1 表驱动介绍
-[ y/q0Z%JxOfJ0Robot测试技术框架是基于表驱动测试思想。表驱动测试就是预先在表中定义清楚代表每一步执行操作的关键字,然后由脚本读入表中的每一行,根据关键字来执行对应的动作。以CQ Web登录界面为例:
1jpO VfJy2B0图 2. ClearQuest Web登录界面51Testing软件测试网Sv!|I n9oZ~6A
51Testing软件测试网X(L'W&~`4dl
当要自动执行“登录”按钮时,可以如下图来定义此表:51Testing软件测试网2Y8k3W#r!oj;S
登录
+fQ|&rZ$_-d0然后在Robot的脚本中,打开表,读入此行并执行。这样的话,Robot便去点击界面上的“登录”按钮了。51Testing软件测试网k(L!fX@x
'打开文件51Testing软件测试网@9~%xA#r4BRS
Dim sData() as string
TJKS-_v&a*d0InFileName = getExcelFileName51Testing软件测试网{5Z0SZTL%Z~
ReadExcelData InFileName, sData()51Testing软件测试网$sDY!n2y-B&Hb.q
===============================
F} Pl8q'KB.\~P0‘解释并执行
.UJ'k B_m-Q%l4t0Select Case (sKeyWord)51Testing软件测试网0p] C[G#O.Ht2B
Case "登录"51Testing软件测试网6?.^Gi4|4of,fz
Window SetContext, "currentwindow", "" PushButton Click, "Text=登录", ""51Testing软件测试网6qV3ve+V3TL8M1b8}f)V
以上是表驱动的简单示例。在自动化测试中,基于表驱动,还需要解决以下问题:对象识别、验证点、数据池、分支执行、数据关联、日志记录、调用其它脚本、脚本结束。本节将分别展示其在Robot测试技术框架中的实现方式。51Testing软件测试网$l)A:z_VNR.R
3.2.2 对象识别51Testing软件测试网*RCd?N9K)i xC*d
根据IBM Rational Robot识别对象并执行操作的要求,如果要让Robot找到界面上的对象并执行相关动作,需要给Robot指定每个对象的对象类型、对象标志、执行动作和数据,如下图所示。
i'A_Pe EO5v8l0图 3. 为Robot指定每个对象的对象类型、对象标志、执行动作和数据
0\9])S$Hb x:B0x} D/JfH7q0以按钮举例来讲,如果要让Robot自动点击某个按钮,那么首先要告诉Robot需要在“Button”这种类型的对象上进行操作;其次要告诉Robot,在此类型的对象上要执行什么操作,比如click;第三要告诉Robot要click那个具体的按钮上,比如要click“登录”按钮。51Testing软件测试网 b3lm"w}v'Kx8f
表 2:对象识别表51Testing软件测试网+y;aO`n Q9G
动作类型对象类型 对象标志 执行动作 数据51Testing软件测试网 fQjlGp{YYG h
G51Testing软件测试网Pu,c:N4Btb~b
Button51Testing软件测试网i[$qp4k!\j_
确定
0V?$z otD0Click51Testing软件测试网BP1qa K&Z x4kN
G
{5QKLs/Kq%B0EditBox51Testing软件测试网!a,@pN6j4uo#D
姓名51Testing软件测试网-O)es)W2S.|m
Click
5x0?ho2pS2E%h0Jack
4jm$@]_q2k0G
^0U\}*u W"n[g0ComboBox51Testing软件测试网[ui'X3PJ@Z q,a
角色列表
*\"H%w5f1p(p,A0Click51Testing软件测试网$Ay [)N7wnv-t
系统管理员