基于 IBM Rational Robot 的自动化功能测试框架(转)
上一篇 / 下一篇 2007-02-02 13:25:31 / 个人分类:测试工具
51Testing软件测试网3H
C Y,@"rG
陈 国伟(chenguow@cn.ibm.com), 高级软件工程师, IBM 中国软件开发中心实验室
O(sZRR[02006 年 9 月 28 日51Testing软件测试网&j(}5U^ g.\5?
本文介绍了构建在 IBM Rational Robot 基础之上的自动化功能测试框架,来帮助组织更好的进行自动化的功能测试。
)UT4^q3q01. 前言
xuP F_%}Z0测试本身就是一项异常艰苦的工作,而成功的进行自动化的功能测试,对很多软件开发组织来讲,更是困难重重。本文介绍了构建在IBM Rational Robot基础之上的自动化功能测试框架,来帮助组织更好的进行自动化的功能测试。
p8A$}o&w02. 现实的挑战51Testing软件测试网(o%CZ&ju9jWc
2.1 自动化测试的迫切需求51Testing软件测试网nyX ^9m8|kf/hei
随着业务的变化,软件产品的种类越来越多,软件产品的升级越来越快,在很多的软件开发组织中,测试部门承受着巨大的压力,他们一方面要测试越来越多的软件产品,一方面要应对越来越短的测试时间,同时,还要面对捉襟见肘的测试资源。
/i_@|VE6O(X+M6c L0每个版本发布都包括新增加的功能和已有的功能,已有的功能已经在以前的版本中进行过测试,但是还需要在此版本中执行回归测试。在这种情况下,测试部门往往会考虑到,既然回归测试的测试用例都已经存在并且已经在上一个版本中执行过,那么在新版本中能否自动的执行这些测试?如果能这样的话,将极大的节省时间和资源,将有限的资源投入到新功能的测试上,缓解测试的压力。
/n0mOlzgoB0通常情况下,软件开发组织会使用自动化测试工具,使用录制回放方式来进行功能测试的自动化。但是录制回放方式并不能解决全部问题。
ek ie| Wm02.2 录制回放中存在的问题
/oeL6^5A0业界的经验表明,虽然录制回放方式能够快速的生成测试,但是仅仅单纯的使用录制回放是不够的。51Testing软件测试网~`3uw\{,UL {
首先,也是最主要的原因,就是使用录制回放方式,往往需要耗费时间和资源来调试、维护脚本。这些工作量随着脚本数量的增加,可能会增大到几乎不可能再对脚本进行有效维护的地步;其次,使用录制回放方式,要求应用已经开发完成并且在录制中不出现错误,但是往往当应用达到此条件时已经没有足够的时间进行测试;最后,使用录制回放方式,要求每个测试人员均会使用测试脚本语言“编程”,而当前大多数软件开发组织测试人员专注于业务,往往没有兴趣和精力来“编程”。
9h0?#dz0b~IF0所以,录制回放方式并不能解决所有的问题,在自动化的功能测试上,需要有测试框架的支持。
.U w)zgUUzh03. 解决之道51Testing软件测试网R|6CQRJ7M5_
3.1 概述51Testing软件测试网._.N\Evo2G
IBM Rational Robot是一款优秀的自动化测试工具,自动化功能测试框架是基于Robot之上构建的。如下图:51Testing软件测试网*fR@w$f{
图 1. 基于Robot的自动化功能测试框架51Testing软件测试网N eC}f8DU._
业务测试人员类似于当前软件开发组织中使用手工执行测试的测试人员。可以看到,在解决方案中,除传统的业务测试人员外,增加了技术测试人员角色。技术测试人员偏重于自动化测试相关技术,实际上并不直接执行测试。51Testing软件测试网 jl%v/oX5_
解决方案的核心是使用Robot的SQABasic脚本开发的Robot测试技术框架。此Robot测试技术框架以表驱动为指导思想,读入动态结构,解释并执行动态结构中的每一项,是自动化测试的引擎。同时,为了提高Robot测试技术框架的易用性,在解决方案中还包括测试设计工具,它是使用其它编程语言,比如JAVA、Dephi等开发的应用程序。在测试设计工具中,测试技术人员首先建立和待测试应用一一对应的静态结构,此静态结构以页面为单位,随后业务测试人员从静态结构中选择不同的页面,组成测试动态结构,即测试用例,随后,此动态结构被Robot测试技术框架读入并解释执行。51Testing软件测试网I*os;Fp(i O9D
3.2 Robot测试技术框架51Testing软件测试网5~9`F K(_X&R
3.2.1 表驱动介绍
V;rR#CMoo od0Robot测试技术框架是基于表驱动测试思想。表驱动测试就是预先在表中定义清楚代表每一步执行操作的关键字,然后由脚本读入表中的每一行,根据关键字来执行对应的动作。以CQ Web登录界面为例:
x4a1Pm`6c:r8vZ0图 2. ClearQuest Web登录界面
J2SVqw;y-`6Z%h051Testing软件测试网 d~%h9lo8i
当要自动执行“登录”按钮时,可以如下图来定义此表:
]5t#m8eeu,x0登录
P ES?u4IX0然后在Robot的脚本中,打开表,读入此行并执行。这样的话,Robot便去点击界面上的“登录”按钮了。51Testing软件测试网:A G"AGTw.V
'打开文件
osK+e6WR0Dim sData() as string51Testing软件测试网&U yu"tNz}3Y?
B
InFileName = getExcelFileName
8u2F5c!TW-m0ReadExcelData InFileName, sData()
:M|%QXJq0===============================
(ER
X0lEc0‘解释并执行
,T'Z.Ue}OD Ig0z0Select Case (sKeyWord)51Testing软件测试网1l"Ld'K'f,H#\
Case "登录"51Testing软件测试网w O4lOPS3f3\B
Window SetContext, "currentwindow", "" PushButton Click, "Text=登录", ""
-}AB3R2S({0
以上是表驱动的简单示例。在自动化测试中,基于表驱动,还需要解决以下问题:对象识别、验证点、数据池、分支执行、数据关联、日志记录、调用其它脚本、脚本结束。本节将分别展示其在Robot测试技术框架中的实现方式。51Testing软件测试网l1q6iV%s _
3.2.2 对象识别51Testing软件测试网,H HV@o
根据IBM Rational Robot识别对象并执行操作的要求,如果要让Robot找到界面上的对象并执行相关动作,需要给Robot指定每个对象的对象类型、对象标志、执行动作和数据,如下图所示。51Testing软件测试网4L8Y _ibN1R'P)H3S
图 3. 为Robot指定每个对象的对象类型、对象标志、执行动作和数据
hl1q|8R5l051Testing软件测试网ch7`/q4XpDU-w_+d+x p
以按钮举例来讲,如果要让Robot自动点击某个按钮,那么首先要告诉Robot需要在“Button”这种类型的对象上进行操作;其次要告诉Robot,在此类型的对象上要执行什么操作,比如click;第三要告诉Robot要click那个具体的按钮上,比如要click“登录”按钮。51Testing软件测试网0Lt{$n(vGC8V
表 2:对象识别表51Testing软件测试网aWFJ#KbTsUj
动作类型对象类型 对象标志 执行动作 数据
e9sF8Xl1O*q@iA0G51Testing软件测试网4`(l3L"jv`B
Button51Testing软件测试网/g@SJK"p C2S
确定51Testing软件测试网GigbbD-p
Click
(ihT-mZ!pt0G
Ki!H$dS0EditBox51Testing软件测试网&d8e3|W vE*u~z
姓名51Testing软件测试网9WJ8Jj2T0C l
Click51Testing软件测试网o&dh}3{vP
Jack51Testing软件测试网@$w5V"ySLJn
G
&F$S$]jx6u0ComboBox51Testing软件测试网Yb?y_cm
角色列表51Testing软件测试网l;^7{:V I_ im"[
Click51Testing软件测试网Ol#{d.I6{ zs
系统管理员51Testing软件测试网Q6I3kN6L,Lw&Sm)D
G
XI;|"_'w R1KP0RadioButton
C7{Za @K a*QH0区域51Testing软件测试网 v5e alo
Click51Testing软件测试网6tNNGSB0h
在Robot测试技术框架中,相应的处理为:51Testing软件测试网7p@%l#| w
'打开文件
)A(|;_Qd8sc}0Dim sData() as string51Testing软件测试网,B4?J'e3\^r
InFileName = getExcelFileName51Testing软件测试网CR3@W.M l:w4I&|
ReadExcelData InFileName, sData()51Testing软件测试网9s#TU(V9z1|.^^
===============================
R/c/~m&A0‘对文件中每一行
0~&[+WuTz0Select Case (sObjType)51Testing软件测试网vj8l_ux)_%?
Case "Button"51Testing软件测试网:z:?u3\3Y2h$n/Lt;\
ProcessButton(sObjAction, sObjData, sData)51Testing软件测试网@'zlh:fyr
Case “EditBox”
{R1\ZdWHp!Jd0ProcessEditBox(sObjAction, sObjData, sData)
-F5j/_z9p e,_FH0Case “ComboBox”51Testing软件测试网(R0L)E\ {_
ProcessComboBox(sObjAction, sObjData, sData)51Testing软件测试网;^^gqAd7U$P
Y,v~SW1Z
Case “RadioButton”51Testing软件测试网0_aZ'r~$aG)h
ProcessRadioButton(sObjAction, sObjData, sData)51Testing软件测试网p2i#v!wfmnh-_,Rz
===============================51Testing软件测试网u1I R#ca!s
‘对按钮执行的动作
-a0U#Y'K6ux'rJH0Select Case(sObjAction)
G7JJ1Y(D"@ Z!HO0Case “Click”51Testing软件测试网W/MT)D(m$q7[
Window SetContext, "currentwindow", "" PushButton Click, "Text=" & sObjData, ""51Testing软件测试网 q*t&Av` W,j
===============================51Testing软件测试网3z.?G*z$Xc,|
‘对文本框执行的动作
V
P.pRK2o#~0Select Case(sObjAction)51Testing软件测试网,Or/TqU Q
Case “Click”
vr.d miB0EditBox Click, "Name=" & sObjData, ""51Testing软件测试网c!^;t}7KmA3v.~
InputKeys "^+{HOME}{DELETE}" InputKeys sData
w;e1~ o+z-K0===============================
X!{
e&Vs!I4F z!C0‘对组合框执行的动作51Testing软件测试网$j'i Fp$Y eL3P
Select Case(sObjAction)
l
i@
S8A od e"d X0Case “Click”
3P4ufYt
C1\ Yf0ComboBox Click, "Name=" & sObjData, ""51Testing软件测试网8I:aPQ0N/BJ
ComboListBox Click, "Name=" & sObjData, "Text=" & sData
!fGkxk:_} x0===============================51Testing软件测试网|h\J#JS
‘对单选按钮执行的动作51Testing软件测试网.ub
Odsz
Select Case(sObjAction)
d3KQ"d E`Nh0Case “Click”
.hn2YY"c0RadioButton Click, "Name=" & sObjData
u`B@\} dS1_"I U0
要强调的是,以按钮为例,虽然在表中需要为界面上每一个具体的按钮定义一行,但是在测试技术框架中,所有按钮处理的代码都是一样的。51Testing软件测试网 ?F Z0M(UO
3.2.3 验证点
WyWhm5Ng'o0没有验证点的自动化测试就不能称之为测试。从这句话中就可以看到验证点在自动化测试中的重要性。对于验证点来讲,因为不同的测试、不同的应用验证点都不相同,所以Robot测试技术框架仅仅提供了扩展的机制,不同的验证点可以通过扩展机制加入到测试技术框架中。
*} tCra.^/H0a%P0加入验证点之后,表的定义如下:51Testing软件测试网!_/?hZp _
表 3:对象识别表51Testing软件测试网:ol/W(vD"k9H`Q
动作类型对象类型 对象标志 执行动作 数据
:P Obx ])] g0G51Testing软件测试网jfc{P f/Fl
Button
YZVEJZ2r0确定51Testing软件测试网Y,busSI
Click
lfM7]oa;i0G
[ b QyB ?0HTMLLink
;S7O$T8ucO0链接51Testing软件测试网tn6KcH
Click51Testing软件测试网6P1h fy6|v
G
o1R MD1v0ComboBox51Testing软件测试网8G4bau tp:M5CA*C,P
角色列表
Q7Jt ?T0Click
`%@{}#B/yzU J0系统管理员51Testing软件测试网h6h8m lY y3Y5p
G51Testing软件测试网5JIUKn9u
RadioButton51Testing软件测试网B|[7Q+\6]4eCu2s9J
区域
@GSg t+Yd/q0Click51Testing软件测试网rfh5tQdF&w;h
V51Testing软件测试网1GJ G(Z,l3n1T8~
VP51Testing软件测试网w\[(]{M+JIJ9I
VP_SUM51Testing软件测试网&Me]$|-Bd%\0Gz_
VP_SUM
"O8Qo7D*ro/zw024
jv)G:BS2BK2z0最后一行是加入的验证点。所有的验证点其对象类型均为VP,不同的验证点有不同的对象标志,上表中的验证点是VP_SUM,验证点的基线数据为24。
hE)l lVoN l7{0在Robot测试技术框架中,处理如下:
~*zNwG!Cs-B)O0‘对文件中每一行51Testing软件测试网0IG%_5x+g?J$A:NO
Select Case (sObjType)51Testing软件测试网*g
FZ5m^}~f$jv
Case ……
Df2E6Nc7|
PU0Process……
*xb
EBG@'}G0Case “VP”
f1Hb7x)~7B0ProcessVP(sObjAction, sData)
e+iK pw-g0===============================
2{8gSv$j7b8mIy0‘对验证点执行的动作51Testing软件测试网(V$_onWW4|#b|Y1e!I7L
g_VP_SUM_Baseline = sData
\q#]I$_~0Callscrīpt sObjAction51Testing软件测试网-`;F'D:@q:}d'JOUa
===============================51Testing软件测试网,M*?m.RBr
‘验证点脚本的处理51Testing软件测试网u$G4Y5Ol
sData = g_VP_SUM_Baseline51Testing软件测试网3q/xwTC!f;p
SQAGetProperty “”, “”, sActual
W7i;a6xb[f0if sData = sActual then51Testing软件测试网Hd/ITX1[ r:c
\
……51Testing软件测试网O4m@ [,nv&h\
else51Testing软件测试网$KD-ATC0{
……
C+Sq t
dK0end if51Testing软件测试网;w9Y!t
_8J ]o!V Z
将验证点的基线数据放入全局变量g_VP_SUM_Baseline中,然后使用Callscrīpt函数来调用验证点的脚本。对每一个验证点单独的创建一个脚本文件,脚本文件的名字和验证点的标志相同,都是VP_SUM。虽然各个验证点脚本的内容都不相同,但是一般的步骤是首先从全局变量g_VP_SUM_Baseline中取出基线数据,然后使用SQAGetProperty函数从界面上取实际的数据,再比较实际数据和基线数据。51Testing软件测试网?-l3a!T"@?#]5]sX
3.2.4 数据池51Testing软件测试网v]6wP'XRk
往往需要使用不同的数据来运行同一个测试,在自动化测试中是使用数据池来实现的。数据池的增加比较简单,就是往表中增加表示数据的列,每一列代表一次测试执行所需要的数据。如下表:51Testing软件测试网zH)kf2E~?
表 4:数据池表a51Testing软件测试网4ufK7\DK@!pv
动作类型对象类型 对象标志 执行动作 数据151Testing软件测试网 QX {*G|lff$uQ
G51Testing软件测试网,W4fgNic A#W
Button
&GbgZ:mz:u,U0确定51Testing软件测试网k.IMT4q&K(o-J
Click51Testing软件测试网wq|?0S w
G51Testing软件测试网a1T_gm[s
HTMLLink51Testing软件测试网#Q5K W)m6o(Z
链接51Testing软件测试网 q0Vz L9W$S4H3l
Click
8`6a&B;^#K+`R0G
9}$g9P#dfh+Q@&C!O%Y0ComboBox51Testing软件测试网l k6i3E,r7n+x
角色列表
)@,U9l DSI;ev$F0Click51Testing软件测试网h%@$}9}Q
系统管理员51Testing软件测试网p6r j-W[@
普通管理员51Testing软件测试网\$z @ UL7_*c
G51Testing软件测试网]5L\'lt%L
RadioButton
;aShum4zE.V0区域
y9U3m;] W+E%T0Click51Testing软件测试网!\0}&`fq%`
V51Testing软件测试网(x3n+]4Ur'r'B5av G
VP