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

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

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

 

J%]i's K!?0

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

;_r+br[MN+g0

2006 年 9 月 28 日51Testing软件测试网O2TS\%f+jDP

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

{'Ev X h%C2C0

1. 前言51Testing软件测试网`n-@3N7lv

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

8?]BJ&l#gP0

2. 现实的挑战

0kJ*a%Nw*zkk0

2.1 自动化测试的迫切需求

%t.?:]X4M v6X0

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

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

u5?6V~j0

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

9n}*_N%C%R q d0

2.2 录制回放中存在的问题

(? [N,s9QDm0

业界的经验表明,虽然录制回放方式能够快速的生成测试,但是仅仅单纯的使用录制回放是不够的。

uWtlm#I6[!aZE0

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

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

a'l.lv~9~X0

3. 解决之道

*g:E?W%ci"Z0

3.1 概述51Testing软件测试网n4XW?&YI*I*H+yQ

IBM Rational Robot是一款优秀的自动化测试工具,自动化功能测试框架是基于Robot之上构建的。如下图:

lg5B4X+H0w.Ou0

图 1. 基于Robot的自动化功能测试框架51Testing软件测试网-n?9D_,LG#a_

'Q R&t,n7KG/aQ0

业务测试人员类似于当前软件开发组织中使用手工执行测试的测试人员。可以看到,在解决方案中,除传统的业务测试人员外,增加了技术测试人员角色。技术测试人员偏重于自动化测试相关技术,实际上并不直接执行测试。51Testing软件测试网!yd2Fng1n)kP];\

解决方案的核心是使用Robot的SQABasic脚本开发的Robot测试技术框架。此Robot测试技术框架以表驱动为指导思想,读入动态结构,解释并执行动态结构中的每一项,是自动化测试的引擎。同时,为了提高Robot测试技术框架的易用性,在解决方案中还包括测试设计工具,它是使用其它编程语言,比如JAVA、Dephi等开发的应用程序。在测试设计工具中,测试技术人员首先建立和待测试应用一一对应的静态结构,此静态结构以页面为单位,随后业务测试人员从静态结构中选择不同的页面,组成测试动态结构,即测试用例,随后,此动态结构被Robot测试技术框架读入并解释执行。51Testing软件测试网(O IBjN$r)n

3.2 Robot测试技术框架51Testing软件测试网dE}I/Dg

3.2.1 表驱动介绍51Testing软件测试网$Eym&we i"h t

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

E.pn1j&S!qb!JG0

图 2. ClearQuest Web登录界面

\.n[1w)YW}X0JS0

51Testing软件测试网 ?f6X.a&vO&SgU1K

当要自动执行“登录”按钮时,可以如下图来定义此表:

B/A8[,w,P#\)q0

登录

r_:Z9g\1^"V `f%w"J0

然后在Robot的脚本中,打开表,读入此行并执行。这样的话,Robot便去点击界面上的“登录”按钮了。

3Tj"ZYWn'\]W'OX0

'打开文件
1C4Q\"P`9cc0Dim sData() as string
#P(_K$h9{0InFileName = getExcelFileName51Testing软件测试网1L2r3z^7u
ReadExcelData InFileName, sData()51Testing软件测试网 z.O%P)_,ZTfp @(T
===============================51Testing软件测试网9uLeO]Yt
‘解释并执行51Testing软件测试网r#N zR.K
Select Case (sKeyWord)
|p^~#^5Wk0g%\9D^^Q0Case "登录"51Testing软件测试网:c3A%nx4L~6d
Window SetContext, "currentwindow", "" PushButton Click, "Text=登录", ""
j5Vk!]2Cm0

9ngI ^G zXybe0

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

Y1t%G K-eNs0

3.2.2 对象识别

&R#~~4X)Eg8~+@f0

根据IBM Rational Robot识别对象并执行操作的要求,如果要让Robot找到界面上的对象并执行相关动作,需要给Robot指定每个对象的对象类型、对象标志、执行动作和数据,如下图所示。

joq!@Y w0

图 3. 为Robot指定每个对象的对象类型、对象标志、执行动作和数据51Testing软件测试网0Y+i%\j0g*k\

