複製鏈接
請複製以下鏈接發送給好友

數據庫測試

鎖定
數據庫測試是依據數據庫設計規範對軟件系統的數據庫結構、數據表及其之間的數據調用關係進行的測試 [1] 
中文名
數據庫測試
外文名
Database Testing
依    據
數據庫設計規範
對    象
軟件系統數據庫結構數據表
定    義
調用關係進行的測試

數據庫測試軟件應用

軟件應用程序已經離不開數據庫。無論是在Web、桌面應用、客户端服務器、企業和個人業務,都需要數據庫在後端操作。同樣的在金融、租賃、零售、郵寄、醫療領域中,數據庫也是不可缺少的。
隨着應用的複雜程度增加需要更強大和安全係數高的數據庫才可以滿足需求。為了滿足高頻率的應用程序事務(如銀行或財務應用),數據庫的安全性成為首要之重。
目前,市場中有很多活躍的數據庫工具,例如MS-Access2010,MS SQL Server2008 r2,Oracle 10g,Oracle Financial,MySQL,PostgreSQL,DB2等等。它們在成本、可靠性、功能和安全性都有各自的優勢。
下面為大家簡單的介紹數據庫中‘CRUD’所代表的操作。
C:創建——創建用户。
R:檢索——執行檢索視圖操作。
U:更新——更新數據庫信息。
D:刪除——執行刪除數據庫操作。
普遍用户在操作數據時,都會用到以上四種操作。

數據庫測試預備工作

ACID屬性
ACID,指數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。在數據庫測試期間必須測試這四個要素,確保正確。
數據完整性
考慮到不同模塊的應用程序以不同的方式使用相同的數據,並執行對數據所有的CRUD操作。確保數據庫中包含的數據儘可能地準確和一致的數據性質,這就是數據完整性
業務準確性
數據庫發展至今,已不再是單純的用來存儲記錄。事實上,數據庫系統已經發展成為強大的工具,為開發者們提供了足夠的擴展支持。數據庫系統比以前具有了更多的強大功能,例如參考完整性,關係約束,觸發器和存儲過程 [2] 

數據庫測試基本測試過程

創建查詢
為了測試測試數據庫正確和準確性。首先,測試人員要熟練掌握SQL和DML(數據庫語言)語句。其次,測試人員應該掌握數據庫的結構。如果滿足這兩個條件,即可放心測試。對於小、中型技術開發出的應用程序是個很好的測試方法。此外,如果程序相對的複雜,測試人員需要求助開發人員幫忙。但是我建議大家從初級開始測試,既有信心也能提高自己的SQL技術。
查詢數據表
測試人員可以通過查看數據表來驗證應用程序GUI的操作結果。但是,這種方式對於擁有大量數據的數據庫,查詢是相當的乏味和繁瑣。驗證多個數據表也是相當困難。
從開發人員查詢
這個是測試數據庫最簡單的方法,從GUI執行任何CRUD操作和執行各自的SQL查詢,從開發人員獲得驗證及其結果。這種方式似乎是最好的測試數據庫方式。如果開發人員查詢出語句錯誤或是不符合用户的要求,可以儘快的修改錯誤語句。

數據庫測試系統測試

傳統軟件系統測試的測試重點是需求覆蓋,而對於我們的數據庫測試同樣也需要對需求覆蓋進行保證。那麼數據庫在初期設計中也需要對這個進行分析,測試.例如存儲過程,視圖,觸發器,約束,規則等我們都需要進行需求的驗證確保這些功能設計是符合需求的.另一方面我們需要確認數據庫設計文檔和最終的數據庫相同,當設計文檔變化時我們同樣要驗證該修改是否落實到數據庫上。
這個階段我們的測試主要通過數據庫設計評審來實現。

數據庫測試集成測試

集成測試是主要針對接口進行的測試工作,從數據庫的角度來説和普通測試稍微有些區別對於數據庫測試來説,需要考慮的是:
數據項的修改操作;
數據項的增加操作;
數據項的刪除操作;
數據表增加滿;
數據表刪除空;
刪除空表中的記錄;
數據表的併發操作;
針對存儲過程的接口測試;
結合業務邏輯做關聯表的接口測試;
同樣我們需要對這些接口考慮採用等價類、邊界值、錯誤猜測等方法進行測試。

數據庫測試測試內容

數據庫測試數據庫設計的測試

