所有文章均来自网络(除测试总结部分),如果涉及到版权问题请与我联系,我会及时删除~~~~

基于 IBM Rational Robot 的自动化功能测试框架(转)

上一篇 / 下一篇  2007-02-02 13:25:31 / 个人分类:测试工具

 

51Testing软件测试网3H CY,@"rG

陈 国伟(chenguow@cn.ibm.com), 高级软件工程师, IBM 中国软件开发中心实验室

O(sZRR[0

2006 年 9 月 28 日51Testing软件测试网&j(}5U^ g.\5?

本文介绍了构建在 IBM Rational Robot 基础之上的自动化功能测试框架,来帮助组织更好的进行自动化的功能测试。

)UT4^q3q0

1. 前言

xuP F _%}Z0

测试本身就是一项异常艰苦的工作,而成功的进行自动化的功能测试,对很多软件开发组织来讲,更是困难重重。本文介绍了构建在IBM Rational Robot基础之上的自动化功能测试框架,来帮助组织更好的进行自动化的功能测试。

p8A$}o&w0

2. 现实的挑战51Testing软件测试网(o%CZ&ju9jWc

2.1 自动化测试的迫切需求51Testing软件测试网n yX ^9m8|kf/h ei

随着业务的变化,软件产品的种类越来越多,软件产品的升级越来越快,在很多的软件开发组织中,测试部门承受着巨大的压力,他们一方面要测试越来越多的软件产品,一方面要应对越来越短的测试时间,同时,还要面对捉襟见肘的测试资源。

/i_ @|VE6O(X+M6c L0

每个版本发布都包括新增加的功能和已有的功能,已有的功能已经在以前的版本中进行过测试,但是还需要在此版本中执行回归测试。在这种情况下,测试部门往往会考虑到,既然回归测试的测试用例都已经存在并且已经在上一个版本中执行过,那么在新版本中能否自动的执行这些测试?如果能这样的话,将极大的节省时间和资源,将有限的资源投入到新功能的测试上,缓解测试的压力。

/n0mOl zgoB0

通常情况下,软件开发组织会使用自动化测试工具,使用录制回放方式来进行功能测试的自动化。但是录制回放方式并不能解决全部问题。

ek ie| Wm0

2.2 录制回放中存在的问题

/oeL6^5A0

业界的经验表明,虽然录制回放方式能够快速的生成测试,但是仅仅单纯的使用录制回放是不够的。51Testing软件测试网~`3uw\{,UL {

首先,也是最主要的原因,就是使用录制回放方式,往往需要耗费时间和资源来调试、维护脚本。这些工作量随着脚本数量的增加,可能会增大到几乎不可能再对脚本进行有效维护的地步;其次,使用录制回放方式,要求应用已经开发完成并且在录制中不出现错误,但是往往当应用达到此条件时已经没有足够的时间进行测试;最后,使用录制回放方式,要求每个测试人员均会使用测试脚本语言“编程”,而当前大多数软件开发组织测试人员专注于业务,往往没有兴趣和精力来“编程”。

9h0?#dz0b~IF0

所以,录制回放方式并不能解决所有的问题,在自动化的功能测试上,需要有测试框架的支持。

.U w)zgUUzh0

3. 解决之道51Testing软件测试网R|6C QRJ7M5_

3.1 概述51Testing软件测试网._.N\Evo2G

IBM Rational Robot是一款优秀的自动化测试工具,自动化功能测试框架是基于Robot之上构建的。如下图:51Testing软件测试网*f R@w$f{

图 1. 基于Robot的自动化功能测试框架51Testing软件测试网NeC}f8DU._

3| [(e8^ |;eV[q\0

业务测试人员类似于当前软件开发组织中使用手工执行测试的测试人员。可以看到,在解决方案中,除传统的业务测试人员外,增加了技术测试人员角色。技术测试人员偏重于自动化测试相关技术,实际上并不直接执行测试。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 od0

Robot测试技术框架是基于表驱动测试思想。表驱动测试就是预先在表中定义清楚代表每一步执行操作的关键字,然后由脚本读入表中的每一行,根据关键字来执行对应的动作。以CQ Web登录界面为例:

x4a1Pm`6c:r8vZ0

图 2. ClearQuest Web登录界面

J2SVq w;y-`6Z%h0

51Testing软件测试网 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 X0lE c0‘解释并执行
,T'Z.Ue}OD Ig0z0Select Case (sKeyWord)51Testing软件测试网1l"L d'K'f,H#\
Case "登录"51Testing软件测试网w O4lOPS3f3\ B
Window SetContext, "currentwindow", "" PushButton Click, "Text=登录", ""
-}AB3R2S({0

l-M1g&]K.B$lx0

以上是表驱动的简单示例。在自动化测试中,基于表驱动,还需要解决以下问题:对象识别、验证点、数据池、分支执行、数据关联、日志记录、调用其它脚本、脚本结束。本节将分别展示其在Robot测试技术框架中的实现方式。51Testing软件测试网l1q6iV%s _

3.2.2 对象识别51Testing软件测试网,HHV@o

根据IBM Rational Robot识别对象并执行操作的要求,如果要让Robot找到界面上的对象并执行相关动作,需要给Robot指定每个对象的对象类型、对象标志、执行动作和数据,如下图所示。51Testing软件测试网4L8Y _ibN1R'P)H3S

图 3. 为Robot指定每个对象的对象类型、对象标志、执行动作和数据

hl1q|8R5l0

51Testing软件测试网ch7`/q4XpDU-w_+d+x p

以按钮举例来讲,如果要让Robot自动点击某个按钮,那么首先要告诉Robot需要在“Button”这种类型的对象上进行操作;其次要告诉Robot,在此类型的对象上要执行什么操作,比如click;第三要告诉Robot要click那个具体的按钮上,比如要click“登录”按钮。51Testing软件测试网0Lt{$n(vGC8V

表 2:对象识别表51Testing软件测试网aWFJ#KbTsUj

动作类型对象类型 对象标志 执行动作 数据

e9sF8Xl1O*q@iA0

G51Testing软件测试网4`(l3L"jv`B

Button51Testing软件测试网/g@SJ K"p C2S

确定51Testing软件测试网Gi gbbD-p

Click

(ihT-mZ!pt0

G

Ki!H$dS0

EditBox51Testing软件测试网&d8e3|W vE*u~z

姓名51Testing软件测试网9WJ8Jj2T0Cl

Click51Testing软件测试网o&dh }3{vP

Jack51Testing软件测试网@$w5V"ySLJn

G

&F$S$]jx6u0

ComboBox51Testing软件测试网Yb?y_cm

角色列表51Testing软件测试网l;^7{:V I_ im"[

Click51Testing软件测试网Ol#{d.I6{zs

系统管理员51Testing软件测试网Q6I3kN6L,Lw&Sm)D

G

XI;|"_'w R1KP0

RadioButton

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~&[+Wu Tz0Select Case (sObjType)51Testing软件测试网 vj8l_ux)_%?
Case "Button"51Testing软件测试网:z:? u3\3Y2h$n/L t;\
ProcessButton(sObjAction, sObjData, sData)51Testing软件测试网@'z lh:fyr
Case “EditBox”
{ R1\ZdWHp!Jd0ProcessEditBox(sObjAction, sObjData, sData)
-F5j/_z9p e,_FH0Case “ComboBox”51Testing软件测试网(R0L)E\{_
ProcessComboBox(sObjAction, sObjData, sData)51Testing软件测试网;^ ^ gqA d7U$P Y,v ~SW1Z
Case “RadioButton”51Testing软件测试网0_a Z'r~$aG)h
ProcessRadioButton(sObjAction, sObjData, sData)51Testing软件测试网p2i#v!wfmn h-_,Rz
===============================51Testing软件测试网u1I R#ca!s
‘对按钮执行的动作
-a0U#Y'K6ux'rJH0Select Case(sObjAction)
G7JJ1Y(D"@ Z!H O0Case “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/TqUQ
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@ S8Aod 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

*]n&h1J y3pNZ`a0

要强调的是,以按钮为例,虽然在表中需要为界面上每一个具体的按钮定义一行,但是在测试技术框架中,所有按钮处理的代码都是一样的。51Testing软件测试网?F Z0M(UO

3.2.3 验证点

WyWhm5Ng'o0

没有验证点的自动化测试就不能称之为测试。从这句话中就可以看到验证点在自动化测试中的重要性。对于验证点来讲,因为不同的测试、不同的应用验证点都不相同,所以Robot测试技术框架仅仅提供了扩展的机制,不同的验证点可以通过扩展机制加入到测试技术框架中。

*} tCra.^/H0a%P0

加入验证点之后,表的定义如下:51Testing软件测试网!_/?hZp _

表 3:对象识别表51Testing软件测试网:ol/W(vD"k9H`Q

动作类型对象类型 对象标志 执行动作 数据

:P Obx ])]g0

G51Testing软件测试网j fc{P f/Fl

Button

YZVEJZ2r0

确定51Testing软件测试网Y,busSI

Click

lfM7]oa;i0

G

[ b QyB ?0

HTMLLink

;S7O$T8ucO0

链接51Testing软件测试网tn6KcH

Click51Testing软件测试网6P1hfy6| v

G

o1R M D1v0

ComboBox51Testing软件测试网8G4ba u tp:M5CA*C,P

角色列表

Q7Jt ?T0

Click

`%@{}#B/yzU J0

系统管理员51Testing软件测试网h6h8m lY y3Y5p

G51Testing软件测试网5JIUKn9u

RadioButton51Testing软件测试网B|[7Q+\6]4eCu2s9J

区域

@G Sg t+Yd/q0

Click51Testing软件测试网rf h5tQdF&w;h

V51Testing软件测试网1GJ G(Z,l3n1T8~

VP51Testing软件测试网w\[(]{M+JIJ9I

VP_SUM51Testing软件测试网&Me]$|-Bd%\0Gz_

VP_SUM

"O8Qo7D*ro/zw0

24

jv)G:BS2BK2z0

最后一行是加入的验证点。所有的验证点其对象类型均为VP,不同的验证点有不同的对象标志,上表中的验证点是VP_SUM,验证点的基线数据为24。

hE)l lVoN l7{0

在Robot测试技术框架中,处理如下:

~*zN wG!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{8g Sv$j7b8mIy0‘对验证点执行的动作51Testing软件测试网(V$_o nWW4|#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/x wTC!f;p
SQAGetProperty “”, “”, sActual
W7i;a6xb[f0if sData = sActual then51Testing软件测试网Hd/ITX1[ r:c \
……51Testing软件测试网O4m@ [,nv&h\
else51Testing软件测试网$KD-AT C0{
……
C+Sq t dK0end if51Testing软件测试网;w9Y!t _8J ]o!V Z

-Mta$I&oG0

将验证点的基线数据放入全局变量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软件测试网,W4fgNicA#W

Button

&G bgZ:mz:u,U0

确定51Testing软件测试网k.IMT4q&K(o-J

Click51Testing软件测试网wq|?0Sw

G51Testing软件测试网a1T_gm [s

HTMLLink51Testing软件测试网#Q5K W)m6o(Z

链接51Testing软件测试网 q0V zL9W$S4H3l

Click

8`6a&B;^#K+`R0

G

9}$g9P#dfh+Q@&C!O%Y0

ComboBox51Testing软件测试网l k6i3E,r7n+x

角色列表

)@,U9l DSI;ev$F0

Click51Testing软件测试网h%@$}9}Q