51Testing软件测试网`;j1yXE"l5L-@!{8Ja

以按钮举例来讲,如果要让Robot自动点击某个按钮,那么首先要告诉Robot需要在“Button”这种类型的对象上进行操作;其次要告诉Robot,在此类型的对象上要执行什么操作,比如click;第三要告诉Robot要click那个具体的按钮上,比如要click“登录”按钮。51Testing软件测试网"TD'_` Hv r }g5P*`

表 2:对象识别表51Testing软件测试网\}uCA%Ch

动作类型对象类型 对象标志 执行动作 数据51Testing软件测试网-N4[:dw]$t5\&B

G

2r/GE S4A&HO0

Button51Testing软件测试网lv\D vfCmic~Q

确定

"um'BYM|0

Click

$u7g)iF/fI|0

G

7f5R Np3`-lO?0

EditBox

r,t#h5PM:c7K9y0

姓名51Testing软件测试网!KE0Q|"k'])or

Click51Testing软件测试网vWoO V9j8cM

Jack51Testing软件测试网(E;f#i;o:tM

G51Testing软件测试网(vc(wa7Y K

ComboBox

(B5p{y!g5CR(Q0

角色列表51Testing软件测试网dm3d3[Oy7l

Click

1_6vC(T`Hqp0

系统管理员

$HM}z.B!ag%kvR T0

G51Testing软件测试网`5ds+_P!K9c1^

RadioButton51Testing软件测试网 An$C2[}sx^

区域51Testing软件测试网N$R*I9a1on1Q3a

Click51Testing软件测试网J}3\M9I:z

在Robot测试技术框架中,相应的处理为:51Testing软件测试网:OH qw.a0y~9S9F4R

'打开文件
%s dK&?a4u0Dim sData() as string
z!P{!]%k|*v5s0InFileName = getExcelFileName51Testing软件测试网Ra1{3Sb1{p
ReadExcelData InFileName, sData()
E;O7e3Z$AS0===============================51Testing软件测试网5N P-wlg&_
‘对文件中每一行
oHB9o4C1] VTv/c#?0Select Case (sObjType)51Testing软件测试网j{s5PiI
Case "Button"
1FT8` _B0ProcessButton(sObjAction, sObjData, sData)51Testing软件测试网 c5} |B"N_s K
Case “EditBox”
"dR{%?C/d0ProcessEditBox(sObjAction, sObjData, sData)
,oNligq.d(^B0Case “ComboBox”
d mP'N/O0ProcessComboBox(sObjAction, sObjData, sData)51Testing软件测试网L-I.` bn/Z}[
Case “RadioButton”
1X Bzg4} NHYX$K@$r R0ProcessRadioButton(sObjAction, sObjData, sData)51Testing软件测试网K*G&RH#@
===============================
ufSR3a'yL;^&ru0‘对按钮执行的动作51Testing软件测试网 Q W aP?v es
Select Case(sObjAction)
.G'}/`O2Z;Ml*R9J6e0Case “Click”51Testing软件测试网1e U [!hc
Window SetContext, "currentwindow", "" PushButton Click, "Text=" & sObjData, ""51Testing软件测试网i(cz[TO7I
===============================51Testing软件测试网E:hU9l#[8F
‘对文本框执行的动作
8j7J){l/G7}iP0Select Case(sObjAction)51Testing软件测试网?~aUM/VB7P
Case “Click”
T bY1i_H0EditBox Click, "Name=" & sObjData, ""
e_L]eb D#Z0InputKeys "^+{HOME}{DELETE}" InputKeys sData
u?E5KlfW0===============================
f j1E0|.D{ Oq6l2Y0‘对组合框执行的动作
_,F9Pj0b;J0Select Case(sObjAction)51Testing软件测试网&@+w|d.dO [NC
Case “Click”
\n9a:~1K e;x x)}Q0ComboBox Click, "Name=" & sObjData, ""
8fo#L"F&v S0ComboListBox Click, "Name=" & sObjData, "Text=" & sData
1Z*V8KEx0===============================
|B3LR\0‘对单选按钮执行的动作
,]X!I(~Kq0Select Case(sObjAction)
l"~ero*T*^_k*ab0Case “Click”51Testing软件测试网$|V)t1VG9AIZ)o
RadioButton Click, "Name=" & sObjData51Testing软件测试网gmX v.E9Q-g"bD
51Testing软件测试网 uP"JGE'Y)_#e

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

3.2.3 验证点

Rc Qnq&d-BjK0

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

加入验证点之后,表的定义如下:

6Q _)M m|`E0

表 3:对象识别表51Testing软件测试网8t*f](@J EW c

动作类型对象类型 对象标志 执行动作 数据51Testing软件测试网(O5q9Y$TVZ9z[#|.W a

G51Testing软件测试网O]d\#S+rCu

Button51Testing软件测试网)L3l0Y U&c"Yh f

确定

J,Y;_0N ^s B0

Click51Testing软件测试网{E"] Q oO[9c

G51Testing软件测试网V,M+N$KZKrYq&EG

HTMLLink51Testing软件测试网 jjO1MM9Ir H

链接

m5c4t B}l:P0

Click51Testing软件测试网kQ?\ NC-Z v!e

G51Testing软件测试网T V|&s*X

ComboBox

*Gi9]"P}_tE0

角色列表51Testing软件测试网 K-r-QYI!sFaT9]

Click

H B#XfSV0

系统管理员

k:JBU&j_3y0

G51Testing软件测试网2N%Dp[ J9@ {m

RadioButton51Testing软件测试网 bY^EX{2}

区域51Testing软件测试网9m9k\W5D&d%@

Click51Testing软件测试网%mp&qU@;K `

V

]!`%zn;U'Nl0

VP

!E+Yz8H'v;qXA},y0

VP_SUM51Testing软件测试网 i"eg1GU2Clv ~"q%CR

VP_SUM51Testing软件测试网LDtc?

2451Testing软件测试网B(vbvn T/u

最后一行是加入的验证点。所有的验证点其对象类型均为VP,不同的验证点有不同的对象标志,上表中的验证点是VP_SUM,验证点的基线数据为24。51Testing软件测试网{4G1}i+S+]g C6B

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

%p$d5K|:w'm0

‘对文件中每一行51Testing软件测试网f?7s3H%]
Select Case (sObjType)51Testing软件测试网b'iOg@!H1UQ
Case ……51Testing软件测试网,Y+I6Gg'kz\C
Process……
aGV0h+Pw0Case “VP”51Testing软件测试网*? Og9MB#R i#V)e
ProcessVP(sObjAction, sData)51Testing软件测试网O!z(^$WJE2J3}w}n
===============================51Testing软件测试网*r})_]FC
‘对验证点执行的动作51Testing软件测试网$KSXBHa.WP.D [
g_VP_SUM_Baseline = sData51Testing软件测试网+o$ooa*o-A ND
Callscrīpt sObjAction
*m'u y;O bJ$a0===============================
@mOyXRn0‘验证点脚本的处理
B-SOR1PF0`0sData = g_VP_SUM_Baseline51Testing软件测试网ajf qB {"W`
SQAGetProperty “”, “”, sActual51Testing软件测试网+BK4NqX${D
if sData = sActual then51Testing软件测试网Bx5K1PAUr
……
^H n8wpf6]"`0else51Testing软件测试网HU5H/zj Z9b(z
……51Testing软件测试网X'W nTxm(M9KA
end if
QK9g:Kgs7cn4`051Testing软件测试网#f&w7V E|X

将验证点的基线数据放入全局变量g_VP_SUM_Baseline中,然后使用Callscrīpt函数来调用验证点的脚本。对每一个验证点单独的创建一个脚本文件,脚本文件的名字和验证点的标志相同,都是VP_SUM。虽然各个验证点脚本的内容都不相同,但是一般的步骤是首先从全局变量g_VP_SUM_Baseline中取出基线数据,然后使用SQAGetProperty函数从界面上取实际的数据,再比较实际数据和基线数据。51Testing软件测试网%^ Lh%H:@a+Z3? y1J

3.2.4 数据池51Testing软件测试网 b(fy+Hl5]R-T

往往需要使用不同的数据来运行同一个测试,在自动化测试中是使用数据池来实现的。数据池的增加比较简单,就是往表中增加表示数据的列,每一列代表一次测试执行所需要的数据。如下表:

1BMt,C,g8GXM0

表 4:数据池表a51Testing软件测试网p ~!];J5X^u

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

k$n{b;@$ri'd$@;\0

G

U9YP/x F0gG;}0

Button51Testing软件测试网6|9X8CN"Fc

确定51Testing软件测试网6jZ oBeS0[

Click

"E2} oW'T)w0

G51Testing软件测试网vt+DO-c\B

HTMLLink51Testing软件测试网 PI.C/mI C|!v)gP

链接51Testing软件测试网 w0S m,k'Ba

Click

*V-?r/vH5vd9qK"L0

G51Testing软件测试网.S/r%x;I(p;E}.I

ComboBox51Testing软件测试网Fg![a'y@wd_

角色列表51Testing软件测试网+o^7sZ7@O5A q

Click51Testing软件测试网q5H:ITS``P

系统管理员51Testing软件测试网"Q gjG,U:]w

普通管理员

&]_;qu7H{{+L`@0

G51Testing软件测试网7NN7|g.gk

RadioButton

&t0@"DIeuIV0

区域51Testing软件测试网)[Y^)o H4~3~

Click51Testing软件测试网V6l1j'^B BZW

V51Testing软件测试网)aH8JB0nI6Jt h

VP51Testing软件测试网dml!L-TQ

VP_SUM

"Lv9?uMa8@a,m8e0

VP_SUM

l(PfI0K%@0

24

8}d\7n |F0

2451Testing软件测试网 L7i6hs4pA:Qw

从上表中看到,“数据1”这一列代表一次测试的执行所需要的数据,“数据2”代表另外一次测试的执行所需要的数据。

r}b M K0

在Robot测试技术框架中,加入循环,按照数据列的数量来进行循环,每一个循环均从第一行执行到最后一行。51Testing软件测试网sZo,H$o

3.2.5 执行分支51Testing软件测试网G!L+wph

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

1g5K3l ZoRLs0

表 5:数据池表b

z;_ c$G4R;dMC#HA$B0

动作类型对象类型 对象标志 执行动作 数据151Testing软件测试网;H]"W @*Z.y.pa

G

vaJ(x$cjjY0

Button51Testing软件测试网 x7EH*G$Y&@-W `A

确定

!pJ Z`}1Eu(o0

Click51Testing软件测试网.@S-RQ4I"K^ OFE

G

pR_ gGb7M0

HTMLLink51Testing软件测试网(q\V#auG

链接51Testing软件测试网 VNh7ej%JS

Click51Testing软件测试网 \^ b6_4XZc

G51Testing软件测试网0Kbj*y!X(k_

ComboBox

,kf2v ~ n@+_!W(W1L0

角色列表

X+];TdD'G%W6W!u0

Click

C x@%M1P:GX0

系统管理员

j2h"q#rd0

普通管理员

x8}Br~O^0

G51Testing软件测试网p^[J/s` T,@9CjE0d

RadioButton51Testing软件测试网:VF_Y,V,lL JRx@5g'@

区域

kRQom0

Click

;i x [f0y8j6{F0

V51Testing软件测试网x8e.X4UE4S

VP

3R/Oz8b&Dz(r4],qc.Mn)@0

VP_SUM51Testing软件测试网c9~ b)B*gA3n/c

VP_SUM51Testing软件测试网1b ]&\dBW]@f@G

24

[n2nocq7^0

IGNORE51Testing软件测试网q'Z)_ Pf T1^M5p

从上表中看到,第一次执行会执行VP_SUM验证点,但是第二次执行,因为验证点相应的数据是“IGNORE”,所以就不会执行VP_SUM验证点。51Testing软件测试网R,biZ#|"_\%ICu

在Robot测试技术框架中,在每次执行动作时,先判断其数据是否是“IGNORE”即可。51Testing软件测试网 f&avK:F4g

3.2.6 数据关联

f-D/N*l1g{E0

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

表 6:数据池表c51Testing软件测试网mkaM"iu$R

动作类型对象类型 对象标志 执行动作 数据151Testing软件测试网L]pA$J!B.z

G

|b ] zIp aZ0

Button51Testing软件测试网6p/\ |wv5G)p}e:g

确定51Testing软件测试网@.R$t9d0EUC

Click

2t Z1qH ]e,p(E0

G

Hc/c J`T0

HTMLLink51Testing软件测试网A6^pd:P(\~FV ~

链接51Testing软件测试网9KO%ss~Vp

Click

ac6i+m1`(z4a0

G

z3BHl^2r(_5f%b0

ComboBox

F W3t*Y4N0

角色列表51Testing软件测试网3]&T#Cee6Y.ekz

Click

ul&NefyvwF0

系统管理员51Testing软件测试网,w U5NrT-Ic1n2X

普通管理员

$^0P&VJ{lOo.P0

G

,n6kv,z9IQ L0

RadioButton51Testing软件测试网t-ka4EA u@

区域

)fywt6J-m9M0

Click

"m9nd D,h4]0

V51Testing软件测试网oyK5Q }4`W$~#T'K

VP51Testing软件测试网_,h Dy5V+ff5t

VP_SUM

F3_ Zr K)]/P0

VP_SUM 

%M8\ v;P;}R'k/L0

2451Testing软件测试网$F e Em:DF*^M

IGNORE51Testing软件测试网4\x0eA-^T w+Fz,S

G

7o"aT ~oT#y1?0

DC

/?.^#Ru7YO FT0

DC_GETID

SS1}&r;^ T7V0i0

DC_GETID51Testing软件测试网B&]&N0^P

G51Testing软件测试网G8f0g2F_4T U9BA

EditBox

["_6dL5d/G8[0

交易号

7e&\t6Zq0

Click

(Ih9T;f,r?0

DC_GETID51Testing软件测试网4o2M;Cdv j

DC_GETID51Testing软件测试网7dn/uAG5n

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

S$o K8N#A'Bh} g0

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

k8Ai4J7@'?/k)xw#@4I0

‘对文件中每一行
5io+D-z$xV0Select Case (sObjType)
"mO%uG^C0Case ……51Testing软件测试网S3wn"_;q7m n
Process……51Testing软件测试网C!F qeV$u;Vl
Case “DC”
-m+r'O6ro$ZF0ProcessDC(sData)51Testing软件测试网:bHgDX}Ii)u]+rhR
===============================
m]7JLK?0‘对数据关联执行的动作
(? h4Z5X2L+j*e W0Callscrīpt sData
:U*}h i7r P&p9?0===============================51Testing软件测试网5SM BC {+f
‘数据关联中,获取数据脚本的处理51Testing软件测试网'z | } c^`
SQAGetProperty “”, “”, g_DC_ID51Testing软件测试网Vc8eZNv+D
51Testing软件测试网5D"dO[ P

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

:?I*\#w _0

在Robot测试技术框架中,赋值回去的处理如下:

#AAi!p"o,^0

‘对文件中每一行
4E%\0o0w({r!C.M I$j0Select Case (sObjType)51Testing软件测试网O2C.?wQb+O
Case ……51Testing软件测试网3~+e$i#Tc$R'Y.C2X
Process……51Testing软件测试网Y n0V'U+YgS-V"Jgd
Case “EditBox”
LD"C8X;UPw0ProcessEditBox(sObjAction, sObjData, sData)51Testing软件测试网 O3j s"tm0C
===============================51Testing软件测试网 D1K J{!L%C1N c,u
‘对文本框执行的动作51Testing软件测试网2?T` P*H#t+x!TW*M
Select Case(sObjAction)51Testing软件测试网 `+C7q J1P!W^m
Case “Click”
)t})kbk0Z0VY5QP0EditBox Click, "Name=" & sObjData, ""51Testing软件测试网{@ X&`p
InputKeys "^+{HOME}{DELETE}" InputKeys g_DC_ID
l5xy3jFO0

_{/h$m0K*t'R0

即从全局变量g_DC_ID中取出数据,再输入到文本框中。51Testing软件测试网O)B5a&nu5U

3.2.7 其它处理51Testing软件测试网W[ DuJmLZ$W2U

其它处理包括日志记录、调用其它脚本以及脚本结束,相应的表如下:

q,E1KS)}/[6q P'Ap0

表 7:数据池表d

bI1T N5a!iq0

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

q!}s6@4`YaP0

G

K Zt#zr U;h A%~$w0

Button

+w f/TH`,S^S2[R0

确定

k}.}JQE t0

Click

7X$g^$K _7n[p-K9a0

G51Testing软件测试网I3M.A&c;Xw

HTMLLink51Testing软件测试网 W*Vb2Wp o

链接

%ui7l Mz9W:yH4|0

Click

.L's4@:o aj0

G51Testing软件测试网4z*ma;w'a{

ComboBox51Testing软件测试网W&e IySj-F0sT

角色列表51Testing软件测试网 G.o9d [wR z X.D,R

Click

)I)zRm [Qr.[7V4|0

系统管理员51Testing软件测试网(D2p$s2IB~8Q | X5Lw

普通管理员

!D4l$F-|8O:D0

G

k(g1H6uX[0V_9Sp0

RadioButton51Testing软件测试网BHq-qNS(^

区域

qYyT3re0

Click51Testing软件测试网C)G0lDh$f

V51Testing软件测试网BB+vFiZE

VP

1g-c Q0?a8W0

VP_SUM

CIc-y5R p&d6U GM0

VP_SUM 

XR4F-L5Qt |,O1DWE0

2451Testing软件测试网A RY0I.q+co

IGNORE

7ij6AO;s sG:L%R-B0

G51Testing软件测试网/Y3Wp7_yV

DC51Testing软件测试网+s`h~ q yXx:F

DC_GETID

,G$C8e^3lO;U0

DC_GETID51Testing软件测试网e9|R:g(Y7V

G

8dn*A"^P3b@(\m+[C0

EditBox51Testing软件测试网0KSQZS

交易号51Testing软件测试网"z9Ads1X'E:dC:a%p*x

Click51Testing软件测试网O(A[RX]1Mz#E

DC_GETID

K6B g]d6X(g }0

DC_GETID

sy*b:x7K-r,OW V i0

L51Testing软件测试网7P,W K lI

输入交易号

-r"] LY&N?k'i.Z!rpB0

输入交易号

7e.@6y)pee1W0

S

9T8bDu []Y'F:I0

Order

||'Cq9\jAi+n0

Order51Testing软件测试网u&[8uA.?-]

X

;Ou}Q0Gi?W0

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

在Robot测试技术框架中,相应的处理如下:51Testing软件测试网;P3T4V&g Zc5^

‘对文件中每一行
2?"W!M'U:t4o0Select Case (sActType)
Gh'k3P]LXJ0Case “G”
#@K#Y9q}F3J)z,nv!E0Process……
2e$[N i{3^X3h0Case “L”
~7T*KV(\ t\ U0Log(sData)
jWC z4gZG ?0Case “S”51Testing软件测试网\{-Jro!A
Callscrīpt sData51Testing软件测试网 I W/O\!^ VqA.T
Case “X”
A*Bm J'r!x ?0Exit51Testing软件测试网/X p;Cf7M(Z hGk@
51Testing软件测试网J.r1d:mR8U

3.3 测试设计工具

bL-h6\.fQ0

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

z @%Pm5w7d^0

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

[uj ixlN0e0

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

#VS9G vIwV _/]0

图 4. 静态结构示例51Testing软件测试网S3_M*N V {].B6C9N

51Testing软件测试网%{B ~9rP)ai

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

in&N} w l0

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

"WpW3WU a];[0

以下是已经建好的动态结构的示例:51Testing软件测试网!VAx1I,v_ fE(F

图 5. 动态结构示例

c$R `T9Y6Md0

51Testing软件测试网cv[ ?1J6S

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

$L8cw{7Ns0

当业务测试人员设计好测试用例后,就可以将测试用例传递给Robot测试技术框架,又测试技术框架解释并执行。51Testing软件测试网 z)Oz `k'I1K!^L9{

4. 结论51Testing软件测试网1^n*d^l7f

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

7CVJ-may(y0

1. 通过重用已有的静态结构和动态结构,能够有效的促进测试的重用,并且在IBM Rational Robot的支持下,可以自动的执行这些测试

7Di YC_7XA0

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

9Qw XcU9n+^-F0

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

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

$l S$g3Bq_#q0

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

Rf8Zb5p0U N^0

参考资料51Testing软件测试网.fa(y } Z

关于作者51Testing软件测试网x+Q0v}*o+h(L"G@,{

:]3Cl*O#E w?0

JzAR;l2b ft\0

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

 

0WV&DB(?0

 51Testing软件测试网1g#EtM`7l!Gg


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

我来说两句

日历

« 2024-04-15  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar