SQL儲存過程測試 建立測試用例以及測試結果儲存

2021-05-22 08:00:01 字數 3018 閱讀 1488

問題

如何建立sql資料庫以及表結構以用來儲存測試用例的輸入資料和測試結果。

設計

編寫t-sql指令碼,建立乙個資料庫然後建立一些表用來儲存測試用例的輸入資料和測試結果。如果想通過sql認證的方式連線到上一步建立的資料庫,請建立乙個專用的sql登入賬號。然後在查詢分析器裡或者通過osql.exe執行t-sql指令碼。

方案

--makedbtestcasesandresults.sql

use master

goif exists(select * from sysdatabases where name = 'dbtestcasesandresults')

drop database dbtestcasesandresults

goif exists(select * from sysxlogins where name = 'testlogin')

exec sp_droplogin 'testlogin'

gocreate database dbtestcasesandresults

gouse dbtestcasesandresults

gocreate 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)

gocreate table tblresults

(caseid char(4) not null,

result char(4) null,

whenrun datetime not null)go

exec sp_addlogin 'testlogin','secret'

goexec sp_grantdbaccess 'testlogin'

gogrant select,insert,delete on tbltestcases to testlogin

gogrant select,insert on tblresults to testlogin

go第一步設定當前使用的資料庫為sql server的主資料庫(master database)。當建立乙個新的使用者資料庫的時候,這一步是必不可少的。如果要建立的資料庫已經存在,系統就會給出乙個錯誤,為了防止這種錯誤,可以在試圖刪除新資料庫的舊版本之前通過查詢sysdatabases表來檢查舊版本的資料庫是否存在。然後可以通過資料庫建立語句來建立用於測試用例儲存的資料庫。用於建立資料庫的語句有許多可選引數,但是對於輕量級的自動測試來說,接受這些引數的預設值通常就可以滿足需要了。

接下來我們使用use語句把當前資料庫設為新建立的資料庫。這個步驟很重要,因為如果省掉了這一步,接下來所有的sql語句都將在sql主資料庫上執行,這可能會導致很糟糕的結果。現在你可以建立乙個表用來儲存測試用例的輸入。這個表的結構完全取決於你所要進行的測試,但是它至少應該包含測試用例id、測試用例的輸入項以及測試用例的期望結果項。對於用於儲存測試結果的表,至少需要乙個用於表示測試用例id的列以及用於表示測試結果成功或者失敗的列。如果想要在這張表裡存放多次測試執行的結果(絕大多數情況下都會有這種需求),則需要採用某種方法來區分不同批次的測試執行結果。其中一種方法是用乙個列來存放每次測試結果產生的日期和時間。這個列實際上隱式地充當了測試執行批次的id。你也可以建立乙個顯式的、專用的列來表示測試執行批次id。

註解

sql資料庫支援兩種不同的安全模式:使用windows認證可以通過windows賬號id和密碼連線資料庫,使用混合模式認證可以通過sql登入id和sql密碼來連線資料庫。如果想要通過sql認證來連線測試資料庫,應該使用系統儲存過程sp_addlogin()建立乙個sql登入賬號以及相應的密碼。如果要刪除乙個sql登入賬號,可以先查詢sysxlogins表檢查相應的賬號是否存在,然後呼叫sp_droplogin()來刪除這個登入賬號。建立好乙個sql登入賬號以後,應該賦予登陸賬號連線資料庫的許可。然後需要針對資料庫裡的表,賦予登入賬號與sql語句相關的許可權許可,比如select、insert、delete以及update。

sql登入賬號很容易與sql使用者搞混。sql登陸賬號是伺服器範圍的物件,它用來控制針對裝有sql server的機器的連線許可。而sql使用者是資料庫範圍的物件,它用來控制資料庫以及它所包含的表、儲存過程和其他一些物件的許可權許可。當為乙個sql登陸賬號分配許可權時,會自動建立乙個同名的sql使用者。所以最終會有乙個sql登陸賬號和乙個sql使用者,兩個名字相同並且相互關聯。儘管也可以讓不同名字的登陸賬號和使用者相互關聯,但是這太容易讓人迷惑了,所以最好還是使用名字相同的預設機制。

當為了測試儲存過程而建立測試用例儲存結構的時候,你必須決定在什麼時候以及如何往表中插入用於測試用例的那些資料。最簡單的辦法是在建立表的時候直接加入用於測試用例的資料。但是,在測試的過程中幾乎肯定要在很多地方碰上需要新增或者移除測試用例資料的情況,所以更靈活的方法是使用bcp(bulk copy program)、dts(data transformation services)或者乙個輔助的c#程式來插入資料。如果想要插入以及刪除測試用例資料,那麼就應該針對儲存測試用例資料的那張表為sql登陸賬號賦予insert和delete的許可權許可。

這個用於建立測試用例和儲存測試結果的指令碼可以通過幾種方法來執行。一種方法是在查詢分析器程式裡開啟並通過execute命令(或者快捷鍵f5)執行這個指令碼。第二種方法是使用osql.exe程式來執行這個sql指令碼。

測試用例評審過程

摘要 關於用例評審,你是否了解用例評審前的準備工作有哪些 需要幾輪評審 需要哪些人參加 評審時長 評審形式 評審結束後,還需要做哪些 關於用例評審,多數團隊都有這個流程,很多書籍上也有提過,網上充斥著各種文章 那麼,各企業團隊實際的執行流程是怎樣的?如何落地的 如下是正文 首先明確兩個概念。什麼是用...

SQL注入測試用例

看看是什麼許可權的 and 1 select is member db owner and char 124 2bcast is member db owner as varchar 1 2bchar 124 1 檢測是否有讀取某資料庫的許可權 and 1 select has dbaccess m...

逆序對測試用例 測試用例的產生過程

要做好測試,首現要搞清楚 測試 與 驗證 的區別 測試,是提出假設,並設計驗證方法,執行驗證後得出假設成立或不成立的一系列活動。驗證,是通過實際操作,判斷操作物件的反饋與預期是否一致的活動。換句話說,測試是需要判斷力 創造力,包含了提出 設計 操作 結論一系列環節的過程 而驗證只是在別人給定目標後的...