系统管理员51Testing软件测试网p6r j-W[@

普通管理员51Testing软件测试网\$z@ U L7_*c

G51Testing软件测试网]5L\'lt%L

RadioButton

;aShum4zE.V0

区域

y9U3m;]W+E%T0

Click51Testing软件测试网!\0}&`fq%`

V51Testing软件测试网(x3n+]4Ur'r'B5av G

VP

E0]8K |HbQ0

VP_SUM51Testing软件测试网(I5T8~"aYEc

VP_SUM51Testing软件测试网|.vg%b&i9J;T*k

24

&RNo)y,Jm0t0

2451Testing软件测试网m6d0x;Im D&wh

从上表中看到,“数据1”这一列代表一次测试的执行所需要的数据,“数据2”代表另外一次测试的执行所需要的数据。51Testing软件测试网3{'|e jPk8N

在Robot测试技术框架中,加入循环,按照数据列的数量来进行循环,每一个循环均从第一行执行到最后一行。

^D)mH*c'n!t5Q:B0

3.2.5 执行分支

T @EY+Mvo9Jw0

在测试中,往往是同一个业务或者功能,但是因为输入的数据、选择的条件不同,而具有不同的执行流程。执行分支的处理比较简单,就是在相应的数据列的位置上,填写代表忽略的特殊标志,比如“IGNORE”,当测试执行到此动作时,判断其数据是否是“IGNORE”,如果是,就不执行此动作而到下一个动作。对应的表如下:51Testing软件测试网 aN H/sqUj-H

