在軟體系統中,資料經常從UI(使用者介面)到後端資料庫之間來回穿梭,反之亦然。因此,這些是需要注意的一些方面:
檢查使用者介面/前端表單中的欄位是否與資料庫表中的相應欄位有一致的對映。 通常情況下,這種對映資訊在需求檔案中被定義。
每當在應用程式的前端執行某個動作時,相應的CRUD(建立、檢索、更新和刪除)動作會在後端被呼叫。測試人員必須檢查是否呼叫了正確的動作,以及呼叫的動作本身是否成功。
原子性、一致性、隔離性和永續性。DB執行的每個事務都必須遵守這四個屬性。
對於任何CRUD操作,共用資料的更新和最新的值/狀態應該出現在所有的表格和螢幕上。
資料庫中更多的複雜性意味著更復雜的元件,如關係約束、觸發器、儲存過程等。因此,測試人員必須想出適當的SQL查詢,以驗證這些複雜的物件。
當測試交易時,重要的是確保它們滿足ACID屬性。
這些是常用的語句:
BEGIN TRANSACTION TRANSACTION#
END TRANSACTION TRANSACTION#
ROLLBACK TRANSACTION#
SELECT * FROM TABLENAME <tables which involve the transactions>
資料庫模式是對資料在資料庫中如何組織的正式定義。為了測試它:
當某個事件發生在某個表上時,一段程式碼(觸發器)自動執行。
例如,新學生加入了學校。該學生正在上2門課:數學和科學。該學生被新增到 "學生表 "中。 一旦該學生被新增到學生表中,觸發器可以將他新增到相應的科目表中。
常用的測試方法是,首先獨立執行嵌入在觸發器中的SQL查詢,並記錄結果。之後再執行整個觸發器比較結果。
樁和驅動用於插入或更新或刪除資料,這將導致觸發器被呼叫。在與前端(UI)整合之前,只測試資料庫。
儲存程式或多或少類似於使用者定義的函數。這些程式可以通過呼叫程式/執行程式語句來呼叫,其輸出通常是結果集。
這些過程儲存在RDBMS中供應用。
使用樁來呼叫儲存程式,然後根據預期值來驗證結果。
預設值,唯一值,和外來鍵:
確保AUT的不同表格或螢幕與資料庫之間的對映不僅準確,而且符合設計檔案(SRS/BRS)或程式碼。基本上,你需要驗證每個前端欄位和其對應的後臺資料庫欄位之間的對映。
對於所有的CRUD操作,驗證當用戶從應用程式的GUI點選 "儲存"、"更新"、"搜尋 "或 "刪除 "時,相應的表和記錄是否被更新。
DB事務的ACID屬性是指 "原子性"、"一致性"、"隔離性 "和 "永續性"。在資料庫測試活動中必須對這四個屬性進行適當的測試。你需要驗證每一個交易是否滿足資料庫的ACID屬性。
CREATE TABLE acidtest (A INTEGER, B INTEGER, CHECK (A + B = 100));
隔離測試將確保如果兩個事務同時發生並試圖修改ACID測試表的資料,那麼這些事務是在隔離的情況下執行的。
永續性測試將確保一旦該表上的事務被提交,它將保持不變,即使是在斷電、崩潰或錯誤的情況下。
如果你的應用程式使用的是分散式資料庫,這個領域需要更嚴格、更徹底、更敏銳的測試。
今天,資料庫不僅僅是為了儲存記錄。事實上,資料庫已經發展成為非常強大的工具,為開發人員提供充分的支援,在資料庫層面上實現業務邏輯。
使用這些和許多其他由資料庫提供的功能,開發人員在資料庫層面實現業務邏輯。測試人員必須確保實現的業務邏輯是正確的,並能準確地工作。
通常情況下,使用SQL查詢來開發測試。最常用的命令是 "選擇"。
Select * from <tablename> where <condition>
除了Select之外,SQL還有3種重要的命令型別:
讓我們看看最常用的語句的語法。
資料定義語言 使用CREATE, ALTER, RENAME, DROP和TRUNCATE來處理表(和索引)。
資料操作語言 包括新增、更新和刪除記錄的語句。
資料控制語言: 處理給使用者操作和存取資料的授權問題。Grant和Revoke是使用的兩個語句。
Grant 語法:
Grant select/update
On <table name>
To <user id1, user id2…useridn>;
Revoke語法:
Revokeselect/update
on <table name>
from<user id1, user id2…useridn>;
為了準確地測試資料庫,測試人員應該有非常好的SQL和DML(資料操作語言)語句的知識。測試人員還應該知道AUT的內部資料庫結構。
你可以結合GUI和各自表中的資料驗證,以獲得更好的覆蓋率。如果你使用的是SQL伺服器,那麼你可以利用SQL查詢分析器來編寫查詢,執行它們並檢索結果。
當應用程式的複雜程度較低或中等時,這是測試資料庫的最佳和強大的方法。
如果應用程式非常複雜,那麼測試人員可能很難或不可能編寫所有需要的SQL查詢。對於複雜的查詢,你可以從開發人員那裡得到幫助。我一直推薦這種方法,因為它能給你測試的信心,也能提高你的SQL技能。
你可以使用CRUD操作的結果進行資料驗證。當你知道資料庫整合時,這可以通過使用應用程式UI手動完成。但是,當不同的資料庫表中有大量的資料時,這可能是一項繁瑣的工作。
對於手動資料測試,資料庫測試人員必須擁有良好的資料庫表結構知識。
這是最簡單的測試資料庫的方法。從GUI中執行任何CRUD操作,並通過執行從開發人員那裡獲得的相應SQL查詢來驗證其影響。它既不需要很好的SQL知識,也不需要對應用程式的資料庫結構有很好的瞭解。
但這種方法需要謹慎使用。如果開發人員給出的查詢在語意上是錯誤的,或者不能正確地滿足使用者的要求,怎麼辦?這個過程將直接導致資料驗證失敗。
有幾種工具可用於資料測試過程。你應該根據你的需要選擇正確的工具,並對其進行最佳利用。
有了所有這些在資料庫上測試的功能、因素和過程,對測試人員精通關鍵資料庫概念的技術要求越來越高。儘管有些人認為測試資料庫會產生新的瓶頸,並且是大量的額外支出,但這是一個吸引大量關注和需求的測試領域。