MAR15

軟件開發數據庫如何進行測試

2013-03-15信息來源:中國IT實驗室

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、結束語

 

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

japanese人妻无码人妻