表 5:数据池表b

5G%K4v~&CD$Q6Z)w0

动作类型对象类型 对象标志 执行动作 数据1

k9T!P:iK(G0

G51Testing软件测试网 F$D9?IW(z}

Button51Testing软件测试网p^Gm2W

确定

.R*U/ms8U"y*[w0

Click

-z9A_;Pq d0

G51Testing软件测试网8t%|d?"V@

HTMLLink

aj`4F1TYi0

链接

#[]|.e)or0

Click51Testing软件测试网Ah zLN)S

G

}7I&rF s&cjM0

ComboBox

4w2z9H;Y4@w0

角色列表51Testing软件测试网3JF(g'e#tb

Click

y3@Ks(w I:tp0

系统管理员

)]i7OJ*Z*}.z0

普通管理员

q6{(p q!~Du0

G

(N7IP @]%~!e.|0

RadioButton51Testing软件测试网 p'i7KI+NL

区域

C9BJf#d J'oY-x0

Click51Testing软件测试网+p8~^s4e0]o

V

d'L F w)YPX B0

VP

8S;U9~~&w0

VP_SUM

6|U1@[}U|6O0

VP_SUM51Testing软件测试网{5Vi*z,d(]6M:K

2451Testing软件测试网*?4ow5r.r+J6^9W3F

IGNORE51Testing软件测试网Azw0tS wZ;l ^/~

从上表中看到,第一次执行会执行VP_SUM验证点,但是第二次执行,因为验证点相应的数据是“IGNORE”,所以就不会执行VP_SUM验证点。51Testing软件测试网6i[1U*j0z6G W

在Robot测试技术框架中,在每次执行动作时,先判断其数据是否是“IGNORE”即可。51Testing软件测试网TFU.}]J[&i@

3.2.6 数据关联51Testing软件测试网 N6|(gU5FZu~M

在测试中,需要处理数据关联这种情况。数据关联是指前一个动作执行完成后,应用产生新的数据,此数据在随后的动作中需要用到。因为这些数据是在执行的过程中由程序产生的,所以没有办法预先在表中准备。在这种情况下对应的表如下:

p6f)Uun#|8JDw0

表 6:数据池表c

0Ya5v3Pw2CX0

动作类型对象类型 对象标志 执行动作 数据151Testing软件测试网b5K#x)Tb U|^^(y5I

G

'U3tij-Jb/O2iY4D0

Button

z hw#|a$`aJx0

确定

.D;A6w-xr!B/I|0

Click51Testing软件测试网8oB$j8B1I#lq

G51Testing软件测试网+V0{NF&w8r*~:e2v

HTMLLink

2?|WG aU7}4n8A?|0

链接51Testing软件测试网 U E"O Y,D b

Click51Testing软件测试网mj.d XZVS?G2Wv

G51Testing软件测试网 F)M0r"^ @ S \*\

