《测试框架》摘选-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
{H4GX/u*kR
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{|Yr.pa
Z}
open FH, “< users.txt”;51Testing软件测试网Rl5bn h3N7u2P}
while (<FH>) {51Testing软件测试网[5je,d]7A
chomp;
+x9^b ~~;m
O7T0 print “users are $_\n”;51Testing软件测试网WA@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
}
#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
8Klk@hCkb)y3U0这时,脚本代码
-V7g#B7E C0print “$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“;
mF.B&[c&K_].v.fM|0但这段脚本显然忽略了一个很有可能发生的场景,那就是在脚本运行之前,如果测试人员忘了设定或者设错了$ORACLE_HOME环境变量,脚本就会因为找不到add_user命令,报出一堆莫名其妙的错误。这会降低测试脚本执行的效率,提高诊断错误的难度。
%zi*YYro'a0要想解决这个问题,就应该增强脚本的健壮性,在脚本开始处检测$ORACLE_HOME环境变量是否存在,并作相应地处理。修改如下:
]: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%q p:BO;Z
exit;
M AI VHe0}