專利名稱:一種用于對輸入數(shù)據進行采樣的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及應用測試領域,更具體地涉及一種用于對輸入數(shù)據進行采樣的方法和 系統(tǒng)。
背景技術:
流處理是一種需要對海量數(shù)據進行實時處理的高性能計算模式,其具有實時性、 輸入數(shù)據量大等特點。采用流處理,可以一邊接收來自數(shù)據源的輸入數(shù)據,一邊對已接收的 數(shù)據進行處理,并且可以同時輸出那些已經處理過的數(shù)據。借助于流處理技術,可以獲得提 高吞吐率、縮短響應時間以及減小系統(tǒng)的存儲開銷等方面的優(yōu)勢。在現(xiàn)有技術中,流處理已經具有較為廣泛的應用。例如,電子商業(yè)服務中的算法交 易、射頻識別(Radio Frequency Identification, RFID)事件處理應用、欺詐檢測應用、處 理監(jiān)控應用、電信系統(tǒng)中基于位置的服務應用等,都是涉及到流處理的流應用。與一般的應用不同,流應用通常是一種持續(xù)地、長期運行的應用。因此在流應用 中出現(xiàn)錯誤且該錯誤僅僅影響到流應用的一部分時,通常期望在不停止整個流應用的情況 下,對流應用中的算子(即,在流處理中用于對數(shù)據進行分析和處理的操作模塊)進行調 試ο然而,根據現(xiàn)有技術,操作模塊在調試模式中運行時的速度比在在線運行模式中 運行時的速度低得多。因此,難以在不影響流應用的情況下執(zhí)行對特定算子的調試。另外,在現(xiàn)有技術中,在進行測試時,主要依靠人工分析和經驗來設計測試用例。 對于經驗不足的人員來講,這并不容易。換句話說,測試用例的有效性很大程度上依賴于人 工分析的能力和經驗的水平。對于除流應用之外的具有大量輸入數(shù)據的其他應用,同樣存在與上述類似的問題。
發(fā)明內容
有鑒于此,本發(fā)明提供了一種用于對輸入數(shù)據進行采樣的方法和系統(tǒng),以便至少 部分解決上面提到的問題。根據本發(fā)明的一個方面,提供了一種用于對輸入數(shù)據進行采樣的方法。該方法可 以包括緩存輸入數(shù)據;記錄被緩存的輸入數(shù)據在在線操作模塊中的執(zhí)行路徑;判斷被緩 存的輸入數(shù)據是否經過期望執(zhí)行路徑,并且響應于該被緩存的輸入數(shù)據經過期望執(zhí)行路徑 而將該被緩存的輸入數(shù)據采樣到數(shù)據集中。根據本發(fā)明的另一方面,提供了一種用于對輸入數(shù)據進行采樣的系統(tǒng),包括緩存 裝置,用于緩存輸入數(shù)據;記錄裝置,用于記錄被緩存的輸入數(shù)據在在線操作模塊中的執(zhí)行 路徑;以及采樣裝置,用于判斷各被緩存的輸入數(shù)據是否經過期望執(zhí)行路徑,并且響應于該 被緩存的輸入數(shù)據經過期望執(zhí)行路徑而將該被緩存的輸入數(shù)據采樣到數(shù)據集中。通過本發(fā)明的方法和系統(tǒng),可以基于執(zhí)行路徑對輸入數(shù)據進行采樣,進而自動形成例如可以用作測試集的數(shù)據集。因此,使得測試集的形成不再依賴于人工分析能力和經 驗水平,進而提高了工作效率,增加了測試集的有效性。此外,由于采樣得到的測試集中的 輸入數(shù)據都是實際應用中的輸入數(shù)據,因此更加符合實際應用的情況。另外,得到的測試集 可以提供給該操作模塊的離線版本以便進行調試,因此可以實現(xiàn)在不停止在線應用的情況 下,對操作模塊進行調試。
通過對結合附圖所示出的實施方式進行詳細說明,本發(fā)明的上述以及其他特征將 更加明顯,在本發(fā)明的附圖中,相同的標號表示相同或相似的部件。在附圖中,圖1示出了根據本發(fā)明一個實施方式的用于對輸入數(shù)據進行采樣的方法的流程 圖;圖2示出了根據本發(fā)明的一個實施方式用于記錄執(zhí)行路徑的方法的示意圖;圖3示出了根據本發(fā)明的另一實施方式用于記錄執(zhí)行路徑的方法的示意圖;圖4示出了根據本發(fā)明的一個實施方式的用于對輸入數(shù)據進行采樣的系統(tǒng)的方 框圖;圖5示出了根據本發(fā)明的另一實施方式的用于對輸入數(shù)據進行采樣的系統(tǒng)的方 框圖;以及圖6示意性地示出了可以實現(xiàn)根據本發(fā)明的實施方式的計算設備的結構方框圖。
具體實施例方式下面,將參考附圖詳細地描述本發(fā)明提供的用于對輸入數(shù)據進行采樣的方法和系 統(tǒng)。首先,將參考圖1來描述根據本發(fā)明的用于對輸入數(shù)據進行采樣的方法。圖1示 出了根據本發(fā)明一個實施方式的用于對輸入數(shù)據進行采樣的方法的流程圖。如圖1所示,在步驟101,針對在線運行的應用中的操作模塊,記錄輸入數(shù)據的執(zhí) 行路徑。執(zhí)行路徑是輸入數(shù)據在操作模塊中被處理期間所經過的路徑。在各操作模塊中, 通常存在各種分支點,諸如判斷語、多分支語句、函數(shù)調用等,因此不同的輸入數(shù)據在這些 分支點可能會經過不同的分支。每個輸入數(shù)據所經過的這些分支在整體上構成了輸入數(shù)據 的執(zhí)行路徑。對輸入數(shù)據的執(zhí)行路徑的記錄可以通過若干方式來實現(xiàn)。下面將以示例性的方式 描述幾種實施方式。在根據本發(fā)明的一個實施方式中,可以跟蹤并記錄輸入數(shù)據在操作模塊程序中的 各個分支點的取值,以便確定在各個分支點是否跳轉。然后,由發(fā)生跳轉的分支點的集合來 表示輸入數(shù)據的執(zhí)行路徑。所述分支點可以是與判斷語、多分支語句、函數(shù)調用等相關的 點。通過這種方式,就可以記錄該輸入數(shù)據在程序中的執(zhí)行路徑。圖2示出了根據該實施方式的用于記錄執(zhí)行路徑的方法的示意圖。如圖2所示, 在圖2中,示出了三個分支點,即點1、點2和點3。標記為“是”的路徑表示在相應的分支 點處發(fā)生跳轉的路徑,標記為“否”的路徑表示在相應的分支點處沒有發(fā)生跳轉的路徑。
5
從圖2可以看出,其中包括從左到右四條執(zhí)行路徑LI、L2、L3和L4。如果輸入數(shù) 據經過執(zhí)行路徑L1,則由于輸入數(shù)據在點1和點2處均發(fā)生跳轉,因此其執(zhí)行路徑可以用 包括分支點1和2的集合(1,2)來表示;如果輸入數(shù)據經過執(zhí)行路徑L2,則由于輸入數(shù)據 在點1處發(fā)生跳轉而在點2處沒有發(fā)生跳轉,因此其執(zhí)行路徑可以用包括分支點1的集合 (1)來表示;如果輸入數(shù)據經過執(zhí)行路徑L3,則由于輸入數(shù)據在點1處沒有跳轉而在點3處 發(fā)生了跳轉,因此其執(zhí)行路徑可以用包括分支點3的集合(3)來表示;而如果輸入數(shù)據經過 了執(zhí)行路徑L4,則由于輸入數(shù)據在任何點處均未跳轉,因此,其執(zhí)行路徑可以由不包括任何 分支點的空集合(null)來表示。需要說明的是,這種記錄執(zhí)行路徑分支的方式較為精確,但占用的存儲空間很大, 并且所需的記錄時間也較多。在根據本發(fā)明的另一優(yōu)選的實施方式中,可以根據應用需求來調整記錄執(zhí)行路徑 的粒度。在各操作模塊中,通常存在大量的分支,這些分支中有一些相對于整個執(zhí)行路徑 而言重要性較低,諸如層次較深的分支、區(qū)分度較低的分支等,這樣的分支通常是可以忽略 的。因此,可以只對操作模塊程序中的特定分支點的取值情況進行記錄,而不考慮對其他重 要性較低的分支點。這種簡化的記錄方式可以節(jié)約存儲空間,降低記錄時間。在根據本發(fā)明的一個實施方式中,記錄執(zhí)行路徑的粒度可以根據存儲設備的大 小、期望的記錄時間、經過執(zhí)行路徑的數(shù)據量其中至少一個來調整。例如,可以在開始記錄 之前或者在記錄過程中,根據存儲設備的大小或者期望的記錄時間中的任一個對記錄的粒 度進行手動調整;存儲設備大,則可以使用較細的粒度,存儲設備小可以使用較粗的粒度; 期望記錄時間較短,可以使用較粗粒度,如果可以接受較長記錄時間,則可以使用較細粒 度。此外,還可以例如在記錄過程中,根據經過執(zhí)行路徑的輸入數(shù)據量對記錄執(zhí)行路 徑的粒度進行動態(tài)調整。在一個實施例中,首先以較粗的粒度記錄執(zhí)行路徑,在例如在發(fā)現(xiàn) 當前正在記錄的執(zhí)行路徑經過的數(shù)據量較大時,進一步針對該執(zhí)行路徑以較細的粒度進行 記錄,從而區(qū)分該執(zhí)行路徑內部的各子路徑。而進一步,可以在發(fā)現(xiàn)正在記錄的一些執(zhí)行路 徑經過的數(shù)據量較小時,可以以較粗的粒度來進行記錄這些執(zhí)行路徑。在根據本發(fā)明的又 一實施方式中,可以針對特定的執(zhí)行路徑來調整記錄執(zhí)行路徑的粒度,例如對于被認為較 為可疑的一條或者多條執(zhí)行路徑可以設置較細的粒度,而對于被認為出現(xiàn)錯誤可能性很小 的執(zhí)行路徑,則可以設置為較大的粒度。除了上文中描述的利用分支點記錄執(zhí)行路徑的方式外,還可以通過其他方式來實 現(xiàn)對輸入數(shù)據的執(zhí)行路徑的記錄。在根據本發(fā)明的又一實施方式中,可以通過插樁法來實 現(xiàn)對輸入數(shù)據的執(zhí)行路徑的記錄。插樁技術在軟件測試領域是公知的,它是一種通過在源 代碼中加入記錄信息的語句來獲得程序在運行時的信息的技術。利用插樁技術,可以在操 作模塊程序中插入大量標桿,這些標桿可以插入在分支點之間的路徑上,而并非必須插在 分支點處。通過合理地設置插入在程序中標桿,就可以通過標桿的集合來標識每條路徑。在 程序執(zhí)行過程中,通過記錄下輸入數(shù)據所經過的標桿,即可獲知該輸入數(shù)據的執(zhí)行路徑。圖3示出了根據本發(fā)明的該實施方式采用插樁法來記錄執(zhí)行路徑的方法的示意 圖。圖3與圖2所示類似,包括從左到右四條執(zhí)行路徑L1、L2、L3和L4。如圖3所示,如果 輸入數(shù)據經過執(zhí)行路徑L1,則由于輸入數(shù)據經過了標桿1,因此其執(zhí)行路徑可以用包括標桿1的集合(1)來表示;類似地,如果輸入數(shù)據經過執(zhí)行路徑L2,則其執(zhí)行路徑可以用包括標桿2的集合(2)來表示;如果輸入數(shù)據經過執(zhí)行路徑L3,則其執(zhí)行路徑可以用包括標桿3 的集合(3)來表示;如果輸入數(shù)據經過了執(zhí)行路徑L4,其執(zhí)行路徑可以用包括標桿4的集 合⑷來表示。本領域技術人員應該理解,在圖3示出的示意圖中,每條路徑可以通過一個標桿 來唯一地標識。然而在實際應用中,路徑可能非常復雜,通常需要使用包含大量標桿點的集 合來表示。因此,可以適當?shù)夭迦霕藯U,以使得能夠有效地標識各條路徑,同時所使用的標 桿盡可能少,從而減少存儲空間。在以上實施方式中,對執(zhí)行路徑的記錄主要通過軟件來實現(xiàn)。需要說明的是,也可 以在硬件級別上實現(xiàn)該記錄。在根據本發(fā)明的一個實施方式中,可以通過處理器內部的流水線來記錄輸入數(shù)據 執(zhí)行的路徑。諸如,對于國際商業(yè)機器公司(International Business Corporation, IBM) 的Power體系結構而言,流水線是處理器內部執(zhí)行指令的主要部件。流水線可以包括多個 流水級,其中最后一級通常被稱作提交(commit)階段。所有指令都經過該提交階段,輸入 數(shù)據是否跳轉在該提交階段是可以獲知的。因此,可以修改流水線中的提交階段,以便在發(fā) 現(xiàn)每條指令時,記錄該指令的地址以及是否發(fā)生跳轉等信息,從而記錄輸入數(shù)據的執(zhí)行路 徑。在采用硬件方式進行記錄的情況下,可以增加硬件緩存,以便存儲所記錄的信息。 在諸如硬件緩存滿時或者即將滿時,可以產生中斷。響應于該中斷,可以將該硬件緩存中的 信息保存到存儲器中的適當位置,并清空該硬件緩存以便進行隨后的記錄。另外,也可以利 用計算機系統(tǒng)結構中的常用組件布隆過濾器(bloom filter)來存儲所記錄的信息。布隆 過濾器是一種簡單的省空間的隨機化數(shù)據結構,盡管在精度方面具有一定的不足,但是其 可以存儲大量信息,因此可以用來存儲所記錄的信息。根據本發(fā)明,通常需要針對應用中的特定操作模塊,即整個應用的一部分,來記錄 輸入數(shù)據的執(zhí)行路徑。因此,需要采取措施來實現(xiàn)對記錄的控制。在采用軟件方式進行記錄 的情況下,可以通過確定分支點、標桿是否在特定操作模塊內,來確定是否執(zhí)行記錄。而在 采用硬件方式實現(xiàn)記錄的情況下,可以設置控制開關以便控制記錄的開始和記錄的結束。 例如,可以設置控制寄存器,通過在到達需記錄的指令時以及在離開需要記錄的指令時,設 置控制寄存器的值,來實現(xiàn)對記錄的控制。需要說明的是,也可以通過現(xiàn)有技術中已知的其他方式來實現(xiàn)對輸入數(shù)據的執(zhí)行 路徑的記錄。下面返回圖1,描述根據本發(fā)明的用于對輸入數(shù)據進行采樣的方法。如圖1所示,在步驟102,根據輸入數(shù)據的執(zhí)行路徑,對輸入數(shù)據進行采樣,以形成 包含采樣的輸入數(shù)據的數(shù)據集。 根據本發(fā)明的一個實施方式,設置有緩存裝置,用于存儲特定數(shù)量的輸入數(shù)據。該 特定數(shù)量需要設計為至少能夠確保在得到輸入數(shù)據的執(zhí)行路徑時,該輸入數(shù)據尚保存在緩 存裝置中,以便可以根據該執(zhí)行路徑確定是否該輸入數(shù)據進行采樣。優(yōu)選地,該緩存裝置可 以采用先進先出的存儲方式。 因此,在步驟101中通過記錄得到輸入數(shù)據的執(zhí)行路徑后,就可以根據執(zhí)行路徑來確定是否對仍保存在該緩存裝置中的輸入數(shù)據進行采樣。如果需要對該輸入數(shù)據進行采 樣,則可以將該輸入數(shù)據從緩沖區(qū)中復制或者提取到用于存儲采集的數(shù)據的存儲區(qū)。如果 不需要進行采樣,則可以忽略該輸入數(shù)據,或者可以從緩存裝置中刪除該輸入數(shù)據以便為 其它輸入數(shù)據提供更多的空間。在根據本發(fā)明的一個實施方式中,可以采樣輸入數(shù)據,以使得所采樣的輸入數(shù)據 具有不同執(zhí)行路徑。優(yōu)選地,所采樣的輸入數(shù)據所具有的執(zhí)行路徑能夠盡可能地涵蓋需要 調試或者測試的特定操作模塊的所有執(zhí)行路徑。在根據本發(fā)明的另一實施方式中,可以對輸入數(shù)據進行采樣,以便所采樣的輸入 數(shù)據僅涉及一條或多條指定的執(zhí)行路徑,從而得到與指定的執(zhí)行路徑相關的輸入數(shù)據。例 如,在確定問題可能出現(xiàn)在操作模塊的一條或者幾條路徑中且需要針對這些路徑進行集中 調試或測試時,將會出現(xiàn)這種情況??梢蕴峁┻m當?shù)挠脩艚涌?,以便用戶指定這些路徑。對輸入數(shù)據進行采樣的策略可以包括很多種。接下來,將對以示例性的方式介紹 其中的幾種。在根據本發(fā)明的一個實施方式中,可以以較高的采樣權重,對執(zhí)行路徑出現(xiàn)頻率 較低的輸入數(shù)據進行采樣。在操作模塊的所有執(zhí)行路徑中,有些執(zhí)行路徑會有大量輸入數(shù) 據通過,因此其出現(xiàn)的頻率較高;而有些執(zhí)行路徑所通過的數(shù)據較少,因此其出現(xiàn)的頻率會 較低。對于出現(xiàn)頻率較高的執(zhí)行路徑,要采樣的與該執(zhí)行路徑相關的輸入數(shù)據是比較容易 的,而對于出現(xiàn)頻率較低的執(zhí)行路徑,與其相關的輸入數(shù)據數(shù)量也較少。因此,可以對于執(zhí) 行路徑出現(xiàn)頻率較高的輸入數(shù)據,可以以較高的采樣權重進行采樣,以便得到與該執(zhí)行路 徑相關的盡可能多的采樣數(shù)據。例如,可以以較高的采樣率對執(zhí)行路徑出現(xiàn)頻率較低的輸 入數(shù)據進行采樣,而以較低的采樣率對執(zhí)行路徑出現(xiàn)頻率較高的輸入數(shù)據進行采樣。出于說明的目的,下面將通過實例對該實施方式進行描述。例如,對于涉及圖2所 示的執(zhí)行路徑L1、L2、L3和L4的1000個輸入數(shù)據,經過執(zhí)行路徑L1的為800個數(shù)據,經過 執(zhí)行路徑2的為150個數(shù)據,經過執(zhí)行路徑3的為30個數(shù)據,經過執(zhí)行路徑4的為20個數(shù) 據。由此,對于這1000個數(shù)據而言,執(zhí)行路徑出現(xiàn)的頻率分別為800、150、30、20。因此,可 以以采樣率1對經過執(zhí)行路徑4的輸入數(shù)據進行采用,即全部采集;以采樣率2/3對經過執(zhí) 行路徑3的輸入數(shù)據進行采用;以采樣率2/5對經過執(zhí)行路徑2的輸入數(shù)據進行采樣;以采 樣率1/40對經過執(zhí)行路徑1的輸入數(shù)據進行采樣。這樣就可以分別得到與每條執(zhí)行路徑 相關的20個輸入數(shù)據。需要說明的是,上述實例只是出于說明的目的,本發(fā)明并不僅限于此。在根據本發(fā)明的又一實施方式中,可以以較高的采樣優(yōu)先級,對執(zhí)行路徑相同的 輸入數(shù)據中較新的輸入數(shù)據進行采樣。例如,對于具有相同執(zhí)行路徑的數(shù)據,可以采用先進 先出的方式存儲采樣得到的數(shù)據,當有新的采樣數(shù)據時,則放棄目前存儲的最早的采樣數(shù) 據。從而使得數(shù)據集中的數(shù)據都是較新的數(shù)據。在本發(fā)明的一個實施方式中,可以將得到的數(shù)據集用作用于調試的測試集,以便 提供給離線運行的應用,以用于調試或者測試目的。 在上面給出的實施方式中,所述應用優(yōu)選地為流應用。對于流應用,每個操作模塊 的輸入通常是流,其包含有結構相同的無窮無盡的流數(shù)據對象。因此,對這樣的流輸入數(shù)據 中的每個進行調試也是不現(xiàn)實的。另外,在流應用中的操作模塊,即算子,通常是無狀態(tài)的,這意味著對每個流數(shù)據對象的處理與其他流數(shù)據對象并無關聯(lián)。因此,根據本發(fā)明的實施 方式,只采樣其中的一部分來自動形成用于測試的數(shù)據集也是非常有利的。本領域技術人員應該理解,該應用也可以是其他具有大量輸入數(shù)據的、與流應用 類似的應用。在優(yōu)選的實施方式中,還可以進一步根據記錄的輸入數(shù)據的執(zhí)行路徑來計算該輸 入數(shù)據的執(zhí)行路徑特征值,以便由執(zhí)行路徑特征值來唯一地標識輸入數(shù)據的執(zhí)行路徑,從 而根據該執(zhí)行路徑特征值來采樣輸入數(shù)據。在該優(yōu)選的實施方式中,集合S是需記錄的分支點P1,P2,. . .,pn的集合,其中n為 分支點的數(shù)目。對于每個流數(shù)據對象SD0k,其執(zhí)行路徑Pk為點pkl,pk2,...,Pkm的集合,即 Pk = {pkl, pk2,. . . , pj ,其中 pkl, pk2, ,pkm 是分支點 p2, , pn 中流數(shù)據對象 SD0k 發(fā) 生跳轉的分支點。然后,可以基于下式、通過適當?shù)墓:瘮?shù)來計算執(zhí)行路徑的執(zhí)行路徑特 征值CVEP。CVEP(k) = H(pkl) V H(pk2) V . V H(pkm)其中,哈希函數(shù)H(x)是用于將點映射為一個比特向量的映射,“V”表示或運算。接下來,將繼續(xù)參考圖2和圖3示出的記錄執(zhí)行路徑的方法來描述如何根據記錄 的執(zhí)行路徑來計算執(zhí)行路徑特征值的實例。在采用圖2所示的記錄方法的情況下,執(zhí)行路徑LI、L2、L3和L4分別由集合(1, 2)、集合(1)、集合(3)以及空集合(null)表示。在該實例中,采用哈希函數(shù)H(x) = 1 << x_l,g卩,將1左移x-1位。如果輸入數(shù)據1經過執(zhí)行路徑L1,由于其通過分支點的集合(1,2)來表示,則輸入 數(shù)據1的執(zhí)行路徑特征值CVEP可以用下式來計算CVEP(l) = H(l) V H(2) = (01) V (10) = 11S卩,將對集合中各個節(jié)點進行散列后得到的值執(zhí)行邏輯或運算。類似地,如果輸入數(shù)據2和3分別經過執(zhí)行路徑L2和L3,則輸入數(shù)據2和3的執(zhí) 行路徑特征值CVEP如下CVEP (2) = H(l) = 1CVEP (3) = H(3) = 100如果輸入數(shù)據4經過執(zhí)行路徑L4,由于執(zhí)行路徑L4由空的分支點集合來表示,因 此不需進行哈希,因此輸入數(shù)據4的CVEP值為0,即CVEP (4) = 0通過這樣的方式,就可以計算出各條執(zhí)行路徑的CVEP值。因此,就可以通過CVEP 值來表示執(zhí)行路徑,從而基于執(zhí)行路徑來采樣輸入數(shù)據。另外,如圖3所示,在采用插樁法來記錄執(zhí)行路徑的情況下,四條路徑L1、L2、L3和 L4的分別由標桿的集合(1),(2)、(3)和(4)來表示。因此,同樣可以采用上述的哈希函數(shù) 來計算執(zhí)行路徑的CVEP值。得到的輸入數(shù)據1、2、3和4的CVEP值如下CVPE(l)=1
CVEP (2)=10
CVPE (3)=100
CVEP (4)=1000
在實際應用中,執(zhí)行路徑可能比圖3所示的復雜得多。因此,可以適當?shù)夭迦霕?桿,來減少存儲空間并且降低計算時間和計算復雜度。然而,需要說明的是,上面給出的哈希函數(shù)只是用于說明的目的,本發(fā)明并不局限 于此,而是可以采用任何其他形式的哈希函數(shù),只要能夠唯一地標識出每條執(zhí)行路徑。需要說明的是,計算CVEP值并非是必不可少的。在本發(fā)明的一個實施方式中,由 該輸入數(shù)據發(fā)生跳轉的分支點的有序序列來表示執(zhí)行路徑,例如,圖2中的執(zhí)行路徑L1由 序列“1,2”來表示,執(zhí)行路徑L2由序列“1”來表示;對于執(zhí)行路徑L3,由序列“3”來表示; 而對于執(zhí)行路徑L4,由為空的序列來表示。這樣,通過比較上述的有序序列,同樣可以實現(xiàn) 基于執(zhí)行路徑對輸入數(shù)據的采樣。在另一個優(yōu)選的實施例中,可以計算CVEP權重,基于該CVEP權重對輸入數(shù)據進行 采樣,以實現(xiàn)上述以較高的采樣權重對執(zhí)行路徑出現(xiàn)頻率較低的輸入數(shù)據進行采樣的實施 方式。下面描述如何計算CVEP值以及根據CVEP值來對輸入數(shù)據進行采樣。假設有三個跳轉點,分別稱作點1,點2和點3。已經記錄的500個輸入數(shù)據中,只 在點1和點3發(fā)生跳轉的數(shù)據有490,只在點2和點3跳轉的數(shù)據有5個,并且在點1、點2 和點3跳轉的數(shù)據有5個。因此,可以得到在點1發(fā)生跳轉的數(shù)據總量為495,在點2發(fā)生 跳轉的數(shù)據總量為10個,在點3發(fā)生跳轉的數(shù)據總量為500個。另外,根據上述算法,采用用哈希函數(shù)H(x) = 1 <<x_l,對于在點1和點3發(fā)生 跳轉的490個數(shù)據,其執(zhí)行路徑的CVEP為H(l) VH(3) = (001) V (100) = 101 ;類似地, 對于在點2和點3發(fā)生跳轉的5個數(shù)據,其執(zhí)行路徑是110,以及對于在點1、點2和點3發(fā) 生跳轉的5個數(shù)據,其執(zhí)行路徑為111。接著可以根據各個執(zhí)行路徑的數(shù)據量以及各點處發(fā)生跳轉的數(shù)據數(shù)量計算CVEP權重。對于每條執(zhí)行路徑,其CVEP權重為該條執(zhí)行路徑所經過的數(shù)據量除以構成該執(zhí) 行路徑的各點處發(fā)生跳轉的數(shù)據量的總和。例如對于CVEP值為“101”的執(zhí)行路徑,CVEP 權重為=490/(495+500) = 490/995 ;類似地,對于CVEP值為“110”的執(zhí)行路徑,CVEP權 重為5/(10+500) = 5/510,以及對于CVEP值為“111”的執(zhí)行路徑CVEP權重值為5/ (495+10+500) = 5/(1005)。然后根據CVEP權重對輸入數(shù)據進行采樣,CVEP權重越大,則對于相應的執(zhí)行路徑 以較低的采樣權重進行采樣,而CVEP權重越小則以較高的采樣權重對其進行采樣,以便得 到更多的輸入數(shù)據。表1示出了對應的CVEP、CVEP權重以及采樣的數(shù)據的表格。 從該圖可以看出,對于CVEP權重較低的執(zhí)行路徑,即CVEP為“110”和“111”的執(zhí) 行路徑,記錄了所有出現(xiàn)的輸入數(shù)據,而時于CVEP權重較高的執(zhí)行路徑,即CVEP為“101” 的執(zhí)行路徑,僅僅記錄所有的490個輸入數(shù)據中最后出現(xiàn)的輸入數(shù)據5個輸入。需要說明的是,該CVEP權重更為精細地反映了執(zhí)行路徑出現(xiàn)的頻率,可以進一步 對執(zhí)行路徑出現(xiàn)的次數(shù)相同的執(zhí)行路徑進行細分。通過本發(fā)明提供的用于對輸入數(shù)據進行采樣的方法,可以基于執(zhí)行路徑對輸入數(shù) 據進行采樣,進而自動形成例如可以用作測試集的數(shù)據集。因此,使得測試集的形成不再依 賴于人工分析能力和經驗水平,進而提高了工作效率,增加了測試集的有效性。此外,由于 采樣得到的測試集中的輸入數(shù)據都是實際應用中的輸入數(shù)據,因此更加符合實際應用的情 況。另外,得到的測試集可以用于離線運行的應用以便進行調試,因此可以實現(xiàn)在不停止在 線應用的情況下,對操作模塊進行調試。接下來,將參考圖4和圖5來描述根據本發(fā)明的用于對輸入數(shù)據進行采樣的系統(tǒng) 的實例。圖4示出了根據本發(fā)明的一個實施方式用于對輸入數(shù)據進行采樣的系統(tǒng)400。如 圖4所示,系統(tǒng)400可以包括記錄裝置401,配置用于針對在線運行的應用中的操作模塊, 記錄輸入數(shù)據的執(zhí)行路徑;以及采樣裝置402,配置用于根據輸入數(shù)據的執(zhí)行路徑,對輸入 數(shù)據進行采樣,以形成包含采樣的輸入數(shù)據的數(shù)據集。圖4中省略了前述的緩存裝置。在根據本發(fā)明的一個實施方式中,所述數(shù)據集可以包含具有不同執(zhí)行路徑的輸入 數(shù)據。 在根據本發(fā)明的另一實施方式中,所述數(shù)據集可以包含具有一條或多條指定的執(zhí) 行路徑的輸入數(shù)據。在根據本發(fā)明的又一實施方式中,所述采樣裝置可以進一步配置用于以較高的 采樣權重,對執(zhí)行路徑出現(xiàn)頻率較低的輸入數(shù)據進行采樣;和/或以較高的采樣優(yōu)先級,對 執(zhí)行路徑相同的輸入數(shù)據中較新的輸入數(shù)據進行采樣。在根據本發(fā)明的再一實施方式中,所述數(shù)據集可以被提供給離線運行的應用,以 便利用所述數(shù)據集對該應用進行調試。在根據本發(fā)明的又一實施方式中,所述應用可以是流應用。另外,圖5還示出了根據本發(fā)明的另一實施方式用于對輸入數(shù)據進行采樣的系統(tǒng) 500。圖5所示,系統(tǒng)500包括記錄裝置501,對應于圖4中的記錄裝置401,配置用于針對 在線運行的應用中的操作模塊,記錄輸入數(shù)據的執(zhí)行路徑;以及采樣裝置502,對應于圖4 中的采樣裝置402,配置用于根據輸入數(shù)據的執(zhí)行路徑,對輸入數(shù)據進行采樣,以形成包含 采樣的輸入數(shù)據的數(shù)據集。與圖4所述的系統(tǒng)400不同的是,圖5中的系統(tǒng)500可以進一 步包括計算裝置503,配置用于根據輸入數(shù)據的執(zhí)行路徑,計算每個輸入數(shù)據的執(zhí)行路徑特 征值,其中,所述執(zhí)行路徑由唯一標識該執(zhí)行路徑的執(zhí)行路徑特征值來表示。圖5中省略了 前述的緩存裝置。關于上述實施方式中的記錄裝置401、501、采樣裝置402、502以及計算裝置503的 具體操作,可以參考上面結合1至圖3對于本發(fā)明的方法的各個步驟的描述。通過本發(fā)明提供的系統(tǒng),可以基于執(zhí)行路徑對輸入數(shù)據進行采樣,以自動形成可 以用于諸如調試的數(shù)據集。因此,相對于現(xiàn)有技術而言,提高了工作效率,增加了測試集的有效性,并且得到的測試集也更加符合實際應用的情況。另外,得到的測試集可以提供給離 線運行的應用以便進行調試,因此可以實現(xiàn)在不停止在線應用的情況下,對操作模塊進行
調試o下面,將參考圖6來描述可以實現(xiàn)本發(fā)明的計算機設備。圖6示意性示出了可以 實現(xiàn)根據本發(fā)明的實施方式的計算設備的結構方框圖。圖6中所示的計算機系統(tǒng)包括CPU(中央處理單元)601、RAM(隨機存取存儲 器)602、R0M(只讀存儲器)603、系統(tǒng)總線604、硬盤控制器605、鍵盤控制器606、串行接 口控制器607、并行接口控制器608、顯示器控制器609、硬盤610、鍵盤611、串行外部設備 612、并行外部設備613和顯示器614。在這些部件中,與系統(tǒng)總線604相連的有CPU 601、 RAM 602、ROM 603、硬盤控制器605、鍵盤控制器606、串行接口控制器607、并行接口控制器 608和顯示器控制器609。硬盤610與硬盤控制器605相連,鍵盤611與鍵盤控制器606相 連,串行外部設備612與串行接口控制器607相連,并行外部設備613與并行接口控制器 608相連,以及顯示器614與顯示器控制器609相連。圖6所述的結構方框圖僅僅為了示例的目的而示出的,并非是對本發(fā)明的限制。 在一些情況下,可以根據需要添加或者減少其中的一些設備。此外,本發(fā)明的實施方式可以以軟件、硬件或者軟件和硬件的結合來實現(xiàn)。硬件部 分可以利用專用邏輯來實現(xiàn);軟件部分可以存儲在存儲器中,由適當?shù)闹噶顖?zhí)行系統(tǒng),例如 微處理器或者專用設計硬件來執(zhí)行。雖然已經參考目前考慮到的實施方式描述了本發(fā)明,但是應該理解本發(fā)明不限于 所公開的實施方式。相反,本發(fā)明旨在涵蓋所附權利要求的精神和范圍內所包括的各種修 改和等同布置。以下權利要求的范圍符合最廣泛解釋,以便包含所有這樣的修改及等同結 構和功能。
權利要求
一種用于對輸入數(shù)據進行采樣的方法,包括緩存輸入數(shù)據;記錄被緩存的輸入數(shù)據在在線操作模塊中的執(zhí)行路徑;判斷被緩存的輸入數(shù)據是否經過期望執(zhí)行路徑,并且響應于被緩存的輸入數(shù)據經過期望執(zhí)行路徑而將該被緩存的輸入數(shù)據采樣到數(shù)據集中。
2.根據權利要求1所述的方法,進一步包括將具有較低出現(xiàn)頻率的執(zhí)行路徑作為所述期望執(zhí)行路徑。
3.根據權利要求1或2所述的方法,進一步包括以較高的采樣權重采樣經過具有較低出現(xiàn)頻率的期望執(zhí)行路徑的輸入數(shù)據,以較低的 采樣權重采樣經過具有較高出現(xiàn)頻率的期望執(zhí)行路徑的輸入數(shù)據。
4.根據權利要求1所述的方法,進一步包括以較高的采樣優(yōu)先級,對經過相同期望執(zhí)行路徑的輸入數(shù)據中較新的輸入數(shù)據進行采樣。
5.根據權利要求1所述的方法,其中所述記錄被緩存的輸入數(shù)據在在線操作模塊中的 執(zhí)行路徑的步驟包括計算該輸入數(shù)據在在線操作模塊中的執(zhí)行路徑的執(zhí)行路徑特征值,其中所述執(zhí)行路徑 特征值唯一標識該執(zhí)行路徑。
6.根據權利要求1所述的方法,其中,所述數(shù)據集被提供給該在線操作模塊的離線版 本,以便利用所述數(shù)據集對該操作模塊進行調試。
7.根據權利要求1所述的方法,其中,所述在線操作模塊是流應用的操作模塊。
8.根據權利要求1所述的方法,進一步包括調整記錄輸入數(shù)據的執(zhí)行路徑的粒度。
9.根據權利要求8所述的方法,其中,所述調整記錄輸入數(shù)據的執(zhí)行路徑的粒度的步 驟包括針對特定的執(zhí)行路徑來調整記錄輸入數(shù)據的執(zhí)行路徑的粒度。
10.根據權利要求9所述的方法,其中,所述針對特定的執(zhí)行路徑來調整記錄輸入數(shù)據 的執(zhí)行路徑的粒度的步驟包括根據經過執(zhí)行路徑的輸入數(shù)據量對記錄該執(zhí)行路徑的粒度進行動態(tài)調整。
11.一種用于對輸入數(shù)據進行采樣的系統(tǒng),包括 緩存裝置,用于緩存輸入數(shù)據;記錄裝置,用于記錄被緩存的輸入數(shù)據在在線操作模塊中的執(zhí)行路徑;以及 采樣裝置,用于判斷被緩存的輸入數(shù)據是否經過期望執(zhí)行路徑,并且響應于被緩存的 輸入數(shù)據經過期望執(zhí)行路徑而將該被緩存的輸入數(shù)據采樣到數(shù)據集中。
12.根據權利要求11所述的系統(tǒng),進一步包括用于將具有較低出現(xiàn)頻率的執(zhí)行路徑作為所述期望執(zhí)行路徑的裝置。
13.根據權利要求1或2所述的系統(tǒng),進一步包括用于以較高的采樣權重采樣經過具有較低出現(xiàn)頻率的執(zhí)行路徑的輸入數(shù)據,以較低的 采樣權重采樣經過具有較低出現(xiàn)頻率的執(zhí)行路徑的輸入數(shù)據的裝置。
14.根據權利要求11所述的系統(tǒng),其中,進一步包括用于以較高的采樣優(yōu)先級,對經過相同期望執(zhí)行路徑的輸入數(shù)據中較新的輸入數(shù)據進 行采樣的裝置。
15.根據權利要求11所述的系統(tǒng),所述記錄裝置包括計算裝置,用于計算該輸入數(shù)據在在線操作模塊中的執(zhí)行路徑的執(zhí)行路徑特征值,其 中所述執(zhí)行路徑特征值唯一標識該執(zhí)行路徑。
16.根據權利要求11所述的系統(tǒng),其中,所述數(shù)據集被提供給該在線操作模塊的離線 版本,以便利用所述數(shù)據集對該操作模塊進行調試。
17.根據權利要求11所述的系統(tǒng),其中,所述在線操作模塊是流應用的操作模塊。
18.根據權利要求17所述的系統(tǒng),進一步包括用于調整記錄輸入數(shù)據的執(zhí)行路徑的 粒度的裝置。
19.根據權利要求18所述的系統(tǒng),其中,所述用于調整記錄輸入數(shù)據的執(zhí)行路徑的粒 度的裝置包括針對特定的執(zhí)行路徑來調整記錄輸入數(shù)據的執(zhí)行路徑的粒度的裝置。
20.根據權利要求19所述的系統(tǒng),其中,所述針對特定的執(zhí)行路徑來調整記錄輸入數(shù) 據的執(zhí)行路徑的粒度的裝置包括根據經過執(zhí)行路徑的輸入數(shù)據量對記錄該執(zhí)行路徑的粒 度進行動態(tài)調整的裝置。
全文摘要
本發(fā)明提供了一種用于對輸入數(shù)據進行采樣的方法和系統(tǒng)。該方法緩存輸入數(shù)據;記錄被緩存的輸入數(shù)據在在線操作模塊中的執(zhí)行路徑;判斷被緩存的輸入數(shù)據是否經過期望執(zhí)行路徑,并且響應于被緩存的輸入數(shù)據經過期望執(zhí)行路徑而將該被緩存的輸入數(shù)據采樣到數(shù)據集中。通過本發(fā)明提供的方法和系統(tǒng),可以基于執(zhí)行路徑對輸入數(shù)據進行采樣,自動形成用于諸如調試的數(shù)據集。因此提高了工作效率,增加了用于調試的數(shù)據集的有效性。另外,得到的數(shù)據集可以提供給離線運行的應用,以便進行調試,因此可以實現(xiàn)在不停止在線應用的情況下,對操作模塊進行調試。
文檔編號G06F9/38GK101876934SQ200910136950
公開日2010年11月3日 申請日期2009年4月30日 優(yōu)先權日2009年4月30日
發(fā)明者侯銳, 劉之育, 王華勇, 王艷琦, 鄒瓊, 鄒耀 申請人:國際商業(yè)機器公司