ComboBox51Testing软件测试网O\\r#iY;Z

角色列表51Testing软件测试网 V)wFV}[

Click51Testing软件测试网'Uw(A d-gUw

系统管理员51Testing软件测试网] i1fr;N*F

普通管理员51Testing软件测试网-S,n!r1l KS'L

G

[#M.rg4p0

RadioButton51Testing软件测试网 sSUo8n8d {|

区域51Testing软件测试网4gw&U4U.vnl

Click51Testing软件测试网@4I'^P.z9b

V

q1nk)R:|W N9y%t0

VP51Testing软件测试网6UB/~_iPITm

VP_SUM51Testing软件测试网v7AC^Z}s

VP_SUM 51Testing软件测试网E e` zT_ F

2451Testing软件测试网6uF%E{4S ^S!^

IGNORE51Testing软件测试网)ricgN

G

$B:W3d}qn0

DC51Testing软件测试网9Ru(wn)\i;D

DC_GETID

c#X'g}V-q5G~u;o/i0

DC_GETID51Testing软件测试网j o%m @2@-sdE-N

G51Testing软件测试网0B/_D#V7\7uDW

EditBox51Testing软件测试网r \2]ldhC-^c|R.J

交易号

N0u;j(W*k4p0

Click51Testing软件测试网-zfs DzC a)w%P_

DC_GETID

\ u4J!|Ck0

DC_GETID51Testing软件测试网6_k/j.QK GV%L*f,h9_

从上表可以看到,首先使用DC_GETID来将要关联的数据取出来,然后在需要使用此数据的地方,再使用DC_SETID赋值回去。

lov IK&i0

在Robot测试技术框架中,取数据的处理如下:

8HKK3V \/P-Qs!Nk0

‘对文件中每一行
zr j{O\0Select Case (sObjType)
-C y7e!{(@x%j)OG0Case ……51Testing软件测试网-h9C,Mu2T/O
Process……
iq!z-q V-^p]b0Case “DC”51Testing软件测试网}/M8EWA%X
ProcessDC(sData)51Testing软件测试网sXA z9n Yv
===============================51Testing软件测试网{1tn qdt1T
‘对数据关联执行的动作
s9P]&_!n0Callscrīpt sData51Testing软件测试网OR!YJ Ndf
===============================51Testing软件测试网5t yA4t'h
‘数据关联中,获取数据脚本的处理
h6vI)D+ks/k0SQAGetProperty “”, “”, g_DC_ID51Testing软件测试网BG e\aT

'p$Jy(pFF0M~8U0

对每一个数据关联,取数据单独的创建一个脚本文件,脚本文件的名字和数据关联的名字相同,都比如说都叫DC_GETID。虽然数据关联取数据脚本的内容各不相同,但是一般的步骤是使用SQAGetProperty函数从界面上取得数据,放入全局变量g_DC_ID中。51Testing软件测试网1J} ?0]+fE

在Robot测试技术框架中,赋值回去的处理如下:51Testing软件测试网"tLA(AR_

‘对文件中每一行51Testing软件测试网yS-cQ4R"J9p
Select Case (sObjType)
@w[N)Ul0Case ……51Testing软件测试网 j`+TTV(l2J0b/X
Process……
Lw {1{'m"e0Case “EditBox”
W'tf _a)Kcai0ProcessEditBox(sObjAction, sObjData, sData)51Testing软件测试网6^"Dk1bqk
===============================51Testing软件测试网;~]+u5U]:eR w+G
‘对文本框执行的动作51Testing软件测试网+F] p D m'OjX-z
Select Case(sObjAction)
n |2h'd }0Case “Click”
6I%j9p#`Vfo0EditBox Click, "Name=" & sObjData, ""51Testing软件测试网 uVXKI@
InputKeys "^+{HOME}{DELETE}" InputKeys g_DC_ID
Z,ZR1R}W4_051Testing软件测试网cxP N;~%h2Eu Z-Tn

