軟體開發中的資料庫測試技術

玄學醬發表於2017-07-10

摘要:根據以往軟體測試經驗,對資料庫測試的內容和方法,進行了詳細的分析,闡明瞭資料庫測試在軟體開發中的重要性。

  關鍵詞:資料庫測試;效能測試;DataFactory

  1、引言

  資料庫系統的開發在應用軟體開發中所佔的比重越來越大,隨之而來的問題也越來越突出。比如:資料冗餘,功能和效能方面存在的問題已經嚴重影響應用軟體的使用。軟體測試人員往往重視對軟體功能和編碼的測試,而忽略對軟體效能,特別是資料庫訪問併發測試。因為,他們固有的思想中認為資料庫設計存在問題對系統效能影響不大,或從根本上忽略了資料庫在軟體開發中的地位,直到出現了問題,才想到對資料庫的測試,但往往也是僅僅通過對編碼的測試工作中捎帶對資料庫進行一定的測試,這遠遠是不夠的。目前,中鐵網上訂票系統在大使用者同時線上訂票中系統頻頻癱瘓,就是最好的佐證。

  所以,在應用軟體的測試工作中,應該將資料庫作為一個獨立的部分進行充分的測試,這樣才可以得到應用軟體所需要的效能優化的資料庫。那麼,應該對哪些內容進行測試,如何進行測試呢?

  2、資料庫設計的測試

  資料庫是應用的基礎,其效能直接影響應用軟體的效能。為了使資料庫具有較好的效能,需要對資料庫中的表進行規範化設計。規範化的正規化可分為第一正規化、第二正規化、第三正規化、BCNF正規化、第四正規化和第五正規化。一般來說,邏輯資料庫設計應滿足第三正規化的要求,這是因為滿足第三正規化的表結構容易維護,且基本滿足實際應用的要求。因此,實際應用中一般都按照第三正規化的標準進行規範化。但是,規範化也有缺點:由於將一個表拆分成為多個表,在查詢時需要多表連線,降低了查詢速度。故資料庫設計的測試包括前期需求分析產生資料庫邏輯模型和後期業務系統開發中的測試兩部分(這裡指的是後者),我在這裡稱為實體測試。

  資料庫是由若干的實體組成的,包括(表,檢視,儲存過程等),資料庫最基本的測試就是實體測試,通過對這些實體的測試,可以發現資料庫實體設計得是否充分,是否有遺漏,每個實體的內容是否全面,擴充套件性如何。

  實體測試,可以用來發現應用軟體在功能上存在的不足,也可以發現資料冗餘的問題。經過測試,測試人員對有異議的問題要及時和資料庫的設計人員進行溝通解決。

  3、資料一致性測試

  在進行實體測試後,應進一步檢查下面的內容以保障資料的一致性:

  3.1 表的主鍵測試根據應用系統的實際需求,對每個表的主鍵進行測試,驗證是否存在記錄不唯一的情況,如果有,則要重新設定主鍵,使表中記錄唯一。

  3.2 表之間主外來鍵關係的測試資料庫中主外來鍵欄位在名稱,資料型別,欄位長度上的一致性測試。

  3.3 級聯表,刪除主表資料後,相應從報表資料應同時刪除的問題例如學生表和學生成績表,學生資料已經刪除,成績表中相應學生的成績記錄應同時刪除。

  3.4 儲存過程和觸發器的測試儲存過程可以人工執行,但觸發器不能人工處理,所以在對儲存過程和觸發器執行的過程中針對SQL SERVER2005及以上版本可以使用Microsoft SQL Server Profiler效能測試工具進行測試。

  Microsoft SQL Server Profiler 是 SQL 跟蹤的圖形使用者介面,用於監視資料庫引擎或 Analysis Services 的例項。測試人員可以捕獲有關每個事件的資料並將其儲存到檔案或表中供以後分析。例如:可以對生產環境進行監視,瞭解哪些儲存過程由於執行速度太慢影響了效能。

4、資料庫的容量測試

  隨著資料庫系統的使用,資料量在飛速增長,如何在使用前對資料容量的增長情況進行初步估算,為終端使用者提供參考,這在資料庫使用和維護過程中,是非常重要的。可以通過對資料庫設計中基本表的資料大小,和每天資料表的資料產生量進行初步估算。

  記錄資料量=各個欄位所佔位元組數的總和

  表的資料量=記錄資料量*記錄數

  資料庫大小=各表資料量的總和

  當然,資料庫的大小不僅僅只是基本表的大小,還有系統表,檢視,儲存過程等其它實體所佔的容量,但最基本的資料是表的資料。另外,資料庫的容量還包括資料庫日誌檔案的容量,一般應預留資料庫檔案的2倍左右。

  5、資料庫的效能測試

  應用軟體除了功能外,很重要的一部分就是軟體的效能,而對於資料庫系統,資料庫效能的好壞會直接影響應用軟體的效能,這部分的測試,一般手工測試就顯得無能為力了,這時就要藉助自動化的測試軟體,例如:DataFactory,DataFactory是一種強大的資料產生器,它允許開發人員和測試人員很容易產生百萬行有意義的正確的測試資料庫,該工具支援DB2、Oracle、Sybase、SQL Server資料庫。這樣,就可以模擬出應用軟體長期使用後,海量資料儲存的資料庫的效能狀況。從而儘早發現問題,進行資料庫效能的優化。

  這裡要注意,進行效能測試的時候,一定要注意測試環境的一致性,包括:作業系統、應用軟體的版本以及硬體的配置等,而且在進行資料庫方面的測試的時候一定要注意資料庫的記錄數、配置等要一致,只有在相同條件下進行測試,才可以對結果進行比較。否則無法和使用者對軟體的效能的觀點達成一致。

  6、資料庫的壓力測試

  說起測試,我們首先想到的就是軟體正確性的測試,即常說的功能測試。軟體功能正確僅是軟體質量合格指標之一。在實際開發中,還有其它的非功能因素也起著決定性的因素,例如軟體的響應速度。影響軟體響應速度的因素有很多,有些是因為演算法不夠高效;還有些可能受使用者併發數的影響。

  在眾多型別的軟體測試中,壓力測試正是以軟體響應速度為測試目標,尤其是針對在較短時間內大量併發使用者的訪問時,軟體的抗壓能力。但壓力測試往往是手工難以測試的,必須藉助自動化測試工具。常用的壓力測試有:Web測試、資料庫測試等。

  資料庫在大多數軟體專案中是不可缺少的,對於它進行壓力測試是為了找出資料庫物件是否可以有效地承受來自多個使用者的併發訪問。這些物件主要是:索引、觸發器、儲存過程和鎖。通過對SQL語句和儲存過程的測試,自動化的壓力測試工具可以間接的反應資料庫物件是否需要優化。

  這些自動化的測試工具很多,各有特點,基於Java的專案可以使用JMeter,.Net專案可以採用.Net整合開發環境中提供的測試方案。

  7、結束語

  總之,在應用系統的測試中,把資料庫應當作為獨立的系統來測試,這無疑會為應用軟體的質量增加可靠的保障,同時還必須結合應用軟體進行整合測試,只有二者有機結合起來,才能最大限度的發揮資料庫和應用軟體的功能。

====================================分割線================================

最新內容請見作者的GitHub頁:http://qaseven.github.io/


相關文章