每天进步一点点

后台应用的自动化测试实现

上一篇 / 下一篇  2013-07-30 10:33:44 / 个人分类:自动化测试

每次发版本,测试后台的报表统计功能时,都要构造很多基础测试数据,要花费很多时间,于是想通过导出基础数据的SQL语句,每次测试时直接导入就行了,再通过SHELL实现整个测试的自动化,可分为以下几部分:

1.初始化环境,导入基础数据
导入数据通过sqlplus完成,写成一个函数,执行SQL时,将SQL作为入参调用函数即可
SQLRSL()
{
sqlplus -S /nolog >oracleRst_tmp.txt  <<!
conn $ORACLESTR
set colsep |;
set echo off;
set feedback off;
set heading off;
set pagesize 0;
set linesize 30000;
set numwidth 20;
set termout off;
set trimout on;
set trimspool on;
$1
commit;
exit
!
}
准备基础数据时,必需先弄清整个业务流程,业务是怎么触发的,关联了哪些表,输出些什么结果,可通过查看日志数据库了解,直接查看源代码是最可靠的。

2.运行程序
$PATH/startWebLogic.sh         这里是运行的java WEB程序,同样可以通过nohup拉起C程序,如果业务处理是通过调用服务来完成的,则需要开发一个调用服务的接口程序,入参可以放到一个文件,在执行程序时用文件名称作为参数,如:
$PATH/testInterf input.txt

3.程序运行后产生的结果与期望结果比较
#--------------对比执行结果--------------#
FLAG=0  #用例执行是否通过
NUM=1   #期望结果计数

while read ELINE
do

#得到期望结果类型
ETYPE=`echo $ELINE|awk -F':' '{print $1}'`

#得到要执行的SQL语句
EINFO=`echo $ELINE|awk -v atype=$ETYPE '{latype=length(atype);print substr($0,latype+2)}'`

case $ETYPE in
#--------------ORACLE预期结果对比--------
ORACLE)
rm -f oracleRst.txt
rm -f oracleRst_tmp.txt
SQLRSL "$EINFO"  #调用SQLRSL函数执行ORACLE操作
#sleep 10
`cat oracleRst_tmp.txt|sed 's/ //g'|sed 's/ //g' >oracleRst.txt` #去掉从ORACLE导出数据时竖线|之间的空格和TAB键
;;

#ORACLE实际执行结果
ORACLER)
ERSL=`grep "$EINFO" oracleRst.txt`
if [ "$ERSL" != "" ]
then
FLAG=0
else
FLAG=1
echo "ORACLE:期望结果:"$EINFO"与实际结果不同" >> err.info
break 1  #跳出期望结果循环
fi
;;



*)
FLAG=1
echo "含有非法期望结果类型" >> err.info
break 1
;;
esac

done < $EFILE

运行截图:




期间遇到个问题,执行SQL语句时,需要oracle用户才有执行SQLPLUS的权限,运行程序时修改系统时间:date -s则要root用户才能执行,而切换用户会使脚本运行中断。
后来上网查找解决办法,也问了别人,最后终于解决了,使用sudo命令:

sudo  date -s 02:29:55

这是从百度百科上摘的一段关于sudo的介绍:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的

但是还有个问题,每次运行脚本中途都要手动输入密码,有啥办法取消呢:
首先,在终端输入sudo visudo,找到
root ALL=(ALL) ALL

修改为:

oracle ALL=(ALL) NOPASSWD: ALL

意思是属于oracle用户可以不需要输入密码执行sudo


还有个问题,准备的数据SQL,期望结果都放在文件中,如果有汉字,有时会读不出来,或者插数据库失败,这是编码格式的原因,可通过UE转换成UTF8。定位这种问题,可通过echo把读到的行数据打印出来,如果有乱码则编码有问题呢

TAG:

 

评分:0

我来说两句

Open Toolbar