测试存储过程首先想到的方法当然是利用PL/SQL里自带的测试功能了.通过传入所需要的参数来进行简单的测试,可以很快的知晓该存储过程是否有不对的地方.然后这样的手工做法在后期的维护方面需要花的时间和精力太多了.
所以,大家可以考虑下利用ADO来调用存储过程,然后准备好测试数据,通过传入对应的参数来调用存储过程.这时,你只需要运行一下就能知道哪个存储过程有问题,哪个还需要改进.
应广大道友的要求,下面利用个实例进行简单的分析下具体的操作流程.
首先在数据库中有个简单的存储过程:
create proc test
@userid int,
@Flag int Out
As
Begin
delete from Table_list whereUser_id=@userid
set Flag=1
end
该存储过程就是根据传入的userid来删除数据库表Table_list对应的数据,然后抛出结果1.(这里就不做删除是否成功的判断了,力求简化,sorry。)
然后,我们利用ADO来调用该存储过程。
我使用的是C#语言,
public int DeleteUser(int userid )
{
SqlConnection c = new SqlConnection(Connection);//Connection为连接数据库的字符串
Oc.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = Oc;
SqlTransaction t = Oc.BeginTransaction();
cmd.Transaction = ot;
cmd.CommandType = CommandType.StoredProcedure;//定义调用的是存储过程
cmd.CommandText = “test";//存储过程名
cmd.Parameters.Add("userid ", SqlDbType.Int).Value = userid ;
cmd.Parameters.Add("Flag ", SqlDbType.Int, 1).Direction = ParameterDirection.Output;//注意:还有种返回值是ReturnValue,这与存储过程定义的要一致
cmd.ExecuteNonQuery();
ot.Commit();//有些存储过程需要手动提交
Oc.Close();
return Convert.ToInt32(cmd.Parameters["Flag"].Value.ToString());//把输出的值获取到后返回
}
把调用该存储过程封装成个方法,在以后使用的时候就可以直接利用面向对象原理直接调用就可以了.
这样就把一个存储过程通过代码来完成了调用,接下来就是准备好测试数据进行批量的调用,把这些代码写成一个程序后,直接运行,如果出现错误,则把错误输出到txt或者其他方式提供给用户,这样就可以看到哪个存储过程出现了错误了.程序写得好是关键,可以很清楚的定位到某个存储的某个错误.
由于时间匆忙,可能很多地方没说清楚,大家可以直接问我,希望不要拍我砖,实在是太忙了.
这次只是初步的进行简单的自动化,下篇将带来些逻辑性强点的自动化批量测试.