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