許 波
(天津市軟件評測中心,天津 300384)
隨著XML 相關(guān)標(biāo)準(zhǔn)的推廣和應(yīng)用,各行各業(yè)都以XML作為元語言來制定各自領(lǐng)域特定的子語言,用于存儲和共享該領(lǐng)域所涉及的數(shù)據(jù)。純XML 數(shù)據(jù)管理系統(tǒng)以及集成純XML 數(shù)據(jù)管理引擎的數(shù)據(jù)庫系統(tǒng)亦成為解決XML 數(shù)據(jù)管理問題的重要工具。
純XML 數(shù)據(jù)管理引擎近幾年才逐漸興起,其目標(biāo)是實(shí)現(xiàn)對XML 數(shù)據(jù)的高效率訪問操作,并提供類似數(shù)據(jù)庫的存儲管理、事務(wù)管理、備份恢復(fù)等一整套管理機(jī)制。純XML引擎的關(guān)鍵技術(shù)主要包括XML 存儲方案、XML 查詢處理與查詢優(yōu)化、XML 數(shù)據(jù)更新、XML 關(guān)鍵字檢索等。另一方面,如何在傳統(tǒng)的關(guān)系數(shù)據(jù)庫上融合XML 數(shù)據(jù)處理能力,使其做到真正的無縫連接,使用戶獲得更加自然的應(yīng)用體驗(yàn),同時內(nèi)部處理機(jī)制使用純XML 引擎技術(shù),這些都是純XML 數(shù)據(jù)管理引擎的重要研究課題。
該項(xiàng)目針對已有解決方案存在的不足,提出無縫集成關(guān)系型數(shù)據(jù)的純XML 引擎設(shè)計(jì)方案并進(jìn)行研制。其中心思想是借助有效的編碼方案在底層存儲上使用系統(tǒng)存儲表保存XML 節(jié)點(diǎn)數(shù)據(jù),并在此基礎(chǔ)上實(shí)現(xiàn)對關(guān)系數(shù)據(jù)庫其他模塊的無縫集成與重用,這既不同于DB2 中完全獨(dú)立的存儲方案,也不同于“XML 使能”方式的表映射。該方案最大限度地利用了關(guān)系數(shù)據(jù)庫已有的底層存儲機(jī)制對XML 數(shù)據(jù)進(jìn)行存儲管理,并且大幅度重用了關(guān)系數(shù)據(jù)庫已有的模塊,例如緩沖區(qū)管理、事務(wù)管理、鎖管理、備份恢復(fù)管理等模塊。在XML 存儲管理層之上,研究XML 文檔特有的索引結(jié)構(gòu),建立包括XML 結(jié)構(gòu)摘要、XML 值索引、XML全文索引在內(nèi)的一系列XML 專用索引結(jié)構(gòu)。針對XML 設(shè)計(jì)查詢引擎,并同時支持SQL 查詢、XPath/XQuery 查詢、XML 數(shù)據(jù)更新、關(guān)鍵字檢索等功能。
該系統(tǒng)具有XML 數(shù)據(jù)存儲功能模塊、XML 數(shù)據(jù)查詢功能模塊、XML 關(guān)鍵字檢索功能模塊、XML 數(shù)據(jù)更新與驗(yàn)證功能模塊4 個功能模塊。
2.1.1 XML數(shù)據(jù)存儲功能模塊
XML 數(shù)據(jù)存儲功能模塊提供存儲XML 數(shù)據(jù)的方案,數(shù)據(jù)存儲不僅需要將各種規(guī)模的文檔高效地存儲到系統(tǒng)中,還需要為數(shù)據(jù)查詢、更新以及檢索提供各種便利的條件,比如存儲更新驗(yàn)證所需的XML 模式,實(shí)現(xiàn)XML 存儲方案與關(guān)系存儲后端的無縫集成,不破壞存儲管理器中關(guān)系的概念。重用底層文件管理、緩存管理、并發(fā)控制和備份恢復(fù)等機(jī)制。
該模塊有3 個具體功能。1)在數(shù)據(jù)庫中裝載XML 文檔。根據(jù)實(shí)際對XML 數(shù)據(jù)的需求,文檔規(guī)模不超過2 GB。2)在數(shù)據(jù)庫中裝載XML 模式。XML 模式可以為數(shù)據(jù)更新提供有效性驗(yàn)證,因此,需要在存儲功能模塊中裝載XML模式的存儲功能。3)對數(shù)據(jù)庫中存儲的XML 文檔進(jìn)行重構(gòu),以良構(gòu)的形式顯示給用戶。
2.1.2 XML數(shù)據(jù)查詢功能模塊
XML 數(shù)據(jù)查詢模塊可以幫助用戶精確查詢XML 數(shù)據(jù)。查詢XML 數(shù)據(jù)使用擴(kuò)展后的SQL 語言,實(shí)現(xiàn)最新的SQL:2006 國際標(biāo)準(zhǔn)中規(guī)定的SQL/XML 擴(kuò)展。在關(guān)系數(shù)據(jù)庫查詢語言SQL 中添加XML 管理功能,利用SQL/XML 標(biāo)準(zhǔn),將XQuery 1.0 標(biāo)準(zhǔn)融入SQL 語法中。利用SQL/XML 標(biāo)準(zhǔn)對XML 數(shù)據(jù)進(jìn)行查詢,查詢結(jié)果仍然以XML 格式顯示給用戶。
查詢執(zhí)行器為查詢優(yōu)化器提供包括XML 結(jié)構(gòu)連接、Twig 模式匹配、基于索引的路徑表達(dá)式求值、聚合函數(shù)計(jì)算、節(jié)點(diǎn)排序等在內(nèi)的一系列算法。并通過構(gòu)造XML 查詢模型并進(jìn)行優(yōu)化處理,實(shí)現(xiàn)XML 查詢優(yōu)化。
2.1.3 XML關(guān)鍵字檢索功能模塊
該系統(tǒng)同時支持關(guān)系數(shù)據(jù)和XML 數(shù)據(jù)的關(guān)鍵字檢索功能,并在存儲層上建立統(tǒng)一的索引模型,向查詢執(zhí)行引擎提供統(tǒng)一的訪問接口。關(guān)鍵字檢索功能模塊提供具有IR模型支持的XML 與關(guān)系數(shù)據(jù)上的關(guān)鍵字檢索功能。支持漢語、英語等語言的全文索引,并允許用戶擴(kuò)充語言處理單元。隨著信息檢索技術(shù)的發(fā)展,尤其是搜索引擎和桌面搜索服務(wù)的日益普及,信息檢索的應(yīng)用需求是越來越多的數(shù)據(jù)庫用戶所渴望的。用戶希望數(shù)據(jù)庫引擎能夠直接支持內(nèi)容全文索引和信息檢索模型,自動計(jì)算查詢與文檔之間的相似程度,并據(jù)此返回排序的結(jié)果。
2.1.4 XML數(shù)據(jù)更新與驗(yàn)證功能模塊
為了有效地支持XML數(shù)據(jù)上的聯(lián)機(jī)事務(wù)處理過程(OLTP),DBMS(數(shù)據(jù)庫管理系統(tǒng))在進(jìn)行XML 查詢處理操作的同時,還必須能夠執(zhí)行各種XML 數(shù)據(jù)的更新操作。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)更新始終離不開事務(wù)這一重要概念。通過事務(wù)管理器和鎖管理器組成的并發(fā)控制模塊與數(shù)據(jù)庫底層存儲進(jìn)行通信,從而保證了多個事務(wù)同時更新數(shù)據(jù)時的邏輯正確性,同時,數(shù)據(jù)更新還會涉及日志記錄和數(shù)據(jù)恢復(fù)機(jī)制。
對該系統(tǒng)進(jìn)行項(xiàng)目驗(yàn)收測試,監(jiān)測系統(tǒng)是否遵循GB/T 25000.51—2016《系統(tǒng)與軟件工程 系統(tǒng)與軟件質(zhì)量要求和評價(jià)(SQuaRE) 第51 部分:就緒可用軟件產(chǎn)品(RUSP)的質(zhì)量要求和測試細(xì)則》[1]以及GB/T 25000.10—2016《系統(tǒng)與軟件工程 系統(tǒng)與軟件質(zhì)量要求和評價(jià)(SQuaRE) 第10 部分:系統(tǒng)與軟件質(zhì)量模型》[2]的質(zhì)量特性要求。
測試時,實(shí)際運(yùn)行被測軟件完成全部測試用例,以驗(yàn)證其功能性、可靠性、易用性等相關(guān)特性,并逐項(xiàng)驗(yàn)證被測軟件在產(chǎn)品文檔、程序和數(shù)據(jù)有關(guān)要求方面的符合性。測試分為功能性、可靠性和易用性測試。
基本功能和可靠性測試部分主要是驗(yàn)證基本功能的實(shí)現(xiàn)情況是否與測試文檔中描述的相符,以及程序?qū)σ恍╁e誤輸入的糾錯處理情況。
通過與客戶的多次溝通,明確測試范圍和測試方法,修改測試用例,準(zhǔn)備測試腳本和數(shù)據(jù)。該軟件的運(yùn)行環(huán)境為CentOS 5.5,具體操作過程是以參照測試用例,輸入相應(yīng)語句,返回結(jié)果,判斷是否正確實(shí)現(xiàn)程序功能的方法進(jìn)行測試。
考慮到該軟件全部功能均需要用戶以命令行的形式輸入相應(yīng)命令完成功能操作,并無友好界面,所以需要客戶在測試前提交全部的程序語法格式以及參數(shù)設(shè)置規(guī)則,根據(jù)相關(guān)功能要求,編寫測試用例,確定輸入項(xiàng)內(nèi)容,并明確輸出結(jié)果。測試用例中的可靠性用例設(shè)計(jì)角度為輸入不符合語法規(guī)則的內(nèi)容時,觀察軟件的輸出結(jié)果和糾錯能力。
XML 存儲方案研究方面的技術(shù)指標(biāo)支持“以數(shù)據(jù)為中心”和“以文檔為中心”2 種類型XML 文檔的存儲。其既能存儲合成數(shù)據(jù)集(例如XMark),也能存儲真實(shí)數(shù)據(jù)集(例如DBLP、Treebank 等)。能夠存儲的單個XML文檔大小超過2 GB。我們首先通過功能性測試用例判斷“軟件支持‘以數(shù)據(jù)為中心’,‘以文檔為中心’2 種類型XML 文檔的存儲”,再通過事先準(zhǔn)備好的測試數(shù)據(jù)來驗(yàn)證“既能存儲合成數(shù)據(jù)集(例如XMark),也能存儲真實(shí)數(shù)據(jù)集(例如SIGMOD),并且軟件能夠存儲大小為2.05 GB 的單個XML 文檔?!本褪峭ㄟ^在測試前與客戶進(jìn)行前期溝通,對準(zhǔn)備好的測試數(shù)據(jù)進(jìn)行功能測試檢驗(yàn)來完成的。
XML 關(guān)鍵字檢索方面的技術(shù)指標(biāo)是在XML 標(biāo)準(zhǔn)查詢語言的最新版本XQuery 1.0 和XPath 2.0 的基礎(chǔ)上,實(shí)現(xiàn)XML 關(guān)鍵字檢索功能擴(kuò)展。擴(kuò)展語法符合W3C 的《XQuery and XPath Full Text 1.0》標(biāo)準(zhǔn),通過與W3C 的《XQuery and XPath Full Text 1.0》標(biāo)準(zhǔn)文檔進(jìn)行對比來驗(yàn)證擴(kuò)展語法是否與其相符[3]。
在XML 數(shù)據(jù)查詢與更新方面的技術(shù)指標(biāo)中有以下3 項(xiàng)重點(diǎn)測試內(nèi)容。1)驗(yàn)證軟件是否實(shí)現(xiàn)了最新的SQL:2006國際標(biāo)準(zhǔn)中規(guī)定的SQL/XML 擴(kuò)展,是否在關(guān)系數(shù)據(jù)庫查詢語言SQL 中添加了XML 管理功能,軟件中的語法點(diǎn)覆蓋率是否達(dá)到90%以上。2)驗(yàn)證軟件是否實(shí)現(xiàn)了XML 標(biāo)準(zhǔn)查詢語言的最新版本XQuery 1.0 和XPath 2.0,是否開發(fā)完成了2 種語言的語法解析器和語義生成器,軟件中的語法點(diǎn)覆蓋率是否達(dá)到90%以上。3)驗(yàn)證軟件是否實(shí)現(xiàn)了XML標(biāo)準(zhǔn)更新語言的最新版本“XQuery Update Facility 1.0”,是否將XML 查詢語言和XML 更新語言融為一體。在此基礎(chǔ)上,是否實(shí)現(xiàn)了進(jìn)一步添加支持增量驗(yàn)證和自動糾錯的語法功能,軟件中的語法點(diǎn)覆蓋率是否達(dá)到90%以上。
這3 項(xiàng)因?yàn)樯婕罢Z法點(diǎn)覆蓋率,所以測試方法選用功能結(jié)合文檔共同驗(yàn)證的形式,首先通過測試用例確定軟件實(shí)現(xiàn)的語法點(diǎn)都有哪些,再與文檔中描述的全部語法點(diǎn)進(jìn)行對比,計(jì)算得出語法點(diǎn)覆蓋率。
通過對測試文檔進(jìn)行檢查,發(fā)現(xiàn)部分文檔存在缺陷,需要開發(fā)方完善系統(tǒng)的使用手冊,以便用戶能夠更加準(zhǔn)確地了解系統(tǒng)的使用方法。并且完善了DiReX:與關(guān)系數(shù)據(jù)庫系統(tǒng)無縫集成的純XML 引擎的部分研究文檔內(nèi)容。測試使系統(tǒng)的功能性、可靠性、易用性以及文檔方面更加完善,達(dá)到了測試的目的。