即从全局变量g_DC_ID中取出数据,再输入到文本框中。51Testing软件测试网c U*[Yn%[ {;^z|/c

3.2.7 其它处理51Testing软件测试网k0ae6u!~ V Jc,f%Z ` r

其它处理包括日志记录、调用其它脚本以及脚本结束,相应的表如下:51Testing软件测试网fbV$h6L\ M FC

表 7:数据池表d51Testing软件测试网.` N*?1c%_Bb \

动作类型对象类型 对象标志 执行动作 数据151Testing软件测试网S!h5\3o)a:l$M+Y\g

G

m} k8H+IOc0

Button

L2MY'B u+N0

确定51Testing软件测试网/\)oDa({ os;@

Click

3l4c9rr5s Q0

G

lH}!FO2BY3a-SV0

HTMLLink51Testing软件测试网/]:c k^q

链接

Lgk;bPQn0

Click

,Dr"Y&A1wz:[[0

G51Testing软件测试网c$f.qYj3]!D!i

ComboBox

#H k1xl }8c0

角色列表51Testing软件测试网;h(h6q3? P%YY

Click51Testing软件测试网+t6]5b*ud-E| m5l%v

系统管理员51Testing软件测试网D)N;g4V#B!XYP

普通管理员

CWF LaK0

G51Testing软件测试网pS+t4ZiyGx

RadioButton

N9B'{lB0

区域

