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