數據庫測試概述


數據庫測試的定義

  • 數據庫測試一般與其數據庫系統測試同時進行。數據庫測試方法和手段與計算機軟件測試大體相同,只是測試范圍和重點有些不同。
  • 數據庫測試可以簡單地定義為:數據庫測試是為了發現錯誤和缺陷而運行數據庫的過程。實際上,為了保證數據庫的質量,數據庫測試貫穿數據庫開發的全過程,即數據庫需求分析、設計、實現等階段的工作成果均需要測試。因此,數據庫測試是根據數據庫的需求規格說明書和源代碼的內部結構而精心設計一批測試用例(即輸入數據及其預期的輸出結果),並利用這些測試用例去運行數據庫,以發現數據庫錯誤和缺陷的過程。
  • 數據庫測試的目的在於發現錯誤和缺陷,而不是證明數據庫沒有錯誤和缺陷。一個成功的測試是發現至今沒有發現的錯誤和缺陷的測試,一個好的測試用例是發現至今沒有發現的錯誤和缺陷的測試用例。
  • 數據庫測試的主要內容是數據庫模式測試、功能測試和性能測試。
  • 數據庫測試的任務是編制測試計划、運行測試用例、形成測試結論、撰寫測試分析報告。數據庫分析、設計和實現人員根據測試分析報告,分析引起錯誤和缺陷的原因、尋求排除錯誤和彌補缺陷的方法,最終排除錯誤和缺陷。

數據庫測試的原則

  • 數據庫測試是一個測試——排錯(排除錯誤和缺陷)——再測試——再排錯、循環往復、數據庫質量不斷改進的過程。
  • 盡早地和不斷地進行數據庫測試。數據庫測試不只是在數據庫實現后才進行測試,而在數據庫需求分析、設計等階段也需要測試。
  • 測試用例應由測試輸入數據和與之對應的預期輸出結果兩部分組成。預期輸出結果用於與實際輸出結果比較。
  • 系統開發人員要避免測試自己所作的數據庫需求分析文檔、設計文檔和實現代碼。經驗表明,別人測試使得測試工作更客觀、更有效。自己測試的不利之處在於:一是心理問題,一般的人不願否認自己的工作。二是思維慣性,自己在分析、設計和實現時的疏忽在測試時可能仍然不能發現。
  • 在設計測試用例時,應當包含合理的輸入數據和不合理的輸入數據。合理的輸入數據是能驗證數據庫正確的數據。不合理的輸入數據是指數據庫中不可能存儲或處理的數據,用於測試數據庫在輸入異常(如用戶在鍵盤上按錯鍵)時能否正確處理。
  • 充分注意測試中的錯誤群集現象。經驗表明,測試排錯后的文檔或源代碼中殘存的錯誤數量與排錯前的錯誤數量成正相關關系,形成錯誤群集現象。例如,某個存儲過程被檢出錯誤,該存儲過程排錯后增加了一個入口參數,因此所有調用該存儲過程的程序均需修改。這就是一個錯誤引發一群錯誤。
  • 嚴格執行測試計划,杜絕測試的隨意性。測試計划包括測試目標、測試環境、測試准備、測試方法、測試人員及分工,逐個列出測試項目(包括項目名稱、測試目的、測試內容、測試進度、測試步驟、測試結果評價標准、測試用例)。
  • 對每一個測試結果做全面復查,避免疏漏和失誤。
  • 進行出錯統計、撰寫測試分析報告。測試分析報告包括實際測試環境、測試方法、測試人員、總體結論與評價,按項目逐個列出測試結果(包括實際輸入與輸出結果、發現的問題、說明是否通過測試、排錯建議)。