QO-dax2D m(hM(?\0

Click

7nC H"QN1K&{0

V51Testing软件测试网 l TG;S5?5H

VP

2@p{)g4TdeN0

VP_SUM51Testing软件测试网B|wEEr?

VP_SUM 

/d Zr_v+Ba0

24

%d.\L+E.C%}0

IGNORE51Testing软件测试网UHE#XDs&`e

G51Testing软件测试网rS#m,~H y` L

DC51Testing软件测试网%B[v/ZB_+g

DC_GETID51Testing软件测试网 [L-q9MD;Cn&EL

DC_GETID51Testing软件测试网KdhO DE s

G

/LRRJpy-M0

EditBox51Testing软件测试网 LK Z&LjU.by2X

交易号

5a)~%[SJg3jN$M(q0

Click

$i|)^ b\0

DC_GETID51Testing软件测试网7o.|$N4sv-a"]

DC_GETID51Testing软件测试网#yL.yYP_`F ^ gL

L

*c&}9Jpv`q7]x0

输入交易号

\ [0LYS}0

输入交易号

]7GgNck-Y0

S51Testing软件测试网5u!Io!oS2N{I0R

Order51Testing软件测试网U7VrYe6o`^

Order51Testing软件测试网s6vyn'L bS

X

cJ;XE|V5T A0

可以看到,在动作类型这一列,使用使用“L”代表记录日志,日志的内容存放在这一行的数据列中,比如上表中的“输入交易号”;使用标志“S”代码调用其它脚本,要调用的脚本名称存放在这一行的数据列中,比如上表中的“Order”;使用标志“X”代表脚本结束。51Testing软件测试网 ]\ H1LsJ]

在Robot测试技术框架中,相应的处理如下:

k2?*uHdaQM'ZQ0

‘对文件中每一行51Testing软件测试网P!I7[8c+A
Select Case (sActType)
x0G#g'P$a3OXJ2R/e0Case “G”51Testing软件测试网 oc6Z5en@.\`.K!a
Process……51Testing软件测试网2u:lK-OI'ht2F | ]Q
Case “L”51Testing软件测试网8JH-q}5O P$d
Log(sData)
:P1GH,^I9J6x0Case “S”
N*?$NM:Na.o!?0Callscrīpt sData
RVi~1^?c+j0Case “X”
p Thh0N;H*w k0Exit51Testing软件测试网QF jJl\f

