專利名稱:測試數(shù)據的篩選方法及裝置的制作方法
技術領域:
本發(fā)明涉及計算機技術領域,特別涉及一種測試數(shù)據的篩選方法及裝置。
背景技術:
為了提高測試速度縮短測試周期,一般會對測試用例的測試數(shù)據進行篩選,目前主要基于分支覆蓋率對測試數(shù)據進行篩選,需要在安裝ccover編譯程序的前提下,在測試程序代碼中插入ccover提供的覆蓋率事件統(tǒng)計接口,對每條測試數(shù)據進行測試后,只要獲得覆蓋率增加,則說明測試程序進入新分支,即認為該測試數(shù)據有效,并存儲為最終測試數(shù)據,否則認為無效。但是這種數(shù)據篩選方法需要安裝ccover編譯程序,使用成本較高,并且需要在測試程序中插入調用覆蓋率事件統(tǒng)計接口,使用者需要修改部分文件,使用起來較為繁瑣。
發(fā)明內容
本發(fā)明的旨在至少解決上述技術缺陷之一。為此,本發(fā)明第一個目的在于提出一種測試數(shù)據的篩選方法,用戶接入成本小,使用方便,并且大幅度地提高了測試速度,縮短了測試周期。本發(fā)明第二個目的在于提出一種測試數(shù)據的篩選裝置。為實現(xiàn)上述目的,根據本發(fā)明第一方面的實施例的測試數(shù)據的篩選方法包括以下步驟:輸入待測程序及測試數(shù)據集合,其中,所述測試數(shù)據集合中包括多個測試數(shù)據;對所述待測程序進行分析以獲得所述待測程序的多個路徑;分別將所述多個測試數(shù)據加載至所述待測程序,并獲得每個測 試數(shù)據所對應的路徑;以及根據所述每個測試數(shù)據所對應的路徑對所述測試數(shù)據集合中的多個測試數(shù)據進行篩選。根據本發(fā)明實施例的測試數(shù)據的篩選方法,無需商業(yè)軟件提供接口,就可獲取測試數(shù)據集合中的測試數(shù)據對應的路徑,用戶接入成本小,使用方便,并且能根據每個測試數(shù)據對應的路徑對測試數(shù)據集合進行篩選,能夠在眾多測試數(shù)據中提取出覆蓋待測程序所有路徑并且最精簡的測試數(shù)據集合,從而大幅度地提高了測試速度,并且縮短了測試周期。為實現(xiàn)上述目的,根據本發(fā)明第二方面的實施例的測試數(shù)據的篩選裝置,包括:輸入模塊,用于輸入待測程序及測試數(shù)據集合,其中,所述測試數(shù)據集合中包括多個測試數(shù)據;分析模塊,用于對所述待測程序進行分析以獲得所述待測程序的多個路徑;加載模塊,用于分別將所述多個測試數(shù)據加載至所述待測程序,并獲得每個測試數(shù)據所對應的路徑;以及篩選模塊,用于根據所述每個測試數(shù)據所對應的路徑對所述測試數(shù)據集合中的多個測試數(shù)據進行篩選。根據本發(fā)明實施例的測試數(shù)據的篩選裝置,無需商業(yè)軟件提供接口,就可獲取測試數(shù)據集合中的測試數(shù)據對應的路徑,用戶接入成本小,使用方便,并且能根據每個測試數(shù)據對應的路徑對測試數(shù)據集合進行篩選,能夠在眾多測試數(shù)據中提取出覆蓋待測程序所有路徑并且最精簡的測試數(shù)據集合,從而大幅度地提高了測試速度,并且縮短了測試周期。
本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結合附圖對實施例的描述中將變得明顯和容易理解,其中:圖1為根據本發(fā)明一個實施例的測試數(shù)據的篩選方法的流程圖;圖2為根據本發(fā)明一個具體實施例的測試數(shù)據的篩選方法的流程圖;圖3為根據本發(fā)明另一個實施例的測試數(shù)據的篩選方法的流程圖;圖4為根據本發(fā)明一個實施例的測試數(shù)據的篩選裝置的結構框圖;圖5為根據本發(fā)明另一個實施例的測試數(shù)據的篩選裝置的結構框圖。
具體實施例方式下面詳細描述本發(fā)明的實施例,實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。相反,本發(fā)明的實施例包括落入所附加權利要求書的精神和內涵范圍內的所有變化、修改和等同物。
在本發(fā)明的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術語“相連”、“連接”應做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連。對于本領域的普通技術人員而言,可以具體情況理解上述術語在本發(fā)明中的具體含義。此外,在本發(fā)明的描述中,除非另有說明,“多個”的含義是兩個或兩個以上。流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應被本發(fā)明的實施例所屬技術領域的技術人員所理解。 下面參考附圖描述根據本發(fā)明實施例的測試數(shù)據的篩選方法。一種測試數(shù)據的篩選方法,包括以下步驟:輸入待測程序及測試數(shù)據集合,其中,測試數(shù)據集合中包括多個測試數(shù)據;對待測程序進行分析以獲得待測程序的多個路徑;分別將多個測試數(shù)據加載至待測程序,并獲得每個測試數(shù)據所對應的路徑;以及根據每個測試數(shù)據所對應的路徑對測試數(shù)據集合中的多個測試數(shù)據進行篩選。圖1為根據本發(fā)明一個實施例的測試數(shù)據的篩選方法的流程圖。如圖1所示,根據本發(fā)明實施例的測試數(shù)據的篩選方法包括下述步驟。SlOl,輸入待測程序及測試數(shù)據集合,其中,測試數(shù)據集合中包括多個測試數(shù)據。在本發(fā)明的一個實施例中,可通過GNU程序調試器⑶B (The GNU ProjectDebugger)對待測程序進行測試并對測試數(shù)據集合進行篩選,首先需要將待測程序及測試數(shù)據集合輸入⑶B中,通過Linux管道技術與⑶B的機器界面MI (Machine Interface)接口建立連接后,根據命令可直接調用待測程序和測試數(shù)據集合中的多個測試數(shù)據。
S102,對待測程序進行分析以獲得待測程序的多個路徑。具體地,首先通過靜態(tài)分支預測方法查找程序源文件中的函數(shù)信息,并以函數(shù)為單位,在源代碼中分析各個函數(shù)的分支關鍵詞,并獲取各個函數(shù)的起始行、終止行和函數(shù)內各分支間的層級關系,舉例來說,對于一個二進制的待測程序,包含一個main函數(shù),main函數(shù)中又包含if/else/for/while等函數(shù)語句,可以將其看做一個樹結構,其中,根節(jié)點為main函數(shù),樹節(jié)點為程序的分支節(jié)點,即if/else/for/while等,葉子節(jié)點為一個測試數(shù)據的測試結束點,從根節(jié)點到葉子節(jié)點的多個不同執(zhí)行路徑既為這個二進制待測程序的多個路徑。其中,靜態(tài)分支預測方法為公知方法,在本發(fā)明中不再贅述。S103,分別將多個測試數(shù)據加載至待測程序,并獲得每個測試數(shù)據所對應的路徑。其中,多個測試數(shù)據之間具有數(shù)據分割點,用以對每個測試數(shù)據進行區(qū)分,待測程序的每個路徑中在主函數(shù)及分支節(jié)點處均設有斷點,通過斷點獲得每個測試數(shù)據所對應的路徑。具體地,可以通過⑶B的MI接口獲取每個測試數(shù)據對應的路徑,首先通過Linux管道技術與GDB的MI接口建立連接后,載入待測程序,并設定程序運行參數(shù),同時在待測程序的main函數(shù)處插入一個斷點,并利用靜態(tài)分支預測方法掃描待測程序的源代碼,找出所有的分支節(jié)點,并在分支節(jié)點處以及多個測試數(shù)據間的數(shù)據分割點處插入斷點,然后運行待測程序,每次在斷點處停下,記錄斷點位置,包括行號和節(jié)點名稱(如if/else/for/while等)。當待測程序經過數(shù)據分割點時,表明一個測試數(shù)據執(zhí)行路徑已經結束,既可獲取此測試數(shù)據對應的路徑,并進行保存。S104,根據每個測試數(shù)據所對 應的路徑對測試數(shù)據集合中的多個測試數(shù)據進行篩選。具體地,可在對應的路徑相同的測試數(shù)據中選取一個作為最終測試數(shù)據,由此實現(xiàn)對多個測試數(shù)據進行篩選。根據本發(fā)明實施例的測試數(shù)據的篩選方法,無需商業(yè)軟件提供接口,就可獲取測試數(shù)據集合中的測試數(shù)據對應的路徑,用戶接入成本小,使用方便,并且能根據每個測試數(shù)據對應的路徑對測試數(shù)據集合進行篩選,能夠在眾多測試數(shù)據中提取出覆蓋待測程序所有路徑并且最精簡的測試數(shù)據集合,從而大幅度地提高了測試速度,并且縮短了測試周期。圖2為根據本發(fā)明一個具體實施例的測試數(shù)據的篩選方法的流程圖。如圖2所示,根據本發(fā)明實施例的測試數(shù)據的篩選方法包括下述步驟。S201,輸入待測程序及測試數(shù)據集合,其中,測試數(shù)據集合中包括多個測試數(shù)據。在本發(fā)明的一個實施例中,可通過GNU程序調試器GDB對待測程序進行測試并對測試數(shù)據集合進行篩選,首先需要將待測程序及測試數(shù)據集合輸入GDB中,通過Linux管道技術與GDB的機器界面MI接口建立連接后,根據命令可直接調用待測程序和測試數(shù)據集合中的多個測試數(shù)據。S202,對待測程序進行分析以獲得待測程序的多個路徑。具體地,首先通過靜態(tài)分支預測方法查找程序源文件中的函數(shù)信息,并以函數(shù)為單位,在源代碼中分析各個函數(shù)的分支關鍵詞,并獲取各個函數(shù)的起始行、終止行和函數(shù)內各分支間的層級關系,舉例來說,對于一個二進制的待測程序,包含一個main函數(shù),main函數(shù)中又包含if/else/for/while等函數(shù)語句,可以將其看做一個樹結構,其中,根節(jié)點為main函數(shù),樹節(jié)點為程序的分支節(jié)點,即if/else/for/while等,葉子節(jié)點為一個測試數(shù)據的測試結束點,從根節(jié)點到葉子節(jié)點的多個不同執(zhí)行路徑既為這個二進制待測程序的多個路徑。其中,靜態(tài)分支預測方法為公知方法,在本發(fā)明中不再贅述。S203,分別將多個測試數(shù)據加載至待測程序,并獲得每個測試數(shù)據所對應的路徑。其中,多個測試數(shù)據之間具有數(shù)據分割點,用以對每個測試數(shù)據進行區(qū)分,待測程序的每個路徑中在主函數(shù)及分支節(jié)點處均設有斷點,通過斷點獲得每個測試數(shù)據所對應的路徑。具體地,可以通過⑶B的MI接口獲取每個測試數(shù)據對應的路徑,首先通過Linux管道技術與GDB的MI接口建立連接后,載入待測程序,并設定程序運行參數(shù),同時在待測程序的main函數(shù)處插入一個斷點,并利用靜態(tài)分支預測方法掃描待測程序的源代碼,找出所有的分支節(jié)點,并在分支節(jié)點處以及多個測試數(shù)據間的數(shù)據分割點處插入斷點,然后運行待測程序,每次在斷點處停下,記錄斷點位置,包括行號和節(jié)點名稱(如if/else/for/while等)。當待測程序經過數(shù)據分割點時,表明一個測試數(shù)據執(zhí)行路徑已經結束,既可獲取此測試數(shù)據對應的路徑,并進行保存。S204,判斷是否存在兩個測試數(shù)據所對應的路徑相同。具體地,當一個測試數(shù)據執(zhí)行路徑結束時,首先判斷是否存在與該測試數(shù)據對應的路徑相同的已存儲的路徑,即判斷該測試數(shù)據對應的路徑中包含的路徑號是否相同,如果不存在,則此測試數(shù)據有效,并存儲此測試數(shù)據的路徑。S205,如果存在,則進一步判斷路徑相同的兩個測試數(shù)據是否具有相同的處理邏輯。如果存在與此測試數(shù)據對應的路徑相同的已存儲的路徑,則進一步判斷路徑相同的兩個測試數(shù)據是否具有相同的處理邏輯,即判斷路徑相同的兩個測試數(shù)據所測試的目標功能是否相同。S206,如果是,則選擇兩個測試數(shù)據中的一個作為最終的測試數(shù)據。如果路徑相同的兩個測試數(shù)據具有相同的處理邏輯,即路徑相同的兩個測試數(shù)據所測試的目標功能也相同,則此測試數(shù)據無效,并選擇兩個測試數(shù)據中的一個作為最終的測試數(shù)據,由此,所有對應路徑相同并且處理邏輯相同的測試數(shù)據中只選取一個作為最終的測試數(shù)據,減少了不必要的測試數(shù)據,能夠提高測試速度以及縮短測試周期。根據本發(fā)明實施例的測試數(shù)據的篩選方法,能夠在多個對應路徑相同的測試數(shù)據中篩選一個作為最終的測試數(shù)據,進一步精簡了測試數(shù)據集合,提高測試速度,并且縮短測試周期。圖3為根據本發(fā)明另一個實施例的測試數(shù)據的篩選方法的流程圖。如圖3所示,根據本發(fā)明實施例的測試數(shù)據的篩選方法包括下述步驟。S301,輸入待測程序及測試數(shù)據集合,其中,測試數(shù)據集合中包括多個測試數(shù)據。在本發(fā)明的一個實施例中,可通過GNU程序調試器GDB對待測程序進行測試并對測試數(shù)據集合進行篩選,首先需要講待測程序及測試數(shù)據集合輸入GDB中,通過Linux管道技術與GDB的機器界面MI接口建立連接后,根據命令可直接調用待測程序和測試數(shù)據集合中的多個測試數(shù)據。S302,對待測程序 進行分析以獲得待測程序的多個路徑。
具體地,先通過靜態(tài)分支預測方法查找程序源文件中的函數(shù)信息,并以函數(shù)為單位,在源代碼中分析各個函數(shù)的分支關鍵詞,并獲取各個函數(shù)的起始行、終止行和函數(shù)內各分支間的層級關系,舉例來說,對于一個二進制的待測程序,包含一個main函數(shù),main函數(shù)中又包含if/else/for/while等函數(shù)語句,可以將其看做一個樹結構,其中,根節(jié)點為main函數(shù),樹節(jié)點為程序的分支節(jié)點,即if/else/for/while等,葉子節(jié)點為一個測試數(shù)據的測試結束點,從根節(jié)點到葉子節(jié)點的多個不同執(zhí)行路徑既為這個二進制待測程序的多個路徑。其中,靜態(tài)分支預測方法為公知方法,在本發(fā)明中不再贅述。S303,分別將多個測試數(shù)據加載至待測程序,并獲得每個測試數(shù)據所對應的路徑。其中,多個測試數(shù)據之間具有數(shù)據分割點,用以對每個測試數(shù)據進行區(qū)分,待測程序的每個路徑中在主函數(shù)及分支節(jié)點處均設有斷點,通過斷點獲得每個測試數(shù)據所對應的路徑。具體地,可以通過⑶B的MI接口獲取每個測試數(shù)據對應的路徑,首先通過Linux管道技術與GDB的MI接口建立連接后,載入待測程序,設定程序運行參數(shù),同時在待測程序的main函數(shù)處插入一個斷點,并利用靜態(tài)分支預測方法掃描待測程序的源代碼,找出所有的分支節(jié)點,并在分支節(jié)點處以及 多個測試數(shù)據間的數(shù)據分割點處插入斷點,然后運行待測程序,每次在斷點處停下,記錄斷點位置,包括行號和節(jié)點名稱(如if/else/for/while等)。當待測程序經過數(shù)據分割點時,表明一個測試數(shù)據執(zhí)行路徑已經結束,既可獲取此測試數(shù)據對應的路徑,并進行保存。S304,判斷是否存在兩個測試數(shù)據所對應的路徑相同。具體地,當一個測試數(shù)據執(zhí)行路徑結束時,首先判斷是否存在與該測試數(shù)據對應的路徑相同的已存儲的路徑,即判斷該測試數(shù)據對應的路徑中包含的路徑號是否相同,如果不存在,則此測試數(shù)據有效,并存儲此測試數(shù)據的路徑。S305,如果存在,則進一步判斷路徑相同的兩個測試數(shù)據是否具有相同的處理邏輯。如果存在與此測試數(shù)據對應的路徑相同的已存儲的路徑,則進一步判斷路徑相同的兩個測試數(shù)據是否具有相同的處理邏輯,即判斷路徑相同的兩個測試數(shù)據所測試的目標功能是否相同。S306,如果是,則選擇兩個測試數(shù)據中的一個作為最終的測試數(shù)據。如果路徑相同的兩個測試數(shù)據具有相同的處理邏輯,即路徑相同的兩個測試數(shù)據所測試的目標功能也相同,則此測試數(shù)據無效,并選擇兩個測試數(shù)據中的一個作為最終的測試數(shù)據,由此,所有對應路徑相同并且處理邏輯相同的測試數(shù)據中只選取一個作為最終的測試數(shù)據,減少了不必要的測試數(shù)據,能夠提高測試速度以及縮短測試周期。S307,記錄每個測試數(shù)據對應的路徑,及對應的路徑的斷點信息并作為測試文件輸出。在本發(fā)明的一個實施例中,在每個測試數(shù)據測試結束時記錄其對應的路徑及其斷點信息,并根據路徑斷點信息生成程序執(zhí)行路徑信息,以及將測試數(shù)據對應的路徑信息和程序執(zhí)行路徑信息作為輸出文件進行輸出,以展示給用戶。根據本發(fā)明實施例的測試數(shù)據的篩選方法,能夠記錄每個測試數(shù)據對應的路徑以及對應路徑的斷點信息,并據此生成測試文件輸出,是用戶能夠讓用戶了解測試數(shù)據的執(zhí)行順序,方便測試工程師對測試進行跟蹤分析,使其能夠根據未被覆蓋的分支語句反推并添加測試用例,提高測試函數(shù)覆蓋率。為了實現(xiàn)上述實例,本發(fā)明還提出一種測試數(shù)據的篩選裝置。一種測試數(shù)據的篩選裝置,包括:輸入模塊,用于輸入待測程序及測試數(shù)據集合,其中,測試數(shù)據集合中包括多個測試數(shù)據;分析模塊,用于對待測程序進行分析以獲得待測程序的多個路徑;加載模塊,用于分別將多個測試數(shù)據加載至待測程序,并獲得每個測試數(shù)據所對應的路徑;以及篩選模塊,用于根據每個測試數(shù)據所對應的路徑對測試數(shù)據集合中的多個測試數(shù)據進行篩選。圖4為根據本發(fā)明一個實施例的測試數(shù)據的篩選裝置的結構框圖。如圖4所示,根據本發(fā)明實施例的測試數(shù)據的篩選裝置包括:輸入模塊100、分析模塊200、加載模塊300以及篩選模塊400。具體地,輸入模塊100用于輸入待測程序及測試數(shù)據集合,其中,測試數(shù)據集合中包括多個測試數(shù)據。在本發(fā)明的一個實施例中,可通過GNU程序調試器GDB對待測程序進行測試并對測試數(shù)據集合進行篩選,首先通過輸入模塊100將待測程序及測試數(shù)據集合輸入GDB中,通過Linux管道技術與⑶B的機器界面MI接口建立連接后,根據命令可直接調用待測程序和測試數(shù)據集合中的多個測試數(shù)據。分析模塊200用于對待測程序進行分析以獲得待測程序的多個路徑。更具體地,分析模塊200首先通過靜態(tài)分支預測方法查找程序源文件中的函數(shù)信息,并以函數(shù)為單位,在源代碼中分析各個函數(shù)的分支關鍵詞,并獲取各個函數(shù)的起始行、終止行和函數(shù)內各分支間的層級關系。舉 例來說,對于一個二進制的待測程序,包含一個main函數(shù),main函數(shù)中又包含if/else/for/while等函數(shù)語句,可以將其看做一個樹結構,其中,根節(jié)點為main函數(shù),樹節(jié)點為程序的分支節(jié)點,即if/else/for/while等,葉子節(jié)點為一個測試數(shù)據的測試結束點,從根節(jié)點到葉子節(jié)點的多個不同執(zhí)行路徑既為這個二進制待測程序的多個路徑。其中,靜態(tài)分支預測方法為公知方法,在此不再贅述。加載模塊300用于分別將多個測試數(shù)據加載至待測程序,并獲得每個測試數(shù)據所對應的路徑。其中,多個測試數(shù)據之間具有數(shù)據分割點,用以對每個測試數(shù)據進行區(qū)分,待測程序的每個路徑中在主函數(shù)及分支節(jié)點處均設有斷點,通過斷點獲得每個測試數(shù)據所對應的路徑。更具體地,可以通過GDB的MI接口獲取每個測試數(shù)據對應的路徑,首先通過Linux管道技術與⑶B的MI接口建立連接后,加載模塊300載入待測程序,并設定程序運行參數(shù),同時在待測程序的main函數(shù)處插入一個斷點,并利用靜態(tài)分支預測方法掃描待測程序的源代碼,找出所有的分支節(jié)點,并在分支節(jié)點處以及多個測試數(shù)據間的數(shù)據分割點處插入斷點,然后運行待測程序,每次在斷點處停下,記錄斷點位置,包括行號和節(jié)點名稱(如if/else/for/while等)。當待測程序經過數(shù)據分割點時,表明一個測試數(shù)據執(zhí)行路徑已經結束,既可獲取此測試數(shù)據對應的路徑,并進行保存。篩選模塊400用于根據每個測試數(shù)據所對應的路徑對測試數(shù)據集合中的多個測試數(shù)據進行篩選。更具體地,篩選模塊400在兩個測試數(shù)據所對應的路徑相同,并且路徑相同的兩個測試數(shù)據具有相同的處理邏輯時,選擇兩個測試數(shù)據中的一個作為最終的測試數(shù)據由此實現(xiàn)對多個測試數(shù)據進行篩選。當一個測試數(shù)據執(zhí)行路徑結束時,首先判斷該測試數(shù)據對應的路徑是否與已經存儲的路徑相同,即判斷該測試數(shù)據對應的路徑中包含的路徑號是否相同,如果不同,則此測試數(shù)據的路徑有效,并存儲此測試數(shù)據的路徑,如果相同,則進一步判斷路徑相同的兩個測試數(shù)據是否具有相同的處理邏輯,即判斷路徑相同的兩個測試數(shù)據所測試的目標功能是否相同。如果路徑相同的兩個測試數(shù)據具有相同的處理邏輯,即路徑相同的兩個測試數(shù)據所測試的目標功能也相同,則選擇兩個測試數(shù)據中的一個作為最終的測試數(shù)據,由此,所有對應路徑相同并且處理邏輯相同的測試數(shù)據中只選取一個作為最終的測試數(shù)據,減少了不必要的測試數(shù)據,能夠提高測試速度以及縮短測試周期。根據本發(fā)明實施例的測試數(shù)據的篩選裝置,無需商業(yè)軟件提供接口,就可獲取測試數(shù)據集合中的測試數(shù)據對應的路徑,用戶接入成本小,使用方便,并且篩選模塊能根據每個測試數(shù)據對應的路徑對測試數(shù)據集合進行篩選,能夠在眾多測試數(shù)據中提取出覆蓋待測程序所有路徑并且最精簡的測試數(shù)據集合,從而大幅度地提高了測試速度,并且縮短了測試周期。圖5為根據本發(fā)明另一個實施例的測試數(shù)據的篩選裝置的結構框圖。如圖5所示,根據本發(fā)明實施例的測試數(shù)據的篩選裝置在圖4所示的基礎上還包括:輸出模塊500。具體地,輸出模塊500用于記錄每個測試數(shù)據對應的路徑,及對應的路徑的斷點信息并作為測試文件輸出。在本發(fā)明的一個實施例中,輸出模塊能夠在每個測試數(shù)據測試結束時記錄其對應的路徑及其斷點信息,并根據路徑斷點信息生成程序執(zhí)行路徑信息,以及將測試數(shù)據對應的路徑信息和程序執(zhí)行路徑信息作為輸出文件進行輸出,以展示給用戶。根據本發(fā)明實施例的測試數(shù)據的篩選裝置,通過輸出模塊能夠記錄每個測試數(shù)據對應的路徑以及對應路徑的斷點信息,并據此生成測試文件輸出,是用戶能夠讓用戶了解測試數(shù)據的執(zhí)行順序,方便測試工程師對測試進行跟蹤分析,使其能夠根據未被覆蓋的分支語句反推并添加測試用例,提高測試函數(shù)覆蓋率。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對所述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。盡管已經示出和描述了本發(fā)明的實施例,對于本領域的普通技術人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權利要求及其等同限定。
權利要求
1.一種測試數(shù)據的篩選方法,其特征在于,包括以下步驟: 輸入待測程序及測試數(shù)據集合,其中,所述測試數(shù)據集合中包括多個測試數(shù)據; 對所述待測程序進行分析以獲得所述待測程序的多個路徑; 分別將所述多個測試數(shù)據加載至所述待測程序,并獲得每個測試數(shù)據所對應的路徑;以及 根據所述每個測試數(shù)據所對應的路徑對所述測試數(shù)據集合中的多個測試數(shù)據進行篩選。
2.如權利要求1所述的方法,其特征在于,所述根據所述每個測試數(shù)據所對應的路徑對所述測試數(shù)據集合中的多個測試數(shù)據進行篩選進一步包括: 如果兩個測試數(shù)據所對應的路徑相同,則進一步判斷所述路徑相同的兩個測試數(shù)據是否具有相同的處理邏輯; 如果所述路徑相同的兩個測試數(shù)據具有相同的處理邏輯,則選擇所述兩個測試數(shù)據中的一個作為最終的測試數(shù)據。
3.如權利要求1或2所述的方法,其特征在于,其中,每個路徑中在主函數(shù)及分支節(jié)點處均設有斷點,通過所述斷點獲得每個測試數(shù)據所對應的路徑。
4.如權利要求3所述的方法,其特征在于,還包括: 記 錄每個測試數(shù)據對應的路徑,及所述對應的路徑的斷點信息并作為測試文件輸出。
5.如權利要求1-4任一項所述的方法,其特征在于,其中,所述多個測試數(shù)據之間具有數(shù)據分割點。
6.一種測試數(shù)據的篩選裝置,其特征在于,包括: 輸入模塊,用于輸入待測程序及測試數(shù)據集合,其中,所述測試數(shù)據集合中包括多個測試數(shù)據; 分析模塊,用于對所述待測程序進行分析以獲得所述待測程序的多個路徑; 加載模塊,用于分別將所述多個測試數(shù)據加載至所述待測程序,并獲得每個測試數(shù)據所對應的路徑;以及 篩選模塊,用于根據所述每個測試數(shù)據所對應的路徑對所述測試數(shù)據集合中的多個測試數(shù)據進行篩選。
7.如權利要求6所述的裝置,其特征在于,所述篩選模塊在兩個測試數(shù)據所對應的路徑相同,并且所述路徑相同的兩個測試數(shù)據具有相同的處理邏輯時,選擇所述兩個測試數(shù)據中的一個作為最終的測試數(shù)據。
8.如權利要求6所述的裝置,其特征在于,其中,每個路徑中在主函數(shù)及分支節(jié)點處均設有斷點,通過所述斷點獲得每個測試數(shù)據所對應的路徑。
9.如權利要求8所述的裝置,其特征在于,還包括: 輸出模塊,用于記錄每個測試數(shù)據對應的路徑,及所述對應的路徑的斷點信息并作為測試文件輸出。
10.如權利要求6-9任一項所述的裝置,其特征在于,其中,所述多個測試數(shù)據之間具有數(shù)據分割點。
全文摘要
本發(fā)明提出一種測試數(shù)據的篩選方法及裝置,其中所述方法包括輸入待測程序及測試數(shù)據集合,其中,測試數(shù)據集合中包括多個測試數(shù)據;對待測程序進行分析以獲得待測程序的多個路徑;分別將多個測試數(shù)據加載至待測程序,并獲得每個測試數(shù)據所對應的路徑;以及根據每個測試數(shù)據所對應的路徑對測試數(shù)據集合中的多個測試數(shù)據進行篩選。根據本發(fā)明實施例的方法,無需商業(yè)軟件提供接口,就可獲取測試數(shù)據集合中的測試數(shù)據對應的路徑,用戶接入成本小,使用方便,并且篩選模塊能根據每個測試數(shù)據對應的路徑對測試數(shù)據集合進行篩選,能夠在眾多測試數(shù)據中提取出覆蓋待測程序所有路徑并且最精簡的測試數(shù)據集合,大幅度地提高了測試速度,縮短了測試周期。
文檔編號G06F11/36GK103218297SQ20131018027
公開日2013年7月24日 申請日期2013年5月15日 優(yōu)先權日2013年5月15日
發(fā)明者楊詠臻, 丁世遠, 陳菊花, 黃延勝 申請人:百度在線網絡技術(北京)有限公司