一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法
【專利摘要】一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,包括:從MSSQL數(shù)據(jù)庫中獲取到所有的對象列表,分析可以進行校驗的對象;將上述可以進行校驗的對象進行過濾,如果這個對象有被其他對象所依賴,則需要進行校驗;對需要校驗的對象進行方法校驗,依次校驗后得出結(jié)果;字段類型校正及再校驗。本發(fā)明提供的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,提升數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗的效率和正確率,從而提高軟件產(chǎn)品的開發(fā)速率與質(zhì)量。
【專利說明】一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明屬于數(shù)據(jù)庫【技術(shù)領(lǐng)域】,具體涉及一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法。
【【背景技術(shù)】】
[0002]MSSQL是一種關(guān)系型數(shù)據(jù)庫系統(tǒng),其構(gòu)成包含表、視圖、存儲過程、函數(shù)等一系列對象,并且它的對象之間是可以相互調(diào)用并存在依賴的。如果調(diào)用的時候?qū)ο笈c對象之間接口存在差異,比如存儲過程調(diào)用了表,并且使用了表中的某個參數(shù)進行賦值,而賦值的對象與被賦值的對象類型不一致,就會導(dǎo)致錯誤,嚴(yán)重的甚至造成數(shù)據(jù)庫系統(tǒng)無法使用。而MSSQL自身只能對單一的對象進行校驗,比如只能校驗單個表自身的邏輯是否正確,無法校驗對象與對象之間的依賴邏輯是否正確。目前為了避免該現(xiàn)象的發(fā)生,均是靠人工細心設(shè)計來避免。但由于數(shù)據(jù)庫系統(tǒng)本身的龐大,人為的設(shè)計難免會產(chǎn)生疏漏。即使有測試人員來校驗,其工作量也是相當(dāng)龐大,且無法達到100%的校驗覆蓋率。
[0003]有鑒于此,本發(fā)明人針對現(xiàn)有技術(shù)的缺陷深入研究,遂有本案產(chǎn)生。
【
【發(fā)明內(nèi)容】
】
[0004]本發(fā)明所要解決的技術(shù)問題在于提供一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,提升數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗的效率和正確率,從而提高軟件產(chǎn)品的開發(fā)速率與質(zhì)量。
[0005]一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,包括如下步驟:
[0006]步驟1:從MSSQL數(shù)據(jù)庫`中獲取到所有的對象列表,分析可以進行校驗的對象;
[0007]步驟2:將上述可以進行校驗的對象進行過濾,如果這個對象有被其他對象所依賴,則需要進行校驗;
[0008]步驟3:對需要校驗的對象進行方法校驗,依次校驗后得出結(jié)果;
[0009]步驟4:字段類型校正及再校驗。
[0010]進一步地,所述步驟I中,分析可校驗對象,具體包括:
[0011]從sysobjects系統(tǒng)表中查看所有對象;視圖、存儲過程、函數(shù)、規(guī)則過濾;如果是上述四種對象,則可以進行校驗。
[0012]進一步地,所述步驟2中,過濾需要被校驗的對象,具體包括:
[0013]步驟2a:從步驟I中獲取可以進行校驗的對象名,使用sp_depends方法查看對象是否存在依賴;
[0014]步驟2b:sp_depends結(jié)果為空,表明該對象沒有存在依賴,則不需要進行校驗,繼續(xù)判斷下一個對象名;;
[0015]步驟2c:sp_depends結(jié)果不為空,表明該對象存在與其他對象的依賴,貝U需要進行與其他對象的兼容性校驗。
[0016]進一步地,所述步驟3中,校驗方法具體包括:
[0017]步驟3a:從步驟2中獲取需要校驗的對象,命名為A ;
[0018]步驟3b:使用sp_depends方法查看對象A的依賴信息;[0019]步驟3c:sp_depends的結(jié)果顯示對象A依賴于多個對象,以及體現(xiàn)具體依賴對象的具體字段,把依賴對象命名為C,依賴對象的字段命名為D ;
[0020]步驟3d:使用sp_depends查看對象A的邏輯內(nèi)容;
[0021]步驟3e:代碼文本校驗。
[0022]進一步地,所述步驟3e,具體包括:
[0023]步驟100:查找對象A的邏輯代碼中的declare關(guān)鍵字;
[0024]步驟101:截取被申明的變量名,命名為B ;
[0025]步驟102:查找變量B在對象A的代碼中是否有被賦值或被比較,被變量賦值或比較的,轉(zhuǎn)入步驟104 ;被固定參數(shù)賦值或比較的,轉(zhuǎn)入步驟103 ;
[0026]步驟103:不需要校驗;
[0027]步驟104:截取被賦值或被比較的變量名,命名為E ;
[0028]步驟105:與D進行匹配,得出E的來源對象C ;
[0029]步驟106:判斷對象C的屬性,如果C是表,轉(zhuǎn)入步驟107 ;如果C不是表,轉(zhuǎn)入步驟108 ;
[0030]步驟107:使用sp_help查看對象C的內(nèi)容,判斷變量E在對象C中的類型,轉(zhuǎn)入步驟110 ;
[0031]步驟108:使用sp_helptext查看對象C的邏輯代碼;
[0032]步驟109:搜索C代碼中declare的關(guān)鍵字,判斷E在C代碼中被定義時的類型;
[0033]步驟110:判斷B與E的類型是否一致,一致轉(zhuǎn)入步驟112 ;不一致轉(zhuǎn)入步驟111 ;
[0034]步驟111:記錄B與E的類型差異,記錄B與E的對象來源;
[0035]步驟112:表明不會存在邏輯問題。
[0036]進一步地,所述步驟4中,輸出結(jié)果具體包括:
[0037]得出A對象的B與C對象的E字段類型不一致,則進行B與E的類型統(tǒng)一,然后重復(fù)步驟2-3,直到將MSSQL數(shù)據(jù)庫中所有的對象校驗通過。
[0038]本發(fā)明的優(yōu)點在于:1、在MSSQL的基礎(chǔ)上,將所有具備依賴的對象關(guān)聯(lián)起來,進行一個接口的校驗,從而實現(xiàn)整個系統(tǒng)的接口一致性。2、彌補了黑盒測試無法檢測出該問題的不足,傳統(tǒng)黑盒測試由于無法查看到對象內(nèi)容,導(dǎo)致無法高效遍歷出所有數(shù)據(jù)庫對象之間的接口問題,通過MSSQL自身的查詢功能可以獲知各對象的內(nèi)容。3、即使數(shù)據(jù)庫設(shè)計錯誤,通過該方法可以校驗出數(shù)據(jù)庫系統(tǒng)內(nèi)各對象之間的接口是否一致,從而高效的找出設(shè)計的結(jié)構(gòu)錯誤。4、提高了傳統(tǒng)白盒測試的執(zhí)行效率,傳統(tǒng)白盒測試無法完全遍歷代碼,一是遍歷的效率較低,二是遍歷的準(zhǔn)確率不高,三是白盒測試的成本過高。
【【專利附圖】
【附圖說明】】
[0039]下面參照附圖結(jié)合實施例對本發(fā)明作進一步的描述。
[0040]圖1是本發(fā)明方法流程不意圖。
[0041]圖2是本發(fā)明中分析可校驗對象的具體流程圖。 [0042]圖3是本發(fā)明中過濾需要被校驗的對象的具體流程圖。
[0043]圖4是本發(fā)明中校驗方法具體流程圖。
[0044]圖5是本發(fā)明中文本校驗具體流程圖。[0045]圖6是本發(fā)明中字段類型校正及再校驗具體流程圖。
【【具體實施方式】】
[0046]如圖1所示,一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,包括如下步驟:
[0047]步驟1:從MSSQL數(shù)據(jù)庫中獲取到所有的對象列表,分析可以進行校驗的對象;
[0048]步驟2:將上述可以進行校驗的對象進行過濾,如果這個對象有被其他對象所依賴,則需要進行校驗;
[0049]步驟3:對需要校驗的對象進行方法校驗,依次校驗后得出結(jié)果;
[0050]步驟4:字段類型校正及再校驗。
[0051]其中,步驟I中,分析可校驗對象,如圖2所示,具體包括:
[0052]從sysobjects系統(tǒng)表中查看所有對象;視圖、存儲過程、函數(shù)、規(guī)則過濾;如果是上述四種對象,則可以進行校驗。
[0053]MSSQL數(shù)據(jù)庫中存在一張系統(tǒng)表sysobjects,這張表中記錄MSSQL中所有的對象列表,可以根據(jù)表字段xtype辯別對象類型。表是最小單元,不會存在下級依賴,故不需要進行校驗。
[0054]視圖、存儲過程、函數(shù)、 規(guī)則均是會引用到表對象的對象,或引用到其他對象,故有需要被校驗的必要。
[0055]其中,步驟2中,過濾需要被校驗的對象,如圖3所示,具體包括:
[0056]步驟2a:從步驟I中獲取可以進行校驗的對象名,使用sp_depends方法查看對象是否存在依賴;
[0057]步驟2b:sp_depends結(jié)果為空,表明該對象沒有存在依賴,則不需要進行校驗,繼續(xù)判斷下一個對象名;;
[0058]步驟2c:sp_depends結(jié)果不為空,表明該對象存在與其他對象的依賴,則需要進行與其他對象的兼容性校驗。(sp_depends是MSSQL自帶的邏輯方法,通過該方法可以查詢出某對象的依賴情況,依賴情況以表的形式體現(xiàn)。)
[0059]其中,步驟3中,校驗方法,如圖4所示,具體包括:
[0060]步驟3a:從步驟2中獲取需要校驗的對象,命名為A ;
[0061]步驟3b:使用sp_depends方法查看對象A的依賴信息;
[0062]步驟3c:sp_depends的結(jié)果顯示對象A依賴于多個對象,以及體現(xiàn)具體依賴對象的具體字段,把依賴對象命名為C,依賴對象的字段命名為D ;
[0063]步驟3d:使用sp_depends查看對象A的邏輯內(nèi)容;
[0064]步驟3e:代碼文本校驗。(通過遍歷代碼文本進行自動化的白盒測試)。如圖5所示,該步驟具體包括:
[0065]步驟100:查找對象A的邏輯代碼中的declare關(guān)鍵字;(declare是定義的語法,表明有變量被申明。)
[0066]步驟101:截取被申明的變量名,命名為B ;
[0067]步驟102:查找變量B在對象A的代碼中是否有被賦值或被比較,(通過關(guān)鍵字:〉、〈、=、〈〉、! =、in、between判斷參數(shù)B在代碼中是否有被賦值或被比較,)被變量賦值或比較的,轉(zhuǎn)入步驟104 ;被固定參數(shù)賦值或比較的,轉(zhuǎn)入步驟103 ;[0068]步驟103:不需要校驗;(被固定參數(shù)賦值或比較的,由于該情況沒有涉及變量,故不需要校驗)
[0069]步驟104:截取被賦值或被比較的變量名,命名為E ;
[0070]步驟105:與D進行匹配,得出E的來源對象C ;
[0071]步驟106:判斷對象C的屬性,如果C是表,轉(zhuǎn)入步驟107 ;如果C不是表,轉(zhuǎn)入步驟108 ;
[0072]步驟107:使用sp_help查看對象C的內(nèi)容,判斷變量E在對象C中的類型,(sp_help是MSQQL自帶的邏輯方法,用于查看表對象的結(jié)構(gòu),)轉(zhuǎn)入步驟110 ;
[0073]步驟108:使用sp_helptext查看對象C的邏輯代碼;
[0074]步驟109:搜索C代碼中declare的關(guān)鍵字,判斷E在C代碼中被定義時的類型;
[0075]步驟110:判斷B與E的類型是否一致,一致轉(zhuǎn)入步驟112 ;不一致轉(zhuǎn)入步驟111 ;
[0076]步驟111:記錄B與E的類型差異,記錄B與E的對象來源;
[0077]步驟112:表明不會存在邏輯問題。
[0078]其中,步驟4中,如圖6所示,輸出結(jié)果具體包括:
[0079]得出A對象的B與C對象的E字段類型不一致,類型不一致導(dǎo)致引用的時侯出錯,則告知研發(fā)人員進行B與E的類型統(tǒng)一,然后重復(fù)步驟2-3,直到將MSSQL數(shù)據(jù)庫中所有的對象校驗通過。
[0080]本發(fā)明在MSSQL的基礎(chǔ)上,將所有具備依賴的對象關(guān)聯(lián)起來,進行一個接口的校驗,從而實現(xiàn)整個系統(tǒng)的接口一致性。彌補了黑盒測試無法檢測出該問題的不足,傳統(tǒng)黑盒測試由于無法查看到對象內(nèi)容,導(dǎo)致無法高效遍歷出所有數(shù)據(jù)庫對象之間的接口問題,通過MSSQL自身的查詢功能可以獲知各對象的內(nèi)容。即使數(shù)據(jù)庫設(shè)計錯誤,通過該方法可以校驗出數(shù)據(jù)庫系統(tǒng)內(nèi)各對象之間的接口是否一致,從而高效的找出設(shè)計的結(jié)構(gòu)錯誤。提高了傳統(tǒng)白盒測試的執(zhí)行效率,傳統(tǒng)白盒測試無法完全遍歷代碼,一是遍歷的效率較低,二是遍歷的準(zhǔn)確率不高,三是白盒測試的成本過高。
[0081]以上所述僅為本發(fā)明的較佳實施用例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:包括如下步驟: 步驟I =WMSSQL數(shù)據(jù)庫中獲取到所有的對象列表,分析可以進行校驗的對象; 步驟2:將上述可以進行校驗的對象進行過濾,如果這個對象有被其他對象所依賴,則需要進行校驗; 步驟3:對需要校驗的對象進行方法校驗,依次校驗后得出結(jié)果; 步驟4:字段類型校正及再校驗。
2.如權(quán)利要求1所述的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:所述步驟I中,分析可校驗對象,具體包括: 從sysobjects系統(tǒng)表中查看所有對象;視圖、存儲過程、函數(shù)、規(guī)則過濾;如果是上述四種對象,則可以進行校驗。
3.如權(quán)利要求1或2所述的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:所述步驟2中,過濾需要被校驗的對象,具體包括: 步驟2a:從步驟I中獲取可以進行校驗的對象名,使用sp_depends方法查看對象是否存在依賴; 步驟2b:sp_depends結(jié)果為空,表明該對象沒有存在依賴,則不需要進行校驗,繼續(xù)判斷下一個對象名;; 步驟2c:sp_depends結(jié)果不為空,表明該對象存在與其他對象的依賴,則需要進行與其他對象的兼容性校驗。
4.如權(quán)利要求1或2所述 的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:所述步驟3中,校驗方法具體包括: 步驟3a:從步驟2中獲取需要校驗的對象,命名為A ; 步驟3b:使用sp_depends方法查看對象A的依賴信息; 步驟3c:sp_depends的結(jié)果顯示對象A依賴于多個對象,以及體現(xiàn)具體依賴對象的具體字段,把依賴對象命名為C,依賴對象的字段命名為D ; 步驟3d:使用sp_depends查看對象A的邏輯內(nèi)容; 步驟3e:代碼文本校驗。
5.如權(quán)利要求3所述的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:所述步驟3中,校驗方法具體包括: 步驟3a:從步驟2中獲取需要校驗的對象,命名為A ; 步驟3b:使用sp_depends方法查看對象A的依賴信息; 步驟3c:sp_depends的結(jié)果顯示對象A依賴于多個對象,以及體現(xiàn)具體依賴對象的具體字段,把依賴對象命名為C,依賴對象的字段命名為D ; 步驟3d:使用sp_depends查看對象A的邏輯內(nèi)容; 步驟3e:代碼文本校驗。
6.如權(quán)利要求4所述的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:所述步驟3e具體包括: 步驟100:查找對象A的邏輯代碼中的declare關(guān)鍵字; 步驟101:截取被申明的變量名,命名為B ; 步驟102:查找變量B在對象A的代碼中是否有被賦值或被比較,被變量賦值或比較的,轉(zhuǎn)入步驟104 ;被固定參數(shù)賦值或比較的,轉(zhuǎn)入步驟103 ; 步驟103:不需要校驗; 步驟104:截取被賦值或被比較的變量名,命名為E ; 步驟105:與D進行匹配,得出E的來源對象C ; 步驟106:判斷對象C的屬性,如果C是表,轉(zhuǎn)入步驟107 ;如果C不是表,轉(zhuǎn)入步驟108 ; 步驟107:使用sp_help查看對象C的內(nèi)容,判斷變量E在對象C中的類型,轉(zhuǎn)入步驟110 ; 步驟108:使用sp_helptext查看對象C的邏輯代碼; 步驟109:搜索C代碼中declare的關(guān)鍵字,判斷E在C代碼中被定義時的類型; 步驟110:判斷B與E的類型是否一致,一致轉(zhuǎn)入步驟112 ;不一致轉(zhuǎn)入步驟111 ; 步驟111:記錄B與E的類型差異,記錄B與E的對象來源; 步驟112:表明不會存在邏輯問題。
7.如權(quán)利要求5所述的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:所述步驟3e具體包括: 步驟100:查找對象A的邏輯代碼中的declare關(guān)鍵字; 步驟101:截取被申明的變量名,命名為B; 步驟102:查找變量B在對象A的代碼中是否有被賦值或被比較,被變量賦值或比較的,轉(zhuǎn)入步驟104 ;被固定參數(shù)賦值或比較的,轉(zhuǎn)入步驟103 ; 步驟103:不需要校驗; 步驟104:截取被賦值或被比較的變量名,命名為E ; 步驟105 --與D進行匹配,得出E的來源對象C ; 步驟106:判斷對象C的屬性,如果C是表,轉(zhuǎn)入步驟107 ;如果C不是表,轉(zhuǎn)入步驟108 ; 步驟107:使用sp_help查看對象C的內(nèi)容,判斷變量E在對象C中的類型,轉(zhuǎn)入步驟110 ; 步驟108:使用sp_helptext查看對象C的邏輯代碼; 步驟109:搜索C代碼中declare的關(guān)鍵字,判斷E在C代碼中被定義時的類型; 步驟110:判斷B與E的類型是否一致,一致轉(zhuǎn)入步驟112 ;不一致轉(zhuǎn)入步驟111 ; 步驟111:記錄B與E的類型差異,記錄B與E的對象來源; 步驟112:表明不會存在邏輯問題。`
8.如權(quán)利要求6所述的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:所述步驟4中,輸出結(jié)果具體包括: 得出A對象的B與C對象的E字段類型不一致,則進行B與E的類型統(tǒng)一,然后重復(fù)步驟2-3,直到將MSSQL數(shù)據(jù)庫中所有的對象校驗通過。
9.如權(quán)利要求7所述的一種數(shù)據(jù)庫結(jié)構(gòu)邏輯校驗方法,其特征在于:所述步驟4中,輸出結(jié)果具體包括: 得出A對象的B與C對象的E字段類型不一致,則進行B與E的類型統(tǒng)一,然后重復(fù)步驟2-3,直到將MSSQL數(shù)據(jù)庫中所有的對象校驗通過。
【文檔編號】G06F17/30GK103699682SQ201310754950
【公開日】2014年4月2日 申請日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
【發(fā)明者】詹俊挺 申請人:福建星網(wǎng)視易信息系統(tǒng)有限公司