周顯明1,李建軍1,2
(1.中國電子科技集團公司第三十二研究所,上海 200233;2. 廣西大學(xué) 計算機與電子信息學(xué)院,廣西 南寧 530004)
摘要:隨著國產(chǎn)基礎(chǔ)軟件的快速發(fā)展,市場上涌現(xiàn)了大量的國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)(DBMS)產(chǎn)品,文章分析并給出了國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)軟件測試內(nèi)容、測試方法和測試技術(shù)等,對于從事國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)測試驗證的技術(shù)人員有一定的參考借鑒意義。
關(guān)鍵詞:國產(chǎn)化;數(shù)據(jù)庫管理系統(tǒng);測試驗證;測試規(guī)范
0引言
在信息化建設(shè)日益重要的今天,核心基礎(chǔ)軟件的作用越來越被政府和企業(yè)的信息化主管所重視。其中,數(shù)據(jù)庫作為基礎(chǔ)軟件的重要組成之一,對于IT系統(tǒng)的重要性不言而喻。基于國產(chǎn)基礎(chǔ)軟硬件平臺電子政務(wù)系統(tǒng)的應(yīng)用,是保障國家信息安全、促進基于國產(chǎn)基礎(chǔ)軟硬件技術(shù)發(fā)展的有力手段。近幾年,隨著國產(chǎn)基礎(chǔ)軟硬件在性能和穩(wěn)定性方面的快速發(fā)展,出現(xiàn)了大量基于國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)構(gòu)建的電子政務(wù)系統(tǒng),但是由于國產(chǎn)軟硬件技術(shù)與國外同類技術(shù)相比仍存在較大差距,一些國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)在國產(chǎn)基礎(chǔ)軟硬件平臺下運行一段時間后,會出現(xiàn)各種問題,對國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)進行第三方檢測成為亟待解決的實際問題。因此研究其軟件測試方法和技術(shù)具有重要的意義,國內(nèi)外研究人員已經(jīng)對數(shù)據(jù)庫管理系統(tǒng)的測試進行了大量研究[13],但目前還未形成系統(tǒng)成熟的測試方法,本文主要針對國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)的測試內(nèi)容和測試方法進行研究。
1DBMS測試內(nèi)容
國產(chǎn)數(shù)據(jù)庫基礎(chǔ)軟件的測試主要從數(shù)據(jù)庫管理系統(tǒng)的基本功能組件[4] 進行,包括事務(wù)處理、支持?jǐn)?shù)據(jù)類型、內(nèi)置函數(shù)、完整性約束、數(shù)據(jù)庫管理、基表管理、視圖、索引管理、存儲過程和觸發(fā)器等。
2DBMS組件測試
2.1事務(wù)處理
事務(wù)控制能夠控制事務(wù)的開始、結(jié)束、回滾及自動提交事務(wù)。測試時應(yīng)覆蓋以下內(nèi)容:
(1)使用事務(wù)控制語句設(shè)定事務(wù)提交狀態(tài)(自動提交),設(shè)定完成后執(zhí)行事務(wù)(不包含begin語句)并回滾,查看回滾后的結(jié)果(回滾語句無作用),驗證軟件是否支持自動提交事務(wù);
?。?)使用事務(wù)控制語句(開始、結(jié)束、提交)執(zhí)行事務(wù),查看語句執(zhí)行結(jié)束后的數(shù)據(jù)庫信息(事務(wù)控制語句已執(zhí)行),驗證事務(wù)的開始、結(jié)束、提交功能的正確性;
?。?)使用事務(wù)控制語句執(zhí)行事務(wù),查看語句執(zhí)行結(jié)束后的數(shù)據(jù)庫信息(未執(zhí)行該事務(wù)),驗證事務(wù)回滾功能的正確性。
支持事務(wù)隔離級別:SERIALIZABLE、READ COMMITTED。測試時應(yīng)覆蓋以下內(nèi)容:
?。?)設(shè)定事務(wù)隔離級別為SERIALIZABLE,并開啟2個會話,會話1修改數(shù)據(jù)庫,會話2進行查詢,查看會話2的查詢結(jié)果是否包含會話1的修改數(shù)據(jù)(不包含修改數(shù)據(jù)結(jié)果),驗證軟件是否滿足SERIALIZABLE隔離級別的要求;
(2)設(shè)定事務(wù)隔離級別為READ COMMITTED,并開啟2個會話,會話1修改數(shù)據(jù)庫,會話2進行查詢,查看會話2的查詢結(jié)果是否包含會話1的修改數(shù)據(jù)(包含修改數(shù)據(jù)結(jié)果),驗證軟件是否滿足READ COMMITTED隔離級別的要求。
2.2支持?jǐn)?shù)據(jù)類型
設(shè)定能對以下各數(shù)據(jù)類型進行增刪改查:字符串、數(shù)值、日期時間、布爾、位串、二進制串、大對象、XML、時間間隔。
測試時應(yīng)覆蓋以下內(nèi)容:
(1)在數(shù)據(jù)庫表中添加數(shù)據(jù),添加的數(shù)據(jù)類型包括字符串、數(shù)值、日期時間、布爾、位串、二進制串、大對象、XML、時間間隔,完成后對所添加的數(shù)據(jù)進行查詢,查看查詢結(jié)果顯示的數(shù)據(jù)是否正確,驗證數(shù)據(jù)庫是否支持各數(shù)據(jù)類型的添加、查詢;
?。?)在已有的數(shù)據(jù)庫表中修改、刪除數(shù)據(jù)類型,并進行查詢,驗證數(shù)據(jù)庫是否支持?jǐn)?shù)據(jù)類型的修改、刪除。
2.3支持多字符集
測試時,設(shè)定服務(wù)器及客戶端為不同字符集(GBK、ASCII、GB18030、UNICODE),使用客戶端訪問數(shù)據(jù)庫,查看顯示的數(shù)據(jù)信息是否正確,驗證軟件支持客戶端和服務(wù)器端編碼不一致時數(shù)據(jù)訪問的正確性。
2.4提供內(nèi)置函數(shù)
驗證數(shù)據(jù)庫管理系統(tǒng)提供字符串函數(shù)、數(shù)學(xué)函數(shù)、格式化函數(shù)、日期時間函數(shù)、聚集函數(shù)、管理函數(shù)。
使用查詢語句對數(shù)據(jù)庫進行查詢,語句查詢條件中包含有字符串函數(shù)、數(shù)學(xué)函數(shù)、格式化函數(shù)、日期時間函數(shù)、聚集函數(shù)、管理函數(shù)的限定條件,查看查詢結(jié)果,驗證軟件是否提供各內(nèi)置函數(shù)。
2.5提供完整性約束
(1)實體完整性[5]
驗證數(shù)據(jù)庫表對象支持主鍵,當(dāng)用戶輸入數(shù)據(jù)不滿足實體完整性時,會報錯。
通過設(shè)定主鍵值為空或內(nèi)容與原記錄重復(fù),查看軟件是否提示錯誤信息,驗證軟件是否滿足實體完整性要求。
(2)參照完整性
數(shù)據(jù)庫表對象支持外鍵,當(dāng)用戶輸入數(shù)據(jù)不滿足參照完整性時,會報錯。測試時通過建立兩張基本表,使用外鍵建立依賴關(guān)系,在表中進行插入數(shù)據(jù)且數(shù)據(jù)中的外鍵值為空或所對應(yīng)的值不存在(不滿足參照完整性),查看軟件是否提示錯誤信息,驗證軟件是否滿足參照完整性要求。
?。?)用戶定義完整性
數(shù)據(jù)庫表對象支持各種約束,當(dāng)用戶輸入數(shù)據(jù)不滿足約束時,會報錯。
測試時應(yīng)覆蓋以下內(nèi)容:通過設(shè)定完整性約束(如非空值約束、唯一性約束等),并在錄入數(shù)據(jù)時違反設(shè)定的完整性約束,查看軟件是否提示錯誤信息,驗證軟件是否滿足用戶定義完整性要求。
2.6多數(shù)據(jù)庫管理
驗證DBMS支持可擴展的邏輯和物理存儲結(jié)構(gòu),每個服務(wù)器可以支持多個獨立的數(shù)據(jù)庫,用戶可以動態(tài)地創(chuàng)建數(shù)據(jù)庫,每個數(shù)據(jù)庫相對獨立。
(1)通過創(chuàng)建多個數(shù)據(jù)庫,在數(shù)據(jù)庫中創(chuàng)建表對象,查看創(chuàng)建的數(shù)據(jù)庫和表對象是否正確,驗證軟件是否支持多個獨立的數(shù)據(jù)庫;
?。?)通過配置數(shù)據(jù)文件的存儲位置、空間、大小,并在各數(shù)據(jù)庫中添加內(nèi)容,查看各數(shù)據(jù)庫數(shù)據(jù)存儲位置是否正確,驗證軟件是否支持可擴展的邏輯和物理存儲結(jié)構(gòu)。
2.7基表管理
驗證數(shù)據(jù)庫管理系統(tǒng)軟件能夠?qū)?shù)據(jù)庫表進行管理,測試時可參考以下方法:
(1)通過表新建、表刪除、表截斷操作,查看軟件是否完成表的新建、刪除和截斷,驗證軟件基表創(chuàng)建、刪除和截斷功能的正確性;
(2)通過對表記錄進行插入、刪除、更新操作,查詢該表,查看軟件是否完成相應(yīng)操作,驗證表記錄插入、刪除、更新功能的正確性;
?。?)通過在設(shè)計表中進行列的增加、刪除和類型修改,查詢該表,查看軟件是否完成相應(yīng)操作,驗證列的增加、刪除和類型修改功能的正確性。
2.8視圖
支持視圖管理,包括視圖的創(chuàng)建、刪除、查找,對可更新視圖數(shù)據(jù)的增加、修改、刪除。
測試時應(yīng)覆蓋以下內(nèi)容:
?。?)使用語句創(chuàng)建視圖,所創(chuàng)建視圖包括可更新視圖和不可更新視圖,并對視圖進行刪除、查詢操作,驗證視圖的創(chuàng)建、刪除、查詢功能的正確性;
?。?)在已有可更新視圖的基礎(chǔ)上增加、刪除、修改視圖的數(shù)據(jù)內(nèi)容,并查詢與視圖相關(guān)的基表信息,查看修改的數(shù)據(jù)在基表中是否已被修改,驗證可更新視圖是否能夠增加、刪除、修改數(shù)據(jù);
(3)在不可更新視圖上進行增加、刪除、修改操作,查看軟件是否對不可更新視圖的增加、刪除、修改操作進行提示,驗證軟件是否提示錯誤。
2.9存儲過程和函數(shù)
支持存儲過程的定義、刪除、查詢、更新、重編譯;支持采用流程控制和SQL語句書寫存儲過程,若干個有聯(lián)系的過程可以組合在一起構(gòu)成程序包,以完成復(fù)雜的判斷和較復(fù)雜的運算。
測試時應(yīng)覆蓋以下內(nèi)容:
?。?)在數(shù)據(jù)庫中創(chuàng)建存儲過程(包含控制語句、條件表達式、數(shù)學(xué)函數(shù)、存儲過程的嵌套調(diào)用),并調(diào)用該存儲過程,查看數(shù)據(jù)庫內(nèi)容確定該存儲過程是否被正確執(zhí)行,驗證軟件是否支持存儲過程的創(chuàng)建;
?。?)對已有的存儲過程進行查詢,查看查詢結(jié)果(存儲過程信息、存儲過程狀態(tài))信息,驗證是否能夠?qū)ο到y(tǒng)的存儲過程進行查詢;
(3)對已有的存儲過程進行重命名、重編譯,并調(diào)用修改后的存儲過程,查看數(shù)據(jù)庫內(nèi)容確定該修改后存儲過程是否被正確執(zhí)行,驗證存儲過程能夠重命名、重編譯;
?。?)刪除已有的存儲過程,并查詢系統(tǒng)的存儲過程確定該存儲過程是否被刪除,驗證軟件能夠刪除存儲過程。
?。?)在多用戶的環(huán)境下,賦予其他用戶(非數(shù)據(jù)庫所有者)執(zhí)行權(quán)限,并使用其他用戶執(zhí)行存儲過程,查看數(shù)據(jù)庫內(nèi)容確定該存儲過程是否正確執(zhí)行,驗證是否支持將存儲過程的執(zhí)行權(quán)限賦予其他用戶。
2.10觸發(fā)器
觸發(fā)器測試時應(yīng)覆蓋以下內(nèi)容:
?。?)在數(shù)據(jù)庫表、視圖中創(chuàng)建觸發(fā)器(觸發(fā)事件:DELETE、 INSERT 、UPDATE;觸發(fā)類型:事前觸發(fā)、事后觸發(fā)、語句級觸發(fā)、行級觸發(fā)),并觸發(fā)觸發(fā)器事務(wù),查看審計信息中是否實現(xiàn)觸發(fā)器功能及事前、事后觸發(fā)的正確性,驗證是否支持觸發(fā)器的相應(yīng)功能及是否支持各類觸發(fā)事件及觸發(fā)類型;
?。?)對數(shù)據(jù)庫表、視圖中已創(chuàng)建的觸發(fā)器進行修改(變更觸發(fā)事件、變更觸發(fā)類型、變更觸發(fā)事務(wù)),并觸發(fā)觸發(fā)器事務(wù),查看審計信息的事務(wù)信息(執(zhí)行修改后的觸發(fā)事務(wù)),驗證軟件能夠?qū)τ|發(fā)器進行修改;
?。?)刪除數(shù)據(jù)庫表、視圖中已創(chuàng)建的觸發(fā)器,并使用原觸發(fā)器觸發(fā)事件對數(shù)據(jù)庫進行操作,查看審計信息的事務(wù)信息(原觸發(fā)器觸發(fā)事務(wù)未執(zhí)行),驗證軟件是否能夠刪除觸發(fā)器。
3結(jié)束語
數(shù)據(jù)庫作為國產(chǎn)化基礎(chǔ)軟件的重要組成之一,如何對國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)進行第三方檢測成為亟待解決的實際問題。本文研究了國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)的測試方法和要點,對于國產(chǎn)化數(shù)據(jù)庫管理系統(tǒng)的測試具有一定的參考價值。本研究成果已被用于多個國產(chǎn)化DBMS測試工作中,取得了較好的效果,下一階段的研究方向為如何采用業(yè)界的基準(zhǔn)測試工具進行性能評測。
參考文獻
[1] 亓偉,葉曉俊,王建民. ODBC標(biāo)準(zhǔn)符合性測試框架[J]. 計算機工程,2005,31(20):101-103.
?。?] 竇潔.基于國產(chǎn)基礎(chǔ)軟硬件平臺的辦公系統(tǒng)性能測試與優(yōu)化[D].北京:中國科學(xué)院大學(xué),2014 .
?。?] 胡恩博.DBMS測試淺探[J]. 湖南第一師范學(xué)院學(xué)報,2009,9(1):166-167.
[4] 任冬梅.軟件測試技術(shù)基礎(chǔ)[M].北京:清華大學(xué)出版社,2008.
?。?] 陳瑜,彭甫陽.關(guān)系數(shù)據(jù)庫管理系統(tǒng)的SQL—致性測試和性能基準(zhǔn)測試[J]. 計算機工程與應(yīng)用, 1999,35(12):85-87.