51Testing软件测试网 ^$zo8Y? gi今天忽然发现oldsidney兄弟消失好久了,特此转贴一篇他N年前的火星帖,希望能借此召唤他来冒个泡。呵呵^_^51Testing软件测试网$U5CG
kfHl
51Testing软件测试网A&KY0vd,B
p+D CgD不知道为什么我的blog贴不了图了,以下原文出处:http://blog.joycode.com/oldsidney/articles/23580.aspx
Ay8|%TmbKg0oYW0)sHE7_"k6zE9Jr0
w(bP)x'}I(u0何谓Keyword-Driven Testing?
|6QQ8E c4Zb2db0Mercury的QuickTest Professional 8.0中,又出现了一个新的名词(对我来说是新的名辞啦) - Keyword-Driven Testing。到底什么是Keyword-Driven Testing呢?
q_@O;t\0以录制方式建立测试的问题
}&he/^6zz9m
c0一般来说,自动化测试通常是透过录制的方式建立测试脚本的,这样的方式看似容易,但是实际上会遇到下列的问题:
#p6oOj%r w01. 测试人员大多不具技术背景,难以完全掌握测试工具
9Y3vFZ `sK2j4vN02. 应用软件必须达到一定的稳定性,才能开始录制测试脚本51Testing软件测试网)B!e?!U6oc
3. 自动化测试脚本与文件是分开的
6]]l)IeS%S(ZEp04. 维护自动化测试脚本的成本非常高
-mL8H/x!k0关键词驱动(Keyword-driven )
7PP!o0e![7Dk0在QuickTest 8的「关键词驱动(Keyword-driven )」测试架构,主要是为了解决上述「透过录制产生测试脚本」的问题的。
2Z s4[
~*\1h9@;\.C0透过「关键词驱动(Keyword-driven )」测试架构,测试人员不需要「录制测试脚本」,进而改成「设计测试脚本」。51Testing软件测试网|
Ya4p f[5@|hk
建立Object Repository
Yf3BSJml };I0在之前的文章有提到,通常测试工具都是「Object Base」的。在QuickTest储存Object的地方称为「Object Repository」。51Testing软件测试网&sK~X
c8IkN
所以一开始,要先将应用软件的GUI Object,先记录在「Object Repository」中。所以会先开启「Object Repository」,按下「Add Objects」按钮,将应用软件的GUI Object加入「Object Repository」中。
1sGW;k;u(~2Y,W0
9o1Gk*N(s%@)GT
?0接下来点选应用软件窗口的标题列,会出现对话窗口问您是不是要把您刚刚点选的窗口加入「Object Repository」,点选「OK」。51Testing软件测试网2eqW!q/pGh$gu\
&uPwT4P|d5Ham0由于您选择的Object是一个窗口,所以QuickTest还会进一步问您,是不是连窗口内的所有Object都要加入「Object Repository」,选取「Selected object and all its descendants」后点选「OK」。
N$g|#U)p.S3t051Testing软件测试网-efn4p k6H2_F5DB
s
之后,您就会看到「Object Repository」中会出现这个窗口内的所有GUI Object。51Testing软件测试网 KmM"Wv@ I
*O_2J4auc ~o-Eh,D0接下来,建议您将那些Object名称很奇怪,或是看不出代表哪一个Object的Object名称作个修改。例如我将原本名为「Button_5」的object,改名成为「NewOrder」。
[0E;]n_w:V$v9@0在使用测试工具时,这是非常重要的一个动作,为您测试脚本中的object名称,订定一个统一的规范,可以替日后的维护,减少非常多的成本喔!51Testing软件测试网tM3m{9u
51Testing软件测试网p%_;~QY5NH&[`B4v
可以开始设计测试脚本了
!{ ]`uHL:P0接下来,您可以开始设计测试脚本的工作了!注意我使用的是「设计」而不是「录制」,因为建立测试脚本的过程,就像是您在一个Excel文件上设计测试个案一样。
6F.V
Z7H RP:L0您将会设计每个测试步骤,每个测试步骤主要有三个元素:
]oZ-C&LBN V9J'j0·Item:这个测试步骤是作用在哪个object上,可能是个窗口、按钮、或是输入字段。51Testing软件测试网5aLFU A&WQ:v
·Operation:在这个object上,您要执行什么动作,如Click、Type、Select。
cZ4^d!r0·Value:有些动作,会需要输入数据,如从一个清单(list)上选择某个选项,或是在输入字段(edit box)中输入某些值,您必须告诉QuickTest要用什么数据。51Testing软件测试网:p,i@}/@1q
而且当您设计好一个测试步骤后,在Documentation字段,会自动以英文句子显示这个步骤的说明,这也是QuickTest的另一个新功能「Auto-documentation」,您在设计测试步骤的同时,文件也自动产生了。
-O,|Oz2bzp W'y0接下来,我将以在Flight ( QuickTest内建的范例程序),建立一个「新增订单」的测试个案。51Testing软件测试网;Och0`Ns5?Wv
这个测试个案的第一个步骤就是先Active Flight Reservation的主窗口。要建立这一个测试步骤,以要在Keyword View上的Action1下方点一下,就会出现Object的清单,供我选择要作用的object。我只要选择「Flight Reservation」这个窗口object就行啦。
O,LP#Bbq Q:W051Testing软件测试网X7DlY9[O&Dn/K+d4W
接下来,因为我要让这个Flight Reservation窗口Active,所以我只要在「Operation」字段选取Active。因为这个Active不需要任何的数据,所以我不用在「Value」字段中输入任何数据。
"i tHfI-g0所以我的第一个测试步骤就完成了。同时也可以看到在「Documentation」字段中自动出现「Make the "Flight Reservation" window active.」的说明。
$TvsM n a+i0
2bk0OEO+h0第二个测试步骤,我需要在主窗口上的「Data of Flight:」中输入出发日期,我同样也按照上面的方式,在「Item」字段选择「Data of Flight:」,在「Operation」字段选择「Type」,然后在「Value」字段输入我要出发的日期「12/12/04」,到这里我已经完成我的第二个测试步骤。
:Oql^/Tw OE0
kIso4X&_1}@"l0e*~0至于其余的步骤,我也是以同样的方式去完成,你可以看到整个测试脚本其实和你透过录制的方式所建立的测试脚本一样,这个测试脚本已经是一个可以执行的测试脚本。
5iNYk{,Oo1c6t051Testing软件测试网 IXxq'hA_,LA
结论51Testing软件测试网*p/}+J.[)jh~^
所以,您可以看到整个测试脚本建立的过程,完全不需要去执行整个「新增订单」的操作流程,只要先完成应用软件的使用接口(UI),就可以建立一个已经准备好可以执行的测试脚本。51Testing软件测试网9FIC![r\)L-Q
这也表示您的应用软件只要有使用接口(UI)就可以了,并不需要真的可以运作。所以测试人员不需要等到应用软件已经开发得差不多,才开始建立测试脚本。测试人员可以更早就开始建立测试脚本了。51Testing软件测试网 Vrg$RH/t#}z
听起来是不是有点像XP所说的「测试先行」的概念呀!51Testing软件测试网-_PbybW1r3N
同时在建立测试脚本的过程中,测试步骤的文件也同时产生。
UY8?Q
n,v3NCyE0至于测试脚本的维护,也与建立的过程一样简单,不管是使用接口(UI)还是操作流程的变动,都可以轻松改变测试脚本。
7}4@m2fV[h)CZ0对于技术背景不深的测试人员、系统分析师、使用者,建立测试脚本就像是在一个Excel中撰写测试个案一样简单。51Testing软件测试网8X4N8I*L.aJ
以上就是我目前所了解的Keyword-Driven Testing!51Testing软件测试网$n-Q"W
s{L \ m g