SQL存储过程测试(2)——创建测试用例以及测试结果存储

问题

 

      如何创建SQL数据库以及表结构以用来保存测试用例的输入数据和测试结果。

 

设计

 

      编写T-SQL脚本,创建一个数据库然后创建一些表用来保存测试用例的输入数据和测试结果。如果想通过SQL认证的方式连接到上一步创建的数据库,则要创建一个专用的SQL登录账号,然后在查询分析器里或者通过osql.exe运行T-SQL脚本。

 

方案

 

      下面的脚本创建了一个叫dbTestCasesAndResults的数据库,它包括一个用于存储测试用例数据的表和一个胜于存储测试结果的表,以及一个专用的SQL登录账号,这个账号便于程序通过Windows认证或者SQL认证的方式连接数据库。

 

--makeDbTestCasesAndResults.sql

 

use master

go

 

if exists(select * from sysdatebases where name = 'dbTestCasesAndResults')

      drop database dbTestCasesAndResults

go

 

if exists(select * from sysxlogins where name = 'testLogin')

      exec sp_droplogin 'testLogin'

go

 

create database dbTestCasesAndResults

go

 

use dbTestCasesAndResults

go

 

create table tblTestCases

(

      caseID char(4) primary key,

      input char(3) not null,-- an empID

      expected int not null

)

go

 

--下面插入的是用于usp_StatusCode的测试用例数据

--也可以通过BCP,DTS,或者C#程序从文本文件读入

 

insert into tblTestCases values('0001','e11',77)

insert into tblTestCases values('0002','e22',77) ——should be 66

insert into tblTestCases values('0003','e33',99)

insert into tblTestCases values('0004','e44',88)

go

 

create table tblResults

(

      caseID char(4) not null,

      result char(4) null,

      whenRen datetime not null

)

go

 

exec sp_addlogin 'testLogin','secret'

go

 

exec sp_grantdbaccess 'testLogin'

go

 

grant select,insert,delete on tblTestCases to testLogin

go

 

grant select,insert on tblResult to testLogin

go

 

      第一步设定当前的数据库为SQLServer的主数据库(master database)。当创建一个新的用户数据库的时候,这一步是必不可少的。如果要创建的数据库已经存在,系统就会给一个错误,为了防止这种错误,可以在试图删除新数据库的旧版本之前通过查询sysdatabases表来检查旧版的数据库是否存在。然后可以通过数据库创建用于测试用例存储的数据库。用于创建数据库的语句有许多可选的参数,但是对于轻量级的自动测试来说,接受这些参数的默认值通常就可以满足需要了。

 

注解

 

      SQL数据库支持两种不现的安全模式:使用Windows认证可以通过Windows账号ID和密码连接数据库,使用混合模式认证可以通过SQL登录ID和SQL密码来连接数据库。如果想要通过SQL认证来连接数据库,应该使用系统存储过程sp_addlogin()创建一个SQL登录账号以及相应的密码。如果要删除一个SQL登录账号,可以先查询sysxlogin()表检查相应的账号是否存在,然后调用sp_droplogin()来删除这个账号。创建好一个SQL登录账号以后,应该赋予登录账号连接数据库的许可。然后需要针对数据库里的表,赋予登录账号与SQL语句相关的权限许可,比如:SELECT,INSERT,DELETE以及UPDATE。

 

      SQL登录账号很容易与SQL用户搞混。SQL登录账号是服务器范围的对象,它用来控制针对装有SQL Server的机器的连接许可。而SQL用户是数据库范围的对象,它用来控制数据库以及它所包含的表,存储过程和其他一些对象的权限许可。当为一个SQL登录账号分配权限的时候,会自动创建一个同名的SQL用户。所以最终会有一个SQL登录账号和一个SQL用户,两个名字相同并且相互关联。尽管也可以上让不同名的账号和用户相互关联,但是这太容易让人迷惑了,所以最好还是使用名字相同的默认机制。

 

      为了测试存储过程而测试用例存储结构的时候,必须决定在什么时候以及如何往表中插入胜于测试用例的那些数据。最简单的办法是在创建表的时候直接加入用于测试用例的数据。使用本解决方案所演示的INSERT语句可以很快的完成这件事情。但是,在测试的过程中几乎肯定要在很多地方碰上需要添加或者移除测试用例数据的情况,所以更灵活的方法是在后面使用BCP(Bulk Copy Program),DTS(Data Transformation Services)或者一个辅助的C#程序来插入数据。如果想要插入以及删除测试用例数据,那么就应当针对存储测试用例数据的那张表为SQL登录账号赋予INSERT和DELETE的权限许可。

 

      这个用于创建测试用例和存储测试结果的脚本可以通过几种方法来运行,一种方法是在查询分析器程序里打开并通过Excute命令。第二种方法是使用OSQL.EXE程序来执行这个SQL脚本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值