數據庫測試的方法與工具

  • 數據庫測試的方法

    按照對數據庫的內部結構和工作過程了解的程度,數據庫測試的方法分為白盒測試和黑盒測試。

  • 白盒測試

    • 常用的白盒測試方法包括代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法。測試方法不同,測試用例的設計方法也存在差異。
    • 白盒測試是已知數據庫的內部結構和工作過程,通過測試來檢驗數據庫是否按照需求規格說明書的要求正常運行。在測試時,把測試對象看作一個打開的盒子,它允許測試人員利用數據庫的內部結構等信息,設計或選擇測試用例,對數據結構、存儲過程及觸發器的邏輯路徑等進行測試,確定實際的狀態是否與預期的狀態一致。
    • 數據庫測試人員使用白盒測試方法,除可以對數據結構進行測試外,還可以對存儲過程和觸發器的模塊進行如下的檢查:
      • 對模塊的所有獨立的執行路徑至少測試一次。
      • 對所有的邏輯判斷的取“真”與取“假”的兩種情況都至少測試一次。
      • 在循環的邊界和運行的邊界內執行循環體。
      • 測試內部數據結構的有效性等。
  • 黑盒測試

    • 黑盒測試着眼於數據庫的功能和性能,不考慮其內部邏輯結構進行測試,主要用於數據庫確認測試。
    • 常用的黑盒測試方法包括等價類划分法、邊界值分析法、錯誤推測法、因果圖法、判定表驅動法、正交試驗設計法、功能圖法、場景法。黑盒測試的關鍵是設計測試用例。
    • 黑盒測試是在已知數據庫所具有的功能的基礎上,通過測試來檢驗每個功能是否都能正常運行並達到預期結果。在測試時,把數據庫看作一個不能打開的黑盒子,在完全不考慮數據庫內部結構和內部特性的情況下,測試人員根據經驗,通過相應的數據庫系統或數據庫訪問工具進行測試。這種測試主要是為了測試如下問題是否正確處理:
    • 數據結構(例如,數據類型、寬度)是否正確定義?
    • 輸入能否正確地接受?能否輸出正確的結果?
    • 能否能夠正確插入(增加)、更新、刪除數據?
    • 主碼、外碼是否正確定義?
    • 數據庫操作權限定義是否正確?
    • 是否正確處理並發操作?
    • 表級、列級完整性約束條件是否滿足?
    • 數據庫的處理能力是否滿足要求?
    • 數據庫的可靠性、可維護性是否滿足要求?
  • 數據庫測試的工具

    • 數據庫測試的工具有兩類。一類是所開發的數據庫系統,把它作為測試工具來測試相應的數據庫;另一類是專門的數據庫測試工具,如DBMonster、BenchmarkSQL、LoadRunner。

數據庫測試的步驟

  • 單元測試

    單元測試集中檢查數據庫設計的單個表、視圖、索引、存儲過程、觸發器、數據庫系統模塊,通過測試發現其中分析、設計與編碼的可能錯誤。

  • 集成測試

    集成測試是將數據庫系統模塊按照設計要求組裝起來,在組裝的同時進行測試。主要目的是發現與接口有關的問題。如數據通過接口可能丟失,一個模塊與另一個模塊可能有由於疏忽而造成有害影響,把子功能組合起來可能不產生預期的主功能等。

  • 確認測試

    確認測試的任務是驗證數據庫系統的功能和性能及其他特性是否與用戶的要求一致。對數據庫系統的功能和性能要求在需求規格說明書中已經明確規定。確認測試應交付的文檔有:確認測試分析報告、最終的用戶手冊和操作手冊、項目開發總結報告等。

  • 系統測試

    系統測試是將通過確認測試的數據庫系統的軟件、硬件、外設、某些支持軟件和人員等其他系統元素結合在一起,在實際運行(使用)環境下,對數據庫系統進行一系列的集成測試和確認測試。系統測試的目的在於通過與系統需求作比較,發現與系統需求不符合或矛盾的地方。

  • 按照上述步驟對數據庫進行測試並通過后,數據庫應該滿足需求規格說明書的要求。

數據庫測試輸出結果的展現

  • 數據庫測試的輸出結果主要有三個去向:存儲到數據庫、存儲到特殊格式的數據文件、輸出到屏幕或打印機等外圍設備。
  • 如果測試輸出結果存儲到數據庫,可以用數據庫系統或專門的數據庫訪問工具查看它們。如Eclipse 的插件SQLExplorer(該工具可以訪問所有與JDBC兼容的數據庫管理系統,包括Microsoft SQL Server、MySQL、Oracle、Sybase、DB2、PostgreSQL)。當然,一些數據庫管理系統還帶有自己專門的訪問工具,如Microsoft SQL Server 2012的SQL Server Management Studio(SQL Server 管理工具)、SQL Server Data Tools(SQL Server數據工具)。
  • 如果測試輸出結果存儲到特殊格式的數據文件,數據庫系統有查詢這個數據文件內容的功能時就用被測試的數據庫系統查看它們,否則只能用專門的工具查看。
  • 如果測試輸出結果輸出到屏幕或打印機等外圍設備,測試人員應該按測試計划檢查測試輸出結果是否與預期結果一致。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM