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

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

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

 

-gv@R+},h:s fTJ0

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

x%mlf'\0

2006 年 9 月 28 日

!`B&F dO*f0

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

?-ti&rQ0~0

1. 前言51Testing软件测试网M'F m(Y,f.k"]/g$~

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

2. 现实的挑战

'} qfFG$Zr`P0

2.1 自动化测试的迫切需求51Testing软件测试网 cI)Q.B]E?&b g]"K.]

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

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

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[&z1t0

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

q&RQ Y&G:cKw:^?0

图 1. 基于Robot的自动化功能测试框架51Testing软件测试网.\%k*il KM9S E6`4Qd

'f8_#{J~q `]} v0

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

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

3.2 Robot测试技术框架

]A~0i$]j%C8W2j7l0

3.2.1 表驱动介绍

-[ y/q0Z%JxOfJ0

Robot测试技术框架是基于表驱动测试思想。表驱动测试就是预先在表中定义清楚代表每一步执行操作的关键字,然后由脚本读入表中的每一行,根据关键字来执行对应的动作。以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软件测试网$s DY!n2y-B&Hb.q
===============================
F}Pl8q'K B.\~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软件测试网6qV3v e+V3TL8M1b8}f)V

USCsB];D0

以上是表驱动的简单示例。在自动化测试中,基于表驱动,还需要解决以下问题:对象识别、验证点、数据池、分支执行、数据关联、日志记录、调用其它脚本、脚本结束。本节将分别展示其在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$Hbx:B0

x} 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?$zotD0

Click51Testing软件测试网BP1qaK&Z x4kN

G

{5Q KLs/Kq%B0

EditBox51Testing软件测试网!a,@pN6j4uo#D

姓名51Testing软件测试网-O)es)W2S.| m

Click

5x0?ho2pS2E%h0

Jack

4j m$@]_q2k0

G

^0U\}*u W"n[g0

ComboBox51Testing软件测试网[ui'X3PJ@Zq,a

角色列表

*\"H%w5f1p(p,A0

Click51Testing软件测试网$Ay [)N7wnv-t

系统管理员

Z-K}gh0

G51Testing软件测试网z'r3a!lh7b7h;U

RadioButton51Testing软件测试网 }1aHf-te\m/n7QE

区域

oF0L ?a%w@u0

