两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

擴(kuò)展測試數(shù)據(jù)的方法及設(shè)備的制作方法

文檔序號(hào):6506658閱讀:223來源:國知局
擴(kuò)展測試數(shù)據(jù)的方法及設(shè)備的制作方法
【專利摘要】本發(fā)明公開了一種用于擴(kuò)展測試數(shù)據(jù)的方法及設(shè)備,用于根據(jù)樣本測試數(shù)據(jù)擴(kuò)展出新的測試數(shù)據(jù)。所述方法包括:獲取用查詢語句以及期望查詢結(jié)果所表示的測試數(shù)據(jù)需求;在樣本測試數(shù)據(jù)上執(zhí)行所述查詢語句以獲取實(shí)際查詢結(jié)果,同時(shí)記錄執(zhí)行所述查詢語句時(shí)各個(gè)查詢子操作的中間結(jié)果;通過比較所述期望查詢結(jié)果以及所述實(shí)際查詢結(jié)果確定出差別;按照與所述查詢語句相反的執(zhí)行順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作,在所述各個(gè)數(shù)據(jù)生成子操作中根據(jù)所述差別、所述中間結(jié)果以及與所述樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)所述樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展,其中,至少一個(gè)所述數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式。
【專利說明】擴(kuò)展測試數(shù)據(jù)的方法及設(shè)備

【技術(shù)領(lǐng)域】
[0001]本發(fā)明是涉及測試數(shù)據(jù)的生成,更具體而言,涉及一種根據(jù)樣本測試數(shù)據(jù)生成新的測試數(shù)據(jù)的方法和設(shè)備。

【背景技術(shù)】
[0002]目前已經(jīng)進(jìn)入大數(shù)據(jù)時(shí)代,交通、電力等各個(gè)行業(yè)都存在著大量數(shù)據(jù),圍繞這些行業(yè)數(shù)據(jù)開發(fā)出越來越多的應(yīng)用程序。在開發(fā)過程中,需要大量的測試數(shù)據(jù)對(duì)應(yīng)用程序進(jìn)行功能測試。但實(shí)踐中,用戶往往只能提供少量實(shí)際的樣本數(shù)據(jù),經(jīng)常要忍受缺乏實(shí)際數(shù)據(jù)的痛苦,這就需要在已有的樣本數(shù)據(jù)基礎(chǔ)上生成更多的測試數(shù)據(jù),以滿足功能測試的需求。
[0003]現(xiàn)有的測試數(shù)據(jù)生成方式簡單,一般是根據(jù)取值范圍、數(shù)據(jù)類型等簡單要求隨機(jī)取值,但這只能考慮到數(shù)據(jù)的分布均勻、覆蓋全面等因素,并不能反映出真實(shí)物理數(shù)據(jù)的本身的復(fù)雜關(guān)聯(lián)或模式。以包括員工號(hào)和年齡這兩個(gè)字段的測試數(shù)據(jù)為例,如員工號(hào)需為唯一整型值,年齡需為20-60之間的整型值,在生成1000條記錄時(shí),員工號(hào)可在1-1000的區(qū)間上,年齡可在20-60的區(qū)間上隨機(jī)生成。然而,這樣的數(shù)據(jù)生成方法不支持具有復(fù)雜模式或關(guān)聯(lián)性的數(shù)據(jù)的生成,如果對(duì)符合一定模式的數(shù)據(jù)也用隨機(jī)方式生成新的測試數(shù)據(jù),就會(huì)使得新生成的測試數(shù)據(jù)脫離實(shí)際從而無法用于應(yīng)用程序的測試。
[0004]綜上所述,現(xiàn)有測試數(shù)據(jù)生成方案并未考慮數(shù)據(jù)的內(nèi)在聯(lián)系,不能反映數(shù)據(jù)本身的關(guān)聯(lián)或模式,需要一種改進(jìn)了的測試數(shù)據(jù)生成方案。


【發(fā)明內(nèi)容】

[0005]根據(jù)本發(fā)明的第一個(gè)方面,提供了一種用于擴(kuò)展測試數(shù)據(jù)的方法,用于根據(jù)樣本測試數(shù)據(jù)擴(kuò)展出新的測試數(shù)據(jù),該方法包括:獲取用查詢語句以及期望查詢結(jié)果所表示的測試數(shù)據(jù)需求;在樣本測試數(shù)據(jù)上執(zhí)行所述查詢語句以獲取實(shí)際查詢結(jié)果,同時(shí)記錄執(zhí)行所述查詢語句時(shí)各個(gè)查詢子操作的中間結(jié)果;通過比較所述期望查詢結(jié)果以及所述實(shí)際查詢結(jié)果確定出差別;按照與所述查詢語句相反的執(zhí)行順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作,在所述各個(gè)數(shù)據(jù)生成子操作中根據(jù)所述差別、所述中間結(jié)果以及與所述樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)所述樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展,其中,至少一個(gè)所述數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式。
[0006]根據(jù)本發(fā)明第二個(gè)方面,還提供了一種用于擴(kuò)展測試數(shù)據(jù)的設(shè)備,該設(shè)備包括:獲取模塊,配置為獲取用查詢語句以及期望查詢結(jié)果所表示的測試數(shù)據(jù)需求;查詢模塊,配置為在樣本測試數(shù)據(jù)上執(zhí)行所述查詢語句以獲取實(shí)際查詢結(jié)果,同時(shí)記錄執(zhí)行所述查詢語句時(shí)各個(gè)查詢子操作的中間結(jié)果;比較模塊,配置為通過比較所述期望查詢結(jié)果以及所述實(shí)際查詢結(jié)果確定出差別;數(shù)據(jù)生成模塊,配置為按照與所述查詢語句相反的執(zhí)行順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作,在所述各個(gè)數(shù)據(jù)生成子操作中根據(jù)所述差別、所述中間結(jié)果以及與所述樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)所述樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展,其中,至少一個(gè)所述數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式。
[0007]采用本發(fā)明的方法和裝置,通過樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展,由于至少一個(gè)數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式,使得生成的新測試數(shù)據(jù)也能夠符合樣本數(shù)據(jù)的某些特定模式。

【專利附圖】

【附圖說明】
[0008]通過結(jié)合附圖對(duì)本公開示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。
[0009]圖1示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖;
[0010]圖2示出根據(jù)本發(fā)明一個(gè)實(shí)施例的測試數(shù)據(jù)擴(kuò)展方法流程圖;
[0011]圖3示出了本申請的技術(shù)方案在測試流程中的位置示意圖;
[0012]圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的查詢語句以及期望查詢結(jié)果示意圖;
[0013]圖5示出根據(jù)本發(fā)明一個(gè)實(shí)施例的查詢語句執(zhí)行以及數(shù)據(jù)生成流程示意圖;
[0014]圖6示出根據(jù)本發(fā)明一個(gè)實(shí)施例的測試數(shù)據(jù)擴(kuò)展的設(shè)備示意圖。

