摘 要: 提出了一種數(shù)據(jù)庫系統(tǒng)測試的輔助工具,用于解決規(guī)范化管理的數(shù)據(jù)庫系統(tǒng)測試項(xiàng)目中測試數(shù)據(jù)構(gòu)建及測試結(jié)果保留效率低下的問題。其具體做法是,采用Excel工作表規(guī)范設(shè)計輸入數(shù)據(jù)和預(yù)期結(jié)果,再利用該工具完成一些簡單設(shè)定,可實(shí)現(xiàn)構(gòu)造數(shù)據(jù)庫測試數(shù)據(jù)、獲取測試結(jié)果及實(shí)現(xiàn)執(zhí)行結(jié)果與預(yù)期結(jié)果比較等功能。經(jīng)多個數(shù)據(jù)庫使用結(jié)果表明,該工具能生成規(guī)范的測試結(jié)果,并能減輕測試人員負(fù)擔(dān),提高了測試效率。
關(guān)鍵詞: 數(shù)據(jù)庫系統(tǒng);測試工具;單元測試;回歸測試
規(guī)范化管理的軟件測試項(xiàng)目,從過程上劃分為:單元測試、集成測試、系統(tǒng)測試和驗(yàn)收測試。如果在各個階段的測試中發(fā)現(xiàn)缺陷,在進(jìn)行缺陷對應(yīng)后還必須進(jìn)行回歸測試。因此,規(guī)范化管理的軟件測試項(xiàng)目,其測試用例的設(shè)計必須包括輸入數(shù)據(jù)、執(zhí)行條件和預(yù)期結(jié)果。針對數(shù)據(jù)庫系統(tǒng)的測試項(xiàng)目,其測試用例的輸入數(shù)據(jù)、執(zhí)行條件和預(yù)期結(jié)果絕大部分體現(xiàn)在數(shù)據(jù)庫中的數(shù)據(jù)上,而這些數(shù)據(jù)在測試用例設(shè)計時,通常采用與關(guān)系數(shù)據(jù)庫模型類似的Excel工作表來呈現(xiàn)。規(guī)范化管理的軟件測試項(xiàng)目,針對各測試階段的每一個測試用例都必須留下完備的測試結(jié)果,而針對數(shù)據(jù)庫系統(tǒng)的測試結(jié)果很大一部分是數(shù)據(jù)庫中的數(shù)據(jù)。為便于清晰地呈現(xiàn)這些結(jié)果,通常是將測試結(jié)果存放在Excel工作表中。本文提出的測試工具正是對應(yīng)這種規(guī)范化管理的測試項(xiàng)目而設(shè)計開發(fā)的。
采用自動化測試工具進(jìn)行測試,能減輕測試人員負(fù)擔(dān)、提高測試效率及測試的準(zhǔn)確性[1-2]。雖然20世紀(jì)90年代以來人們就充分認(rèn)識到測試工具的重要性,軟件開發(fā)機(jī)構(gòu)也相繼開發(fā)出了一些卓有成效的測試工具產(chǎn)品,但由于測試工具購入的成本及使用培訓(xùn)成本較高,商用測試工具給軟件項(xiàng)目帶來的時間效率及經(jīng)濟(jì)效率受到一定的限制;同時,由于軟件項(xiàng)目本身的復(fù)雜性,很難將測試工具充分貫穿于軟件測試項(xiàng)目。因此,在實(shí)際項(xiàng)目開發(fā)中,很多軟件開發(fā)組織并不采用商用軟件測試工具,而是針對項(xiàng)目特點(diǎn),自行研發(fā)針對性強(qiáng)的輕量級輔助測試工具來改善測試過程。研究者針對數(shù)據(jù)庫系統(tǒng)的測試進(jìn)行了大量探索,但探索的內(nèi)容主要體現(xiàn)在測試方法和測試腳本的開發(fā)方面[1-4],對實(shí)際測試過程中細(xì)節(jié)部分的測試效率問題探索較少。而本文提出的測試工具主要針對在規(guī)范化管理的測試項(xiàng)目中,需要頻繁構(gòu)建數(shù)據(jù)庫輸入和獲取測試結(jié)果這一特點(diǎn)而設(shè)計開發(fā)的,它能改善測試過程、提高測試效率。
1 應(yīng)用需求
由于數(shù)據(jù)庫系統(tǒng)會頻繁涉及到對數(shù)據(jù)庫數(shù)據(jù)的操作,因此,測試用例的設(shè)計多數(shù)體現(xiàn)在數(shù)據(jù)庫數(shù)據(jù)的設(shè)計上。各測試用例的實(shí)施過程為制作測試數(shù)據(jù)、測試實(shí)施和結(jié)果判斷。其中,制作測試數(shù)據(jù)需要用設(shè)計的測試用例數(shù)據(jù)去更新數(shù)據(jù)庫,測試實(shí)施后需要判斷數(shù)據(jù)庫中相關(guān)數(shù)據(jù)是否與預(yù)期結(jié)果相吻合。作為測試證據(jù)的測試結(jié)果需要記錄下的信息包含:測試執(zhí)行前數(shù)據(jù)庫相關(guān)表的數(shù)據(jù)和測試執(zhí)行后相關(guān)表的數(shù)據(jù)。由此可見,在一個測試用例的測試過程中,需要分3次操作數(shù)據(jù)庫,其中1次為更新數(shù)據(jù),另外2次為抽出數(shù)據(jù)。采用SQL-Server的數(shù)據(jù)庫系統(tǒng),通常使用企業(yè)管理器來操作數(shù)據(jù)庫數(shù)據(jù);采用Oracle的數(shù)據(jù)庫系統(tǒng),通常使用Object Browser來操控數(shù)據(jù)庫數(shù)據(jù)。目前在測試過程中,采用這些工具操控數(shù)據(jù),基本上還是人工操作,因此,仍然存在誤操作及操作效率低下的問題。如果能將測試過程中對數(shù)據(jù)的各種操作交給計算機(jī)來完成,可提高測試效率,避免誤操作的發(fā)生,并起到輔助測試的作用。為實(shí)現(xiàn)這一輔助測試功能,下面通過對餐飲管理系統(tǒng)點(diǎn)菜畫面的單元測試的用例設(shè)計和測試結(jié)果保留模式進(jìn)行分析,探索計算機(jī)輔助測試的方法。
1.1 測試用例設(shè)計模式
圖1是采用Excel設(shè)計的點(diǎn)菜畫面的單元測試項(xiàng)目書,鑒于篇幅,這里只顯示了說明所需要的測試項(xiàng)目,對其他項(xiàng)目進(jìn)行了隱藏。圖中用例編號(Case No)31用于測試點(diǎn)菜畫面的保存按鈕按下,在輸入檢查無誤的情況下,畫面中的數(shù)據(jù)是否正確登錄數(shù)據(jù)庫。
在進(jìn)行數(shù)據(jù)庫系統(tǒng)的測試用例設(shè)計時,由于涉及的數(shù)據(jù)項(xiàng)較多,不便在測試項(xiàng)目書中列舉數(shù)據(jù)庫中的數(shù)據(jù),通常采用Excel工作簿的另一張工作表來描述數(shù)據(jù)庫相關(guān)的輸入數(shù)據(jù)和預(yù)期結(jié)果,常用的設(shè)計格式如圖2所示。其中的信息包含:測試用例編號、測試執(zhí)行前后標(biāo)記、表名、字段名及數(shù)據(jù)明細(xì)。其中的數(shù)據(jù)明細(xì)不是來自于數(shù)據(jù)庫,而是來自于人工設(shè)計;在測試執(zhí)行前需要用圖2中執(zhí)行前的數(shù)據(jù)去更新數(shù)據(jù)庫,采用人工方式可直接按行拷貝數(shù)據(jù)粘貼到數(shù)據(jù)庫表中,如果要求表中只包含所設(shè)計的測試數(shù)據(jù),還需要先刪除表中的數(shù)據(jù)再拷貝粘貼數(shù)據(jù)。當(dāng)涉及到多個表時,就需要人工不斷在Excel工作表和數(shù)據(jù)庫工具之間來回切換,操作十分繁瑣。如果按照一定的規(guī)范(圖2的樣式)設(shè)計測試用例,便可采用編程手段實(shí)現(xiàn)將Excel工作表中的數(shù)據(jù)自動寫入數(shù)據(jù)庫。
1.2 測試結(jié)果保留模式
很多項(xiàng)目也把測試結(jié)果稱作測試證據(jù),留下測試結(jié)果除了便于測試人員判斷結(jié)果的正誤,很大程度上留下測試的證據(jù)也是為了便于管理。因此,保留的測試結(jié)果應(yīng)詳細(xì)體現(xiàn)實(shí)施每一個測試用例的輸入數(shù)據(jù)、執(zhí)行條件、執(zhí)行過程及執(zhí)行結(jié)果,這些信息應(yīng)足以體現(xiàn)測試用例的執(zhí)行過程,并且按照這些信息能再現(xiàn)測試結(jié)果。數(shù)據(jù)庫系統(tǒng)的測試結(jié)果通常采用Excel工作表來記錄,它既能保留截圖信息,又能直觀地保留數(shù)據(jù)庫中的數(shù)據(jù)。圖3是點(diǎn)菜畫面的Case No31-32的測試結(jié)果,包含測試執(zhí)行前后數(shù)據(jù)庫數(shù)據(jù)及畫面顯示內(nèi)容的截圖。對其分析可知,采用編程手段實(shí)現(xiàn)抽出數(shù)據(jù)庫中數(shù)據(jù)并按圖3的格式保留數(shù)據(jù)是可以做到的。
2 工具的實(shí)現(xiàn)
分析測試用例設(shè)計模式和測試結(jié)果保留模式可得,在測試過程中對數(shù)據(jù)的處理包含兩部分:(1)將工作表中設(shè)計的測試數(shù)據(jù)追加到數(shù)據(jù)庫;(2)將數(shù)據(jù)庫數(shù)據(jù)作為測試結(jié)果抽出到Excel工作表中。也就是通過編程將圖2中的數(shù)據(jù)追加到數(shù)據(jù)庫以及將數(shù)據(jù)庫中的數(shù)據(jù)抽出可以實(shí)現(xiàn)如圖3所示將測試結(jié)果顯示在工作表中。因此,數(shù)據(jù)庫輔助測試工具可設(shè)計成如圖4(此截圖為數(shù)據(jù)抽出處理的設(shè)置畫面)所示的畫面。圖4操作界面中包含有:對數(shù)據(jù)庫的連接關(guān)閉處理區(qū)、對Excel文件的打開關(guān)閉處理區(qū)、功能選項(xiàng)區(qū)、SQL編輯區(qū)及格式設(shè)定區(qū)。其主要功能就是實(shí)現(xiàn)輸入數(shù)據(jù)做成、測試結(jié)果做成及測試配置的保存。下面詳細(xì)分析各部分的實(shí)現(xiàn)。
2.1 輸入數(shù)據(jù)做成處理
輸入數(shù)據(jù)做成即是將設(shè)計的測試數(shù)據(jù)追加到數(shù)據(jù)庫中,圖2的數(shù)據(jù)包含描述性文字(執(zhí)行前、執(zhí)行后)、表名、字段名、字段值及數(shù)據(jù)結(jié)束標(biāo)志(*****END*****),數(shù)據(jù)結(jié)束標(biāo)志用于標(biāo)識某數(shù)據(jù)表數(shù)據(jù)結(jié)束。利用這些數(shù)據(jù)可以提取出需要更新的表名、字段名及數(shù)據(jù)。利用圖4所示工具,建立數(shù)據(jù)庫連接、指定工作表及向數(shù)據(jù)庫追加數(shù)據(jù)的開始和結(jié)束行號,功能選項(xiàng)設(shè)為“數(shù)據(jù)插入”。單擊執(zhí)行按鈕的處理流程如圖5所示。圖中,“刪除現(xiàn)存數(shù)據(jù)”復(fù)選按鈕用于選擇更新數(shù)據(jù)前是否刪除數(shù)據(jù)庫中現(xiàn)存的數(shù)據(jù),若選擇刪除現(xiàn)存數(shù)據(jù),則需要讀取數(shù)據(jù)庫中所有用戶表名,逐一刪除后再向數(shù)據(jù)庫追加數(shù)據(jù);過程①實(shí)現(xiàn)讀取工作表中的表名及字段名,形成INSERT語句到VALUES為止的前半部分SQL語句,當(dāng)遇到數(shù)據(jù)結(jié)束標(biāo)志時,再次調(diào)用過程①重置SQL語句的前半部分;過程②實(shí)現(xiàn)讀取該行單元格數(shù)據(jù),并將數(shù)據(jù)拼接到過程①形成的SQL語句,拼接完成則執(zhí)行該語句,實(shí)現(xiàn)數(shù)據(jù)向數(shù)據(jù)庫的追加。
2.2 測試結(jié)果做成處理
測試結(jié)果做成處理主要完成用例執(zhí)行前后數(shù)據(jù)庫相關(guān)表數(shù)據(jù)的獲取,其實(shí)質(zhì)就是根據(jù)SQL語句抽出數(shù)據(jù),將數(shù)據(jù)結(jié)果保留到Excel工作表中。如圖4的參數(shù)設(shè)定,這里只需要指定開始行號,即指定從工作表的哪一行開始保留抽出數(shù)據(jù),逐一讀取“抽出數(shù)據(jù)的SQL語句”中的SQL語句,從語句中取出表名,根據(jù)表名獲取字段名寫入工作表,再執(zhí)行SQL語句抽出數(shù)據(jù)寫入工作表,同時按照“抽出數(shù)據(jù)的格式設(shè)定”進(jìn)行工作表數(shù)據(jù)的格式設(shè)定,所得測試結(jié)果規(guī)范且便于結(jié)果判定。
2.3 測試結(jié)果比較處理
為了驗(yàn)證測試結(jié)果是否與預(yù)期結(jié)果相吻合,本測試工具還設(shè)計了數(shù)據(jù)比較功能。單擊主畫面的“結(jié)果比較”按鈕,打開如圖6所示的測試結(jié)果比較畫面,在畫面中分別設(shè)定參與比較的文件名、工作表名、開始及結(jié)束行號,即可對指定部分的數(shù)據(jù)進(jìn)行比較,從而檢驗(yàn)測試結(jié)果是否與預(yù)期結(jié)果一致。
2.4 測試配置保存處理
圖4所示的執(zhí)行畫面中,完成數(shù)據(jù)插入功能畫面設(shè)定內(nèi)容較少,但完成數(shù)據(jù)抽出功能涉及的畫面設(shè)定較多。為便于回歸測試,本工具還設(shè)計了配置保存功能,用于將畫面現(xiàn)有配置保存到指定的ini文件中,便于在需要再次執(zhí)行某測試用例時,可通過“選擇配置”實(shí)現(xiàn)讀入指定ini文件內(nèi)容進(jìn)行畫面參數(shù)的設(shè)定。這一功能將保證回歸測試及驗(yàn)收測試的測試效率。
本文介紹的數(shù)據(jù)庫輔助測試工具在多個項(xiàng)目的測試中已被采用,實(shí)踐證明了采用此輔助測試工具進(jìn)行測試,可快速生成輸入數(shù)據(jù)及保留測試結(jié)果,其保留的測試結(jié)果與單元測試的結(jié)果要求的吻合度較高,其效率在單元測試過程中體現(xiàn)更為突出;同時在驗(yàn)收測試中需要重現(xiàn)測試結(jié)果時,采用本工具也能快速完成測試,提高了測試效率;不僅能產(chǎn)生規(guī)范的測試文檔,還能減輕測試負(fù)擔(dān)。
參考文獻(xiàn)
[1] 曹娜.大型關(guān)系數(shù)據(jù)庫自動化測試工具的設(shè)計與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2009.
[2] 王逸兮.一個數(shù)據(jù)庫功能性自動化測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011.
[3] 曾強(qiáng),駱德全,楊昊蘇,等.數(shù)據(jù)庫系統(tǒng)測試工具綜述 [J].科技風(fēng),2008(16):74.
[4] 王振鐸,陳曉范.數(shù)據(jù)庫系統(tǒng)測試方法與技術(shù)探討[J].中國民航飛行學(xué)院學(xué)報,2008(1):49.