数据库单元测试实例

发表于:2007-12-07来源:作者:点击数: 标签:单元测试数据库
我自己编写了一个 数据库 单元测试 的实例,该SP实现的功能虽然很简单,但麻雀虽小,五胀具全,供大家参考和讨论. use pubs go create procedure test_exemple @Begdate varchar(10), @Enddate varchar(10) as begin select * from sales where ord_date @Begdate
我自己编写了一个数据库单元测试的实例,该SP实现的功能虽然很简单,但麻雀虽小,五胀具全,供大家参考和讨论.

use pubs
go
create procedure test_exemple
@Begdate varchar(10),
@Enddate varchar(10)
as
begin
select * from sales
where ord_date >@Begdate
and ord_date<@Enddate
End

上面SP完成了按照起始日期查询PUBS库里面的sales表记录的
那我们该如何来测试呢?请看下面的测试思路和过程
做代码的codeview
  发现几个问题
1.关键字一般都应该大写
2.当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法.
不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名,
这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间
3.应该在sales前面加上DBO做为表的前缀,sales默认的表属主,加上会提高效率,否则会先到当前用户去查找
准备测试用例进行动态测试
4.日期所定义的长度10位不够
三组
第一组:@Begdate='1993-03-11 00:00:00.000',@Enddate'1994-09-14 00:00:00.000'
下面执行该测试用例
EXEC test_exemple '1993-03-11 00:00:00.000','1994-09-14 00:00:00.000'
第二组:EXEC test_exemple '1994-09-14 00:00:00.000 ','1994-09-14 00:00:00.000'
这一组出现了问题,因为数据库在这个启始日期是有记录的,该存储过程是没有查询出记录,需要调整
第三组:EXEC test_exemple '2000-05-12','2000-05-12'

备注:如果大家要调试先安装SQL SERVER,打开查询分析器
所以该SP有很多问题需要调整,希望大家多找出BUG,进行完善。。。。期待中
至于C/C++/JAVA开发的函数测试过程和思路给以上很类似,有时间会给大家整理例子,谢谢大家

原文转自:http://www.ltesting.net