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