Click51Testing软件测试网k5I gI0^Q$rR(y

在Robot测试技术框架中,相应的处理为:51Testing软件测试网|D/F1HI6N

'打开文件51Testing软件测试网(h%J X0lS?w)H"v
Dim sData() as string
[ ? [6^D'ox~ Y0InFileName = getExcelFileName51Testing软件测试网:oP#I5s\#p
ReadExcelData InFileName, sData()
oL[E2Eb/t2q6Mt#u0===============================
VB\JCI}z~0‘对文件中每一行51Testing软件测试网 WO*T5BT
Select Case (sObjType)51Testing软件测试网nt#v Z,}?i
Case "Button"51Testing软件测试网8nP5V0}DX2|)uT
ProcessButton(sObjAction, sObjData, sData)
M(Ge'`!NKw0Case “EditBox”51Testing软件测试网p4hlSeJ'^1AS
ProcessEditBox(sObjAction, sObjData, sData)
a NH2x\"N3FT"v0Case “ComboBox”51Testing软件测试网;c"L3Kp6~{
ProcessComboBox(sObjAction, sObjData, sData)51Testing软件测试网L4\N2z;p)^u
Case “RadioButton”51Testing软件测试网V,a1L1X/o/y D$z"T?3@-y+u
ProcessRadioButton(sObjAction, sObjData, sData)51Testing软件测试网o&dP I{0?4m q'^
===============================51Testing软件测试网 q{ LcQs
‘对按钮执行的动作
7Q i*lc+BM[y!IC0Select Case(sObjAction)51Testing软件测试网^D x$t+T
Case “Click”51Testing软件测试网$E8~-p:Rgs YPE(Y(r
Window SetContext, "currentwindow", "" PushButton Click, "Text=" & sObjData, ""51Testing软件测试网O9VrLOWPS
===============================
p$In${ ~eo0‘对文本框执行的动作51Testing软件测试网/]Ee#^cQy
Select Case(sObjAction)
,\q Yy]0Case “Click”51Testing软件测试网 U&f^4A)P:N
EditBox Click, "Name=" & sObjData, ""51Testing软件测试网y+l-`E\h
InputKeys "^+{HOME}{DELETE}" InputKeys sData51Testing软件测试网C\7n#Zd L
===============================51Testing软件测试网0oD8KlB2f+iD?l
‘对组合框执行的动作
h4X-an'K\8CJ0Select Case(sObjAction)51Testing软件测试网 @A!ug'p q7Q
Case “Click”
9FC,F8Sv"D0ComboBox Click, "Name=" & sObjData, ""51Testing软件测试网XG4j3Y['j
ComboListBox Click, "Name=" & sObjData, "Text=" & sData51Testing软件测试网+t l`$C4o6g+OA
===============================51Testing软件测试网q:^L/Bd3l*G6E
‘对单选按钮执行的动作51Testing软件测试网V4^9pQ-|mP
Select Case(sObjAction)51Testing软件测试网~ik'cjfp'du
Case “Click”
4tQ C)@H&oah(Z(Bq0RadioButton Click, "Name=" & sObjData
H&Hd*t1L051Testing软件测试网 H[RQ/qf

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

3.2.3 验证点51Testing软件测试网LZm0`5S6Rr

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

加入验证点之后,表的定义如下:51Testing软件测试网s?$b x Oe-B(]Ah

表 3:对象识别表51Testing软件测试网&C2[U$P:[LG'Y2| P

动作类型对象类型 对象标志 执行动作 数据51Testing软件测试网"n(FK%xHs-o!b3y

G51Testing软件测试网u.A _Mo4Y

Button

:w+HR%JB0

确定51Testing软件测试网h n*Bf#Ka Y1M?

Click51Testing软件测试网9d4JH!l/\0fSA

G

6fk4O7`3`o0

HTMLLink

7wKF*MG,}"k0

链接

+q UT&Qz$Z,Y!G6{0

Click51Testing软件测试网Zo!_ P.a

G51Testing软件测试网4O|WQ;i!j

ComboBox51Testing软件测试网 R6PlDHb(wC

角色列表51Testing软件测试网\9U(x` ]u

Click

5M]3x3X*Cg4jJ&L0

系统管理员51Testing软件测试网d2u` I/I&? `{

G

H5r:Gae0

RadioButton51Testing软件测试网m/L(Qi2|9I.l1T6@.A

区域51Testing软件测试网!m\j)Xw:S

Click51Testing软件测试网%Vo ZXYM

V51Testing软件测试网 OOva/A(D5w#^

VP

8E"|0L*T/eM}0

VP_SUM

8B\?3UR.l0

VP_SUM51Testing软件测试网cC \-b:V$^ K

2451Testing软件测试网usk"L!m+vAgQa

最后一行是加入的验证点。所有的验证点其对象类型均为VP,不同的验证点有不同的对象标志,上表中的验证点是VP_SUM,验证点的基线数据为24。51Testing软件测试网9_6X$p6U7@)Hg7S

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

F l+O)f*Jkk0

‘对文件中每一行
/t!X}n(@%CH0Select Case (sObjType)51Testing软件测试网d;]CGzTYJ$C@k
Case ……
`a;c5Pk9y b0Process……
^0eVs ^^0Case “VP”
6W7I0l*c{Vp0ProcessVP(sObjAction, sData)
B6U{3k*y0o6}rL0===============================51Testing软件测试网w-|T8o~]["a_ k
‘对验证点执行的动作51Testing软件测试网o&e(j)N9Q Z}
g_VP_SUM_Baseline = sData51Testing软件测试网/]$TfYK[$K
Callscrīpt sObjAction
z|QZ Y7ou1H0===============================
x6TJZF&M6x0‘验证点脚本的处理51Testing软件测试网 ]9Y-Bb'{ C0L)K
sData = g_VP_SUM_Baseline51Testing软件测试网VW&UDE
SQAGetProperty “”, “”, sActual51Testing软件测试网QdIU6`&c BQ2zS
if sData = sActual then51Testing软件测试网Y J#}+txT*a*}sfN
……51Testing软件测试网 L5z'D X$fSUF3E
else
'U:[7t AX7^$R0……
DHSki,D y5G0end if
1e,_[1t6f5Lt}cu0

J'n.}%s{.P0

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

v#i-H3T'H$MDH0

3.2.4 数据池51Testing软件测试网-J,{'i y1sb3e

往往需要使用不同的数据来运行同一个测试,在自动化测试中是使用数据池来实现的。数据池的增加比较简单,就是往表中增加表示数据的列,每一列代表一次测试执行所需要的数据。如下表:51Testing软件测试网4H FZ$w,d zQU

表 4:数据池表a51Testing软件测试网;OzT4z&yUs~

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

7jeXbW0

G

)uJ_'\[/r%da0

Button

PLMa1zD;Z:\.F0

确定51Testing软件测试网wVu&o A ~x"{'{$Q

Click51Testing软件测试网}8}c[^Oc

G

DAoL;Brz:U0

HTMLLink

$]7u qz$U&H5f7r0

链接

z'U&B(lA+U N0

Click

u1VW4SC0

G

a V@B/m3}0

