楊愛民 吳志磊 劉潔
摘要:本文介紹了數(shù)據(jù)庫測試用例虛擬仿真系統(tǒng)的研究方法與設計思路,提出了以語義知識庫推理法則為代表的三種計算機數(shù)據(jù)庫用例生成仿真數(shù)據(jù)方式,為高等院校數(shù)據(jù)庫類課程實驗以及企業(yè)應用軟件測試提供了相應的仿真數(shù)據(jù)與實驗環(huán)境。
關鍵詞:數(shù)據(jù)庫;測試用例;仿真實驗
中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2021)08-0105-04
● 研究背景及意義
隨著大數(shù)據(jù)時代的來臨,越來越多的應用軟件(如電子商務、網(wǎng)上售票、醫(yī)療、超市等)在設計數(shù)據(jù)庫時都需要運用海量的真實數(shù)據(jù)進行性能、功能以及壓力測試,以保證軟件上線后的正常運行。但是,要想得到海量的真實數(shù)據(jù),對大多數(shù)測試者而言都不太現(xiàn)實,這一方面是因為渠道問題無法大批量獲取原始數(shù)據(jù),另一方面如果采用人工錄入,需要耗費的巨大的人力、物力,如北京某商廈百貨業(yè)管理系統(tǒng),在上線前由4個計算機專業(yè)錄入員花了近20天的時間才完成了10萬條記錄的數(shù)據(jù)錄入的初級測試,而離系統(tǒng)飽和測試(100萬條)還相差很遠。而對于其他大型的軟件如12306售票系統(tǒng)等,需要的測試數(shù)據(jù)會高達上億條,這對于一般手工錄入來說是無法完成的。為此,本項目研究的是一個“數(shù)據(jù)庫測試用例自動生成虛擬仿真系統(tǒng)”,該仿真系統(tǒng)可以借助語義知識庫、智能算法,并通過接口程序為主流數(shù)據(jù)庫提供用例自動生成仿真數(shù)據(jù),以檢驗數(shù)據(jù)庫的承載力,以及應用軟件的可靠性,從而為數(shù)據(jù)庫課程實驗以及企業(yè)應用軟件提供相應的仿真測試數(shù)據(jù)。
● 國內外研究現(xiàn)狀和發(fā)展動態(tài)
國外研究創(chuàng)立了一套相對成熟的理論,創(chuàng)造了一批比較優(yōu)秀的自動化測試工具。其中,典型自動化測試框架比較有名的有Automated Testing Specialists Inc提出的基于數(shù)據(jù)驅動的自動化測試方法以及GUI測試方法、Mercury Interavtive Inc提出的關鍵字驅動自動化測試方法及錄制/回放式的自動化測試方法。
從國內學者對自動化測試領域的研究現(xiàn)狀來看,基于智能優(yōu)化算法的軟件測試用例自動生成技術已經(jīng)取得了不錯的進展。國防科技大學的單錦輝(2002)博士將迭代松弛法改進之后再用于測試用例自動生成,并開發(fā)了完整的系統(tǒng)原型[1];賀瀅(2015)首次提出了應用粒子群算法自動生成測試用例,并且在智能尋優(yōu)算法的基礎上對TC自動生成方法進行了系統(tǒng)的研究[2];劉慰(2018)等人提出一種以遺傳算法為核心的測試數(shù)據(jù)生成方法,自動生成測試數(shù)據(jù)并且使用XML文件來記錄測試結果[3];侯?。?018)等人針對現(xiàn)在Web測試主要依賴人工測試的問題,在Web測試生成單個測試用例的基礎上提出了一種基于WSDL文檔和形式化模型樹Web服務操作測試用例的自動生成方法,該方法大幅度提高了Web測試用例生成的效率,節(jié)省了測試消耗的時間。[4]
但國內目前數(shù)據(jù)庫用例測試的地位不高,大多數(shù)的公司還只是停留在軟件單元測試、集成測試和功能(軟件交付前的功能、性能)測試上,沒有一套完整的數(shù)據(jù)庫用例測試標準化準則,也缺乏完全商業(yè)化的操作機構,其主要原因是數(shù)據(jù)庫用例測試需要大量的人力及時間成本。但在大數(shù)據(jù)發(fā)展趨勢下,數(shù)據(jù)庫管理系統(tǒng)不斷被應用于企業(yè)管理中,幫助企業(yè)更好地管理大量數(shù)據(jù)。因此,就國內現(xiàn)狀而言,測試用例自動生成技術使用價值大,應用前景廣,但研究普遍相對較少,目前還沒有成熟的主流數(shù)據(jù)庫的測試用例系統(tǒng)的相關報道,同歐美國家軟件測試行業(yè)的差距較大。
● 系統(tǒng)的設計思路及方法
本實驗方案的設計思路是在大數(shù)據(jù)測試用例上,不去關心具體應用軟件的數(shù)據(jù)庫怎么設計,而是根據(jù)現(xiàn)有流行數(shù)據(jù)庫的通用字段結構,按字段類型設計出一個通用的數(shù)據(jù)結構模型,然后再定義語義知識庫、關聯(lián)條件庫、語義種子庫,以及原始字庫等,并以此作為支撐,提供應用軟件數(shù)據(jù)接口。這樣,在遇到不同的應用軟件時,只要捕捉到應用軟件數(shù)據(jù)庫表的結構(或人工提供),然后通過接口程序匹配,給出生成條件,即可開始生成海量數(shù)據(jù)。系統(tǒng)設計技術路線如圖1所示。數(shù)據(jù)庫測試用例生成,實際上是結合了智能算法、語義知識庫、文獻研究演繹等相關智能化知識體系加上程序設計而完成的一套比較復雜的虛擬仿真實驗系統(tǒng)。
本系統(tǒng)的設計原理是由測試用例自動生成工具自動捕獲數(shù)據(jù)庫應用系統(tǒng)表,從而獲得數(shù)據(jù)庫中的表、表結構及其屬性信息等。在為其生成測試用例的時候,既能判斷出表參照關系是否存在循環(huán)關系,也能顯示生成表測試用例的先后順序,同時為了能讓用戶直接明了地看到數(shù)據(jù)庫之間的直接參照關系,自動生成工具也能將表之間的參照關系可視化。[5]
目前,本系統(tǒng)可以通過三種方式生成測試用例,如下頁圖2所示。
一是基于已有的語義知識庫讓計算機按照一定的語義規(guī)則推理自動生成測試用例。
這種方法主要針對含語義類型的字段內容,如姓名、地名、商品名等,通過構建相關類字段的語義知識庫以及普通字庫,生成時由用戶按需要輸入相關語義種子,構建用戶自定義的語義種子庫,然后結合遺傳算法調用字庫,生成符合語義規(guī)則的數(shù)據(jù)內容。
二是從已有的同種或異種關系數(shù)據(jù)庫中直接導入生成。
有時在生成某一數(shù)據(jù)字段時,需要用同種數(shù)據(jù)庫或異種數(shù)據(jù)庫的另一數(shù)據(jù)表數(shù)據(jù)來生成,如學生成績管理系統(tǒng)中學生表包含學號、姓名、性別、系部、出生日期,課程表包含課程號、課程名、學分,選課表包含學號、課程號、成績,其中選課表中的學號及課程號分別需要從學生表和課程表的數(shù)據(jù)中生成,這就需要在生成選課表時,調用學生表和課程表的數(shù)據(jù)進行導入,這是同種數(shù)據(jù)庫的導入生成。有時同類系統(tǒng)如船務管理系統(tǒng)、貨物管理系統(tǒng),用的不是同類數(shù)據(jù)庫,但某些數(shù)據(jù)類型內容相似,引用時,則需要異種數(shù)據(jù)庫數(shù)據(jù)的導入。這種導入方式,在導入前提供通常用的數(shù)據(jù)庫的接口程序,需要引用哪種數(shù)據(jù)庫,通過設置接口程序實現(xiàn)對接,然后再由用戶設定一些導入規(guī)則,如生成數(shù)量、時間范圍等,即可實現(xiàn)同種或異種數(shù)據(jù)庫數(shù)據(jù)的導入生成。
三是根據(jù)表的結構和屬性以及用戶指定的約束規(guī)則隨機自動生成。
此類數(shù)據(jù)一般是針對時間類、數(shù)字類和非語義字符類數(shù)據(jù),可以通過用戶給定約束條件,如生成數(shù)量、數(shù)值/時間范圍等約束條件,按一定算法自動生成,為了靈活高效管理字段實例引擎,引入“時間、非語義類字符、數(shù)字(含整數(shù)和實數(shù))、邏輯”四種類型引擎接入插件。整個系統(tǒng)對自動生成的表測試用例可以進行維護。數(shù)據(jù)庫用例仿真實驗系統(tǒng)的功能實現(xiàn)如圖3所示。
● 系統(tǒng)的仿真實驗結果分析
本系統(tǒng)設計完成后,筆者對所在學校設置了數(shù)據(jù)庫、軟件工程等課程的班級開設的60多個實驗案例及軟件作品進行了測試用例實驗,實驗結果表明,學生實驗的數(shù)據(jù)表中80%的數(shù)據(jù)可以直接利用本系統(tǒng)生成,剩余的數(shù)據(jù)通過重新定義語義規(guī)則也基本上可以全部實現(xiàn),同時本系統(tǒng)還針對地方企業(yè)進行了應用軟件用例測試分析,如某船務代理有限公司的船務代理系統(tǒng),生成了100多萬條數(shù)據(jù)進行壓力測試,還有山東工商學院、浙江大學寧波理工學院、寧波財經(jīng)學院、浙江萬里學院的全國大學生體質上報系統(tǒng),也是采用該仿真系統(tǒng)瞬間生成數(shù)萬條仿真數(shù)據(jù)來進行壓力測試,如圖4所示。
本系統(tǒng)主要體現(xiàn)出以下兩個特色:
(1)通用性。本仿真系統(tǒng)設計完成后,可以通過數(shù)據(jù)庫接口程序,與目前市場上流行的主流數(shù)據(jù)庫對接,實現(xiàn)了主流數(shù)據(jù)庫的測試用例自動生成,具備了數(shù)據(jù)庫用例的通用性。
(2)智能化。通過運用算法模型,設計語義知識庫及表與字段的模型庫,智能化地與應用案例數(shù)據(jù)庫進行匹配,實時生成海量仿真數(shù)據(jù)。
● 結論
數(shù)據(jù)庫用例測試仿真系統(tǒng)是按照用戶需求,為應用軟件特別是數(shù)據(jù)處理量非常大的應用軟件瞬間智能化地生成海量仿真測試數(shù)據(jù),以檢驗軟件的可靠性及數(shù)據(jù)處理壓力的最大臨界值,為企業(yè)數(shù)據(jù)的備份轉儲或數(shù)據(jù)庫的升級提供預警,減輕了測試人員繁重的手工勞動。
目前,本系統(tǒng)主要實現(xiàn)了ACCESS、MYSQL、SQL-SERVER幾種數(shù)據(jù)庫之間的對接以及常規(guī)數(shù)據(jù)的自動生成,但對一些特殊字段類數(shù)據(jù),如圖像、聲音、二進制等數(shù)據(jù)格式,還無法自動生成,課題組將在后期繼續(xù)研究針對大型數(shù)據(jù)庫以及特殊字段的自動測試生成,并將研究成果向社會推廣。
參考文獻:
[1]單錦輝,高仲儀.面向路徑的測試數(shù)據(jù)自動生成工具及其圖形界面Tcl/TK設計[J].計算機工程與應用,2002(01):74-77.
[2]賀瀅,徐蔚鴻,李楊林.基于RACPSO的測試用例自動生成方法[J].計算機工程,2016(05):67-70.
[3]劉慰,應新洋.基于遺傳算法與XML的測試用例自動生成執(zhí)行系統(tǒng)研究與實現(xiàn)[J].計算機時代,2018(02):44-47.
[4]候俊,周紅,馬春燕,等.面向WEB服務的測試用例自動化生成方法[J].西北工業(yè)大學學報,2018(02):14-15.
[5]張文祥.關系數(shù)據(jù)庫測試用例自動生成研究[M].北京:科學出版社,2004.