更多的文章,访问我的个人博客:www.cesoo.info

《测试框架》摘选-9 高质量测试脚本范例

上一篇 / 下一篇  2009-11-23 23:28:04 / 个人分类:自动化测试框架

y8Q7^b:O(J,W8TY0“不积跬步,无以至千里;不积小流,无以成江海”。51Testing软件测试网g$g6j+M`9ETB S Y
—荀子《劝学》51Testing软件测试网wd)m^4eB.l p
如果说自动化测试的成功实施是一副壮丽的山水画卷,那么测试脚本/程序的一行行代码就是这幅画卷里一个个彩色元素;如果自动化测试框架是一幢雄伟坚实的大厦,那么函数代码就是其中的一砖一瓦。
%U0t~!U-Hk0因此,对于我们自动化测试开发人员来说,要想成功地构建并实施自动化测试框架,切勿好高骛远,必须要踏踏实实地掌握基本功,从学习开发高质量的测试程序或脚本代码开始,这才是一个训练有素自动化测试开发人员的成长之道。51Testing软件测试网 _$K] h$b
什么样的代码才算得上是高质量的代码?高质量的代码到底是怎样开发出来的呢?本章将以案例进行介绍并点评。51Testing软件测试网#L {H4G X/u*kR

51Testing软件测试网 B|p{'dIG

r7Wi t:tb0

vrR7Gb_01.1  案例1:脚本开始处首先进行环境检查51Testing软件测试网-so8\7OuB:u9r
下面是一段linux系统上运行的perl脚本代码,功能是调用产品后台管理位于$ORACLE_HOME/bin目录下的add_user命令,根据存储在users.txt中的用户信息列表,依次在产品系统中创建测试账户。51Testing软件测试网A8D@;]!n0X]

7F'?ue$\4R-rGb8B0my $data;51Testing软件测试网3s9{|Y r.p a Z}
open FH, “< users.txt”;51Testing软件测试网Rl5bn h3N7u2P}
while (<FH>) {51Testing软件测试网[5je,d]7A
 chomp;
+x9^b ~~;m O7T0 print “users are $_\n”;51Testing软件测试网W A@TaXv
 $data=$_;51Testing软件测试网P kB$@;SH+g8sA
}51Testing软件测试网_ Y"A#{]? j
my @users=split(’,', $data);
3kLQ Qr0foreach my $val (@users){51Testing软件测试网)Z(p$W$de9Qb O g \
print “$ORACLE_HOME/bin/add_user –firstname $val –loginid $val –initial_password 123456 –email_address$val@gmail.com“;51Testing软件测试网q6o#I)hS'qo~ yF
}

/r;JU%v9Ra)v,rp"A/Q0

#ob9^8i3u$} u*h @9@0上面的这段脚本由负责产品安装测试的工程师小李开发,每次安装完被测软件系统版本后,自动地运行这段脚本,就能直接把测试用户信息等初始数据创建到数据库中去。
\b+Aj%|(B0但,可以看出要想能够成功运行该脚本,其前提条件是$ORACLE_HOME必须已经在linux系统环境变量设定,如下:
F*c{ `+B%a H1k a)|:{0export ORALCE_HOME=/home/oracle/10123/Orahome1
8K lk@hCkb)y3U0这时,脚本代码
-V7g#B7EC0print “$ORACLE_HOME/bin/add_user –firstname $val –loginid $val –initial_password 123456 –email_address$val@gmail.com“;51Testing软件测试网(y/JE/fr M
会将$ORACLE_HOME替换成环境变量里设定的实际目录,实际执行如下:
u8{A oSB(B6gR3_$Z0print “/home/oracle/10123/Orahome1/bin/add_user –firstname $val –loginid $val –initial_password 123456 –email_address$val@gmail.com“;

6@~n0G0aN/g8E0

mF.B&[c&K_].v.fM|0但这段脚本显然忽略了一个很有可能发生的场景,那就是在脚本运行之前,如果测试人员忘了设定或者设错了$ORACLE_HOME环境变量,脚本就会因为找不到add_user命令,报出一堆莫名其妙的错误。这会降低测试脚本执行的效率,提高诊断错误的难度。
%zi*YYro'a0要想解决这个问题,就应该增强脚本的健壮性,在脚本开始处检测$ORACLE_HOME环境变量是否存在,并作相应地处理。修改如下:

7D6laQ*|XjK*s0

]:IX5ARH@0#detect the $ORACLE_HOME, if not exist, then prompt info to user and exit
{ @TJF1B g'U c5Y0if($ORACLE_HOME eq “”)
!LRF.v;?'P4p0{51Testing软件测试网&M"]{"s&J${
        print “Error: Please specify the Beehive Home\n”;51Testing软件测试网C [g#W;U x:KvU
        print “\n”;51Testing软件测试网bJ.w({3zD ~
        print “Usage:\n”;51Testing软件测试网v4w.iSN,Z
        print “  perl create_user.pl -beehome <BEE_HOME>\n”;
8^Gx diZU0        print “- beehome: The location of the Beehive Home.\n”;51Testing软件测试网 J8W%qp:BO;Z
        exit;
MAI VHe0}
on zyYZG.X6s0#end detect
0J LM%OmMJ0my $data;51Testing软件测试网z\!nR(J;z4f
open FH, “< users.txt”;51Testing软件测试网$z [1ye/`
while (<FH>) {51Testing软件测试网 hoxf~:p$y1P
 chomp;
}3IC {Sf4\;N0 print “users are $_\n”;51Testing软件测试网+e$t%Q]E4jq!yE7l
 $data=$_;
M7~+f*YFP0}
S'MRk c0my @users=split(’,', $data);51Testing软件测试网6F*Yz{b Q
foreach my $val (@users){
G0NRW8~N1nEkj Y8{0print “$ORACLE_HOME/bin/add_user –firstname $val –loginid $val –initial_password 123456 –email_address$val@gmail.com“;
4K%L] _5` kBR0}51Testing软件测试网$sS0`6|6| qs

XZf)J }P/?0修订后,脚本能够在第一时间内检测到环境变量的错误,并提示用户,然后退出,避免了错误扩散。51Testing软件测试网/C%[ NEzjsB esT

*n*g'^4vM] n \0【思考1】51Testing软件测试网2lZ ZtYDl
一个产品安装脚本,在脚本开始处应该考虑做哪些环境检查?51Testing软件测试网/E"mJR/l6A
【思考2】
+iF1a| e P0在脚本开始时进行环境检测,那么在脚本结束时应该做哪些操作?51Testing软件测试网H6k8v4s*v


TAG:

追寻 引用 删除 wanghq081126   /   2012-03-21 15:08:07
5
cocaxiaojing的个人空间 引用 删除 cocaxiaojing   /   2010-11-05 16:20:18
支持哦,嘻嘻
cocaxiaojing的个人空间 引用 删除 cocaxiaojing   /   2010-11-05 16:20:01
5
 

评分:0

我来说两句

Open Toolbar