專利名稱:利用sql語句自動生成測試數(shù)據(jù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā) 明涉及程序測試,尤其涉及利用SQL語句自動生成測試數(shù)據(jù)的方法和裝置。
背景技術(shù):
在基于數(shù)據(jù)庫的軟件系統(tǒng)中,針對數(shù)據(jù)庫操作的功能點(diǎn)是整個軟件系統(tǒng)的關(guān)鍵功 能點(diǎn),因此,基于數(shù)據(jù)庫的軟件系統(tǒng)中SQL語句的正確與否,能夠直接影響軟件系統(tǒng)的魯棒 性。所以對基于數(shù)據(jù)庫的軟件系統(tǒng)中的SQL語句的測試非常重要。在對SQL語句進(jìn)行測試時,通常是沒有真實(shí)數(shù)據(jù)的,而SQL語句測試又是一個非常 繁瑣的過程,在缺少能充分暴露設(shè)計缺陷的真實(shí)測試數(shù)據(jù)情況下,致使大量問題無法在測 試過程中被發(fā)現(xiàn),某些問題一旦逃逸出去后,帶來的后果將是災(zāi)難性的。目前,針對SQL語句功能點(diǎn)的測試,測試人員依賴對基于數(shù)據(jù)庫的軟件系統(tǒng)功能 需求的理解,測試人員自己設(shè)計測試數(shù)據(jù)進(jìn)行測試,但是,由于測試人員素質(zhì)和技能的差 異,僅依靠測試人員手工生成測試數(shù)據(jù),不能保證測試數(shù)據(jù)全面性,并且隨著測試進(jìn)度的推 進(jìn),測試數(shù)據(jù)不斷增加,浪費(fèi)人力資源。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種利用SQL語句自動生成測試數(shù)據(jù)的方法和裝置,可以有 效的保證測試數(shù)據(jù)全面性,且節(jié)省人力資源,提高效率。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案—種利用SQL語句自動生成測試數(shù)據(jù)的方法,包括讀取輸入的待測試軟件,獲取所述待測試軟件中的SQL語句;根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。一種利用SQL語句自動生成測試數(shù)據(jù)的裝置,包括獲取單元,用于讀取輸入的待測試軟件,獲取所述待測試軟件中的SQL語句;生成單元,用于根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。本發(fā)明實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的方法和裝置,通過運(yùn)行計 算機(jī)程序,根據(jù)待測軟件中的SQL語句,完成對基于數(shù)據(jù)庫的軟件系統(tǒng)的測試數(shù)據(jù)的生成, 可以有效的保證測試數(shù)據(jù)全面性,且節(jié)省人力資源,提高效率。
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。圖1為本發(fā)明實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的方法流程圖;圖2為本發(fā)明實(shí)施例提供的改進(jìn)的利用SQL語句自動生成測試數(shù)據(jù)的方法流程圖;圖3為本發(fā)明實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的裝置結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例提供的改進(jìn)的利用SQL語句自動生成測試數(shù)據(jù)的裝置結(jié)構(gòu) 圖;圖5為本發(fā)明實(shí)施例中限定條件和所述測試數(shù)據(jù)之間的對應(yīng)關(guān)系。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。 本發(fā)明實(shí)施例提供了 一種利用SQL語句自動生成測試數(shù)據(jù)的方法,如圖1所示,包 括以下步驟101、讀取輸入的待測試軟件,獲取所述待測試軟件中的SQL語句。為了實(shí)現(xiàn)自動測試數(shù)據(jù)的生成,首先,讀取輸入的待測試軟件,并且,獲取所述待 測試軟件中的SQL語句。102、根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。在獲取了待測軟件中的SQL語句后,根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。本實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的方法,通過運(yùn)行計算機(jī)程序, 根據(jù)待測軟件中的SQL語句,完成對基于數(shù)據(jù)庫的軟件系統(tǒng)的測試數(shù)據(jù)的生成,可以有效 的保證測試數(shù)據(jù)全面性,且節(jié)省人力資源,提高效率。作為本實(shí)施例的一種改進(jìn),本發(fā)明實(shí)施例提供另一種利用SQL語句自動生成測試 數(shù)據(jù)的方法,如圖2所示,包括以下步驟201、讀取輸入的待測試軟件,獲取所述待測試軟件中的SQL語句。為了實(shí)現(xiàn)自動測試數(shù)據(jù)的生成,首先,讀取輸入的待測試軟件,并且,獲取所述待 測試軟件中的SQL語句。具體的,本步驟可以為遍歷待檢測軟件,從該待檢測軟件中收集所有SQL語句。本步驟的主要功能是遍歷待檢測軟件程序中所有代碼行,要求被遍歷語句的覆蓋 率為100%,并根據(jù)關(guān)鍵詞收集并整理SQL語句。詳細(xì)處理流程如下步驟第一步,遍歷待檢測軟件的所有程序代碼行。啟動本實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的方法前,操作人員需要預(yù) 先設(shè)置被測試程序所在目錄作為本實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的方法 遍歷的起點(diǎn)。啟動啟動本實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的方法后,本實(shí)施例提 供的利用SQL語句自動生成測試數(shù)據(jù)的方法會自動按照前序遍歷(DLR)的規(guī)則去遍歷所有 的代碼行。第二步,從待檢測軟件程序代碼行中收集所有的SQL語句。SQL語句有其特定的語法規(guī)則和關(guān)鍵詞,利用SQL語句特定的語法規(guī)則和關(guān)鍵詞對待檢測軟件程序代碼行進(jìn)行語法分析,收集所有的SQL語句。形成一個SQL語句集合。例
如S = {sl,s2,......,si,......,sn},其中,S表示待檢測軟件系統(tǒng)中SQL語句的集合,
sn代表每個SQL語句元素。根據(jù)所述SQL語句的語法規(guī)則和關(guān)鍵詞獲取所述待測試軟件中的SQL語句。202、分析所述SQL語句,從所述SQL語句中獲取所述限定條件。本步驟中主要功能是用于分析SQL集合中各個限定條件的所有可能的取值。首先 從SQL語句中獲取所述限定條件表達(dá)式,并將獲取到的限定條件表達(dá)式轉(zhuǎn)換為insert腳本 語句。該insert腳本語句作為獲取限定條件的基礎(chǔ)信息。203、根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。在獲取了待測軟件中的SQL語句后,根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。根據(jù)檢測裝置中存儲的帶編號的insert腳本語句,處理并運(yùn)行該insert腳本語 句,生成符合測試要求的測試數(shù)據(jù)。具體可以包括以下步驟第一步,從SQL語句中獲取所述限定條件的表達(dá)式。具體的,根據(jù)生成的SQL語句集合,逐一分析每一個SQL語句,獲取SQL語句中所 包含的限定條件。通過上述處理,每一個SQL語句最終生成一個條件表達(dá)式的集合,如下所示Ci= {cl,c2,......,cj,......cn},其中,Ci表示由SQL語句si獲取的限定條
件,以及由各個限定條件衍生出來的所有可能性限定條件的全部集合。cj代表其中一個限 定條件,一個或多個限定條件(1到η個條件)對應(yīng)S中的一個SQL語句si。本實(shí)施例中的限定條件與SQL語句之間的一對多關(guān)系,便于查詢與預(yù)期輸出不符 合的限定條件在待檢測軟件程序代碼段中的位置,可以較快速、較準(zhǔn)確的回溯到程序的缺 陷位置。第二步,生成測試數(shù)據(jù),也就是把第一步中的限定條件全部轉(zhuǎn)換為insert語句的 具體數(shù)值,形成符合測試要求的測試數(shù)據(jù)。作為本實(shí)施例的一種實(shí)施方式,可以采用邊界值分析法、等價劃分分析法和錯誤 推薦分析法分析所述限定條件生成測試數(shù)據(jù)。具體包括以下步驟1.采用邊界值分析法生成該限定條件下的有效測試數(shù)據(jù);2.采用等價劃分分析法生成該限定條件下的有效測試數(shù)據(jù);3.采用錯誤推薦分析法生成該限定條件下的無效測試數(shù)據(jù)。下面舉例說明本實(shí)施例中根據(jù)限定條件生成測試數(shù)據(jù)的方法比如,從待檢測軟件程序代碼段中獲取到的限定條件cj為short a >10,生成測 試數(shù)據(jù)的步驟為首先,確定限定條件中變量a的取值范圍,從該限定條件中可以看出,限定條件a 屬short類型,即短整型數(shù)值,其取值范圍在[-32768,32767]之間。再與條件a > 10結(jié)合起來,可以得出a的合法取值范圍為a e (10,32767],進(jìn)而 得出邊界值,如9,10,32766,32767,32768等,至于取多少個邊界旁邊的值,可以根據(jù)配置 文件進(jìn)行調(diào)節(jié)。
在確定了邊界值后,可以在該邊界限定的取值范圍內(nèi)隨機(jī)取得一些數(shù)據(jù),至于取 多少個個數(shù)據(jù),可以根據(jù)配置文件進(jìn)行調(diào)節(jié)。在確定了邊界 值后,可以在該邊界限定的取值范圍外取得一些數(shù)值,即取一些異 常數(shù)值,比如65535,165535,0,_9等,至于取多少個異常數(shù)值,可以根據(jù)配置文件進(jìn)行調(diào) 節(jié)。通過上述操作,可以得出大量合法和非法的數(shù)據(jù)。可以表示為Vj = {vl, v2,......, vk,......,vn},其中,Vj表示由限定條件cj生成的測試
數(shù)據(jù)具體值的集合。通過上述分析和生成測試數(shù)據(jù)的過程可以看出,每一條測試數(shù)據(jù)可以非常方便的 回溯到對應(yīng)的SQL語句,204、記錄所述限定條件和所述測試數(shù)據(jù)之間的對應(yīng)關(guān)系。如圖5所示,為本發(fā)明實(shí)施例中限定條件和所述測試數(shù)據(jù)之間的對應(yīng)關(guān)系。為了 能夠在檢測出待檢測軟件中的錯誤后,方便、快速的找到該待檢測軟件程序代碼中的出錯 位置,需要記錄所述限定條件和所述測試數(shù)據(jù)之間的對應(yīng)關(guān)系。205、將生成的測試數(shù)據(jù)應(yīng)用于待檢測軟件,執(zhí)行已采集到的SQL語句,生成測試結(jié)果。206、調(diào)用根程序,生成測試報告。詳細(xì)處理流程如下所示調(diào)用裝置中的根程序,將測試結(jié)果和預(yù)期結(jié)果比較,并輸出存在錯誤的SQL語句 id。預(yù)期結(jié)果可以由需求規(guī)格說明書和詳細(xì)設(shè)計說明書細(xì)化而來。本步驟中,將生成的結(jié)果與預(yù)期結(jié)果進(jìn)行比較。并且把不一致的測試結(jié)果篩選出 來,直接對應(yīng)到具體測試數(shù)據(jù)值的id,,根據(jù)具體測試數(shù)據(jù)值的id對應(yīng)到限定條件的id,最 后定位到具體的SQL語句中程序代碼段的位置。由于每個輸出是由輸入產(chǎn)生的,而每個輸 入腳本分別對應(yīng)一個源程序SQL語句條件,這個條件已打上id標(biāo)識,所以每個程序的輸出 都可以通過id追溯到源程序SQL語句條件中去,最終定位程序缺陷。本實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的方法,通過運(yùn)行計算機(jī)程序, 根據(jù)待測軟件中的SQL語句,完成對基于數(shù)據(jù)庫的軟件系統(tǒng)的測試數(shù)據(jù)的生成,可以有效 的保證測試數(shù)據(jù)全面性,且節(jié)省人力資源,提高效率。本發(fā)明實(shí)施例對于那些軟件程序中含有大量SQL語句的系統(tǒng),系統(tǒng)功能點(diǎn)的正確 性,往往集中在程序SQL語句正確性上。于是,對SQL語句的驗(yàn)證,可以是程序功能較好的實(shí) 踐過程。假想一下,運(yùn)行程序的過程,同時也是執(zhí)行SQL語句的過程。只有符合程序中SQL 語句條件的數(shù)據(jù),才會通過SQL語句被程序運(yùn)算處理,輸出的結(jié)果才會和預(yù)期一致。反之, 不符合程序中SQL語句條件的那些數(shù)據(jù),是不應(yīng)該被系統(tǒng)選中去運(yùn)算的,也不會得到和預(yù) 期輸出相同的結(jié)果。否則,程序SQL語句是有缺陷的。當(dāng)然,我們判斷哪些數(shù)據(jù)是應(yīng)該得到 預(yù)期輸出,永遠(yuǎn)是依賴于需求文檔中描述的正確功能實(shí)現(xiàn)上。針對這一點(diǎn),我們的測試人員 可以以程序SQL語句為起點(diǎn),將復(fù)雜的SQL語句完全轉(zhuǎn)換為生成測試數(shù)據(jù)的腳本語句。只 要庫中填滿了這些針對SQL語句的數(shù)據(jù),再運(yùn)行被測程序,比較預(yù)期結(jié)果,如有非預(yù)期的輸 出,便可以定位出程序SQL語句缺陷了。 本發(fā)明實(shí)施例提供了 一種利用SQL語句自動生成測試數(shù)據(jù)的裝置,如圖3所示,包 括獲取單元31、生成單元32。
其中,獲取單元31用于讀取輸入的待測試軟件,獲取所述待測試軟件中的SQL語 句;生成單元32用于根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。本實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的裝置,通過運(yùn)行計算機(jī)程序, 根據(jù)待測軟件中的SQL語句,完成對基于數(shù)據(jù)庫的軟件系統(tǒng)的測試數(shù)據(jù)的生成,可以有效 的保證測試數(shù)據(jù)全面性,且節(jié)省人力資源,提高效率。作為本實(shí)施例的一種改進(jìn),本發(fā)明實(shí)施例提供另一種利用SQL語句自動生成測試 數(shù)據(jù)的裝置,如圖4所示,包括獲取單元41、分析單元42、生成單元43、記錄單元44。其中,生成單元43包括第一生成模塊431、第二生成模塊432、第三生成模塊 433。獲取單元41用于根據(jù)所述SQL語句的語法規(guī)則和關(guān)鍵詞獲取所述待測試軟件中 的SQL語句;分析單元42,用于分析所述SQL語句,從所述SQL語句中獲取所述限定條件;生成單元43用于采用邊界值分析法、等價劃分分析法和錯誤推薦分析法分析所 述限定條件生成測試數(shù)據(jù)。具體的第一生成模塊,用于采用邊界值分析法生成該限定條件 下的有效測試數(shù)據(jù);第二生成模塊,用于采用等價劃分分析法生成該限定條件下的有效測試數(shù)據(jù);第三生成模塊,用于采用錯誤推薦分析法生成該限定條件下的無效測試數(shù)據(jù)。記錄單元44,用于記錄所述限定條件和所述測試數(shù)據(jù)之間的對應(yīng)關(guān)系。本實(shí)施例提供的利用SQL語句自動生成測試數(shù)據(jù)的裝置,通過運(yùn)行計算機(jī)程序, 根據(jù)待測軟件中的SQL語句,完成對基于數(shù)據(jù)庫的軟件系統(tǒng)的測試數(shù)據(jù)的生成,可以有效 的保證測試數(shù)據(jù)全面性,且節(jié)省人力資源,提高效率。通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借 助軟件加必需的通用硬件的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳 的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部 分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計 算機(jī)的軟盤,硬盤或光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī), 服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述的方法。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種利用SQL語句自動生成測試數(shù)據(jù)的方法,其特征在于,包括 讀取輸入的待測試軟件,獲取所述待測試軟件中的SQL語句;根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的利用SQL語句自動生成測試數(shù)據(jù)的方法,其特征在于,在所述 根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)之前,所述方法還包括分析所述SQL語句,從所述SQL語句中獲取所述限定條件 ;所述根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)為采用邊界值分析法、等價劃分 分析法和錯誤推薦分析法分析所述限定條件生成測試數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的利用SQL語句自動生成測試數(shù)據(jù)的方法,其特征在于,所述獲 取所述待測試軟件中的SQL語句為根據(jù)所述SQL語句的語法規(guī)則和關(guān)鍵詞獲取所述待測 試軟件中的SQL語句。
4.根據(jù)權(quán)利要求1至3任一項所述的利用SQL語句自動生成測試數(shù)據(jù)的方法,其特征 在于,所述方法還包括記錄所述限定條件和所述測試數(shù)據(jù)之間的對應(yīng)關(guān)系。
5.根據(jù)權(quán)利要求2所述的利用SQL語句自動生成測試數(shù)據(jù)的方法,其特征在于,所述 采用邊界值分析法、等價劃分分析法和錯誤推薦分析法分析所述限定條件生成測試數(shù)據(jù)包 括采用邊界值分析法生成該限定條件下的有效測試數(shù)據(jù); 采用等價劃分分析法生成該限定條件下的有效測試數(shù)據(jù); 采用錯誤推薦分析法生成該限定條件下的無效測試數(shù)據(jù)。
6.一種利用SQL語句自動生成測試數(shù)據(jù)的裝置,其特征在于,包括獲取單元,用于讀取輸入的待測試軟件,獲取所述待測試軟件中的SQL語句; 生成單元,用于根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的利用SQL語句自動生成測試數(shù)據(jù)的裝置,其特征在于,所述利 用SQL語句自動生成測試數(shù)據(jù)的裝置還包括分析單元,用于分析所述SQL語句,從所述SQL語句中獲取所述限定條件; 所述生成單元根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)為所述生成單元采用邊 界值分析法、等價劃分分析法和錯誤推薦分析法分析所述限定條件生成測試數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的利用SQL語句自動生成測試數(shù)據(jù)的裝置,其特征在于,所述獲 取單元獲取所述待測試軟件中的SQL語句為所述獲取單元根據(jù)所述SQL語句的語法規(guī)則 和關(guān)鍵詞獲取所述待測試軟件中的SQL語句。
9.根據(jù)權(quán)利要求6至8任一項所述的利用SQL語句自動生成測試數(shù)據(jù)的裝置,其特征 在于,所述利用SQL語句自動生成測試數(shù)據(jù)的裝置還包括記錄單元,用于記錄所述限定條件和所述測試數(shù)據(jù)之間的對應(yīng)關(guān)系。
10.根據(jù)權(quán)利要求7所述的利用SQL語句自動生成測試數(shù)據(jù)的方法,其特征在于,所述 生成單元包括第一生成模塊,用于采用邊界值分析法生成該限定條件下的有效測試數(shù)據(jù); 第二生成模塊,用于采用等價劃分分析法生成該限定條件下的有效測試數(shù)據(jù); 第三生成模塊,用于采用錯誤推薦分析法生成該限定條件下的無效測試數(shù)據(jù)。
全文摘要
本發(fā)明實(shí)施例公開了一種利用SQL語句自動生成測試數(shù)據(jù)的方法和裝置,涉及程序測試領(lǐng)域,可以有效的保證測試數(shù)據(jù)全面性,且節(jié)省人力資源,提高效率。該方法包括讀取輸入的待測試軟件,獲取所述待測試軟件中的SQL語句;根據(jù)所述SQL語句中的限定條件生成測試數(shù)據(jù)。主要應(yīng)用于軟件測試過程中測試數(shù)據(jù)的生成。
文檔編號G06F11/36GK102043720SQ20111002041
公開日2011年5月4日 申請日期2011年1月18日 優(yōu)先權(quán)日2011年1月18日
發(fā)明者宋三英, 張德勝, 楊承繼 申請人:北京世紀(jì)高通科技有限公司