數據庫是應用的基礎,其性能直接影響應用軟件的性能。為了使數據庫具有較好的性能,需要對數據庫中的表進行規範化設計。規範化的範式可分為第一範式、第二範式、第三範式、BCNF 範式、第四範式和第五範式。一般來説,邏輯數據庫設計應滿足第三範式的要求,這是因為滿足第三範式的表結構容易維護,且基本滿足實際應用的要求。因此,實際應用中一般都按照第三範式的標準進行規範化。但是,規範化也有缺點:由於將一個表拆分成為多個表,在查詢時需要多表連接,降低了查詢速度。故數據庫設計的測試包括前期需求分析產生數據庫邏輯模型和後期業務系統開發中的測試兩部分(這裏指的是後者),我在這裏稱為實體測試。數據庫是由若干的實體組成的,包括(表,視圖,存儲過程等),數據庫最基本的測試就是實體測試,通過對這些實體的測試,可以發現數據庫實體設計得是否充分,是否有遺漏,每個實體的內容是否全面,擴展性如何。實體測試,可以用來發現應用軟件在功能上存在的不足,也可以發現數據冗餘的問題。經過測試,測試人員對有異議的問題要及時和數據庫的設計人員進行溝通解決 [3] 

數據庫測試數據一致性測試

在進行實體測試後,應進一步檢查下面的內容以保障數據的一致性:
2.1 表的主鍵測試根據應用系統的實際需求,對每個表的主鍵進行測試,驗證是否存在記錄不唯一的情況,如果有,則要重新設置主鍵,使表中記錄唯一。
2.2 表之間主外鍵關係的測試數據庫中主外鍵字段在名稱,數據類型,字段長度上的一致性測試
2.3 級聯表,刪除主表數據後,相應從報表數據應同時刪除的問題例如學生表和學生成績表,學生數據已經刪除,成績表中相應學生的成績記錄應同時刪除。
2.4 存儲過程和觸發器的測試存儲過程可以人工執行,但觸發器不能人工處理,所以在對存儲過程和觸發器執行的過程中針對SQL SERVER2005 及以上版本可以使用Microsoft SQL ServerProfiler 性能測試工具進行測試。Microsoft SQL Server Profiler 是SQL 跟蹤的圖形用户界面,用於監視數據庫引擎或Analysis Services 的實例。測試人員可以捕獲有關每個事件的數據並將其保存到文件或表中供以後分析。例如:可以對生產環境進行監視,瞭解哪些存儲過程由於執行速度太慢影響了性能。

數據庫測試數據庫的容量測試

隨着數據庫系統的使用,數據量在飛速增長,如何在使用前對數據容量的增長情況進行初步估算,為最終用户提供參考,這在數據庫使用和維護過程中,是非常重要的。可以通過對數據庫設計中基本表的數據大小,和每天數據表的數據產生量進行初步估算。
記錄數據量=各個字段所佔字節數的總和
表的數據量=記錄數據量* 記錄數
數據庫大小=各表數據量的總和
當然,數據庫的大小不僅僅只是基本表的大小,還有系統表,視圖,存儲過程等其它實體所佔的容量,但最基本的數據是表的數據。另外,數據庫的容量還包括數據庫日誌文件的容量,一般應預留數據庫文件的2 倍左右。

數據庫測試數據庫的性能測試

應用軟件除了功能外,很重要的一部分就是軟件的性能,而對於數據庫系統,數據庫性能的好壞會直接影響應用軟件的性能,這部分的測試,一般手工測試就顯得無能為力了,這時就要藉助自動化的測試軟件,例如:DataFactory,DataFactory 是一種強大的數據產生器,它允許開發人員和測試人員很容易產生百萬行有意義的正確的測試數據庫,該工具支持DB2、Oracle、Sybase、SQL Server 數據庫。這樣,就可以模擬出應用軟件長期使用後,海量數據存儲的數據庫的性能狀況。從而儘早發現問題,進行數據庫性能的優化。
這裏要注意,進行性能測試的時候,一定要注意測試環境的一致性,包括:操作系統、應用軟件的版本以及硬件的配置等,而且在進行數據庫方面的測試的時候一定要注意數據庫的記錄數、配置等要一致,只有在相同條件下進行測試,才可以對結果進行比較。否則無法和用户對軟件的性能的觀點達成一致。

數據庫測試數據庫的壓力測試

説起測試,我們首先想到的就是軟件正確性的測試,即常説的功能測試。軟件功能正確僅是軟件質量合格指標之一。在實際開發中,還有其它的非功能因素也起着決定性的因素,例如軟件的響應速度。影響軟件響應速度的因素有很多,有些是因為算法不夠高效;還有些可能受用户併發數的影響。在眾多類型的軟件測試中,壓力測試正是以軟件響應速度為測試目標,尤其是針對在較短時間內大量併發用户的訪問時,軟件的抗壓能力。但壓力測試往往是手工難以測試的,必須藉助自動化測試工具。常用的壓力測試有:Web 測試、數據庫測試等。
數據庫在大多數軟件項目中是不可缺少的,對於它進行壓力測試是為了找出數據庫對象是否可以有效地承受來自多個用户的併發訪問。這些對象主要是:索引、觸發器、存儲過程和鎖。通過對SQL語句和存儲過程的測試,自動化的壓力測試工具可以間接的反應數據庫對象是否需要優化。
這些自動化的測試工具很多,各有特點,基於Java 的項目可以使用JMeter,.Net 項目可以採用.Net 集成開發環境中提供的測試方案 [4] 
參考資料