【具體實(shí)施方式】
[0015]下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0016]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0017]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0018]計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0019]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0020]可以以一種或多種程序設(shè)計(jì)語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如”C”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0021]下面將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序指令通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0022]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruct1nmeans)的制造品(manufacture)。
[0023]也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0024]圖1示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。
[0025]如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。
[0026]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
[0027]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
[0028]系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM)30和/或高速緩存存儲(chǔ)器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34可以用于讀寫不可移動(dòng)的、非易失性磁介質(zhì)(圖3未顯示,通常稱為“硬盤驅(qū)動(dòng)器”)。盡管圖1中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
[0029]具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
[0030]計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備14 (例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口 22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
[0031]現(xiàn)在參看圖2,其示出根據(jù)本發(fā)明一個(gè)實(shí)施例的用于擴(kuò)展測試數(shù)據(jù)的方法流程圖,可對(duì)具有特定模式的樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展以生成新的測試數(shù)據(jù)。如圖2所示,該方法包括如下步驟:
[0032]在步驟201中,獲取用查詢語句以及期望查詢結(jié)果所表示的測試數(shù)據(jù)需求。
[0033]現(xiàn)結(jié)合圖3對(duì)該步驟進(jìn)行說明,圖3示出了本申請的技術(shù)方案在測試流程中的位置。如圖3所示,功能測試用例301是根據(jù)測試需求或者軟件驗(yàn)收標(biāo)準(zhǔn)等資料設(shè)計(jì)出的具體測試流程,通常是為某個(gè)程序功能編制的一組測試輸入、執(zhí)行條件以及預(yù)期結(jié)果。進(jìn)而,測試工程師通過分析功能測試用例確定測試數(shù)據(jù)需求,即功能測試用例對(duì)測試數(shù)據(jù)的具體要求。例如,在對(duì)司機(jī)排名功能進(jìn)行測試時(shí),為了在排名時(shí)考慮到水平不同的司機(jī),可在測試數(shù)據(jù)需求中可以要求提供兩個(gè)司機(jī)在2012年6月份的數(shù)據(jù)記錄,并且要求第二個(gè)司機(jī)的油耗比第一個(gè)司機(jī)的油耗低25%。實(shí)際上,如何根據(jù)功能測試用例確定具體的測試數(shù)據(jù)需求,這屬于現(xiàn)有技術(shù)的范疇,在此不對(duì)其進(jìn)行過多的描述。
[0034]步驟201的獨(dú)特之處在于,用計(jì)算機(jī)可讀的查詢語句以及期望查詢結(jié)果表示測試數(shù)據(jù)需求。測試數(shù)據(jù)需求是測試數(shù)據(jù)在特定的邏輯關(guān)系下應(yīng)具備的特性。在這里,查詢語句用來表示前述特定的邏輯關(guān)系,期望的查詢結(jié)果用來表示前述應(yīng)具備的特性。查詢語句可以用任何編程語言表示,在一個(gè)實(shí)施例中,是采用SQL語句,除此之外,本領(lǐng)域技術(shù)人員可以采用其它計(jì)算機(jī)可讀方式表示查詢語句。在另一個(gè)實(shí)施例中,可將盡量多的需求邏輯寫入查詢語句中,而將簡單的數(shù)據(jù)特性用期望查詢結(jié)果來表示,這樣就會(huì)進(jìn)一步提高生成測試數(shù)據(jù)需求的效率。
[0035]圖4示出的是查詢語句以及期望查詢結(jié)果的一個(gè)示例,框403中示出的是用SQL語句所描述的查詢語句,框405中示出的期望查詢結(jié)果的一個(gè)示例。期望查詢結(jié)果通常是一張表單,當(dāng)設(shè)定了查詢語句,期望查詢結(jié)果的表單中包括哪些字段就已經(jīng)確定了,例如,根據(jù)圖4中框403中的查詢語句就可以確定出框405中期望查詢結(jié)果的表單包括driver_ID, fuelconsu兩個(gè)字段。進(jìn)而,還需要對(duì)期望查詢結(jié)果的表單內(nèi)容進(jìn)行定制,例如,每條記錄的各個(gè)字段的取值,記錄條數(shù)的取值。期望查詢結(jié)果可以是確定的,也可以是模糊的,在圖4所示的例子中,期望查詢結(jié)果已經(jīng)確定到具體字段的數(shù)值,而在另一個(gè)實(shí)施例中,期望查詢結(jié)果可以是條目要求,例如,要求不少于5條。
[0036]在另一個(gè)實(shí)施例中,查詢語句還可以是一個(gè)或一組程序,期望查詢結(jié)果可以體現(xiàn)為程序的輸入數(shù)據(jù)或者程序運(yùn)行的配置文件。程序的輸出結(jié)果則為后續(xù)步驟中的比較實(shí)際查詢結(jié)果與期望查詢結(jié)果所獲得的差別。
[0037]樣本測試數(shù)據(jù)是來自實(shí)際應(yīng)用場景的真實(shí)數(shù)據(jù),通常被視為一組同構(gòu)的數(shù)據(jù)記錄,每條記錄包括多個(gè)字段。例如,車輛軌跡由一系列的坐標(biāo)點(diǎn)組成,每個(gè)坐標(biāo)點(diǎn)為一條記錄,每個(gè)記錄包括時(shí)間,經(jīng)度,緯度,速度,航向等字段。樣本測試數(shù)據(jù)可以數(shù)據(jù)表的方式存儲(chǔ),也可用文本等非數(shù)據(jù)庫形式的結(jié)構(gòu)化數(shù)據(jù),樣本測試數(shù)據(jù)如果是非結(jié)構(gòu)化的數(shù)據(jù),還需將其處理為結(jié)構(gòu)化的數(shù)據(jù)。
[0038]返回圖2所示的方法流程,在步驟202中,在樣本測試數(shù)據(jù)上執(zhí)行所述查詢語句以獲取實(shí)際查詢結(jié)果,同時(shí)記錄執(zhí)行所述查詢語句時(shí)各個(gè)查詢子操作的中間結(jié)果。
[0039]通過查詢引擎在樣本測試數(shù)據(jù)上執(zhí)行該查詢語句并輸出實(shí)際查詢結(jié)果,當(dāng)查詢語句是SQL語句時(shí),查詢引擎可以是任何現(xiàn)有的SQL處理引擎。接下來,參看圖4的實(shí)施例,405示出的就是在包括位置表單(locat1n)以及司機(jī)表單(driver)的樣本測試數(shù)據(jù)上執(zhí)行403所示的查詢語句后所生成的實(shí)際查詢結(jié)果。圖4還分別示出了位置(locat1n)表單401、以及,司機(jī)(driver)表單402中所包括的字段。
[0040]查詢引擎在執(zhí)行查詢語句時(shí)通常會(huì)將其分解為一系列基本的子操作,例如關(guān)系代數(shù)中的選擇(select)、投影(project)、連接(join)等操作以及數(shù)據(jù)庫查詢語言中廣泛應(yīng)用的聚合(aggregate)函數(shù),基本上所有的查詢引擎在執(zhí)行查詢語句時(shí)都會(huì)劃分為這幾個(gè)基本的子操作,然后按照一定的順序執(zhí)行這些子操作,不同的引擎的執(zhí)行順序可能會(huì)不一致。中間結(jié)果是在執(zhí)行一個(gè)查詢時(shí)每個(gè)查詢子操作的輸入所對(duì)應(yīng)的輸出結(jié)果。本領(lǐng)域技術(shù)人員可采用任何現(xiàn)有的方式對(duì)其進(jìn)行記錄,例如,采用數(shù)據(jù)表的形式。為了記錄中間結(jié)果,可在現(xiàn)有的處理引擎上增加代碼,使其能夠記錄該查詢語句執(zhí)行過程中的中間結(jié)果,以便用于后續(xù)步驟。另參看圖5所示出的查詢語句執(zhí)行以及數(shù)據(jù)生成過程的一個(gè)實(shí)施例,如圖5所示,右側(cè)粗箭頭示出了圖4中框403中查詢語句的執(zhí)行過程,其中依次包括連接子操作“ Θ locat1n.vehicle_ID=driver.vehicle_ID”,選擇子操作“ σ start_time〈=time_stampand end_time>=time_stamp”,投影子操作“ π driver_ID, fuel_consumpt1n”,以及聚合子操作“ Y driver_ID (fuel_consumpt1n) ”。
[0041]在圖2所示的步驟203中,通過比較所述期望查詢結(jié)果以及所述實(shí)際查詢結(jié)果確定出差別。如不存在差別,則說明樣本測試數(shù)據(jù)能夠滿足測試數(shù)據(jù)需求,無需進(jìn)行后續(xù)樣本測試數(shù)據(jù)擴(kuò)展的步驟。如存在差別,則說明樣本測試數(shù)據(jù)不能滿足測試數(shù)據(jù)需求,需要對(duì)樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展以生成符合要求的新的測試數(shù)據(jù)。
[0042]實(shí)際查詢結(jié)果與期望查詢結(jié)果具有相同的表單結(jié)構(gòu),因此,在進(jìn)行比較時(shí),對(duì)于期望查詢結(jié)果中的每一條記錄,如果在實(shí)際查詢結(jié)果中沒有與之相匹配的記錄,則將該條記錄作為差別中的一條記錄,因此,差別中的每一條記錄就代表實(shí)際查詢結(jié)果中缺失的記錄,需要擴(kuò)展測試數(shù)據(jù),使得在擴(kuò)展后的測試數(shù)據(jù)上執(zhí)行查詢語句能夠得到差別中的所有記錄。其中,實(shí)際查詢結(jié)果中的一條記錄和期望查詢結(jié)果中的一條記錄相匹配指的是兩條記錄的各個(gè)字段的值完全一樣。參看圖4的實(shí)施例,404中虛線框所包圍的部分就是經(jīng)過比較后所確定的差別部分。
[0043]在步驟205中,按照與所述查詢語句相反的執(zhí)行順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作,在所述各個(gè)數(shù)據(jù)生成子操作中根據(jù)所述差別、所述中間結(jié)果以及與所述樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)所述樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展,至少一個(gè)字段的數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式。
[0044]在生成新的測試數(shù)據(jù)時(shí),通過前述步驟所比較出的差別表示實(shí)際查詢結(jié)果所缺失的記錄,因此,在步驟205中需要以差別中的每條缺失的記錄為線索,按照與查詢語句執(zhí)行順序的相反順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作。
[0045]在每個(gè)數(shù)據(jù)生成子操作中,都具有基于前述差別所確定出的當(dāng)前差別,然后,根據(jù)該當(dāng)前差別、已經(jīng)記錄的各個(gè)查詢子操作的中間結(jié)果、以及各字段的數(shù)據(jù)生成約束條件在每個(gè)數(shù)據(jù)生成子操作中執(zhí)行擴(kuò)展操作,最終就可以生成新的測試數(shù)據(jù),使得在新生成的測試數(shù)據(jù)上執(zhí)行查詢語句能夠得到期望的查詢結(jié)果。
[0046]若當(dāng)前數(shù)據(jù)生成子操作對(duì)應(yīng)于所述查詢語句的最后一步查詢子操作,將所述差別作為當(dāng)前差別與所述最后一步查詢子操作的查詢結(jié)果一起作為當(dāng)前數(shù)據(jù)生成子操作的輸入。實(shí)際上,每個(gè)數(shù)據(jù)生成子操作都可以排在第一個(gè)(對(duì)應(yīng)于所述查詢語句的最后一步查詢子操作),接下來,分別對(duì)其進(jìn)行描述。
[0047]如果第一個(gè)數(shù)據(jù)生成子操作是聚合生成子操作,則,對(duì)于所述當(dāng)前差別中的每一條記錄:根據(jù)與所述聚合生成子操作相對(duì)應(yīng)的聚合查詢子操作的中間結(jié)果,在所述聚合查詢子操作的輸出結(jié)果中為當(dāng)前差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄,根據(jù)所述聚合查詢子操作的中間結(jié)果,在所述聚合查詢子操作的輸入數(shù)據(jù)中確定所述當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄,復(fù)制所述當(dāng)前對(duì)應(yīng)記錄并根據(jù)所述當(dāng)前對(duì)應(yīng)記錄中各字段的數(shù)據(jù)生成約束條件,以及聚合生成子操作類型對(duì)所述復(fù)制的當(dāng)前對(duì)應(yīng)記錄進(jìn)行修改;將所有修改后的復(fù)制的當(dāng)前對(duì)應(yīng)記錄與所述聚合查詢子操作的輸入數(shù)據(jù)一起作為所述聚合生成子操作的輸出,其中,該聚合生成子操作的輸出作為下一步數(shù)據(jù)生成子操作的輸入,該所有修改后的復(fù)制的當(dāng)前對(duì)應(yīng)記錄作為所述下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別,該聚合生成子操作中得到的當(dāng)前對(duì)應(yīng)記錄作為下一步數(shù)據(jù)生成子操作中的當(dāng)前關(guān)聯(lián)記錄。
[0048]如果第一個(gè)數(shù)據(jù)生成子操作是投影生成子操作,則,對(duì)于所述當(dāng)前差別中的每一條記錄:根據(jù)與所述投影生成子操作相對(duì)應(yīng)的投影查詢子操作的中間結(jié)果,在所述投影查詢子操作的輸出結(jié)果中為當(dāng)前差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄,根據(jù)所述投影查詢子操作的中間結(jié)果,在所述投影查詢子操作的輸入數(shù)據(jù)中確定所述當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄,根據(jù)所述當(dāng)前對(duì)應(yīng)記錄補(bǔ)齊當(dāng)前差別中該條記錄中缺少的字段,并根據(jù)各字段的數(shù)據(jù)生成約束條件對(duì)所述補(bǔ)齊后的記錄進(jìn)行修改;將所有補(bǔ)齊并修改后的記錄與所述投影查詢子操作的輸入數(shù)據(jù)數(shù)據(jù)一起作為所述投影生成子操作的輸出,其中,該投影生成子操作的輸出成為下一步數(shù)據(jù)生成子操作的輸入,該所有補(bǔ)齊并修改后的記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別,該當(dāng)前投影生成子操作中得到當(dāng)前對(duì)應(yīng)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前關(guān)聯(lián)記錄。
[0049]如第一個(gè)數(shù)據(jù)生成子操作是選擇生成子操作,則,根據(jù)與所述選擇生成子操作相對(duì)應(yīng)的選擇查詢子操作的中間結(jié)果,在所述選擇查詢子操作的輸出結(jié)果中為當(dāng)前差別中的記錄確定當(dāng)前關(guān)聯(lián)記錄;把所述選擇生成子操作的輸入直接作為所述選擇生成子操作的輸出,該輸出成為下一步數(shù)據(jù)生成子操作的輸入,并且,所述選擇生成子操作的輸入中的當(dāng)前差別和所述當(dāng)前關(guān)聯(lián)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄。
[0050]如第一個(gè)數(shù)據(jù)生成子操作是連接生成子操作,則,根據(jù)與連接生成子操作相對(duì)應(yīng)的連接查詢子操作的中間結(jié)果,在所述連接查詢子操作的輸出結(jié)果中為當(dāng)前差別中的記錄確定當(dāng)前關(guān)聯(lián)記錄;對(duì)所述連接生成子操作的輸入執(zhí)行所述連接子操作的反操作生成所述連接生成子操作的輸出,該輸出成為下一步數(shù)據(jù)生成子操作的輸入,并且,所述連接生成子操作的輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄。
[0051]每個(gè)字段都有相應(yīng)的數(shù)據(jù)生成約束條件,這意味著對(duì)于不同的類型的數(shù)據(jù),在進(jìn)行數(shù)據(jù)擴(kuò)展時(shí),操作約束是不同的。為了能夠考慮測試數(shù)據(jù)的內(nèi)在聯(lián)系,需要至少一個(gè)數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式。接下來,.以一個(gè)實(shí)施例進(jìn)行更加詳細(xì)的說明,該實(shí)施例中包括A、B、C三類數(shù)據(jù):
[0052]其中,A類型的數(shù)據(jù)字段或者A類型數(shù)據(jù)字段之間存在復(fù)雜的強(qiáng)耦合關(guān)系,例如是很強(qiáng)的時(shí)空關(guān)系。由于字段之間耦合緊密,該類數(shù)據(jù)字段的數(shù)據(jù)生成具有較小的自由度,對(duì)于該類型數(shù)據(jù)的數(shù)據(jù)生成約束條件可包括:塊復(fù)制、塊連接,數(shù)據(jù)縮放、時(shí)移等能夠反映A類型數(shù)據(jù)強(qiáng)耦合關(guān)系的操作。例如,對(duì)于車輛軌跡數(shù)據(jù)來說,經(jīng)度、緯度,速度,方向,里程等字段具有強(qiáng)的時(shí)空關(guān)聯(lián)性,可以在一個(gè)數(shù)據(jù)約束條件中設(shè)定對(duì)這五個(gè)字段的數(shù)據(jù)只能通過塊復(fù)制操作才能保證這些字段之間時(shí)空關(guān)聯(lián)性。
[0053]其中,B類型的數(shù)據(jù)字段,或者B類型的數(shù)據(jù)字段之間,或者同A類型的字段之間具有簡單的耦合關(guān)系,例如是稍弱的時(shí)空關(guān)聯(lián)性。由于耦合關(guān)系比較簡單,所以這樣的偶合關(guān)系可以被建模并加入數(shù)據(jù)生成算法,從而使該類字段的數(shù)據(jù)生成具備較大的靈活性。對(duì)于該類型數(shù)據(jù)的數(shù)據(jù)生成約束條件可包括:數(shù)據(jù)值的擴(kuò)大或減少。例如,總油耗(fuelconsumpt1n)具有較弱的時(shí)空關(guān)聯(lián)性,總油耗隨著時(shí)間的增加只能是遞增的,因此,對(duì)油耗允許的操作可以是擴(kuò)大操作。
[0054]其中,屬于C類型的數(shù)據(jù)字段同其他字段之間沒有相關(guān)性,或相關(guān)性可以被忽略,例如是不具有任何時(shí)空關(guān)聯(lián)性。因此,對(duì)于該類型數(shù)據(jù)的數(shù)據(jù)生成約束條件可以最為靈活,在數(shù)據(jù)擴(kuò)展時(shí)對(duì)于該類字段的數(shù)據(jù)的允許任意賦值。例如,司機(jī)識(shí)別信息,交通工具識(shí)別碼等,可以按照現(xiàn)有技術(shù)的方式隨機(jī)生成。
[0055]在生成新的數(shù)據(jù)時(shí),對(duì)于耦合關(guān)系較弱的數(shù)據(jù)字段當(dāng)然可以執(zhí)行用于耦合關(guān)系較強(qiáng)數(shù)據(jù)字段的數(shù)據(jù)生成約束條件,反之則不可以。
[0056]上述對(duì)字段的分類只是一種示例,最終的目的是為每個(gè)或每組字段綁定一個(gè)生成新數(shù)據(jù)時(shí)可以實(shí)施的操作集合,即數(shù)據(jù)生成約束條件,在本申請所公開的信息的基礎(chǔ)上,本領(lǐng)域技術(shù)人員容易想到其它分類方式。
[0057]接下來,結(jié)合圖5對(duì)圖2中步驟204中的按照與所述查詢語句執(zhí)行順序的相反順序生成新的測試數(shù)據(jù)進(jìn)行說明。
[0058]正向查詢操作是在樣本測試數(shù)據(jù)上執(zhí)行查詢語句并獲取實(shí)際查詢結(jié)果的過程,而反向生成操作是按照與正向查詢操作相反的順序生成測試數(shù)據(jù)的過程。在本申請中,將反向生成操作中的子操作稱為當(dāng)前子操作,每個(gè)當(dāng)前子操作都有一個(gè)相對(duì)應(yīng)的查詢子操作。
[0059]繼續(xù)參看圖5所示的實(shí)施例,左側(cè)粗箭頭示出的查詢操作從下至上依次包括連接子操作Θ、選擇子操作σ、投影子操作π,以及聚合子操作Y。右側(cè)細(xì)箭頭示出了反向的數(shù)據(jù)生成操作的過程,其中,每個(gè)數(shù)據(jù)生成子操作都具有一個(gè)對(duì)應(yīng)的查詢子操作。需要說明的是,圖5按照最為常見的順序進(jìn)行舉例說明,實(shí)際上,可以采用其它順序,或者只采用其中的一個(gè)或多個(gè)子操作,這都是本領(lǐng)域技術(shù)人員在本申請公開的信息基礎(chǔ)上容易實(shí)現(xiàn)的, 申請人:對(duì)此不再贅述其具體實(shí)現(xiàn)細(xì)節(jié)。
[0060]每個(gè)查詢子操作的輸入數(shù)據(jù)用QI表示,輸出數(shù)據(jù)用QO表示,例如,框505、509示出的是連接子操作的輸入QI_ Θ (不包括虛線框中的數(shù)據(jù)),框504示出的是連接子操作的輸出QO_0,同時(shí),框504還是后續(xù)選擇子操作σ的輸入QI_ σ,基于同樣的道理,圖5中還示出了其它查詢子操作的輸入、輸出,不對(duì)其進(jìn)行一一說明。每個(gè)數(shù)據(jù)生成子操作的輸入數(shù)據(jù)用GI表示,輸出結(jié)果用GO表示,例如,框506示出了生成子操作Y的輸入GI_y,框507示出了生成子操作Y的輸出G0_Y,同時(shí),框507也是后續(xù)生成子操作π的輸入GI_ji。其中每一個(gè)數(shù)據(jù)生成子操作的輸入GI都包括相應(yīng)的查詢子操作的輸出結(jié)果(表示為Q0)以及差別部分(表示為NEW),圖5中框506、507以及508中分別用虛線框出了對(duì)應(yīng)數(shù)據(jù)生成子操作的輸入數(shù)據(jù)中的差別部分。對(duì)于第一個(gè)數(shù)據(jù)生成子操作來說,差別部分就是在步驟203通過比較得到的差別。因此,對(duì)于每個(gè)數(shù)據(jù)生成子操作,就演變?yōu)槿绾胃鶕?jù)GI (包括QO和NEW),QI來生成G0。最終生成的新的測試數(shù)據(jù)就是最后一個(gè)數(shù)據(jù)生成子操作的輸出,例如圖5中框506、509所示的兩個(gè)數(shù)據(jù)表(包括虛線框中的數(shù)據(jù))。
[0061](I)如果當(dāng)前數(shù)據(jù)生成子操作為聚合生成子操作,對(duì)于差別中的每一條記錄(例如,框506中虛線框中的記錄),執(zhí)行下述操作:
[0062]根據(jù)與聚合生成子操作相對(duì)應(yīng)的聚合查詢子操作的中間結(jié)果,在對(duì)應(yīng)的聚合查詢子操作的輸出結(jié)果(Q0_y )中為差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄。可以任選一條進(jìn)行關(guān)聯(lián),在一個(gè)改進(jìn)的實(shí)施例中,還可根據(jù)最大相似度原則選擇Q0_y中的一條記錄與之建立關(guān)聯(lián)。
[0063]根據(jù)聚合查詢子操作的中間結(jié)果,在聚合查詢子操作的輸入數(shù)據(jù)(QI_Y )中確定該當(dāng)前關(guān)聯(lián)記錄的對(duì)應(yīng)記錄(當(dāng)前對(duì)應(yīng)記錄),即,QI_ Y中那些生成該當(dāng)前關(guān)聯(lián)記錄的記錄
口 O
[0064]復(fù)制當(dāng)前對(duì)應(yīng)記錄并根據(jù)該當(dāng)前對(duì)應(yīng)記錄中各字段的數(shù)據(jù)生成約束條件,以及聚合生成子操作類型對(duì)所述復(fù)制的當(dāng)前對(duì)應(yīng)記錄進(jìn)行修改。通過修改,使得在包括修改后的復(fù)制的對(duì)應(yīng)記錄執(zhí)行對(duì)應(yīng)的聚合查詢子操作時(shí),輸出結(jié)果中能夠包括差別中的該條記錄。具體聚合操作類型例如是求最小值(min),求最大值(max),統(tǒng)計(jì)數(shù)量(count)等等。數(shù)據(jù)字段及相應(yīng)的數(shù)據(jù)生成約束條件在前面已經(jīng)做過介紹,在此不再重述。
[0065]當(dāng)差別中所有記錄都處理完畢后,將所有修改后的復(fù)制的對(duì)應(yīng)記錄與所述對(duì)應(yīng)的查詢子操作的輸入數(shù)據(jù)(QI_ Y ) —起作為聚合生成子操作的輸出(G0_ Y )。
[0066]然后,將所有修改后的復(fù)制的對(duì)應(yīng)記錄作為下一步數(shù)據(jù)生成子操作中的當(dāng)前差別;被復(fù)制的原始對(duì)應(yīng)記錄成為下一步數(shù)據(jù)生成子操作輸入中相應(yīng)的關(guān)聯(lián)記錄;將對(duì)應(yīng)的查詢子操作的輸入數(shù)據(jù)(QI_ Y)作為下一步數(shù)據(jù)生成子操作中對(duì)應(yīng)的查詢子操作的輸出結(jié)果(Q0_ ) ?
[0067](2)如果當(dāng)前數(shù)據(jù)生成子操作為投影生成子操作π,將前一步中聚合生成子操作的輸出作為投影生成子操作的輸入,前述所有修改后的復(fù)制的對(duì)應(yīng)記錄作為該投影生成子操作的輸入中的當(dāng)前差別,被復(fù)制的原始對(duì)應(yīng)記錄成為該投影生成子操作的輸入中的當(dāng)前關(guān)聯(lián)記錄,并且,將前一步驟中聚合查詢子操作的輸入數(shù)據(jù)作為投影查詢子操作的輸出;
[0068]獲取當(dāng)前差別中的一條記錄。然后,對(duì)于每一條記錄,執(zhí)行下述操作:
[0069]根據(jù)該條記錄相應(yīng)的當(dāng)前關(guān)聯(lián)記錄和該投影查詢子操作的中間結(jié)果,在投影查詢子操作的輸入數(shù)據(jù)(QI_ η )中確定該當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄,即,QI_n中生成該當(dāng)前關(guān)聯(lián)記錄的記錄集合。
[0070]根據(jù)當(dāng)前對(duì)應(yīng)記錄補(bǔ)齊當(dāng)前差別中該條記錄中缺少的字段,并根據(jù)各字段的數(shù)據(jù)生成約束條件對(duì)該補(bǔ)齊后的記錄進(jìn)行修改。通過修改,使得在包括補(bǔ)齊并修改后的記錄上執(zhí)行對(duì)應(yīng)的投影查詢子操作時(shí),輸出結(jié)果中能夠包括當(dāng)前差別中的該條記錄。
[0071]當(dāng)差別中所有記錄都處理完畢后,將所有補(bǔ)齊并修改后的記錄與投影查詢子操作的輸入數(shù)據(jù)(QI_n )—起作為該投影生成子操作的輸出(G0_ji )。
[0072]然后,將所述補(bǔ)齊并修改后的對(duì)應(yīng)記錄作為下一步數(shù)據(jù)生成子操作中的差別部分,以及將對(duì)應(yīng)的查詢子操作的輸入數(shù)據(jù)(QI_ η ) 一起作為下一步數(shù)據(jù)生成子操作中對(duì)應(yīng)的查詢子操作的輸出結(jié)果(Q0_o )。在當(dāng)前投影生成子操作中得到的對(duì)應(yīng)記錄成為下一步數(shù)據(jù)生成子操作輸入中相應(yīng)的關(guān)聯(lián)記錄。
[0073](3)如果當(dāng)前子操作為選擇生成操作σ,則,
[0074]將上一數(shù)據(jù)生成子操作的輸出作為所述選擇生成子操作的輸入;
[0075]則把該當(dāng)前數(shù)據(jù)生成子操作的輸入數(shù)據(jù)(GI_o )直接當(dāng)作該當(dāng)前數(shù)據(jù)生成子操作的輸出(G0_o ),同時(shí),也是下一步數(shù)據(jù)生成子操作Θ的輸入(GI_0)。
[0076](4)如果當(dāng)前子操作為連接操作Θ,則,
[0077]將上一數(shù)據(jù)生成子操作的輸出作為所述連接生成子操作的輸入;
[0078]則對(duì)該當(dāng)前數(shù)據(jù)生成子操作的輸入數(shù)據(jù)(GI_ Θ )執(zhí)行連接操作的反操作,例如,在圖5所示的實(shí)施例中將輸入數(shù)據(jù)(GI_ Θ )拆分為506、509所示的兩張數(shù)據(jù)表作為最終的輸出(GO_0 )。
[0079]圖6示出根據(jù)本發(fā)明一個(gè)實(shí)施例的一種用于擴(kuò)展測試數(shù)據(jù)的設(shè)備,可以根據(jù)樣本測試數(shù)據(jù)擴(kuò)展出新的測試數(shù)據(jù),該設(shè)備包括:
[0080]獲取模塊601,配置為獲取用查詢語句以及期望查詢結(jié)果所表示的測試數(shù)據(jù)需求;查詢模塊602,配置為在樣本測試數(shù)據(jù)上執(zhí)行所述查詢語句以獲取實(shí)際查詢結(jié)果,同時(shí)記錄執(zhí)行所述查詢語句時(shí)各個(gè)查詢子操作的中間結(jié)果;比較模塊603,配置為通過比較所述期望查詢結(jié)果以及所述實(shí)際查詢結(jié)果確定差別;數(shù)據(jù)生成模塊604,配置為按照與所述查詢語句相反的執(zhí)行順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作,在所述各個(gè)數(shù)據(jù)生成子操作中根據(jù)所述差別、所述中間結(jié)果以及與所述樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)所述樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展,其中,至少一個(gè)所述數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式。
[0081]在一個(gè)實(shí)施例中,數(shù)據(jù)生成模塊604包括:配置為若當(dāng)前數(shù)據(jù)生成子操作對(duì)應(yīng)于所述查詢語句的最后一步查詢子操作,將所述差別作為當(dāng)前差別與所述最后一步查詢子操作的查詢結(jié)果一起作為當(dāng)前數(shù)據(jù)生成子操作的輸入的模塊。
[0082]在一個(gè)改進(jìn)的實(shí)施例中,其中當(dāng)前數(shù)據(jù)生成子操作是聚合生成子操作,則數(shù)據(jù)生成模塊604進(jìn)一步包括:配置為對(duì)于所述當(dāng)前差別中的每一條記錄:根據(jù)與所述聚合生成子操作相對(duì)應(yīng)的聚合查詢子操作的中間結(jié)果,在所述聚合查詢子操作的輸出結(jié)果中為當(dāng)前差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄,根據(jù)所述聚合查詢子操作的中間結(jié)果,在所述聚合查詢子操作的輸入數(shù)據(jù)中確定所述當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄,復(fù)制所述當(dāng)前對(duì)應(yīng)記錄并根據(jù)所述當(dāng)前對(duì)應(yīng)記錄中各字段的數(shù)據(jù)生成約束條件,以及聚合生成子操作類型對(duì)所述復(fù)制的當(dāng)前對(duì)應(yīng)記錄進(jìn)行修改的模塊;以及,配置為將所有修改后的復(fù)制的當(dāng)前對(duì)應(yīng)記錄與所述聚合查詢子操作的輸入數(shù)據(jù)一起作為所述聚合生成子操作的輸出,其中,該聚合生成子操作的輸出作為下一步數(shù)據(jù)生成子操作的輸入,該所有修改后的復(fù)制的當(dāng)前對(duì)應(yīng)記錄作為所述下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別,該聚合生成子操作中得到的當(dāng)前對(duì)應(yīng)記錄作為下一步數(shù)據(jù)生成子操作中的當(dāng)前關(guān)聯(lián)記錄的模塊。
[0083]在另一個(gè)改進(jìn)的實(shí)施例中,其中,所述當(dāng)前數(shù)據(jù)生成子操作是投影生成子操作,則所述數(shù)據(jù)生成模塊604進(jìn)一步包括:配置為對(duì)于所述當(dāng)前差別中的每一條記錄:根據(jù)與所述投影生成子操作相對(duì)應(yīng)的投影查詢子操作的中間結(jié)果,在所述投影查詢子操作的輸出結(jié)果中為當(dāng)前差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄,根據(jù)所述投影查詢子操作的中間結(jié)果,在所述投影查詢子操作的輸入數(shù)據(jù)中確定所述當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄,根據(jù)所述當(dāng)前對(duì)應(yīng)記錄補(bǔ)齊當(dāng)前差別中該條記錄中缺少的字段,并根據(jù)各字段的數(shù)據(jù)生成約束條件對(duì)所述補(bǔ)齊后的記錄進(jìn)行修改的模塊;以及,配置為將所有補(bǔ)齊并修改后的記錄與所述投影查詢子操作的輸入數(shù)據(jù)數(shù)據(jù)一起作為所述投影生成子操作的輸出,其中,該投影生成子操作的輸出成為下一步數(shù)據(jù)生成子操作的輸入,該所有補(bǔ)齊并修改后的記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別,該當(dāng)前投影生成子操作中得到當(dāng)前對(duì)應(yīng)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前關(guān)聯(lián)記錄的模塊。
[0084]在一個(gè)實(shí)施例中,其中,所述當(dāng)前數(shù)據(jù)生成子操作是選擇生成子操作,則數(shù)據(jù)生成模塊604進(jìn)一步包括:配置為根據(jù)與所述選擇生成子操作相對(duì)應(yīng)的選擇查詢子操作的中間結(jié)果,在所述選擇查詢子操作的輸出結(jié)果中為當(dāng)前差別中的記錄確定當(dāng)前關(guān)聯(lián)記錄的模塊;配置為把所述選擇生成子操作的輸入直接作為所述選擇生成子操作的輸出,該輸出成為下一步數(shù)據(jù)生成子操作的輸入,并且,所述選擇生成子操作的輸入中的當(dāng)前差別和所述當(dāng)前關(guān)聯(lián)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄的模塊。
[0085]在一個(gè)實(shí)施例中,其中,所述當(dāng)前數(shù)據(jù)生成子操作是連接生成子操作,則所述數(shù)據(jù)生成模塊604進(jìn)一步包括:配置為根據(jù)與所述連接生成子操作相對(duì)應(yīng)的連接查詢子操作的中間結(jié)果,在所述連接查詢子操作的輸出結(jié)果中為當(dāng)前差別中的記錄確定當(dāng)前關(guān)聯(lián)記錄的模塊;配置為對(duì)所述連接生成子操作的輸入執(zhí)行所述連接子操作的反操作生成所述連接生成子操作的輸出,該輸出成為下一步數(shù)據(jù)生成子操作的輸入,并且,所述連接生成子操作的輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄的模塊。
[0086]在另一個(gè)實(shí)施例中,是根據(jù)最大相似度的原則確定當(dāng)前關(guān)聯(lián)記錄。
[0087]在一個(gè)實(shí)施例中,查詢模塊602還包括:配置為對(duì)于所述期望查詢結(jié)果中的每一條記錄,如果在所述實(shí)際查詢結(jié)果中沒有找到相匹配的記錄,則將該條記錄作為所述差別中的一條記錄的模塊。
[0088]在一個(gè)實(shí)施例中,圖6所示的生成測試數(shù)據(jù)的設(shè)備還包括:配置為如果所述實(shí)際查詢結(jié)果為空,按所述查詢操作的逆向找到下一個(gè)選擇子操作的模塊;配置為調(diào)整所述找到的選擇子操作的條件并重新執(zhí)行所述查詢操作,直至獲取非空的查詢結(jié)果并將其作為所述實(shí)際查詢結(jié)果的模塊。
[0089]前述實(shí)施例中均是以車聯(lián)網(wǎng)對(duì)本申請的技術(shù)方案進(jìn)行說明,然而,本領(lǐng)域技術(shù)人員在其基礎(chǔ)上,可以在其他場景中應(yīng)用本申請的技術(shù)方案。例如,應(yīng)用在管網(wǎng)(自來水或油氣管管路閥門的位置,型號(hào),安裝年代,隨時(shí)間變化的壓力測量值,等)的分析和管理中;或者,應(yīng)用于智能電網(wǎng)的場景中:智能電網(wǎng)中大數(shù)據(jù)分析的應(yīng)用(發(fā)電機(jī)轉(zhuǎn)速/輸出功率,變電站的即時(shí)電壓/電流/有效功率,等)??傊?,采用本申請的技術(shù)方案,能夠根據(jù)樣本測試數(shù)據(jù)生成符合實(shí)際物理特性的新的測試數(shù)據(jù)。
[0090]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
[0091]以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進(jìn),或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。
【權(quán)利要求】
1.一種用于擴(kuò)展測試數(shù)據(jù)的方法,該方法包括: 獲取用查詢語句以及期望查詢結(jié)果所表示的測試數(shù)據(jù)需求; 在樣本測試數(shù)據(jù)上執(zhí)行所述查詢語句以獲取實(shí)際查詢結(jié)果,同時(shí)記錄執(zhí)行所述查詢語句時(shí)各個(gè)查詢子操作的中間結(jié)果; 通過比較所述期望查詢結(jié)果以及所述實(shí)際查詢結(jié)果確定出差別; 按照與所述查詢語句相反的執(zhí)行順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作,在所述各個(gè)數(shù)據(jù)生成子操作中根據(jù)所述差別、所述中間結(jié)果以及與所述樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)所述樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展,其中,至少一個(gè)所述數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式。
2.根據(jù)權(quán)利要求1所述的方法,其中,按照與所述查詢語句相反的執(zhí)行順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作,在所述各個(gè)數(shù)據(jù)生成子操作中根據(jù)所述差另O、所述中間結(jié)果以及與所述樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)所述樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展包括: 若當(dāng)前數(shù)據(jù)生成子操作對(duì)應(yīng)于所述查詢語句的最后一步查詢子操作,將所述差別作為當(dāng)前差別與所述最后一步查詢子操作的查詢結(jié)果一起作為當(dāng)前數(shù)據(jù)生成子操作的輸入。
3.根據(jù)權(quán)利要求2所述的方法,其中所述當(dāng)前數(shù)據(jù)生成子操作是聚合生成子操作,則所述對(duì)樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展的步驟進(jìn)一步包括: 對(duì)于所述當(dāng)前差別中的每一條記錄: 根據(jù)與所述聚合生成子操作相對(duì)應(yīng)的聚合查詢子操作的中間結(jié)果,在所述聚合查詢子操作的輸出結(jié)果中為當(dāng)前差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄, 根據(jù)所述聚合查詢子操作的中間結(jié)果,在所述聚合查詢子操作的輸入數(shù)據(jù)中確定所述當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄, 復(fù)制所述當(dāng)前對(duì)應(yīng)記錄并根據(jù)所述當(dāng)前對(duì)應(yīng)記錄中各字段的數(shù)據(jù)生成約束條件,以及聚合生成子操作類型對(duì)所述復(fù)制的當(dāng)前對(duì)應(yīng)記錄進(jìn)行修改; 將所有修改后的復(fù)制的當(dāng)前對(duì)應(yīng)記錄與所述聚合查詢子操作的輸入數(shù)據(jù)一起作為所述聚合生成子操作的輸出,其中,該聚合生成子操作的輸出作為下一步數(shù)據(jù)生成子操作的輸入,該所有修改后的復(fù)制的當(dāng)前對(duì)應(yīng)記錄作為所述下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別,該聚合生成子操作中得到的當(dāng)前對(duì)應(yīng)記錄作為下一步數(shù)據(jù)生成子操作中的當(dāng)前關(guān)聯(lián)記錄。
4.根據(jù)權(quán)利要求2所述的方法,其中,所述當(dāng)前數(shù)據(jù)生成子操作是投影生成子操作,則所述對(duì)樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展的步驟進(jìn)一步包括: 對(duì)于所述當(dāng)前差別中的每一條記錄: 根據(jù)與所述投影生成子操作相對(duì)應(yīng)的投影查詢子操作的中間結(jié)果,在所述投影查詢子操作的輸出結(jié)果中為當(dāng)前差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄, 根據(jù)所述投影查詢子操作的中間結(jié)果,在所述投影查詢子操作的輸入數(shù)據(jù)中確定所述當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄, 根據(jù)所述當(dāng)前對(duì)應(yīng)記錄補(bǔ)齊當(dāng)前差別中該條記錄中缺少的字段,并根據(jù)各字段的數(shù)據(jù)生成約束條件對(duì)所述補(bǔ)齊后的記錄進(jìn)行修改; 將所有補(bǔ)齊并修改后的記錄與所述投影查詢子操作的輸入數(shù)據(jù)數(shù)據(jù)一起作為所述投影生成子操作的輸出,其中,該投影生成子操作的輸出成為下一步數(shù)據(jù)生成子操作的輸入,該所有補(bǔ)齊并修改后的記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別,該當(dāng)前投影生成子操作中得到當(dāng)前對(duì)應(yīng)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前關(guān)聯(lián)記錄。
5.根據(jù)權(quán)利要求2所述的方法,其中,所述當(dāng)前數(shù)據(jù)生成子操作是選擇生成子操作,則所述對(duì)樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展的步驟進(jìn)一步包括: 根據(jù)與所述選擇生成子操作相對(duì)應(yīng)的選擇查詢子操作的中間結(jié)果,在所述選擇查詢子操作的輸出結(jié)果中為當(dāng)前差別中的記錄確定當(dāng)前關(guān)聯(lián)記錄; 把所述選擇生成子操作的輸入直接作為所述選擇生成子操作的輸出,該輸出成為下一步數(shù)據(jù)生成子操作的輸入,并且,所述選擇生成子操作的輸入中的當(dāng)前差別和所述當(dāng)前關(guān)聯(lián)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄。
6.根據(jù)權(quán)利要求2所述的方法,其中,所述當(dāng)前數(shù)據(jù)生成子操作是連接生成子操作,則所述對(duì)樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展的步驟進(jìn)一步包括: 根據(jù)與所述連接生成子操作相對(duì)應(yīng)的連接查詢子操作的中間結(jié)果,在所述連接查詢子操作的輸出結(jié)果中為當(dāng)前差別中的記錄確定當(dāng)前關(guān)聯(lián)記錄; 對(duì)所述連接生成子操作的輸入執(zhí)行所述連接子操作的反操作生成所述連接生成子操作的輸出,該輸出成為下一步數(shù)據(jù)生成子操作的輸入,并且,所述連接生成子操作的輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄。
7.根據(jù)權(quán)利要求2所述的方法,是根據(jù)最大相似度的原則確定所述當(dāng)前關(guān)聯(lián)記錄。
8.根據(jù)權(quán)利要求1所述的方法,其中所述通過比較確定所述期望查詢結(jié)果以及所述實(shí)際查詢結(jié)果之間的差別包括: 對(duì)于所述期望查詢結(jié)果中的每一條記錄,如果在所述實(shí)際查詢結(jié)果中沒有找到相匹配的記錄,則將該條記錄作為所述差別中的一條記錄。
9.根據(jù)權(quán)利要求1所述的方法,還包括: 如果所述實(shí)際查詢結(jié)果為空,按所述查詢操作的逆向找到下一個(gè)選擇子操作; 調(diào)整所述找到的選擇子操作的條件并重新執(zhí)行所述查詢操作,直至獲取非空的查詢結(jié)果并將其作為所述實(shí)際查詢結(jié)果。
10.一種用于擴(kuò)展測試數(shù)據(jù)的設(shè)備,該設(shè)備包括: 獲取模塊,配置為獲取用查詢語句以及期望查詢結(jié)果所表示的測試數(shù)據(jù)需求; 查詢模塊,配置為在樣本測試數(shù)據(jù)上執(zhí)行所述查詢語句以獲取實(shí)際查詢結(jié)果,同時(shí)記錄執(zhí)行所述查詢語句時(shí)各個(gè)查詢子操作的中間結(jié)果; 比較模塊,配置為通過比較所述期望查詢結(jié)果以及所述實(shí)際查詢結(jié)果確定差別; 數(shù)據(jù)生成模塊,配置為按照與所述查詢語句相反的執(zhí)行順序執(zhí)行與各個(gè)查詢子操作分別對(duì)應(yīng)的各個(gè)數(shù)據(jù)生成子操作,在所述各個(gè)數(shù)據(jù)生成子操作中根據(jù)所述差別、所述中間結(jié)果以及與所述樣本測試數(shù)據(jù)中各字段相應(yīng)的數(shù)據(jù)生成約束條件對(duì)所述樣本測試數(shù)據(jù)進(jìn)行擴(kuò)展,其中,至少一個(gè)所述數(shù)據(jù)生成約束條件反映了相應(yīng)字段的特定模式。
11.根據(jù)權(quán)利要求9所述的設(shè)備,所述數(shù)據(jù)生成模塊包括: 配置為若當(dāng)前數(shù)據(jù)生成子操作對(duì)應(yīng)于所述查詢語句的最后一步查詢子操作,將所述差別作為當(dāng)前差別與所述最后一步查詢子操作的查詢結(jié)果一起作為當(dāng)前數(shù)據(jù)生成子操作的輸入的模塊。
12.根據(jù)權(quán)利要求10所述的設(shè)備,其中所述當(dāng)前數(shù)據(jù)生成子操作是聚合生成子操作,則所述數(shù)據(jù)生成模塊進(jìn)一步包括: 配置為對(duì)于所述當(dāng)前差別中的每一條記錄: 根據(jù)與所述聚合生成子操作相對(duì)應(yīng)的聚合查詢子操作的中間結(jié)果,在所述聚合查詢子操作的輸出結(jié)果中為當(dāng)前差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄, 根據(jù)所述聚合查詢子操作的中間結(jié)果,在所述聚合查詢子操作的輸入數(shù)據(jù)中確定所述當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄, 復(fù)制所述當(dāng)前對(duì)應(yīng)記錄并根據(jù)所述當(dāng)前對(duì)應(yīng)記錄中各字段的數(shù)據(jù)生成約束條件,以及聚合生成子操作類型對(duì)所述復(fù)制的當(dāng)前對(duì)應(yīng)記錄進(jìn)行修改的模塊; 配置為將所有修改后的復(fù)制的當(dāng)前對(duì)應(yīng)記錄與所述聚合查詢子操作的輸入數(shù)據(jù)一起作為所述聚合生成子操作的輸出,其中,該聚合生成子操作的輸出作為下一步數(shù)據(jù)生成子操作的輸入,該所有修改后的復(fù)制的當(dāng)前對(duì)應(yīng)記錄作為所述下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別,該聚合生成子操作中得到的當(dāng)前對(duì)應(yīng)記錄作為下一步數(shù)據(jù)生成子操作中的當(dāng)前關(guān)聯(lián)記錄的模塊。
13.根據(jù)權(quán)利要求11所述的設(shè)備,其中,所述當(dāng)前數(shù)據(jù)生成子操作是投影生成子操作,則所述數(shù)據(jù)生成模塊進(jìn)一步包括: 配置為對(duì)于所述當(dāng)前差別中的每一條記錄: 根據(jù)與所述投影生成子操作相對(duì)應(yīng)的投影查詢子操作的中間結(jié)果,在所述投影查詢子操作的輸出結(jié)果中為當(dāng)前差別中的該條記錄確定當(dāng)前關(guān)聯(lián)記錄, 根據(jù)所述投影查詢子操作的中間結(jié)果,在所述投影查詢子操作的輸入數(shù)據(jù)中確定所述當(dāng)前關(guān)聯(lián)記錄的當(dāng)前對(duì)應(yīng)記錄, 根據(jù)所述當(dāng)前對(duì)應(yīng)記錄補(bǔ)齊當(dāng)前差別中該條記錄中缺少的字段,并根據(jù)各字段的數(shù)據(jù)生成約束條件對(duì)所述補(bǔ)齊后的記錄進(jìn)行修改的模塊; 配置為將所有補(bǔ)齊并修改后的記錄與所述投影查詢子操作的輸入數(shù)據(jù)數(shù)據(jù)一起作為所述投影生成子操作的輸出,其中,該投影生成子操作的輸出成為下一步數(shù)據(jù)生成子操作的輸入,該所有補(bǔ)齊并修改后的記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別,該當(dāng)前投影生成子操作中得到當(dāng)前對(duì)應(yīng)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前關(guān)聯(lián)記錄的模塊。
14.根據(jù)權(quán)利要求11所述的設(shè)備,其中,所述當(dāng)前數(shù)據(jù)生成子操作是選擇生成子操作,則所述數(shù)據(jù)生成模塊進(jìn)一步包括: 配置為根據(jù)與所述選擇生成子操作相對(duì)應(yīng)的選擇查詢子操作的中間結(jié)果,在所述選擇查詢子操作的輸出結(jié)果中為當(dāng)前差別中的記錄確定當(dāng)前關(guān)聯(lián)記錄的模塊; 配置為把所述選擇生成子操作的輸入直接作為所述選擇生成子操作的輸出,該輸出成為下一步數(shù)據(jù)生成子操作的輸入,并且,所述選擇生成子操作的輸入中的當(dāng)前差別和所述當(dāng)前關(guān)聯(lián)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄的模塊。
15.根據(jù)權(quán)利要求11所述的設(shè)備,其中,所述當(dāng)前數(shù)據(jù)生成子操作是連接生成子操作,則所述數(shù)據(jù)生成模塊進(jìn)一步包括: 配置為根據(jù)與所述連接生成子操作相對(duì)應(yīng)的連接查詢子操作的中間結(jié)果,在所述連接查詢子操作的輸出結(jié)果中為當(dāng)前差別中的記錄確定當(dāng)前關(guān)聯(lián)記錄的模塊; 配置為對(duì)所述連接生成子操作的輸入執(zhí)行所述連接子操作的反操作生成所述連接生成子操作的輸出,該輸出成為下一步數(shù)據(jù)生成子操作的輸入,并且,所述連接生成子操作的輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄成為下一步數(shù)據(jù)生成子操作輸入中的當(dāng)前差別和當(dāng)前關(guān)聯(lián)記錄的模塊。
16.根據(jù)權(quán)利要求11所述的設(shè)備,是根據(jù)最大相似度的原則確定所述當(dāng)前關(guān)聯(lián)記錄。
17.根據(jù)權(quán)利要求10所述的設(shè)備,其中所述查詢模塊還包括: 配置為對(duì)于所述期望查詢結(jié)果中的每一條記錄,如果在所述實(shí)際查詢結(jié)果中沒有找到相匹配的記錄,則將該條記錄作為所述差別中的一條記錄的模塊。
18.根據(jù)權(quán)利要求10所述的設(shè)備,還包括: 配置為如果所述實(shí)際查詢結(jié)果為空,按所述查詢操作的逆向找到下一個(gè)選擇子操作的模塊; 配置為調(diào)整所述找到的選擇子操作的條件并重新執(zhí)行所述查詢操作,直至獲取非空的查詢結(jié)果并將其作為所述實(shí)際查詢結(jié)果的模塊。
【文檔編號(hào)】G06F11/36GK104346366SQ201310325671
【公開日】2015年2月11日 申請日期:2013年7月30日 優(yōu)先權(quán)日:2013年7月30日
【發(fā)明者】胡國強(qiáng), 朱俊, 段寧, 丁建棟, 黃勝 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
云霄县| 吉水县| 盐源县| 平定县| 冕宁县| 永德县| 西宁市| 安化县| 成安县| 新宁县| 阳西县| 玛纳斯县| 翁源县| 宁乡县| 衢州市| 贵溪市| 安宁市| 西畴县| 昌图县| 托克托县| 乐至县| 陆河县| 扎囊县| 中西区| 华池县| 奎屯市| 玉溪市| 开化县| 赞皇县| 高淳县| 旌德县| 永福县| 康保县| 德兴市| 东海县| 永胜县| 祁连县| 图木舒克市| 通城县| 江北区| 隆安县|