從測試過程的角度來說我們也可以把數據庫測試分為
系統測試
傳統軟件系統測試的測試重點是需求覆蓋,而對於我們的數據庫測試同樣也需要對需求覆蓋進行保證。那么數據庫在初期設計中也需要對這個進行分析,測試.例如存儲過程,視圖,觸發器,約束,規則等我們都需要進行需求的驗證確保這些功能設計是符合需求的.另一方面我們需要確認數據庫設計文檔和最終的數據庫相同,當設計文檔變化時我們同樣要驗證改修改是否落實到數據庫上。
這個階段我們的測試主要通過數據庫設計評審來實現。
集成測試
集成測試是主要針對接口進行的測試工作,從數據庫的角度來說和普通測試稍微有些區別對於數據庫測試來說,需要考慮的是
數據項的修改操作
數據項的增加操作
數據項的刪除操作
數據表增加滿
數據表刪除空
刪除空表中的記錄
數據表的並發操作
針對存儲過程的接口測試
結合業務邏輯做關聯表的接口測試
同樣我們需要對這些接口考慮采用等價類、邊界值、錯誤猜測等方法進行測試
單元測試
單元測試側重於邏輯覆蓋,相對對於復雜的代碼來說,數據庫開發的單元測試相對簡單些,可以通過語句覆蓋和走讀的方式完成
系統測試相對來說比較困難,這要求有很高的數據庫設計能力和豐富的數據庫測試經驗。而集成測試和單元測試就相對簡單了。
而我們也可以從測試關注點的角度對數據庫進行分類
功能測試
對數據庫功能的測試我們可以依賴與工具進行
DBunit
一款開源的數據庫功能測試框架,可以使用類似與Junit的方式對數據庫的基本操作進行白盒的單元測試,對輸入輸出進行校驗
QTP
大名鼎鼎的自動測試工具,通過對對象的捕捉識別,我們可以通過QTP來模擬用戶的操作流程,通過其中的校驗方法或者結合數據庫后台的監控對整個數據庫中的數據進行測試。個人覺得比較偏向灰盒。
DataFactory
一款優秀的數據庫數據自動生成工具,通過它你可以輕松的生成任意結構數據庫,對數據庫進行填充,幫助你生成所需要的大量數據從而驗證我們數據庫中的功能是否正確。這是屬於黑盒測試
數據庫性能
雖然我們的硬件最近幾年進步很快,但是我們需要處理的數據以更快的速度在增加。幾億條記錄的表格在現在是司空見慣的,如此龐大的數據量在大量並發連接操作時,我們不能像以前一樣隨意的使用查詢,連接查詢,嵌套查詢,視圖,這些操作如果不當會給系統帶來非常巨大的壓力,嚴重影響系統性能
性能優化分4部分
1物理存儲方面
2邏輯設計方面
3數據庫的參數調整
4 SQL語句優化.
我們如何對性能方面進行測試呢,業界也提供了很多工具
通過數據庫系統的SQL語句分析工具,我們可以分析得到數據庫語句執行的瓶頸,從而優化SQL語句
Loadrunner
這個不用多說,我們可以通過對協議的編程來對數據庫做壓力測試
Swingbench(這是一個重量級別的feature,類似LR,而且非常強大,只不過專門針對oracle而已)
數據庫廠商也意識到這點,例如
oracle11g已經提供了real application test,提供數據庫性能測試,分析系統的應用瓶頸。
還有很多第三方公司開發了SQL語句優化工具來幫助你自動的進行語句優化工作從而提高執行效率。
安全測試
軟件日益復雜,而數據又成為了系統中重中之重的核心,從以往對系統的破壞現在更傾向於對數據的獲取和破壞。而數據庫的安全被提到了最前端
自從SQL 注入攻擊被發現,冒失萬無一失的數據庫一下從后台變為了前台,而一旦數據庫被攻破,整個系統也會暴露在黑客的手下,通過數據庫強大的存儲過程,黑客可以輕松的獲得整個系統的權限。而SQL的注入看似簡單缺很難防范,對於安全測試來說,如何防范系統被注入是測試的難點。
業界也有相關的數據庫注入檢測工具,來幫助用戶對自身系統進行安全檢測。
對於這點來說業界也有標准,例如ISO IEC 21827,也叫做SSE CMM 3.0,是CMM和ISO的集成的產物,專門針對系統安全領域的
另外一方面,數據庫的健壯性,容錯性和恢復能力也是我們測試的要點
我們也可以發現功能測試,性能測試,安全測試,是一個由簡到繁的過程,也是數據庫測試人員需要逐步掌握的技能,這也是以后公司對數據庫測試人員的要求。