(gZj8e1eB7h~ C0

3.3 测试设计工具51Testing软件测试网$`+{fT q

测试设计工具的最主要的目的就是为了提高Robot测试技术框架的易用性,帮助测试人员生成表驱动所需要的表。另外,测试设计工具通过使用数据库,能够在工具级别为测试重用提供支持。测试设计工具主要包括两方面的功能:供技术测试人员创建测试的静态结构;供业务测试人员创建测试的动态结构。51Testing软件测试网6}R-{d a

测试的静态结构要求和应用保持一致,以页面为单位。即应用中各个功能的层次结构是如何来安排的,就相应的在测试设计工具中按照这种安排来建立静态结构,直到每个页面为止。这样来设计的好处是:首先,静态结构和应用保持一致,将来应用发生变化,比较容易定位到静态结构中需要修改的地方;其次,建立静态结构,应用是什么样子,就建立成什么样子,照搬即可,不需要很多的业务知识,比较适合于技术测试人员;最后,静态结构和应用保持一致,将来业务测试人员设计测试的动态结构时,能够方便的根据应用在静态结构中找到相应的页面。

,AkX }'c3f1T Z#|c0

以下是已经建好的静态结构的示例:

W'T9X%a"^0

图 4. 静态结构示例51Testing软件测试网)Crh2pC

51Testing软件测试网+l(C+h7|f1f

可以看到,左边是和应用功能组织保持一致的树形结构。点开“集团理财”节点,可以在右边的上半部分看到此页面中的元素,页面上每一个元素都按照Robot技术框架的要求输入必要的信息,比如对象类型、对象标志、执行动作等。这些内容是由技术测试人员根据页面来输入的。如果不希望人工输入的话,那么也可以开发相应的工具去解析页面,来自动的生成每个页面的元素,或者是使用IBM Rational Functional Tester(简称RFT)的对象映射功能,由RFT去页面上抓取对象来生成。51Testing软件测试网@Fjl:G0o

测试的动态结构和测试的要求有关。在创建测试用例的过程中,测试用例的每一个步骤,均是选自静态结构中的一个页面,将页面加入到测试用例中之后,还可以指定此次测试用例要测试页面上那些元素。另外,在测试的动态结构中,还可以指定测试数据、验证点、数据关联等操作。当设计完成后就直接生成真正可以被Robot测试技术框架所执行的表。51Testing软件测试网|qc$C C(f;t

以下是已经建好的动态结构的示例:

3g'[7fR4hNN|j:R0

图 5. 动态结构示例51Testing软件测试网]B;ZC6p:t ~8X

51Testing软件测试网TAR/W HMsO9H

可以看到,左边是和按照测试的要求组织起来的测试用例。点开“票据托管”这个测试用例,可以在右边的上半部分看到此测试用例的执行步骤,比如第一步是“登录”,第二步是“票据托管导航”,依次下来是“票据托管”和“退出”,这些步骤都是从静态结构中选出来的。当点击测试步骤中“票据托管”这个页面,在下方将此页面的元素显示出来,业务测试人员可以为每一个测试元素输入数据、指定数据关联、添加验证点等。51Testing软件测试网:L&?_0V _

当业务测试人员设计好测试用例后,就可以将测试用例传递给Robot测试技术框架,又测试技术框架解释并执行。

KJ!Qk4[A+ut0

4. 结论51Testing软件测试网2Dms#QK3U7Y0s"i

可以看到,使用IBM Rational Robot提供的强大功能所搭建起来的自动化功能测试框架,能够帮助软件开发组织成功的实施自动化的功能测试。

(?]WK,T8g4[0\F0

1. 通过重用已有的静态结构和动态结构,能够有效的促进测试的重用,并且在IBM Rational Robot的支持下,可以自动的执行这些测试51Testing软件测试网 @2A}(j9u;{x@*[\Ox

2. 通过使用测试设计工具来生成动态配置,可以看到除测试技术框架的SQABasic脚本外,不需要再维护任何其它的脚本,降低了脚本调试、维护的工作量。并且将来的维护是基于测试设计工具来进行,也降低了自动化测试整体的维护工作量51Testing软件测试网hBS|;[m(d$_cm)O

3. 通过使用测试设计工具来生成静态配置,能够做到根据界面的设计来进行配置,而不需要等到待测试应用完全可用,就使得及早测试成为可能51Testing软件测试网6dn7t,f6r

4. 通过支持业务、技术测试人员的分工,在测试技术框架中封装自动化测试技术细节,使得业务测试人员不需要自动化测试技术的相关知识,只需要通过测试设计工具,就能够简单、直观的进行测试的设计和执行,降低了自动化测试的实施难度

W T3O!I"y!BL,o0

另外,在实施自动化功能测试框架中,还发现两个有趣的现象。第一,因为可以去自动化的执行测试,所以业务测试人员更多的在使用测试设计工具,从而导致测试设计在整个测试中所占的比重有显著的提高,有效的提升测试的质量;第二,因为统一、一致的界面操作方式、提示方式和表达方式有利于自动化测试的进行,所以也间接的促使开发团队在设计、开发过程中更加注重界面的规范性以及界面控件的可测试性。

ioi*|%?~8n{ J0

参考资料

whx"B w^'L6[0

关于作者51Testing软件测试网*X&P,t-\)}F Z!T"f

b S$Sd#EL:X0

X&M(w1Q$b"|ks:w0

陈国伟,IBM中国软件开发中心实验室服务高级软件工程师,专注于Rational软件。目前主要致力于为客户提供软件工程的方法、技术和工具的服务与支持,关注的领域有JAVA开发、RUP实施、用例建模、OOAD、测试以及配置和变更管理。在加入IBM之前,参与ERP、保险、电信等大型软件项目的管理和开发,拥有6年软件开发经验。51Testing软件测试网"M!D znpZ:Z

 

7{#a9DK+?(w A"@0

 

`F/\|Q*g*F4z0

TAG: 测试工具

引用 删除 f3219785   /   2008-11-27 13:50:50
圖片看不到?
测试----测量?尝试? 引用 删除 yexu   /   2007-02-05 13:18:30
直接复制粘贴就好了~~不过51很怪,我每次上传完都显示的好好的,过一段时间再看就是红叉叉~~~~
测火燎原--态度决定质量 引用 删除 ppent   /   2007-02-05 12:36:14
怎么才能把图片对应到日志中,我也想知道
风在吹的个人空间 引用 删除 风在吹   /   2007-02-05 09:51:07
图片还在本地没有传上来
 

评分:0

我来说两句

日历

« 2023-05-26  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 41854
  • 日志数: 61
  • 建立时间: 2007-01-15
  • 更新时间: 2007-07-23

RSS订阅

Open Toolbar