專利名稱::一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及測(cè)試領(lǐng)域,特別是涉及一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法及裝置。
背景技術(shù):
:現(xiàn)有技術(shù)中,在進(jìn)行數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試時(shí)需要構(gòu)造不同種類、不同速率和不同數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù),用于檢測(cè)數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品審計(jì)結(jié)果的準(zhǔn)確性。在通常的數(shù)據(jù)庫(kù)審計(jì)測(cè)試中,一般是安裝不同的數(shù)據(jù)庫(kù)客戶端通過(guò)手動(dòng)執(zhí)行腳本進(jìn)行測(cè)試;或者通過(guò)抓包軟件先捕獲包含數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的數(shù)據(jù)包然后再回放來(lái)進(jìn)行測(cè)試;或者通過(guò)某些測(cè)試儀器構(gòu)造數(shù)據(jù)庫(kù)協(xié)議模擬數(shù)據(jù)進(jìn)行測(cè)試?,F(xiàn)有的數(shù)據(jù)庫(kù)審計(jì)測(cè)試方法在實(shí)際測(cè)試中的問(wèn)題在于1、數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)通常用于審計(jì)客戶環(huán)境中大型應(yīng)用軟件的數(shù)據(jù)庫(kù)訪問(wèn)流量,數(shù)據(jù)庫(kù)客戶端訪問(wèn)數(shù)據(jù)庫(kù)通常采用不同的協(xié)議,因此如果單純使用客戶端來(lái)進(jìn)行測(cè)試風(fēng)險(xiǎn)較大。而且通常多個(gè)數(shù)據(jù)庫(kù)或客戶端安裝在一起有可能會(huì)產(chǎn)生沖突,因此需要在多臺(tái)主機(jī)上安裝不同的數(shù)據(jù)庫(kù)客戶端,資源占用較多。人工使用客戶端操作數(shù)據(jù)庫(kù)時(shí)不便于進(jìn)行自動(dòng)化的控制,測(cè)試效率較低。2、通過(guò)捕獲數(shù)據(jù)包再回放的方式進(jìn)行測(cè)試時(shí),通常需要先通過(guò)抓包軟件捕獲數(shù)據(jù)庫(kù)包,再進(jìn)行處理,例如,去除一些無(wú)用數(shù)據(jù)包;然后通過(guò)重寫(xiě)數(shù)據(jù)包的工具對(duì)數(shù)據(jù)包中的部分字段,例如,源媒體接入控制(MediaAccessControl,簡(jiǎn)稱為MAC)地址、目的MAC地址、源網(wǎng)絡(luò)協(xié)議(InternetProtocol,簡(jiǎn)稱為IP)地址、目的IP地址、校驗(yàn)和等字段進(jìn)行重寫(xiě),然后才能再進(jìn)行回放。整個(gè)過(guò)程操作比較繁瑣。這種方法最大的問(wèn)題在于,數(shù)據(jù)包一旦做好,其中包含的數(shù)據(jù)內(nèi)容也就固定,無(wú)法改變。3、一些高端的測(cè)試儀具有構(gòu)造數(shù)據(jù)庫(kù)模擬數(shù)據(jù)的功能,但測(cè)試儀構(gòu)造的是模擬數(shù)據(jù),與真實(shí)的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)有很大差別,尤其隨著時(shí)間推移,數(shù)據(jù)庫(kù)版本更新后,模擬數(shù)據(jù)和真實(shí)數(shù)據(jù)庫(kù)的差別更明顯。一般測(cè)試儀對(duì)一些常見(jiàn)的應(yīng)用協(xié)議,例如,郵件、超文本傳輸協(xié)議(HyperiTextTransferProtocol,簡(jiǎn)稱為HTTP)、文件傳輸協(xié)議(FileTransferI^otocol,簡(jiǎn)稱為FTP)等模擬效果較好,但對(duì)數(shù)據(jù)庫(kù)協(xié)議的支持十分有限。大部分測(cè)試儀不支持?jǐn)?shù)據(jù)庫(kù)協(xié)議,少數(shù)測(cè)試儀支持1-3種主流數(shù)據(jù)庫(kù),無(wú)法滿足數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品的日常測(cè)試需求。此外,一些高端測(cè)試儀通常用于模擬攻擊或模擬復(fù)雜網(wǎng)絡(luò)流量,用來(lái)對(duì)企業(yè)級(jí)應(yīng)用軟件進(jìn)行性能及安全方面的測(cè)試。在數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品的測(cè)試中,需要關(guān)注所有類型的數(shù)據(jù)庫(kù)操作,在實(shí)際應(yīng)用中包含大量使用綁定變量的數(shù)據(jù)庫(kù)流量數(shù)據(jù),對(duì)于這些應(yīng)用測(cè)試儀無(wú)法靈活模擬;測(cè)試過(guò)程中執(zhí)行的所有數(shù)據(jù)庫(kù)操作內(nèi)容及順序都應(yīng)該有詳細(xì)的記錄,以便于利用這些信息驗(yàn)證審計(jì)結(jié)果的正確性,在這方面測(cè)試儀通常在結(jié)束后提供一些發(fā)送數(shù)據(jù)的統(tǒng)計(jì)結(jié)果,不提供能夠追溯測(cè)試過(guò)程的詳細(xì)日志。因此測(cè)試儀可以用來(lái)輔助完成數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品的性能測(cè)試,不適合進(jìn)行常規(guī)的功能測(cè)試
發(fā)明內(nèi)容本發(fā)明提供一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法及裝置,以解決現(xiàn)有技術(shù)中數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題。本發(fā)明提供一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法,包括根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù),并根據(jù)預(yù)先設(shè)置的任務(wù)類型以及配置文件位置加載對(duì)應(yīng)的配置文件,生成數(shù)據(jù)庫(kù)任務(wù);執(zhí)行數(shù)據(jù)庫(kù)任務(wù),并根據(jù)預(yù)先設(shè)置的調(diào)度參數(shù)控制執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行次數(shù)和執(zhí)行速率,獲取不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù);在預(yù)先設(shè)置的日志中記錄執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的過(guò)程,在執(zhí)行完成后自動(dòng)連接審計(jì)產(chǎn)品,并獲取審計(jì)產(chǎn)品針對(duì)上述數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的審計(jì)結(jié)果;根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)以及日志中記錄的數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行過(guò)程檢測(cè)審計(jì)結(jié)果的正確性,并在預(yù)先指定的測(cè)試報(bào)告位置生成測(cè)試報(bào)告。本發(fā)明還提供了一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試裝置,包括數(shù)據(jù)庫(kù)連接單元,用于根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù),并根據(jù)預(yù)先設(shè)置的任務(wù)類型以及配置文件位置加載對(duì)應(yīng)的配置文件,生成數(shù)據(jù)庫(kù)任務(wù);數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元,用于執(zhí)行數(shù)據(jù)庫(kù)任務(wù);任務(wù)調(diào)度單元,用于根據(jù)預(yù)先設(shè)置的調(diào)度參數(shù)控制執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行次數(shù)和執(zhí)行速率,獲取不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù),在預(yù)先設(shè)置的日志中記錄執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的過(guò)程;測(cè)試結(jié)果分析單元,用于在執(zhí)行完成后自動(dòng)連接審計(jì)產(chǎn)品,并獲取審計(jì)產(chǎn)品針對(duì)上述數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的審計(jì)結(jié)果;根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)以及日志中記錄的數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行過(guò)程檢測(cè)審計(jì)結(jié)果的正確性,并在預(yù)先指定的測(cè)試報(bào)告位置生成測(cè)試報(bào)告。本發(fā)明有益效果如下通過(guò)設(shè)置測(cè)試參數(shù),打開(kāi)數(shù)據(jù)庫(kù)連接,解析預(yù)編寫(xiě)的SQL腳本或預(yù)備語(yǔ)句配置文件生成數(shù)據(jù)庫(kù)任務(wù),并對(duì)數(shù)據(jù)庫(kù)任務(wù)執(zhí)行速度進(jìn)行控制,產(chǎn)生數(shù)據(jù)庫(kù)協(xié)議測(cè)試數(shù)據(jù),解決了現(xiàn)有技術(shù)中數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題,本發(fā)明實(shí)施例的技術(shù)方案能夠同時(shí)進(jìn)行多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試;需安裝數(shù)據(jù)庫(kù)客戶端,在一臺(tái)主機(jī)上即可連接多種數(shù)據(jù)庫(kù)產(chǎn)生多種數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù),節(jié)省資源,操作簡(jiǎn)單,易于控制;SQL腳本和預(yù)備語(yǔ)句配置文件獨(dú)立于調(diào)度過(guò)程,可靈活配置,可以根據(jù)不同測(cè)試要求方便的構(gòu)造新的測(cè)試數(shù)據(jù);測(cè)試數(shù)據(jù)真實(shí),數(shù)據(jù)庫(kù)版本更新簡(jiǎn)便,在數(shù)據(jù)庫(kù)協(xié)議審計(jì)的功能、壓力、性能測(cè)試方面應(yīng)用廣泛。圖1是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法的流程圖;圖2是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法詳細(xì)處理的流程圖;圖3是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法實(shí)現(xiàn)過(guò)程的流程圖;圖4是本發(fā)明實(shí)施例的對(duì)預(yù)備語(yǔ)句配置文件的解析過(guò)程的流程圖;圖5是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試裝置的結(jié)構(gòu)示意圖;圖6是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試裝置的詳細(xì)結(jié)構(gòu)示意圖。具體實(shí)施例方式為了解決現(xiàn)有技術(shù)中數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題,本發(fā)明提供了一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法及裝置,用于完善數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法,使得對(duì)該領(lǐng)域的測(cè)試更加有效。以下結(jié)合附圖以及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。方法實(shí)施例根據(jù)本發(fā)明的實(shí)施例,提供了一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法,圖1是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法的流程圖,如圖1所示,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法包括如下處理步驟101,根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù),并根據(jù)預(yù)先設(shè)置的任務(wù)類型以及配置文件位置加載對(duì)應(yīng)的配置文件,生成數(shù)據(jù)庫(kù)任務(wù);步驟101中,在根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù)之前,還可以進(jìn)行如下處理1、預(yù)先配置測(cè)試參數(shù),包括數(shù)據(jù)庫(kù)連接參數(shù)、任務(wù)類型、配置文件位置、調(diào)度參數(shù)、日志、以及測(cè)試報(bào)告位置等,數(shù)據(jù)庫(kù)連接參數(shù)包括數(shù)據(jù)庫(kù)服務(wù)器地址、服務(wù)器端口、數(shù)據(jù)庫(kù)實(shí)例名、用戶名、密碼等;任務(wù)類型包括用于指示進(jìn)行普通SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)、以及用于指示進(jìn)行包含綁定變量數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)。2、根據(jù)需要進(jìn)行測(cè)試的數(shù)據(jù)庫(kù)的類型,創(chuàng)建一個(gè)或多個(gè)線程,其中,線程用于控制相應(yīng)類型的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)任務(wù)執(zhí)行過(guò)程,步驟102,執(zhí)行數(shù)據(jù)庫(kù)任務(wù),并根據(jù)預(yù)先設(shè)置的調(diào)度參數(shù)控制執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行次數(shù)和執(zhí)行速率,獲取不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù);在步驟102中,在確定任務(wù)類型為指示進(jìn)行包含綁定變量數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)的情況下,執(zhí)行數(shù)據(jù)庫(kù)任務(wù)具體包括如下處理步驟1,采用文檔對(duì)象模型(DocumentObjectModel,簡(jiǎn)稱為DOM)方式從指定的配置文件位置加載并解析預(yù)備語(yǔ)句配置文件;步驟2,讀取預(yù)備語(yǔ)句配置文件中的一條記錄,根據(jù)記錄的類型生成普通數(shù)據(jù)庫(kù)命令或者預(yù)備語(yǔ)句命令,并執(zhí)行普通數(shù)據(jù)庫(kù)命令或者預(yù)備語(yǔ)句命令;步驟3,重復(fù)執(zhí)行步驟2,直至預(yù)備語(yǔ)句配置文件的所有記錄全部執(zhí)行完畢。在確定任務(wù)類型為指示進(jìn)行普通SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)的情況下,執(zhí)行數(shù)據(jù)庫(kù)任務(wù)具體包括步驟1,從指定的配置文件位置加載SQL腳本;步驟2,根據(jù)預(yù)先設(shè)置的腳本格式和分割標(biāo)記提取一批數(shù)據(jù)庫(kù)命令,生成普通數(shù)據(jù)庫(kù)命令,執(zhí)行普通數(shù)據(jù)庫(kù)命令;步驟3,重復(fù)執(zhí)行步驟2,直到SQL腳本的數(shù)據(jù)庫(kù)命令全部執(zhí)行完畢。步驟103,在預(yù)先設(shè)置的日志中記錄執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的過(guò)程,在執(zhí)行完成后自動(dòng)連接審計(jì)產(chǎn)品,并獲取審計(jì)產(chǎn)品針對(duì)上述數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的審計(jì)結(jié)果;具體地,在步驟103中,需要在日志中記錄對(duì)備語(yǔ)句配置文件或SQL腳本的處理次數(shù),執(zhí)行命令的開(kāi)始時(shí)間、執(zhí)行的命令、以及命令執(zhí)行結(jié)果,在確定處理次數(shù)達(dá)到調(diào)度參數(shù)中預(yù)先設(shè)置的處理次數(shù)的情況下,在日志中記錄執(zhí)行的總次數(shù)和結(jié)束時(shí)間。步驟104,根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)以及日志中記錄的數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行過(guò)程檢測(cè)審計(jì)結(jié)果的正確性,并在預(yù)先指定的測(cè)試報(bào)告位置生成測(cè)試報(bào)告。具體地,可以根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)檢測(cè)審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)名和用戶名是否正確,并根據(jù)日志中的記錄檢測(cè)審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)命令總數(shù)、單條命令還原的正確性、執(zhí)行結(jié)果的正確性、執(zhí)行順序、執(zhí)行時(shí)間是否正確。綜上所述,首先需要配置測(cè)試參數(shù),例如,數(shù)據(jù)庫(kù)連接參數(shù)、任務(wù)類型、配置文件位置、調(diào)度參數(shù)、日志及測(cè)試報(bào)告位置等;讀取預(yù)設(shè)的數(shù)據(jù)庫(kù)連接參數(shù),連接相應(yīng)數(shù)據(jù)庫(kù),根據(jù)任務(wù)類型加載對(duì)應(yīng)配置文件,生成數(shù)據(jù)庫(kù)任務(wù);通過(guò)調(diào)度參數(shù)控制數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行速度和次數(shù),構(gòu)造不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù);在日志中記錄執(zhí)行過(guò)程,執(zhí)行完后根據(jù)參數(shù)自動(dòng)連接審計(jì)產(chǎn)品獲取審計(jì)結(jié)果,利用連接參數(shù)及日志檢測(cè)審計(jì)結(jié)果的正確性,生成測(cè)試報(bào)告。通過(guò)上述處理,本發(fā)明實(shí)施例具有以下有益效果1、本發(fā)明實(shí)施例采用客戶環(huán)境中常用方式連接數(shù)據(jù)庫(kù)服務(wù)器,產(chǎn)生數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù)。集成常見(jiàn)數(shù)據(jù)庫(kù)驅(qū)動(dòng),無(wú)需安裝客戶端即可方便完成數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的構(gòu)造,增強(qiáng)了易用性,節(jié)省了資源。2、本發(fā)明實(shí)施例采用動(dòng)態(tài)加載技術(shù),使支持的數(shù)據(jù)庫(kù)類型可配置,可以方便的通過(guò)修改配置文件、集成新的驅(qū)動(dòng),支持新的數(shù)據(jù)庫(kù)類型??梢酝瑫r(shí)進(jìn)行多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試。3、本發(fā)明實(shí)施例通過(guò)并發(fā)控制,可以同時(shí)創(chuàng)建多個(gè)線程,每個(gè)線程完成對(duì)一種數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)構(gòu)造過(guò)程的獨(dú)立控制,從而可以同時(shí)進(jìn)行多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試。4、本發(fā)明實(shí)施例通過(guò)參數(shù)控制協(xié)議數(shù)據(jù)生成的速率和數(shù)量,有效解決了手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題。5、數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)測(cè)試中通常需要關(guān)注兩種數(shù)據(jù)的測(cè)試,一種是執(zhí)行普通數(shù)據(jù)庫(kù)命令的協(xié)議數(shù)據(jù),這種協(xié)議數(shù)據(jù)可以通過(guò)執(zhí)行預(yù)置的SQL語(yǔ)句來(lái)生成;一種是包含綁定變量的協(xié)議數(shù)據(jù),這種協(xié)議數(shù)據(jù)的格式與前一種不同,數(shù)據(jù)包前面部分是包含變量的數(shù)據(jù)庫(kù)命令,緊隨其后的是變量的賦值,這種應(yīng)用在一些動(dòng)態(tài)網(wǎng)頁(yè)中比較常見(jiàn),這種協(xié)議數(shù)據(jù)可以通過(guò)執(zhí)行預(yù)置的預(yù)備語(yǔ)句配置文件來(lái)生成。6、待執(zhí)行的SQL語(yǔ)句和預(yù)備語(yǔ)句均采用獨(dú)立于調(diào)度過(guò)程的配置文件進(jìn)行配置??梢愿鶕?jù)不同的測(cè)試目標(biāo)、數(shù)據(jù)庫(kù)特征隨時(shí)編寫(xiě)不同的腳本或預(yù)備語(yǔ)句配置文件,通過(guò)不斷補(bǔ)充、完善可以完成對(duì)數(shù)據(jù)庫(kù)所有命令的全面測(cè)試。以下結(jié)合附圖,對(duì)本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。圖2是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法詳細(xì)處理的流程圖,如圖2所示,包括如下處理步驟S201,根據(jù)要測(cè)試的數(shù)據(jù)庫(kù)種類,動(dòng)態(tài)加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,讀取預(yù)先配置的數(shù)據(jù)庫(kù)參數(shù),利用這些參數(shù)構(gòu)造數(shù)據(jù)庫(kù)連接串,打開(kāi)數(shù)據(jù)庫(kù)連接。數(shù)據(jù)庫(kù)連接參數(shù)通常包括數(shù)據(jù)庫(kù)服務(wù)器地址、服務(wù)器端口、數(shù)據(jù)庫(kù)實(shí)例名(或服務(wù)名)、用戶名、密碼等。步驟S202,讀取任務(wù)類型參數(shù),該參數(shù)用于指定進(jìn)行普通sql腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試,或者進(jìn)行包含綁定變量的數(shù)據(jù)庫(kù)命令審計(jì)測(cè)試。如果選擇的是綁定變量測(cè)試,則需要從測(cè)試參數(shù)指定位置加載預(yù)備語(yǔ)句配置文件。通過(guò)預(yù)備語(yǔ)句配置文件可以生成兩種數(shù)據(jù)庫(kù)命令,一種是普通的數(shù)據(jù)庫(kù)命令,一種是包含綁定變量的預(yù)備語(yǔ)句。對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作前,需要先進(jìn)行一些初始化的操作,例如,創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表等,這些操作可以在數(shù)據(jù)庫(kù)中預(yù)先建好,也可以在配置文件中寫(xiě)好,每次執(zhí)行時(shí)自動(dòng)創(chuàng)建。預(yù)備語(yǔ)句配置文件中配置的普通數(shù)據(jù)庫(kù)命令主要是用來(lái)完成初始化操作,為執(zhí)行預(yù)備語(yǔ)句做準(zhǔn)備,是可選的配置。要?jiǎng)?chuàng)建并執(zhí)行一個(gè)預(yù)備語(yǔ)句,需要兩方面的信息1、創(chuàng)建預(yù)備語(yǔ)句的字符串;2、為各變量所賦的值,及類型。綜上所述,配置文件中應(yīng)具有如下特征及信息1、普通數(shù)據(jù)庫(kù)命令和預(yù)備語(yǔ)句的區(qū)別標(biāo)志;2、一條記錄的開(kāi)始和結(jié)束標(biāo)記,一條記錄或者可以生成一個(gè)普通數(shù)據(jù)庫(kù)命令,或者可以生成一個(gè)已經(jīng)被賦值的預(yù)備語(yǔ)句命令;3、創(chuàng)建預(yù)備語(yǔ)句的字符串;4、為預(yù)備語(yǔ)句中各變量所賦的值及類型。5、第4點(diǎn)中所賦的值與被賦值的預(yù)備語(yǔ)句應(yīng)該具有明確的對(duì)應(yīng)關(guān)系,即能明確說(shuō)明變量是為此預(yù)備語(yǔ)句賦值而不是為另一個(gè)預(yù)備語(yǔ)句賦值。在本步驟中,會(huì)逐條讀取配置文件中的記錄,生成數(shù)據(jù)庫(kù)命令并交給調(diào)度單元執(zhí)行。從本步驟中描述的預(yù)備語(yǔ)句配置文件的內(nèi)容可以看到預(yù)備語(yǔ)句配置文件也可以生成普通的數(shù)據(jù)庫(kù)命令,但由于預(yù)備語(yǔ)句配置文件格式復(fù)雜,對(duì)其進(jìn)行解析處理的過(guò)程也比較復(fù)雜,因此本發(fā)明實(shí)施例為構(gòu)造普通數(shù)據(jù)庫(kù)命令單獨(dú)設(shè)計(jì)了更簡(jiǎn)單的SQL腳本格式,以加快對(duì)普通數(shù)據(jù)庫(kù)命令的處理速度。如果選擇的不是綁定變量測(cè)試,則需要從測(cè)試參數(shù)指定位置加載SQL腳本。本發(fā)明實(shí)施例為SQL腳本規(guī)定了特定的格式和分割標(biāo)記,解析時(shí)通過(guò)識(shí)別該分隔符判斷SQL腳本中一批數(shù)據(jù)庫(kù)任務(wù)的開(kāi)始結(jié)束位置。在本步驟中,會(huì)逐批讀取腳本文件中的數(shù)據(jù)庫(kù)命令,發(fā)送到調(diào)度單元執(zhí)行。步驟S203,在獲得步驟S202中生成的數(shù)據(jù)庫(kù)命令或預(yù)備語(yǔ)句后,本步驟將執(zhí)行命令并處理命令的返回結(jié)果。具體地,根據(jù)測(cè)試參數(shù)中設(shè)定的執(zhí)行間隔時(shí)間,在處理完一批或一條命令后暫停一定的間隔時(shí)間,用于調(diào)整任務(wù)的執(zhí)行速度,從而控制數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的生成速率。間隔時(shí)間以毫秒計(jì)時(shí),當(dāng)設(shè)置為0時(shí)表示不設(shè)間隔連續(xù)執(zhí)行命令。在執(zhí)行過(guò)程中需要在日志中記錄數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行時(shí)間、執(zhí)行的內(nèi)容和執(zhí)行結(jié)果。執(zhí)行過(guò)程中設(shè)置計(jì)數(shù)器記錄已執(zhí)行命令的總數(shù)。執(zhí)行過(guò)程可以手動(dòng)停止,也可以重新開(kāi)始。執(zhí)行停止后,顯示本次測(cè)試執(zhí)行過(guò)的命令總數(shù)。S204,將數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)的審計(jì)結(jié)果和日志文件中記錄的數(shù)據(jù)庫(kù)命令執(zhí)行過(guò)程進(jìn)行自動(dòng)對(duì)比??梢詮臄?shù)據(jù)庫(kù)名、用戶名、數(shù)據(jù)庫(kù)命令總數(shù)、單條數(shù)據(jù)庫(kù)命令審計(jì)正確性、操作結(jié)果、執(zhí)行順序、執(zhí)行時(shí)間等方面核對(duì)審計(jì)系統(tǒng)審計(jì)結(jié)果的準(zhǔn)確性。步驟S202至步驟S204描述了一種數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)生成及數(shù)據(jù)庫(kù)審計(jì)測(cè)試的方法。通過(guò)并發(fā),可以同時(shí)創(chuàng)建多個(gè)線程,每個(gè)線程均可獨(dú)立完成步驟SlOl至步驟S204的功能,從而使本發(fā)明實(shí)施例可以同時(shí)完成多個(gè)或多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試。通過(guò)本發(fā)明實(shí)施例提供的方法,設(shè)置測(cè)試參數(shù),打開(kāi)數(shù)據(jù)庫(kù)連接,解析預(yù)編寫(xiě)的SQL腳本或預(yù)備語(yǔ)句配置文件生成數(shù)據(jù)庫(kù)任務(wù),并對(duì)數(shù)據(jù)庫(kù)任務(wù)執(zhí)行速度進(jìn)行控制,產(chǎn)生數(shù)據(jù)庫(kù)協(xié)議測(cè)試數(shù)據(jù),可以同時(shí)進(jìn)行多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試,有效解決了手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題。下面以一優(yōu)選的實(shí)例來(lái)詳細(xì)闡述本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法的具體實(shí)現(xiàn)過(guò)程。本實(shí)例提供的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法是對(duì)數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品審計(jì)功能進(jìn)行測(cè)試的方法,通過(guò)參數(shù)連接數(shù)據(jù)庫(kù),加載指定的SQL腳本或預(yù)備語(yǔ)句配置文件,生成數(shù)據(jù)庫(kù)任務(wù),并根據(jù)參數(shù)控制數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行速度和次數(shù),以產(chǎn)生數(shù)據(jù)庫(kù)協(xié)議測(cè)試數(shù)據(jù),進(jìn)行數(shù)據(jù)庫(kù)審計(jì)測(cè)試,并根據(jù)數(shù)據(jù)庫(kù)執(zhí)行過(guò)程中記錄的日志對(duì)數(shù)據(jù)庫(kù)協(xié)議審計(jì)結(jié)果進(jìn)行驗(yàn)證,從而檢驗(yàn)審計(jì)結(jié)果的正確性。本實(shí)例支持對(duì)六種數(shù)據(jù)庫(kù)協(xié)議進(jìn)行審計(jì)測(cè)試,解決了在現(xiàn)有測(cè)試方法中手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題,可以節(jié)省資源提高測(cè)試效率。圖3是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法實(shí)現(xiàn)過(guò)程的流程圖,如圖3所示,包括如下處理步驟S301,配置測(cè)試參數(shù),并根據(jù)進(jìn)行測(cè)試的數(shù)據(jù)庫(kù)類型,創(chuàng)建一個(gè)線程,用于控制該類型數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的生成過(guò)程。通過(guò)并發(fā)控制,本實(shí)例支持同時(shí)對(duì)多種數(shù)據(jù)庫(kù)協(xié)議進(jìn)行測(cè)試。步驟S302,根據(jù)測(cè)試參數(shù)中的數(shù)據(jù)庫(kù)連接參數(shù),打開(kāi)數(shù)據(jù)庫(kù)連接。例如,連接oracle數(shù)據(jù)庫(kù)需配置數(shù)據(jù)庫(kù)服務(wù)器地址、服務(wù)器端口、數(shù)據(jù)庫(kù)實(shí)例名、數(shù)據(jù)庫(kù)用戶名、數(shù)據(jù)庫(kù)用戶密碼。步驟S303,根據(jù)測(cè)試參數(shù)中的任務(wù)類型對(duì)測(cè)試過(guò)程進(jìn)行不同的配置。包含兩種選擇綁定變量測(cè)試和普通數(shù)據(jù)庫(kù)任務(wù)測(cè)試。如果配置的是綁定變量測(cè)試,則執(zhí)行步驟S304;如果配置的是普通數(shù)據(jù)庫(kù)任務(wù)測(cè)試,則執(zhí)行步驟S305。步驟S304,從指定位置加載并解析預(yù)備語(yǔ)句配置文件,讀取一條記錄,根據(jù)記錄的類型生成普通數(shù)據(jù)庫(kù)命令或預(yù)備語(yǔ)句命令,并執(zhí)行命令。同時(shí)需記錄命令執(zhí)行開(kāi)始時(shí)間、執(zhí)行的命令、執(zhí)行結(jié)果。逐條處理預(yù)備語(yǔ)句配置文件,直至文件末尾,完成對(duì)預(yù)備語(yǔ)句配置文件的一次處理過(guò)程。本實(shí)例中預(yù)備語(yǔ)句配置文件采用xml文件存儲(chǔ)。根據(jù)S202中對(duì)預(yù)備語(yǔ)句配置文件的特征描述,配置文件格式如下<preparedstatementTest>〈normalStatementsql=""></normalStatement><preparedstatement><commandprep=""><variablelocation="1"type=""value=""></Variable〉<variablelocation="2"type=""value=""></Variable〉〈/command></preparedstatement></preparedstatementTest>配置文件中包含2類子標(biāo)簽mormalStatement用于配置普通數(shù)據(jù)庫(kù)命令,它的SQL屬性是SQL語(yǔ)句內(nèi)容;ft·印aredstatement用于配置預(yù)備語(yǔ)句。其中Preparedstatement又包含兩種子標(biāo)簽,command用于配置預(yù)備語(yǔ)句內(nèi)容;variable用于給預(yù)備語(yǔ)句賦值,一個(gè)variable節(jié)點(diǎn)可以為預(yù)備語(yǔ)句賦一個(gè)變量值,賦值的位置、類型、值分別用variable的location、type、value屬性配置。一個(gè)配置文件只能包含一個(gè)pr印aredstatementTest,一個(gè)preparedstatementTest節(jié)點(diǎn)下可以包含若干normalStatement或Preparedstatement。一yIvPreparedstatement中^倉(cāng)泛^ll^"——fcommand,S^yIvvariable,variable由予頁(yè)句待賦值的變量個(gè)數(shù)決定。本實(shí)例中考慮到在循環(huán)執(zhí)行過(guò)程中會(huì)多次訪問(wèn)預(yù)備語(yǔ)句配置文件的內(nèi)容,而且綁定變量測(cè)試重點(diǎn)在于測(cè)試到所有變量類型,配置文件內(nèi)容不必包含過(guò)多語(yǔ)句,因此采用DOM解析預(yù)備語(yǔ)句配置文件。該方法會(huì)一次性讀入配置文件內(nèi)容,然后構(gòu)建一個(gè)駐留內(nèi)存的樹(shù)結(jié)構(gòu),以后對(duì)配置文件的訪問(wèn)通過(guò)訪問(wèn)內(nèi)存中的樹(shù)結(jié)構(gòu)來(lái)完成,加快處理效率。步驟S305,從指定位置加載SQL腳本,根據(jù)腳本格式和分割標(biāo)記提取一批數(shù)據(jù)庫(kù)命令,生成普通數(shù)據(jù)庫(kù)命令,并執(zhí)行命令,同時(shí)需記錄命令執(zhí)行開(kāi)始時(shí)間、執(zhí)行的命令、執(zhí)行結(jié)果。逐條處理SQL腳本文件,直至文件末尾,完成對(duì)SQL腳本文件的一次處理過(guò)程。本實(shí)施例中SQL腳本采用文本文件存儲(chǔ)。根據(jù)S202中對(duì)SQL腳本的特征描述,SQL腳本文件格式如下Sqlcommand1gosqlcommand2go......為了解析方便,該文件中批結(jié)束符“go”必須單行存儲(chǔ),所有SQL命令必須從一行開(kāi)頭開(kāi)始編寫(xiě),但可以分多行編寫(xiě)。S306,在日志中記錄對(duì)預(yù)備語(yǔ)句配置文件或SQL腳本的處理次數(shù)。S307,判斷S306中的處理次數(shù)是否達(dá)到測(cè)試參數(shù)中配置的總循環(huán)次數(shù),如果達(dá)到,轉(zhuǎn)步驟S308;如果未達(dá)到,轉(zhuǎn)步驟S303。S308,記錄日志執(zhí)行總條數(shù)和結(jié)束時(shí)間。S309,根據(jù)配置參數(shù)獲取審計(jì)產(chǎn)品的審計(jì)結(jié)果,例如,本實(shí)例中通過(guò)可配置的條件從審計(jì)產(chǎn)品的數(shù)據(jù)庫(kù)中查詢審計(jì)結(jié)果并將其保存。根據(jù)步驟S302中的數(shù)據(jù)庫(kù)名、用戶名等參數(shù)檢測(cè)審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)名和用戶名是否正確;根據(jù)S308步驟中記錄的執(zhí)行日志,從還原的數(shù)據(jù)庫(kù)命令總數(shù)、單條命令還原的正確性、執(zhí)行結(jié)果的正確性、執(zhí)行順序、執(zhí)行時(shí)間等方面檢測(cè)審計(jì)結(jié)果是否正確。根據(jù)檢測(cè)的結(jié)果產(chǎn)生測(cè)試報(bào)告,總體說(shuō)明數(shù)據(jù)庫(kù)審計(jì)的效果。下面通過(guò)一簡(jiǎn)單示例來(lái)具體說(shuō)明上述數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試的過(guò)程。例如,要完成對(duì)oracle數(shù)據(jù)庫(kù)審計(jì)測(cè)試,在測(cè)試開(kāi)始前首先配置以下測(cè)試參數(shù)DataBasetypeoracle#數(shù)據(jù)庫(kù)類型ServerAddress:192.168.73.88#數(shù)據(jù)庫(kù)地址ServerPort:1521#數(shù)據(jù)庫(kù)端口Instance:test數(shù)據(jù)庫(kù)實(shí)例名User:system數(shù)據(jù)庫(kù)用戶名Password:testoracle#數(shù)據(jù)庫(kù)密碼PreparedstatementTest:true#綁定變量測(cè)試PreparedstatementConfigFilePathD:\prepConfig.xml#預(yù)備語(yǔ)句配置文件位置LogfilePath:D:\test.log#執(zhí)行日志文件位置ExecutionInteval:1000#命令執(zhí)行間隔,單位毫秒Times:100#循環(huán)執(zhí)行次數(shù)接下來(lái)創(chuàng)建一個(gè)線程,用于控制oracle協(xié)議數(shù)據(jù)構(gòu)造過(guò)程。該線程根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)連接指定數(shù)據(jù)庫(kù)實(shí)例,打開(kāi)數(shù)據(jù)庫(kù)連接。然后,加載預(yù)備語(yǔ)句配置文件pr印Config.xml,解析并處理該文件。結(jié)合步驟S202中的配置文件的格式,在某一具體示例中,本實(shí)施例的預(yù)備語(yǔ)句配置關(guān)鍵部分具體實(shí)現(xiàn)為<preparedstatementTest>〈normalStatementsql="createtabletable1(column1varchar(20),column2int,column3smallint,column4bit,column5real)"></normalStatement><preparedstatement>〈commandprep="insertintotable1values(,,,,)"><variablelocation=,,i,:'type="String"value='"test"></Variable〉<variablelocation="2r'type="Integer"value=="5"></Variable〉<variablelocation="3r'type="Short"value="'5"></Variable〉<variablelocation="4r'type="Boolean"value="true"></Variable〉<variablelocation="5r'type="Double"value=="5.0"></Variable〉〈/command></preparedstatement></preparedstatementTest>圖4是本發(fā)明實(shí)施例的對(duì)預(yù)備語(yǔ)句配置文件的解析過(guò)程的流程圖,如圖4所示,包括以下步驟S401,從指定位置加載預(yù)備語(yǔ)句,在本實(shí)例中,可以從D\prepConfig.xml讀入配置文件,在內(nèi)存中構(gòu)建一個(gè)樹(shù)結(jié)構(gòu),該樹(shù)結(jié)構(gòu)的二級(jí)節(jié)點(diǎn)用于生成數(shù)據(jù)庫(kù)命令。S402,獲取樹(shù)結(jié)構(gòu)二級(jí)節(jié)點(diǎn)列表,從列表中讀取下一個(gè)記錄。S403,判斷當(dāng)前讀到的這個(gè)記錄是普通數(shù)據(jù)庫(kù)語(yǔ)句還是預(yù)備語(yǔ)句,如果是預(yù)備語(yǔ)句,轉(zhuǎn)步驟S404;如果是普通數(shù)據(jù)庫(kù)命令,轉(zhuǎn)步驟S405。在本實(shí)例中,配置文件中preparedstatement表示預(yù)備語(yǔ)句,normalStatement表示普通數(shù)據(jù)庫(kù)命令。S404,創(chuàng)建預(yù)備語(yǔ)句并為預(yù)備語(yǔ)句變量賦值。preparedstatement包含多個(gè)子標(biāo)簽,第一個(gè)標(biāo)簽command的pr印屬性是用于創(chuàng)建預(yù)備語(yǔ)句的參數(shù)值,其他的都是variable標(biāo)簽,用于為預(yù)備語(yǔ)句賦值。根據(jù)本例配置文件中的ft·印aredstatement標(biāo)簽,可以生成如下預(yù)備語(yǔ)句Stringcommand=“insertintotablelvalues(?,*,*,*,*)";//該變量值從preparedstatement的command子標(biāo)簽讀取Preparedstatementprep=con.prepareStatement(command);//倉(cāng)丨J建一個(gè)預(yù)備語(yǔ)句prep.setString(l,“test");//根據(jù)variable標(biāo)簽的位置、類型屬性為預(yù)備語(yǔ)句賦值prep.setlnt(2,5);prep.setShort(3,(short)5);prep.setBoolean(4,true);prep.setDouble(5,(double)5.0);S405,創(chuàng)建普通數(shù)據(jù)庫(kù)命令。根據(jù)normalStatement標(biāo)簽的SQL屬性創(chuàng)建普通數(shù)據(jù)庫(kù)命令。根據(jù)本例配置文件中的normalStatement標(biāo)簽,可以生成如下命令Stringcommand=“createtabletable1(columnlvarchar(20),column2int,column3smallint,column4bit,column5real)“;//該變量值從normalStatement標(biāo)簽讀取。S406,數(shù)據(jù)庫(kù)命令執(zhí)行前在日志文件中記錄時(shí)間。本實(shí)例是在D:\test.log中記錄當(dāng)前時(shí)間。S407,執(zhí)行數(shù)據(jù)庫(kù)命令,處理執(zhí)行結(jié)果,并將執(zhí)行的命令和結(jié)果記錄在日志文件中。S408,一條命令執(zhí)行完后暫定指定的間隔。本例中每條命令執(zhí)行后都會(huì)暫停1000ms。S409,判斷是否到達(dá)列表末尾,如果到達(dá),繼續(xù)步驟S306及后續(xù)處理;如果沒(méi)有到達(dá)末尾,轉(zhuǎn)步驟S402。對(duì)列表進(jìn)行完一次處理后,即完成一次執(zhí)行過(guò)程,在日志文件中記錄循環(huán)執(zhí)行次數(shù)。然后判斷是否達(dá)到設(shè)定的總次數(shù),本實(shí)例中設(shè)定的總次數(shù)是100。如果沒(méi)有達(dá)到總次數(shù),則返回步驟S402重新處理一次列表,直至達(dá)到100次;如果達(dá)到總次數(shù),則在日志中記錄執(zhí)行數(shù)據(jù)庫(kù)命令的總條數(shù)和當(dāng)前時(shí)間,結(jié)束本次測(cè)試。然后根據(jù)日志文件檢驗(yàn)數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品的審計(jì)結(jié)果,生成測(cè)試報(bào)告。上例詳細(xì)說(shuō)明了包含綁定變量的數(shù)據(jù)庫(kù)審計(jì)測(cè)試過(guò)程,如果要進(jìn)行普通SQL語(yǔ)句的測(cè)試,只需在測(cè)試開(kāi)始前將參數(shù)ft·印aredstatementTest設(shè)置成false。普通SQL腳本存放在腳本文件中,對(duì)該文件的處理比較簡(jiǎn)單,按順序讀取腳本中的命令,生成普通數(shù)據(jù)庫(kù)命令并執(zhí)行。本實(shí)例中腳本文件的一部分配置如下CREATETABLEstudents(student—idstudent—namestudent—classstudent_phonestudent_pointgoDESCRIBEstudentsgoSELECT*FROMstudentsgoINSERTINTOstudents(student—id,student—name,student—class,student_phone,student_point)VALUES(1,lMaik1,1,13811898383,89)go本實(shí)例中所有SQL命令均從行首開(kāi)始,單行存儲(chǔ)的go是批結(jié)束符。對(duì)該文件的處理過(guò)程如下步驟1、逐行獲取文件內(nèi)容,如果該行內(nèi)容不是“go”,拼接在字符串尾部,繼續(xù)讀下一行;如果是“go”,則一批結(jié)束,轉(zhuǎn)步驟2。步驟2、用第一步讀到的字符串創(chuàng)建數(shù)據(jù)庫(kù)命令;步驟3、日志中記錄時(shí)間,執(zhí)行數(shù)據(jù)庫(kù)命令,處理執(zhí)行結(jié)果,在日志中記錄字符串的內(nèi)容和執(zhí)行結(jié)果。步驟4、判斷文件是否結(jié)束。如未結(jié)束轉(zhuǎn)步驟1;如結(jié)束,轉(zhuǎn)步驟S306繼續(xù)后續(xù)處理。通過(guò)本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法,解析預(yù)編寫(xiě)的SQL腳本或預(yù)備語(yǔ)句配置文件生成數(shù)據(jù)庫(kù)任務(wù),并對(duì)數(shù)據(jù)庫(kù)任務(wù)執(zhí)行速度進(jìn)行控制,產(chǎn)生數(shù)據(jù)庫(kù)協(xié)議測(cè)試數(shù)據(jù),可以同時(shí)進(jìn)行六種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試,有效解決了手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題。綜上所述,1、本發(fā)明實(shí)施例可以生成包含任意類型綁定變量的數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù),從而完成對(duì)包含綁定變量的數(shù)據(jù)庫(kù)數(shù)據(jù)的審計(jì)測(cè)試。綁定變量測(cè)試通過(guò)解析預(yù)先編寫(xiě)好的預(yù)備語(yǔ)句配置文件,生成包含綁定變量的數(shù)據(jù)協(xié)議數(shù)據(jù)來(lái)進(jìn)行測(cè)試。2、SQL腳本或預(yù)備語(yǔ)NUMBER⑵,VARCHAR(12),NUMBER⑵,VARCHAR(ll),NUMBER(3))句配置文件獨(dú)立于調(diào)度過(guò)程,支持動(dòng)態(tài)擴(kuò)充,可以根據(jù)不同的測(cè)試目標(biāo)、數(shù)據(jù)庫(kù)特征隨時(shí)編寫(xiě)不同的腳本或預(yù)備語(yǔ)句配置文件。通過(guò)不斷補(bǔ)充、完善可以完成對(duì)數(shù)據(jù)庫(kù)所有命令的全面測(cè)試。3、通過(guò)預(yù)設(shè)的測(cè)試參數(shù)控制各類數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)生成的速率和總量。任務(wù)類型用于控制進(jìn)行普通SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試,或者進(jìn)行包含綁定變量的數(shù)據(jù)庫(kù)命令審計(jì)測(cè)試;執(zhí)行間隔和總數(shù)(總數(shù)是指執(zhí)行過(guò)程中設(shè)置計(jì)數(shù)器記錄已執(zhí)行命令的總數(shù))用于控制數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行速度和次數(shù),構(gòu)造不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù),進(jìn)行數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試。4、自動(dòng)獲取審計(jì)結(jié)果,將數(shù)據(jù)庫(kù)執(zhí)行過(guò)程中記錄的日志信息、連接信息與審計(jì)結(jié)果進(jìn)行對(duì)比,驗(yàn)證審計(jì)結(jié)果的正確性,按照預(yù)定格式生成測(cè)試報(bào)告。裝置實(shí)施例根據(jù)本發(fā)明的實(shí)施例,提供了一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試裝置,圖5是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試裝置的結(jié)構(gòu)示意圖,如圖5所示,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試裝置包括數(shù)據(jù)庫(kù)連接單元50、數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元52、任務(wù)調(diào)度單元M、測(cè)試結(jié)果分析單元56,以下對(duì)本發(fā)明實(shí)施例的各個(gè)模塊進(jìn)行詳細(xì)的說(shuō)明。具體地,數(shù)據(jù)庫(kù)連接單元50,用于根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù),并根據(jù)預(yù)先設(shè)置的任務(wù)類型以及配置文件位置加載對(duì)應(yīng)的配置文件,生成數(shù)據(jù)庫(kù)任務(wù);數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元52,用于執(zhí)行數(shù)據(jù)庫(kù)任務(wù);具體地,在確定所述任務(wù)類型為指示進(jìn)行包含綁定變量數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)的情況下,數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元52采用DOM方式從指定的配置文件位置加載并解析預(yù)備語(yǔ)句配置文件;讀取預(yù)備語(yǔ)句配置文件中的一條記錄,根據(jù)記錄的類型生成普通數(shù)據(jù)庫(kù)命令或者預(yù)備語(yǔ)句命令,并執(zhí)行普通數(shù)據(jù)庫(kù)命令或者預(yù)備語(yǔ)句命令,直至預(yù)備語(yǔ)句配置文件的所有記錄全部執(zhí)行完畢;在確定所述任務(wù)類型為指示進(jìn)行普通SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)的情況下,數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元52從指定的配置文件位置加載SQL腳本;根據(jù)預(yù)先設(shè)置的腳本格式和分割標(biāo)記提取一批數(shù)據(jù)庫(kù)命令,生成普通數(shù)據(jù)庫(kù)命令,執(zhí)行普通數(shù)據(jù)庫(kù)命令,直到SQL腳本的數(shù)據(jù)庫(kù)命令全部執(zhí)行完畢。任務(wù)調(diào)度單元M,用于根據(jù)預(yù)先設(shè)置的調(diào)度參數(shù)控制執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行次數(shù)和執(zhí)行速率,獲取不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù),在預(yù)先設(shè)置的日志中記錄執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的過(guò)程;具體地,任務(wù)調(diào)度單元M在日志中記錄對(duì)備語(yǔ)句配置文件或SQL腳本的處理次數(shù),執(zhí)行命令的開(kāi)始時(shí)間、執(zhí)行的命令、以及命令執(zhí)行結(jié)果,在確定處理次數(shù)達(dá)到調(diào)度參數(shù)中預(yù)先設(shè)置的處理次數(shù)的情況下,在日志中記錄執(zhí)行的總次數(shù)和結(jié)束時(shí)間;測(cè)試結(jié)果分析單元56,用于在執(zhí)行完成后自動(dòng)連接審計(jì)產(chǎn)品,并獲取審計(jì)產(chǎn)品針對(duì)所述數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的審計(jì)結(jié)果;根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)以及日志中記錄的數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行過(guò)程檢測(cè)審計(jì)結(jié)果的正確性,并在預(yù)先指定的測(cè)試報(bào)告位置生成測(cè)試報(bào)告。具體地,測(cè)試結(jié)果分析單元56根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)檢測(cè)審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)名和用戶名是否正確,并根據(jù)日志中的記錄檢測(cè)審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)命令總數(shù)、單條命令還原的正確性、執(zhí)行結(jié)果的正確性、執(zhí)行順序、執(zhí)行時(shí)間是否正確。優(yōu)選地,上述裝置還可以包括配置單元,用于預(yù)先配置測(cè)試參數(shù),其中,測(cè)試參數(shù)包括數(shù)據(jù)庫(kù)連接參數(shù)、任務(wù)類型、配置文件位置、調(diào)度參數(shù)、日志、以及測(cè)試報(bào)告位置,數(shù)據(jù)庫(kù)連接參數(shù)包括數(shù)據(jù)庫(kù)服務(wù)器地址、服務(wù)器端口、數(shù)據(jù)庫(kù)實(shí)例名、用戶名、密碼;任務(wù)類型包括用于指示進(jìn)行普通結(jié)構(gòu)化查詢語(yǔ)言SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)、以及用于指示進(jìn)行包含綁定變量數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù);線程控制單元,用于并根據(jù)需要進(jìn)行測(cè)試的數(shù)據(jù)庫(kù)的類型,創(chuàng)建一個(gè)或多個(gè)線程,其中,線程用于控制相應(yīng)類型的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)任務(wù)執(zhí)行過(guò)程。綜上所述,首先需要配置測(cè)試參數(shù),例如,數(shù)據(jù)庫(kù)連接參數(shù)、任務(wù)類型、配置文件位置、調(diào)度參數(shù)、日志及測(cè)試報(bào)告位置等;讀取預(yù)設(shè)的數(shù)據(jù)庫(kù)連接參數(shù),連接相應(yīng)數(shù)據(jù)庫(kù),根據(jù)任務(wù)類型加載對(duì)應(yīng)配置文件,生成數(shù)據(jù)庫(kù)任務(wù);通過(guò)調(diào)度參數(shù)控制數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行速度和次數(shù),構(gòu)造不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù);在日志中記錄執(zhí)行過(guò)程,執(zhí)行完后根據(jù)參數(shù)自動(dòng)連接審計(jì)產(chǎn)品獲取審計(jì)結(jié)果,利用連接參數(shù)及日志檢測(cè)審計(jì)結(jié)果的正確性,生成測(cè)試報(bào)告。通過(guò)上述處理,本發(fā)明實(shí)施例具有以下有益效果1、本發(fā)明實(shí)施例采用客戶環(huán)境中常用方式連接數(shù)據(jù)庫(kù)服務(wù)器,產(chǎn)生數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù)。集成常見(jiàn)數(shù)據(jù)庫(kù)驅(qū)動(dòng),無(wú)需安裝客戶端即可方便完成數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的構(gòu)造,增強(qiáng)了易用性,節(jié)省了資源。2、本發(fā)明實(shí)施例采用動(dòng)態(tài)加載技術(shù),使支持的數(shù)據(jù)庫(kù)類型可配置,可以方便的通過(guò)修改配置文件、集成新的驅(qū)動(dòng),支持新的數(shù)據(jù)庫(kù)類型??梢酝瑫r(shí)進(jìn)行多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試。3、本發(fā)明實(shí)施例通過(guò)并發(fā)控制,可以同時(shí)創(chuàng)建多個(gè)線程,每個(gè)線程完成對(duì)一種數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)構(gòu)造過(guò)程的獨(dú)立控制,從而可以同時(shí)進(jìn)行多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試。4、本發(fā)明實(shí)施例通過(guò)參數(shù)控制協(xié)議數(shù)據(jù)生成的速率和數(shù)量,有效解決了手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題。5、數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)測(cè)試中通常需要關(guān)注兩種數(shù)據(jù)的測(cè)試,一種是執(zhí)行普通數(shù)據(jù)庫(kù)命令的協(xié)議數(shù)據(jù),這種協(xié)議數(shù)據(jù)可以通過(guò)執(zhí)行預(yù)置的SQL語(yǔ)句來(lái)生成;一種是包含綁定變量的協(xié)議數(shù)據(jù),這種協(xié)議數(shù)據(jù)的格式與前一種不同,數(shù)據(jù)包前面部分是包含變量的數(shù)據(jù)庫(kù)命令,緊隨其后的是變量的賦值,這種應(yīng)用在一些動(dòng)態(tài)網(wǎng)頁(yè)中比較常見(jiàn),這種協(xié)議數(shù)據(jù)可以通過(guò)執(zhí)行預(yù)置的預(yù)備語(yǔ)句配置文件來(lái)生成。6、待執(zhí)行的SQL語(yǔ)句和預(yù)備語(yǔ)句均采用獨(dú)立于調(diào)度過(guò)程的配置文件進(jìn)行配置??梢愿鶕?jù)不同的測(cè)試目標(biāo)、數(shù)據(jù)庫(kù)特征隨時(shí)編寫(xiě)不同的腳本或預(yù)備語(yǔ)句配置文件,通過(guò)不斷補(bǔ)充、完善可以完成對(duì)數(shù)據(jù)庫(kù)所有命令的全面測(cè)試。以下結(jié)合附圖,對(duì)本發(fā)明實(shí)施例的上述裝置進(jìn)行詳細(xì)的說(shuō)明。圖6是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試裝置的詳細(xì)結(jié)構(gòu)示意圖,如圖6所示,該裝置包括數(shù)據(jù)庫(kù)連接單元610,用于根據(jù)數(shù)據(jù)庫(kù)參數(shù)連接指定類型的數(shù)據(jù)庫(kù),建立數(shù)據(jù)庫(kù)連接,為執(zhí)行數(shù)據(jù)庫(kù)命令做準(zhǔn)備;數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元611,根據(jù)任務(wù)類型,按順序執(zhí)行SQL腳本中的數(shù)據(jù)庫(kù)命令,或者執(zhí)行預(yù)置的預(yù)備語(yǔ)句;任務(wù)調(diào)度單元614,根據(jù)調(diào)度參數(shù)的配置,按照設(shè)定的間隔和循環(huán)次數(shù),控制數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元執(zhí)行數(shù)據(jù)庫(kù)任務(wù),并可以隨時(shí)終止任務(wù)執(zhí)行或者在停止后重新開(kāi)始執(zhí)行任務(wù)。在執(zhí)行過(guò)程中會(huì)記錄執(zhí)行日志。測(cè)試結(jié)果分析單元617,獲取審計(jì)結(jié)果,根據(jù)連接參數(shù)和執(zhí)行日志分析審計(jì)結(jié)果的正確性,生成測(cè)試報(bào)告。具體的,上述數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元進(jìn)一步包括SQL腳本和預(yù)備語(yǔ)句配置文件解析子單元612和數(shù)據(jù)庫(kù)任務(wù)執(zhí)行子單元613。當(dāng)進(jìn)行普通數(shù)據(jù)庫(kù)命令審計(jì)測(cè)試時(shí),解析子單元612讀取SQL腳本文件,根據(jù)腳本格式逐批獲取SQL語(yǔ)句,生成數(shù)據(jù)庫(kù)命令發(fā)送給數(shù)據(jù)庫(kù)任務(wù)執(zhí)行子單元613。當(dāng)進(jìn)行包含綁定變量的數(shù)據(jù)庫(kù)命令審計(jì)測(cè)試時(shí),解析子單元612加載預(yù)備語(yǔ)句配置文件,解析文件內(nèi)容,逐條獲取文件中的記錄,生成普通數(shù)據(jù)庫(kù)命令或預(yù)備語(yǔ)句并賦值,發(fā)送給數(shù)據(jù)庫(kù)任務(wù)執(zhí)行子單元613。數(shù)據(jù)庫(kù)任務(wù)執(zhí)行子單元613,用于執(zhí)行收到的數(shù)據(jù)庫(kù)命令,并處理數(shù)據(jù)庫(kù)返回的命令執(zhí)行結(jié)果。該裝置中任務(wù)調(diào)度單元614包含任務(wù)調(diào)度子單元615和日志記錄子單元616。任務(wù)調(diào)度單元615用于調(diào)度任務(wù)執(zhí)行。日志記錄子單元616用于在調(diào)度過(guò)程中向日志文件輸出每條數(shù)據(jù)庫(kù)命令的執(zhí)行時(shí)間、執(zhí)行的命令、命令執(zhí)行結(jié)果、測(cè)試停止時(shí)循環(huán)的總次數(shù)、測(cè)試結(jié)束時(shí)間等信息,這些信息用于在執(zhí)行結(jié)束后驗(yàn)證數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品的審計(jì)結(jié)果。本發(fā)明提供的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試裝置,通過(guò)解析預(yù)編寫(xiě)的sql腳本或預(yù)備語(yǔ)句配置文件生成數(shù)據(jù)庫(kù)任務(wù),并對(duì)數(shù)據(jù)庫(kù)任務(wù)執(zhí)行速度進(jìn)行控制,產(chǎn)生數(shù)據(jù)庫(kù)協(xié)議測(cè)試數(shù)據(jù),可以同時(shí)進(jìn)行六種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試,有效解決了手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題。圖2是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法詳細(xì)處理的流程圖,如圖2所示,包括如下處理步驟S201,根據(jù)要測(cè)試的數(shù)據(jù)庫(kù)種類,動(dòng)態(tài)加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,讀取預(yù)先配置的數(shù)據(jù)庫(kù)參數(shù),利用這些參數(shù)構(gòu)造數(shù)據(jù)庫(kù)連接串,打開(kāi)數(shù)據(jù)庫(kù)連接。數(shù)據(jù)庫(kù)連接參數(shù)通常包括數(shù)據(jù)庫(kù)服務(wù)器地址、服務(wù)器端口、數(shù)據(jù)庫(kù)實(shí)例名(或服務(wù)名)、用戶名、密碼等。步驟S202,讀取任務(wù)類型參數(shù),該參數(shù)用于指定進(jìn)行普通sql腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試,或者進(jìn)行包含綁定變量的數(shù)據(jù)庫(kù)命令審計(jì)測(cè)試。如果選擇的是綁定變量測(cè)試,則需要從測(cè)試參數(shù)指定位置加載預(yù)備語(yǔ)句配置文件。通過(guò)預(yù)備語(yǔ)句配置文件可以生成兩種數(shù)據(jù)庫(kù)命令,一種是普通的數(shù)據(jù)庫(kù)命令,一種是包含綁定變量的預(yù)備語(yǔ)句。對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作前,需要先進(jìn)行一些初始化的操作,例如,創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表等,這些操作可以在數(shù)據(jù)庫(kù)中預(yù)先建好,也可以在配置文件中寫(xiě)好,每次執(zhí)行時(shí)自動(dòng)創(chuàng)建。預(yù)備語(yǔ)句配置文件中配置的普通數(shù)據(jù)庫(kù)命令主要是用來(lái)完成初始化操作,為執(zhí)行預(yù)備語(yǔ)句做準(zhǔn)備,是可選的配置。要?jiǎng)?chuàng)建并執(zhí)行一個(gè)預(yù)備語(yǔ)句,需要兩方面的信息1、創(chuàng)建預(yù)備語(yǔ)句的字符串;2、為各變量所賦的值,及類型。綜上所述,配置文件中應(yīng)具有如下特征及信息1、普通數(shù)據(jù)庫(kù)命令和預(yù)備語(yǔ)句的區(qū)別標(biāo)志;2、一條記錄的開(kāi)始和結(jié)束標(biāo)記,一條記錄或者可以生成一個(gè)普通數(shù)據(jù)庫(kù)命令,或者可以生成一個(gè)已經(jīng)被賦值的預(yù)備語(yǔ)句命令;3、創(chuàng)建預(yù)備語(yǔ)句的字符串;4、為預(yù)備語(yǔ)句中各變量所賦的值及類型。5、第4點(diǎn)中所賦的值與被賦值的預(yù)備語(yǔ)句應(yīng)該具有明確的對(duì)應(yīng)關(guān)系,即能明確說(shuō)明變量是為此預(yù)備語(yǔ)句賦值而不是為另一個(gè)預(yù)備語(yǔ)句賦值。在本步驟中,會(huì)逐條讀取配置文件中的記錄,生成數(shù)據(jù)庫(kù)命令并交給調(diào)度單元執(zhí)行。從本步驟中描述的預(yù)備語(yǔ)句配置文件的內(nèi)容可以看到預(yù)備語(yǔ)句配置文件也可以生成普通的數(shù)據(jù)庫(kù)命令,但由于預(yù)備語(yǔ)句配置文件格式復(fù)雜,對(duì)其進(jìn)行解析處理的過(guò)程也比較復(fù)雜,因此本發(fā)明實(shí)施例為構(gòu)造普通數(shù)據(jù)庫(kù)命令單獨(dú)設(shè)計(jì)了更簡(jiǎn)單的SQL腳本格式,以加快對(duì)普通數(shù)據(jù)庫(kù)命令的處理速度。如果選擇的不是綁定變量測(cè)試,則需要從測(cè)試參數(shù)指定位置加載SQL腳本。本發(fā)明實(shí)施例為SQL腳本規(guī)定了特定的格式和分割標(biāo)記,解析時(shí)通過(guò)識(shí)別該分隔符判斷SQL腳本中一批數(shù)據(jù)庫(kù)任務(wù)的開(kāi)始結(jié)束位置。在本步驟中,會(huì)逐批讀取腳本文件中的數(shù)據(jù)庫(kù)命令,發(fā)送到調(diào)度單元執(zhí)行。步驟S203,在獲得步驟S202中生成的數(shù)據(jù)庫(kù)命令或預(yù)備語(yǔ)句后,本步驟將執(zhí)行命令并處理命令的返回結(jié)果。具體地,根據(jù)測(cè)試參數(shù)中設(shè)定的執(zhí)行間隔時(shí)間,在處理完一批或一條命令后暫停一定的間隔時(shí)間,用于調(diào)整任務(wù)的執(zhí)行速度,從而控制數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的生成速率。間隔時(shí)間以毫秒計(jì)時(shí),當(dāng)設(shè)置為0時(shí)表示不設(shè)間隔連續(xù)執(zhí)行命令。在執(zhí)行過(guò)程中需要在日志中記錄數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行時(shí)間、執(zhí)行的內(nèi)容和執(zhí)行結(jié)果。執(zhí)行過(guò)程中設(shè)置計(jì)數(shù)器記錄已執(zhí)行命令的總數(shù)。執(zhí)行過(guò)程可以手動(dòng)停止,也可以重新開(kāi)始。執(zhí)行停止后,顯示本次測(cè)試執(zhí)行過(guò)的命令總數(shù)。S204,將數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)的審計(jì)結(jié)果和日志文件中記錄的數(shù)據(jù)庫(kù)命令執(zhí)行過(guò)程進(jìn)行自動(dòng)對(duì)比。可以從數(shù)據(jù)庫(kù)名、用戶名、數(shù)據(jù)庫(kù)命令總數(shù)、單條數(shù)據(jù)庫(kù)命令審計(jì)正確性、操作結(jié)果、執(zhí)行順序、執(zhí)行時(shí)間等方面核對(duì)審計(jì)系統(tǒng)審計(jì)結(jié)果的準(zhǔn)確性。步驟S202至步驟S204描述了一種數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)生成及數(shù)據(jù)庫(kù)審計(jì)測(cè)試的方法。通過(guò)并發(fā),可以同時(shí)創(chuàng)建多個(gè)線程,每個(gè)線程均可獨(dú)立完成步驟SlOl至步驟S204的功能,從而使本發(fā)明實(shí)施例可以同時(shí)完成多個(gè)或多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試。通過(guò)本發(fā)明實(shí)施例提供的方法,設(shè)置測(cè)試參數(shù),打開(kāi)數(shù)據(jù)庫(kù)連接,解析預(yù)編寫(xiě)的SQL腳本或預(yù)備語(yǔ)句配置文件生成數(shù)據(jù)庫(kù)任務(wù),并對(duì)數(shù)據(jù)庫(kù)任務(wù)執(zhí)行速度進(jìn)行控制,產(chǎn)生數(shù)據(jù)庫(kù)協(xié)議測(cè)試數(shù)據(jù),可以同時(shí)進(jìn)行多種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試,有效解決了手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題。下面以一優(yōu)選的實(shí)例來(lái)詳細(xì)闡述本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法的具體實(shí)現(xiàn)過(guò)程。本實(shí)例提供的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法是對(duì)數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品審計(jì)功能進(jìn)行測(cè)試的方法,通過(guò)參數(shù)連接數(shù)據(jù)庫(kù),加載指定的SQL腳本或預(yù)備語(yǔ)句配置文件,生成數(shù)據(jù)庫(kù)任務(wù),并根據(jù)參數(shù)控制數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行速度和次數(shù),以產(chǎn)生數(shù)據(jù)庫(kù)協(xié)議測(cè)試數(shù)據(jù),進(jìn)行數(shù)據(jù)庫(kù)審計(jì)測(cè)試,并根據(jù)數(shù)據(jù)庫(kù)執(zhí)行過(guò)程中記錄的日志對(duì)數(shù)據(jù)庫(kù)協(xié)議審計(jì)結(jié)果進(jìn)行驗(yàn)證,從而檢驗(yàn)審計(jì)結(jié)果的正確性。本實(shí)例支持對(duì)六種數(shù)據(jù)庫(kù)協(xié)議進(jìn)行審計(jì)測(cè)試,解決了在現(xiàn)有測(cè)試方法中手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題,可以節(jié)省資源提高測(cè)試效率。圖3是本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法實(shí)現(xiàn)過(guò)程的流程圖,如圖3所示,包括如下處理步驟S301,配置測(cè)試參數(shù),并根據(jù)進(jìn)行測(cè)試的數(shù)據(jù)庫(kù)類型,創(chuàng)建一個(gè)線程,用于控制該類型數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的生成過(guò)程。通過(guò)并發(fā)控制,本實(shí)例支持同時(shí)對(duì)多種數(shù)據(jù)庫(kù)協(xié)議進(jìn)行測(cè)試。步驟S302,根據(jù)測(cè)試參數(shù)中的數(shù)據(jù)庫(kù)連接參數(shù),打開(kāi)數(shù)據(jù)庫(kù)連接。例如,連接oracle數(shù)據(jù)庫(kù)需配置數(shù)據(jù)庫(kù)服務(wù)器地址、服務(wù)器端口、數(shù)據(jù)庫(kù)實(shí)例名、數(shù)據(jù)庫(kù)用戶名、數(shù)據(jù)庫(kù)用戶密碼。步驟S303,根據(jù)測(cè)試參數(shù)中的任務(wù)類型對(duì)測(cè)試過(guò)程進(jìn)行不同的配置。包含兩種選擇綁定變量測(cè)試和普通數(shù)據(jù)庫(kù)任務(wù)測(cè)試。如果配置的是綁定變量測(cè)試,則執(zhí)行步驟S304;如果配置的是普通數(shù)據(jù)庫(kù)任務(wù)測(cè)試,則執(zhí)行步驟S305。步驟S304,從指定位置加載并解析預(yù)備語(yǔ)句配置文件,讀取一條記錄,根據(jù)記錄的類型生成普通數(shù)據(jù)庫(kù)命令或預(yù)備語(yǔ)句命令,并執(zhí)行命令。同時(shí)需記錄命令執(zhí)行開(kāi)始時(shí)間、執(zhí)行的命令、執(zhí)行結(jié)果。逐條處理預(yù)備語(yǔ)句配置文件,直至文件末尾,完成對(duì)預(yù)備語(yǔ)句配置文件的一次處理過(guò)程。本實(shí)例中預(yù)備語(yǔ)句配置文件采用xml文件存儲(chǔ)。根據(jù)S202中對(duì)預(yù)備語(yǔ)句配置文件的特征描述,配置文件格式如下<preparedstatementTest>〈normalStatementsql=""></normalStatement><preparedstatement><commandprep=""><variablelocation="1"type=""value=""></Variable〉<variablelocation="2"type=""value=""></Variable〉〈/command></preparedstatement></preparedstatementTest>配置文件中包含2類子標(biāo)簽mormalStatement用于配置普通數(shù)據(jù)庫(kù)命令,它的SQL屬性是SQL語(yǔ)句內(nèi)容;ft·印aredstatement用于配置預(yù)備語(yǔ)句。其中Preparedstatement又包含兩種子標(biāo)簽,command用于配置預(yù)備語(yǔ)句內(nèi)容;variable用于給預(yù)備語(yǔ)句賦值,一個(gè)variable節(jié)點(diǎn)可以為預(yù)備語(yǔ)句賦一個(gè)變量值,賦值的位置、類型、值分別用variable的location、type、value屬性配置。一個(gè)配置文件只能包含一個(gè)preparedstatementTest,一個(gè)preparedstatementTest節(jié)點(diǎn)下可以包含若干normalStatement或Preparedstatement。一yIvPreparedstatement中^倉(cāng)泛^ll^"——fcommand,S^yIvvariable,variable由予頁(yè)句待賦值的變量個(gè)數(shù)決定。本實(shí)例中考慮到在循環(huán)執(zhí)行過(guò)程中會(huì)多次訪問(wèn)預(yù)備語(yǔ)句配置文件的內(nèi)容,而且綁定變量測(cè)試重點(diǎn)在于測(cè)試到所有變量類型,配置文件內(nèi)容不必包含過(guò)多語(yǔ)句,因此采用DOM解析預(yù)備語(yǔ)句配置文件。該方法會(huì)一次性讀入配置文件內(nèi)容,然后構(gòu)建一個(gè)駐留內(nèi)存的樹(shù)結(jié)構(gòu),以后對(duì)配置文件的訪問(wèn)通過(guò)訪問(wèn)內(nèi)存中的樹(shù)結(jié)構(gòu)來(lái)完成,加快處理效率。步驟S305,從指定位置加載SQL腳本,根據(jù)腳本格式和分割標(biāo)記提取一批數(shù)據(jù)庫(kù)命令,生成普通數(shù)據(jù)庫(kù)命令,并執(zhí)行命令,同時(shí)需記錄命令執(zhí)行開(kāi)始時(shí)間、執(zhí)行的命令、執(zhí)行結(jié)果。逐條處理SQL腳本文件,直至文件末尾,完成對(duì)SQL腳本文件的一次處理過(guò)程。本實(shí)施例中SQL腳本采用文本文件存儲(chǔ)。根據(jù)S202中對(duì)SQL腳本的特征描述,SQL腳本文件格式如下Sqlcommand1gosqlcommand2go......為了解析方便,該文件中批結(jié)束符“go”必須單行存儲(chǔ),所有SQL命令必須從一行開(kāi)頭開(kāi)始編寫(xiě),但可以分多行編寫(xiě)。S306,在日志中記錄對(duì)預(yù)備語(yǔ)句配置文件或SQL腳本的處理次數(shù)。S307,判斷S306中的處理次數(shù)是否達(dá)到測(cè)試參數(shù)中配置的總循環(huán)次數(shù),如果達(dá)到,轉(zhuǎn)步驟S308;如果未達(dá)到,轉(zhuǎn)步驟S303。S308,記錄日志執(zhí)行總條數(shù)和結(jié)束時(shí)間。S309,根據(jù)配置參數(shù)獲取審計(jì)產(chǎn)品的審計(jì)結(jié)果,例如,本實(shí)例中通過(guò)可配置的條件從審計(jì)產(chǎn)品的數(shù)據(jù)庫(kù)中查詢審計(jì)結(jié)果并將其保存。根據(jù)步驟S302中的數(shù)據(jù)庫(kù)名、用戶名等參數(shù)檢測(cè)審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)名和用戶名是否正確;根據(jù)S308步驟中記錄的執(zhí)行日志,從還原的數(shù)據(jù)庫(kù)命令總數(shù)、單條命令還原的正確性、執(zhí)行結(jié)果的正確性、執(zhí)行順序、執(zhí)行時(shí)間等方面檢測(cè)審計(jì)結(jié)果是否正確。根據(jù)檢測(cè)的結(jié)果產(chǎn)生測(cè)試報(bào)告,總體說(shuō)明數(shù)據(jù)庫(kù)審計(jì)的效果。下面通過(guò)一簡(jiǎn)單示例來(lái)具體說(shuō)明上述數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試的過(guò)程。例如,要完成對(duì)oracle數(shù)據(jù)庫(kù)審計(jì)測(cè)試,在測(cè)試開(kāi)始前首先配置以下測(cè)試參數(shù)DataBasetypeoracle據(jù)庫(kù)類型ServerAddress:192.168.73.88據(jù)庫(kù)地址ServerPort:1521據(jù)庫(kù)端口Instance:test據(jù)庫(kù)實(shí)例名User:system據(jù)庫(kù)用戶名Password:testoracle據(jù)庫(kù)密碼PreparedstatementTest:true#綁定變量測(cè)試PreparedstatementConfigFilePath:D:\pr印Config.xml#預(yù)備語(yǔ)句配置件位置LogfilePath:D:\test.log置ExecutionInteval:1000位毫秒Times:100#循環(huán)執(zhí)行次數(shù)#命令執(zhí)行間隔,單#執(zhí)行日志文件位接下來(lái)創(chuàng)建一個(gè)線程,用于控制oracle協(xié)議數(shù)據(jù)構(gòu)造過(guò)程。該線程根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)連接指定數(shù)據(jù)庫(kù)實(shí)例,打開(kāi)數(shù)據(jù)庫(kù)連接。然后,加載預(yù)備語(yǔ)句配置文件pr印Config.xml,解析并處理該文件。結(jié)合步驟S202中的配置文件的格式,在某一具體示例中,本實(shí)施例的預(yù)備語(yǔ)句配置關(guān)鍵部分具體實(shí)現(xiàn)為<preparedstatementTest>〈normalStatementsql="createtabletable1(column1varchar(20),column2int,column3smallint,column4bit,column5real)"></normalStatement><preparedstatement>〈commandprep="insertintotable1values(,,,,)"><variablelocation="1"type="String"value="test"></Variable〉<variablelocation="2"type="Integer"value="5"></Variable〉<variablelocation="3"type="Short"value="5"></Variable〉<variablelocation="4"type="Boolean"value="true"></Variable〉<variablelocation="5"type="Double"value="5.0"></Variable〉〈/command></preparedstatement>圖4是本發(fā)明實(shí)施例的對(duì)預(yù)備語(yǔ)句配置文件的解析過(guò)程的流程圖,如圖4所示,包括以下步驟S401,從指定位置加載預(yù)備語(yǔ)句,在本實(shí)例中,可以從D:\pr印Config.xml讀入配置文件,在內(nèi)存中構(gòu)建一個(gè)樹(shù)結(jié)構(gòu),該樹(shù)結(jié)構(gòu)的二級(jí)節(jié)點(diǎn)用于生成數(shù)據(jù)庫(kù)命令。S402,獲取樹(shù)結(jié)構(gòu)二級(jí)節(jié)點(diǎn)列表,從列表中讀取下一個(gè)記錄。</preparedstatementTest>S403,判斷當(dāng)前讀到的這個(gè)記錄是普通數(shù)據(jù)庫(kù)語(yǔ)句還是預(yù)備語(yǔ)句,如果是預(yù)備語(yǔ)句,轉(zhuǎn)步驟S404;如果是普通數(shù)據(jù)庫(kù)命令,轉(zhuǎn)步驟S405。在本實(shí)例中,配置文件中preparedstatement表示預(yù)備語(yǔ)句,normalStatement表示普通數(shù)據(jù)庫(kù)命令。S404,創(chuàng)建預(yù)備語(yǔ)句并為預(yù)備語(yǔ)句變量賦值。preparedstatement包含多個(gè)子標(biāo)簽,第一個(gè)標(biāo)簽command的pr印屬性是用于創(chuàng)建預(yù)備語(yǔ)句的參數(shù)值,其他的都是variable標(biāo)簽,用于為預(yù)備語(yǔ)句賦值。根據(jù)本例配置文件中的ft·印aredstatement標(biāo)簽,可以生成如下預(yù)備語(yǔ)句Stringcommand=“insertintotablelvalues(?,*,*,*,*)";//該變量值從preparedstatement的command子標(biāo)簽讀取Preparedstatementprep=con.prepareStatement(command);//倉(cāng)丨J建一個(gè)預(yù)備語(yǔ)句prep.setString(l,“test");//根據(jù)variable標(biāo)簽的位置、類型屬性為預(yù)備語(yǔ)句賦值prep.setlnt(2,5);prep.setShort(3,(short)5);prep.setBoolean(4,true);prep.setDouble(5,(double)5.0);S405,創(chuàng)建普通數(shù)據(jù)庫(kù)命令。根據(jù)normalStatement標(biāo)簽的SQL屬性創(chuàng)建普通數(shù)據(jù)庫(kù)命令。根據(jù)本例配置文件中的normalStatement標(biāo)簽,可以生成如下命令Stringcommand=“createtabletablel(columnlvarchar(20),column2int,column3smallint,column4bit,column5real)“;//該變量值從normalStatement標(biāo)簽讀取。S406,數(shù)據(jù)庫(kù)命令執(zhí)行前在日志文件中記錄時(shí)間。本實(shí)例是在D:\test.log中記錄當(dāng)前時(shí)間。S407,執(zhí)行數(shù)據(jù)庫(kù)命令,處理執(zhí)行結(jié)果,并將執(zhí)行的命令和結(jié)果記錄在日志文件中。S408,一條命令執(zhí)行完后暫定指定的間隔。本例中每條命令執(zhí)行后都會(huì)暫停1000ms。S409,判斷是否到達(dá)列表末尾,如果到達(dá),繼續(xù)步驟S306及后續(xù)處理;如果沒(méi)有到達(dá)末尾,轉(zhuǎn)步驟S402。對(duì)列表進(jìn)行完一次處理后,即完成一次執(zhí)行過(guò)程,在日志文件中記錄循環(huán)執(zhí)行次數(shù)。然后判斷是否達(dá)到設(shè)定的總次數(shù),本實(shí)例中設(shè)定的總次數(shù)是100。如果沒(méi)有達(dá)到總次數(shù),則返回步驟S402重新處理一次列表,直至達(dá)到100次;如果達(dá)到總次數(shù),則在日志中記錄執(zhí)行數(shù)據(jù)庫(kù)命令的總條數(shù)和當(dāng)前時(shí)間,結(jié)束本次測(cè)試。然后根據(jù)日志文件檢驗(yàn)數(shù)據(jù)庫(kù)審計(jì)產(chǎn)品的審計(jì)結(jié)果,生成測(cè)試報(bào)告。上例詳細(xì)說(shuō)明了包含綁定變量的數(shù)據(jù)庫(kù)審計(jì)測(cè)試過(guò)程,如果要進(jìn)行普通SQL語(yǔ)句的測(cè)試,只需在測(cè)試開(kāi)始前將參數(shù)ft·印aredstatementTest設(shè)置成false。普通SQL腳本存放在腳本文件中,對(duì)該文件的處理比較簡(jiǎn)單,按順序讀取腳本中的命令,生成普通數(shù)據(jù)庫(kù)命令并執(zhí)行。本實(shí)例中腳本文件的一部分配置如下CREATETABLEstudents(student—idNUMBER⑵,student—namestudent—classstudent_phonestudent_pointgoDESCRIBEstudentsgoSELECT*FROMstudentsgoINSERTINTOstudents(student—id,student—name,student—class,student_phone,student_point)VALUES(1,lMaik1,1,13811898383,89)go本實(shí)例中所有SQL命令均從行首開(kāi)始,單行存儲(chǔ)的go是批結(jié)束符。對(duì)該文件的處理過(guò)程如下步驟1、逐行獲取文件內(nèi)容,如果該行內(nèi)容不是“go”,拼接在字符串尾部,繼續(xù)讀下一行;如果是“go”,則一批結(jié)束,轉(zhuǎn)步驟2。步驟2、用第一步讀到的字符串創(chuàng)建數(shù)據(jù)庫(kù)命令;步驟3、日志中記錄時(shí)間,執(zhí)行數(shù)據(jù)庫(kù)命令,處理執(zhí)行結(jié)果,在日志中記錄字符串的內(nèi)容和執(zhí)行結(jié)果。步驟4、判斷文件是否結(jié)束。如未結(jié)束轉(zhuǎn)步驟1;如結(jié)束,轉(zhuǎn)步驟S306繼續(xù)后續(xù)處理。通過(guò)本發(fā)明實(shí)施例提供的數(shù)據(jù)庫(kù)協(xié)議審計(jì)集中測(cè)試方法,解析預(yù)編寫(xiě)的SQL腳本或預(yù)備語(yǔ)句配置文件生成數(shù)據(jù)庫(kù)任務(wù),并對(duì)數(shù)據(jù)庫(kù)任務(wù)執(zhí)行速度進(jìn)行控制,產(chǎn)生數(shù)據(jù)庫(kù)協(xié)議測(cè)試數(shù)據(jù),可以同時(shí)進(jìn)行六種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試,有效解決了手工反復(fù)構(gòu)造測(cè)試數(shù)據(jù)效率低,測(cè)試數(shù)據(jù)速率和數(shù)量不易控制的問(wèn)題。綜上所述,1、本發(fā)明實(shí)施例可以生成包含任意類型綁定變量的數(shù)據(jù)庫(kù)訪問(wèn)數(shù)據(jù),從而完成對(duì)包含綁定變量的數(shù)據(jù)庫(kù)數(shù)據(jù)的審計(jì)測(cè)試。綁定變量測(cè)試通過(guò)解析預(yù)先編寫(xiě)好的預(yù)備語(yǔ)句配置文件,生成包含綁定變量的數(shù)據(jù)協(xié)議數(shù)據(jù)來(lái)進(jìn)行測(cè)試。2、SQL腳本或預(yù)備語(yǔ)句配置文件獨(dú)立于調(diào)度過(guò)程,支持動(dòng)態(tài)擴(kuò)充,可以根據(jù)不同的測(cè)試目標(biāo)、數(shù)據(jù)庫(kù)特征隨時(shí)編寫(xiě)不同的腳本或預(yù)備語(yǔ)句配置文件。通過(guò)不斷補(bǔ)充、完善可以完成對(duì)數(shù)據(jù)庫(kù)所有命令的全面測(cè)試。3、通過(guò)預(yù)設(shè)的測(cè)試參數(shù)控制各類數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)生成的速率和總量。任務(wù)類型用于控制進(jìn)行普通SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試,或者進(jìn)行包含綁定變量的數(shù)據(jù)庫(kù)命令審計(jì)測(cè)試;執(zhí)行間隔和總數(shù)(總數(shù)是指執(zhí)行過(guò)程中設(shè)置計(jì)數(shù)器記錄已執(zhí)行命令的總數(shù))用于控制數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行速度和次數(shù),構(gòu)造不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù),進(jìn)行數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試。4、自動(dòng)獲取審計(jì)結(jié)果,將數(shù)據(jù)庫(kù)執(zhí)行過(guò)程中記錄的日志信息、連接信息與審計(jì)結(jié)果進(jìn)行對(duì)比,驗(yàn)證審計(jì)結(jié)果的正確性,按照預(yù)定格式生成測(cè)試報(bào)告。盡管為示例目的,已經(jīng)公開(kāi)了本發(fā)明的優(yōu)選實(shí)施例,本領(lǐng)域的技術(shù)人員將意識(shí)到各種改進(jìn)、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實(shí)施例。權(quán)利要求1.一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法,其特征在于,包括根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù),并根據(jù)預(yù)先設(shè)置的任務(wù)類型以及配置文件位置加載對(duì)應(yīng)的配置文件,生成數(shù)據(jù)庫(kù)任務(wù);執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù),并根據(jù)預(yù)先設(shè)置的調(diào)度參數(shù)控制執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行次數(shù)和執(zhí)行速率,獲取不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù);在預(yù)先設(shè)置的日志中記錄執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù)的過(guò)程,在執(zhí)行完成后自動(dòng)連接審計(jì)產(chǎn)品,并獲取所述審計(jì)產(chǎn)品針對(duì)所述數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的審計(jì)結(jié)果;根據(jù)所述數(shù)據(jù)庫(kù)連接參數(shù)以及所述日志中記錄的所述數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行過(guò)程檢測(cè)所述審計(jì)結(jié)果的正確性,并在預(yù)先指定的測(cè)試報(bào)告位置生成測(cè)試報(bào)告。2.如權(quán)利要求1所述的方法,其特征在于,在根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù)之前,所述方法還包括預(yù)先配置測(cè)試參數(shù),根據(jù)需要進(jìn)行測(cè)試的數(shù)據(jù)庫(kù)的類型,創(chuàng)建一個(gè)或多個(gè)線程,其中,所述線程用于控制相應(yīng)類型的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)任務(wù)執(zhí)行過(guò)程,其中,所述測(cè)試參數(shù)包括所述數(shù)據(jù)庫(kù)連接參數(shù)、所述任務(wù)類型、所述配置文件位置、所述調(diào)度參數(shù)、所述日志、以及所述測(cè)試報(bào)告位置,所述數(shù)據(jù)庫(kù)連接參數(shù)包括數(shù)據(jù)庫(kù)服務(wù)器地址、服務(wù)器端口、數(shù)據(jù)庫(kù)實(shí)例名、用戶名、密碼;所述任務(wù)類型包括用于指示進(jìn)行普通結(jié)構(gòu)化查詢語(yǔ)言SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)、以及用于指示進(jìn)行包含綁定變量數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)。3.如權(quán)利要求2所述的方法,其特征在于,在確定所述任務(wù)類型為指示進(jìn)行包含綁定變量數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)的情況下,執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù)具體包括步驟1,采用文檔對(duì)象模型DOM方式從指定的所述配置文件位置加載并解析預(yù)備語(yǔ)句配置文件;步驟2,讀取所述預(yù)備語(yǔ)句配置文件中的一條記錄,根據(jù)記錄的類型生成普通數(shù)據(jù)庫(kù)命令或者預(yù)備語(yǔ)句命令,并執(zhí)行所述普通數(shù)據(jù)庫(kù)命令或者所述預(yù)備語(yǔ)句命令;步驟3,重復(fù)執(zhí)行步驟2,直至所述預(yù)備語(yǔ)句配置文件的所有記錄全部執(zhí)行完畢。4.如權(quán)利要求2所述的方法,其特征在于,在確定所述任務(wù)類型為指示進(jìn)行普通SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)的情況下,執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù)具體包括步驟1,從指定的所述配置文件位置加載SQL腳本;步驟2,根據(jù)預(yù)先設(shè)置的腳本格式和分割標(biāo)記提取一批數(shù)據(jù)庫(kù)命令,生成普通數(shù)據(jù)庫(kù)命令,執(zhí)行所述普通數(shù)據(jù)庫(kù)命令;步驟3,重復(fù)執(zhí)行步驟2,直到所述SQL腳本的數(shù)據(jù)庫(kù)命令全部執(zhí)行完畢。5.如權(quán)利要求3或4所述的方法,其特征在于,所述在預(yù)先設(shè)置的日志中記錄執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù)的過(guò)程具體包括在所述日志中記錄對(duì)所述備語(yǔ)句配置文件或所述SQL腳本的處理次數(shù),執(zhí)行命令的開(kāi)始時(shí)間、執(zhí)行的命令、以及命令執(zhí)行結(jié)果,在確定所述處理次數(shù)達(dá)到所述調(diào)度參數(shù)中預(yù)先設(shè)置的處理次數(shù)的情況下,在所述日志中記錄執(zhí)行的總次數(shù)和結(jié)束時(shí)間。6.如權(quán)利要求5所述的方法,其特征在于,根據(jù)所述數(shù)據(jù)庫(kù)連接參數(shù)以及所述日志中記錄的所述數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行過(guò)程檢測(cè)所述審計(jì)結(jié)果的正確性具體包括根據(jù)所述數(shù)據(jù)庫(kù)連接參數(shù)檢測(cè)所述審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)名和用戶名是否正確,并根據(jù)所述日志中的記錄檢測(cè)所述審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)命令總數(shù)、單條命令還原的正確性、執(zhí)行結(jié)果的正確性、執(zhí)行順序、執(zhí)行時(shí)間是否正確。7.一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試裝置,其特征在于,包括數(shù)據(jù)庫(kù)連接單元,用于根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù),并根據(jù)預(yù)先設(shè)置的任務(wù)類型以及配置文件位置加載對(duì)應(yīng)的配置文件,生成數(shù)據(jù)庫(kù)任務(wù);數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元,用于執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù);任務(wù)調(diào)度單元,用于根據(jù)預(yù)先設(shè)置的調(diào)度參數(shù)控制執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行次數(shù)和執(zhí)行速率,獲取不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù),在預(yù)先設(shè)置的日志中記錄執(zhí)行所述數(shù)據(jù)庫(kù)任務(wù)的過(guò)程;測(cè)試結(jié)果分析單元,用于在執(zhí)行完成后自動(dòng)連接審計(jì)產(chǎn)品,并獲取所述審計(jì)產(chǎn)品針對(duì)所述數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的審計(jì)結(jié)果;根據(jù)所述數(shù)據(jù)庫(kù)連接參數(shù)以及所述日志中記錄的所述數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行過(guò)程檢測(cè)所述審計(jì)結(jié)果的正確性,并在預(yù)先指定的測(cè)試報(bào)告位置生成測(cè)試報(bào)告。8.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括配置單元,用于預(yù)先配置測(cè)試參數(shù),其中,所述測(cè)試參數(shù)包括所述數(shù)據(jù)庫(kù)連接參數(shù)、所述任務(wù)類型、所述配置文件位置、所述調(diào)度參數(shù)、所述日志、以及所述測(cè)試報(bào)告位置,所述數(shù)據(jù)庫(kù)連接參數(shù)包括數(shù)據(jù)庫(kù)服務(wù)器地址、服務(wù)器端口、數(shù)據(jù)庫(kù)實(shí)例名、用戶名、密碼;所述任務(wù)類型包括用于指示進(jìn)行普通結(jié)構(gòu)化查詢語(yǔ)言SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)、以及用于指示進(jìn)行包含綁定變量數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù);線程控制單元,用于并根據(jù)需要進(jìn)行測(cè)試的數(shù)據(jù)庫(kù)的類型,創(chuàng)建一個(gè)或多個(gè)線程,其中,所述線程用于控制相應(yīng)類型的數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)任務(wù)執(zhí)行過(guò)程。9.如權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)庫(kù)任務(wù)執(zhí)行單元具體用于在確定所述任務(wù)類型為指示進(jìn)行包含綁定變量數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)的情況下,采用文檔對(duì)象模型DOM方式從指定的所述配置文件位置加載并解析預(yù)備語(yǔ)句配置文件;讀取所述預(yù)備語(yǔ)句配置文件中的一條記錄,根據(jù)記錄的類型生成普通數(shù)據(jù)庫(kù)命令或者預(yù)備語(yǔ)句命令,并執(zhí)行所述普通數(shù)據(jù)庫(kù)命令或者所述預(yù)備語(yǔ)句命令,直至所述預(yù)備語(yǔ)句配置文件的所有記錄全部執(zhí)行完畢;在確定所述任務(wù)類型為指示進(jìn)行普通SQL腳本數(shù)據(jù)庫(kù)命令的審計(jì)測(cè)試任務(wù)的情況下,從指定的所述配置文件位置加載SQL腳本;根據(jù)預(yù)先設(shè)置的腳本格式和分割標(biāo)記提取一批數(shù)據(jù)庫(kù)命令,生成普通數(shù)據(jù)庫(kù)命令,執(zhí)行所述普通數(shù)據(jù)庫(kù)命令,直到所述SQL腳本的數(shù)據(jù)庫(kù)命令全部執(zhí)行完畢。10.如權(quán)利要求9所述的裝置,其特征在于,所述任務(wù)調(diào)度單元具體用于在所述日志中記錄對(duì)所述備語(yǔ)句配置文件或所述SQL腳本的處理次數(shù),執(zhí)行命令的開(kāi)始時(shí)間、執(zhí)行的命令、以及命令執(zhí)行結(jié)果,在確定所述處理次數(shù)達(dá)到所述調(diào)度參數(shù)中預(yù)先設(shè)置的處理次數(shù)的情況下,在所述日志中記錄執(zhí)行的總次數(shù)和結(jié)束時(shí)間;所述測(cè)試結(jié)果分析單元具體用于根據(jù)所述數(shù)據(jù)庫(kù)連接參數(shù)檢測(cè)所述審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)名和用戶名是否正確,并根據(jù)所述日志中的記錄檢測(cè)所述審計(jì)結(jié)果中還原的數(shù)據(jù)庫(kù)命令總數(shù)、單條命令還原的正確性、執(zhí)行結(jié)果的正確性、執(zhí)行順序、執(zhí)行時(shí)間是否正確。全文摘要本發(fā)明公開(kāi)了一種數(shù)據(jù)庫(kù)協(xié)議審計(jì)測(cè)試方法及裝置。該方法包括根據(jù)預(yù)先設(shè)置的數(shù)據(jù)庫(kù)連接參數(shù)連接相應(yīng)的數(shù)據(jù)庫(kù),并根據(jù)預(yù)先設(shè)置的任務(wù)類型以及配置文件位置加載對(duì)應(yīng)的配置文件,生成數(shù)據(jù)庫(kù)任務(wù);執(zhí)行數(shù)據(jù)庫(kù)任務(wù),并根據(jù)預(yù)先設(shè)置的調(diào)度參數(shù)控制執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行次數(shù)和執(zhí)行速率,獲取不同速率和數(shù)量的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù);在日志中記錄執(zhí)行數(shù)據(jù)庫(kù)任務(wù)的過(guò)程,在執(zhí)行完成后自動(dòng)連接審計(jì)產(chǎn)品,并獲取審計(jì)產(chǎn)品針對(duì)所產(chǎn)生的數(shù)據(jù)庫(kù)協(xié)議數(shù)據(jù)的審計(jì)結(jié)果;根據(jù)數(shù)據(jù)庫(kù)連接參數(shù)以及日志中記錄的數(shù)據(jù)庫(kù)任務(wù)的執(zhí)行過(guò)程檢測(cè)審計(jì)結(jié)果的正確性,并在預(yù)先指定的測(cè)試報(bào)告位置生成測(cè)試報(bào)告。文檔編號(hào)G06F11/36GK102521354SQ201110414390公開(kāi)日2012年6月27日申請(qǐng)日期2011年12月13日優(yōu)先權(quán)日2011年12月13日發(fā)明者張曉燕申請(qǐng)人:北京天融信科技有限公司