ComboBox

*|"KFO Yf0

角色列表51Testing软件测试网"E;C$qPOe.N

Click

LT;@(I0O:u9R,^:t1`0

系统管理员51Testing软件测试网(B r9q2g4^`W

普通管理员51Testing软件测试网.Y'\&}+[,~;Ia-]

G

D:?d0b"@Ux0

RadioButton

Hk-A-Z`A~u4X0

区域51Testing软件测试网DS:xL8_ `to;U!Z

Click51Testing软件测试网+Wb+P:a*^~ |L

V51Testing软件测试网!sO9}f`isIa

VP51Testing软件测试网2AP5aM%G

VP_SUM51Testing软件测试网u2N;o,\PGeV

VP_SUM

6? J_ v'l`0

24

rWXA|3AX` H k9z0

2451Testing软件测试网L&zdL]{-[J!X\9Z

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

Q7OU5`~`3Z0

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

3.2.5 执行分支

TE2tv(fM-YbAa0

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

表 5:数据池表b

Y{|!z`Z6Dg0

动作类型对象类型 对象标志 执行动作 数据151Testing软件测试网i ILH0qlUK2r1E

G51Testing软件测试网%KmZ*|f5R { P

Button51Testing软件测试网 y{Xj-ju^N(e+J

确定

Jl;SB#RR7|0

Click51Testing软件测试网:K1t^'j!{Y%V,~

G

k\6n'~]0

HTMLLink

? j.Tqst0

链接51Testing软件测试网/maVM:{Y!JW

Click51Testing软件测试网;AZn\#\4p#T4j5B

G51Testing软件测试网_5W0uW-@j/a5_i

ComboBox

E2E#]4[6QU"tk,I$n}0

角色列表51Testing软件测试网1n.Cxz4i+ui-P&Y

Click

q ygbEKXc"H0

系统管理员

:Sa?vG.sT_'a0

普通管理员51Testing软件测试网qT%l!@&by

G

:u8d!|NW0

RadioButton51Testing软件测试网QpV$U|yf

区域

l(q j:sgl/g[ zh0

Click

+R F-S!n;Zj2j0

V51Testing软件测试网 j^Gu+D!K

VP

'| Q]m)bqH'b(^0

VP_SUM

%{5k(YZ2DA_a0

VP_SUM

I{+Ww4L#~T}0

2451Testing软件测试网`"Hh:|xZ

IGNORE51Testing软件测试网 Rm~^ Gv@0t'\6{nx"H

从上表中看到,第一次执行会执行VP_SUM验证点,但是第二次执行,因为验证点相应的数据是“IGNORE”,所以就不会执行VP_SUM验证点。

;f Eab&Ky(c9[)q6sp+F0

在Robot测试技术框架中,在每次执行动作时,先判断其数据是否是“IGNORE”即可。51Testing软件测试网H+se.`K0Q}5C3dE

3.2.6 数据关联

9p3v2puKQk4r0u0

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

3Y$|0]mz0TqO0

表 6:数据池表c

? I^ OzR s+o0

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

m&Vd3MO-}@~-b5Bfo"|0

G

}-}~%\(V0

Button

r Wr9SH0

确定

eK:q~RIX0

Click

%x+w2LW_s1[K0

G51Testing软件测试网+e8k/w8B F8u

HTMLLink51Testing软件测试网$S$S}#p1HK(m/i

链接51Testing软件测试网_/?H x%kMTr

Click

[\"I`O#wn'T OB0

G

4?'@Cl3]|0

ComboBox51Testing软件测试网$d/fS)Xx&i${Y

角色列表

(ajGi'F F|:g0

Click

:n\0Pnz0

系统管理员

9x9avn7l7S#]0

普通管理员

P-jdLe$o0

G

j4r2p]N|:E0

RadioButton51Testing软件测试网K D p#R_

区域

~l_"@1Z)]l6h0

Click

.k"R!~4V0g&Je+rn0

V

"Ik*j,hY S0

VP

9v#Ro!l1@$rR0

VP_SUM

Jh^H X q-zIGc0

VP_SUM 51Testing软件测试网%`U,D G|'o7~}"Q

2451Testing软件测试网8X'?7{ a&M'Ba zU

IGNORE51Testing软件测试网Vw:f(Z;@C(E

G

k6S%UH;eb8C+PP0

DC51Testing软件测试网hn W"G:W

DC_GETID

9N2Wd[L`7W4O0

DC_GETID

6Q)J\L^J0

G51Testing软件测试网.j-|~.W)AH6?!E

EditBox

f$~!CT0@(b%tw8SI0

交易号51Testing软件测试网)p'o-qZ9| @

Click

W4rP nsK G6Z n b0

DC_GETID

ygDkv-Vo7iK3V;q0

DC_GETID

;WW,pi6VI v$]0

从上表可以看到,首先使用DC_GETID来将要关联的数据取出来,然后在需要使用此数据的地方,再使用DC_SETID赋值回去。51Testing软件测试网d:V,TE2rt

在Robot测试技术框架中,取数据的处理如下:51Testing软件测试网!I6lGc'??:^

‘对文件中每一行
D"d_{L;TA H0Select Case (sObjType)51Testing软件测试网#P,k D7MR+s6eEVe
Case ……
5F"j`C6D/BP0Process……
F,b]'hV[0Case “DC”51Testing软件测试网 A-^ex~g ry
ProcessDC(sData)51Testing软件测试网wXrnNJ0R-oY'm
===============================51Testing软件测试网3p L.{;^2w8A
‘对数据关联执行的动作
.~h:b+x&K1u*}v0Callscrīpt sData51Testing软件测试网6]y&^@/G_Om1L
===============================
5q7W/OG+gx6e5E5\#~0‘数据关联中,获取数据脚本的处理
7cE H nR9n,c0SQAGetProperty “”, “”, g_DC_ID51Testing软件测试网wv0sk1w u

#Z7U%tJ1d dSw]Pie0

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

1{F kSh0e L E9s0

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

Ii |D(UL;HG\0

‘对文件中每一行
1l0l n K1Q\KW6D]0Select Case (sObjType)51Testing软件测试网MXE'n8j%|2]
Case ……
\9v8P~]6q'W!T5R0Process……51Testing软件测试网KHJeq
Case “EditBox”51Testing软件测试网7k!|YQA/c#Xb,r
ProcessEditBox(sObjAction, sObjData, sData)
(O^!n6_K0===============================
'PZj;n%l p0‘对文本框执行的动作51Testing软件测试网h7D X-^B4`tZ a:A
Select Case(sObjAction)51Testing软件测试网'c%u*TADz
Case “Click”
+Qwz;ZA4_"?0EditBox Click, "Name=" & sObjData, ""51Testing软件测试网d]3rHY#Xq0O'X q Q C
InputKeys "^+{HOME}{DELETE}" InputKeys g_DC_ID
L(dem6hp!Zh5V051Testing软件测试网 Mt p1g"E#ugy$d

即从全局变量g_DC_ID中取出数据,再输入到文本框中。

Oi s` { RD)aB}!^0

3.2.7 其它处理

U KhY/q0

其它处理包括日志记录、调用其它脚本以及脚本结束,相应的表如下:51Testing软件测试网0O.k L vF J rT.u

表 7:数据池表d51Testing软件测试网E h$v$h"iPR

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

Qr;Vaq7o.i0

G51Testing软件测试网.IxjG] UT6O

Button

"q*e3E)wa)b0

确定51Testing软件测试网.U vZ C!l

Click

(Cd6?(j7h)`!Z,e%q.T0

G

8O kB5we{/V/?0

HTMLLink51Testing软件测试网f6^_5T+B o

链接

`mpue0

Click51Testing软件测试网9F4n*Yv0|%AO;Le_

G51Testing软件测试网7Z2}:j4GMI

ComboBox

v ~D:h!RN6Ek U0

角色列表

?k? XDp0

Click

G0u;F|&H _tcL0

系统管理员

[B0Z*a:F"N0

普通管理员51Testing软件测试网 C!F2D6h6T&BQ@`[{ x

G51Testing软件测试网#F,qh{Lq {6Y

RadioButton51Testing软件测试网1\ BW eK+[8{Q

区域51Testing软件测试网]X}7n5~k7E%[|

Click51Testing软件测试网q!Zw,Xwo

V

1m*}%@*ksX0

VP51Testing软件测试网9y c `(\ x"^PLE

VP_SUM51Testing软件测试网 M6[2Yj~$Tccj

VP_SUM 

'}]$o.f1M9K`9y0

2451Testing软件测试网6B;y4AFRL5|3Nn%Rn

IGNORE

q!F#Sm.n.X,B0

G51Testing软件测试网*lMpV4H`)v%@8\

DC51Testing软件测试网1pa"^#M#Y W"w4~M

DC_GETID

5zd&o~ G%u1Pj1J0

DC_GETID51Testing软件测试网.I9_#A Fx

G

\5Rck@/_.g0

EditBox51Testing软件测试网y |-B6z q ae

交易号51Testing软件测试网(Vr%cK N*bb

Click51Testing软件测试网n3HgI.O(lx}

DC_GETID

8~!VK"O/cC C0

DC_GETID

C7A T v;] \r0

L51Testing软件测试网7vS5x R3O!U*H.L7p

输入交易号

#i6SS_)nX9J0

输入交易号

8AA'Fh`0

S51Testing软件测试网 ~n NA4],By|

Order51Testing软件测试网 np L7G y

Order51Testing软件测试网DoPT0E ^M

X51Testing软件测试网$t0a @:s jF

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

在Robot测试技术框架中,相应的处理如下:51Testing软件测试网Uvfudl7t

‘对文件中每一行51Testing软件测试网M0Y\4\XO
Select Case (sActType)51Testing软件测试网5qJ }d6B
Case “G”
YL%Iho%x0Process……
sQzO9R0Case “L”51Testing软件测试网&S-o$I)i| m,VWA
Log(sData)
7s(N"pZ4z0Case “S”
D i`5G7W4|;K,V0Callscrīpt sData51Testing软件测试网)A9s8{:WY(e
Case “X”
?+P3n n(Y,@1f0Exit
9om ZlGQq6W9{0

@)cD$\.t0

3.3 测试设计工具

*? Q|0N6CWR!Fe^+K0

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

,Z9h'\!Pcs|0

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

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

R;hc%]Bdc+S$^0

图 4. 静态结构示例

Fy"X-d9q0

51Testing软件测试网.Q Py$G ?'~ }

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

Fr E _/DV0

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

FA"z$GM0m0L:b0

以下是已经建好的动态结构的示例:51Testing软件测试网Z(R4d+RF^,rwJ

图 5. 动态结构示例51Testing软件测试网F;h7gP K/}f

%vcT5[r b"R#{z6n0

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

G8A7~kB#B2Kp"f$jc0

当业务测试人员设计好测试用例后,就可以将测试用例传递给Robot测试技术框架,又测试技术框架解释并执行。51Testing软件测试网E;^}2B\1rq"F

4. 结论

S#B7b ]4BI m&\pM c0

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

:w$P;V Skd+Y n0

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

&Os!pr5\ | v(Xdr0

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

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

7r!hv^-@7n Vw0

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

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

参考资料51Testing软件测试网8Qw!h9W:G[$B L

关于作者

n&`7NE6{B0

-sS wV8KBs f0

51Testing软件测试网4En#f*Q+t*tjq6qj

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

 

c V`2n+A8f0

 51Testing软件测试网rXchT}^


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-05-09  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

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

RSS订阅

Open Toolbar