專利名稱:應(yīng)用程序修改部分搜索裝置和應(yīng)用程序修改部分搜索方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種應(yīng)用程序修改部分(application modification portion)搜索裝置和一種應(yīng)用程序修改部分搜索方法,具體地,涉及用于應(yīng)用程序定制的應(yīng)用程序修改部分搜索裝置和應(yīng)用程序修改部分搜索方法。
背景技術(shù):
希望簡化定制應(yīng)用程序的過程。日本專利公報(JP-P2007-122670A)公開了一種表單(form)生成系統(tǒng),其能夠定制任意功能和信息而顯著地減少與表單定制相關(guān)的用戶工作負(fù)荷,并能夠遵循版本升級。該表單生成系統(tǒng)使用了軟件包用于表單生成。表單生成系統(tǒng)包括保留部分、新部 分和輸出部分。保留部分將輸出表單的定制信息保留為軟件包的差異信息。當(dāng)修改軟件包時,更新部分反映被保留在被修改軟件包上保留部分內(nèi)的定制信息。當(dāng)修改軟件包時,輸出部分輸出定制表單,其上反映了由于定制信息產(chǎn)生的修改。也就是說,當(dāng)通過版本升級來修改應(yīng)用程序時,根據(jù)日本專利公報(JP-P2007-122670A)的版本升級功能執(zhí)行將軟件包的修改部分應(yīng)用于定制表單的處理。另夕卜,將定制信息保存在定制信息文件中。將定制差異信息保存在定制差異信息文件中。日本專利公報(JP-P2008-310679A)公開了一種動態(tài)設(shè)計信息生成設(shè)備,其能夠甚至在規(guī)范等不完全時動態(tài)生成動態(tài)設(shè)計信息。動態(tài)設(shè)計信息生成設(shè)備包括程序分析部分、信息增加部分、程序執(zhí)行部分和設(shè)計信息生成部分。程序分析部分分析程序的結(jié)構(gòu)。信息增加部分參考由程序分析部分所分析的程序并將用于生成程序的執(zhí)行順序信息的信息增加到程序。程序執(zhí)行部分依照預(yù)定執(zhí)行環(huán)境執(zhí)行增加了信息的程序。根據(jù)通過程序執(zhí)行部分執(zhí)行程序所獲得的程序的執(zhí)行順序信息來生成動態(tài)設(shè)計信息。日本專利公報(JP-P2007-213487A)公開了一種方面(aspect)生成設(shè)備,其能夠輕松地生成將被并入程序假定位置的方面,作為使用面向方面編程的應(yīng)用開發(fā)中的整合目標(biāo)。方面生成設(shè)備生成了方面,方面是對作為開發(fā)目標(biāo)的程序中使用的類(class)公用的處理。方面生成設(shè)備包括類信息分析部分、建議分析部分、用戶接口管理部分和方面生成部分。類信息分析部分從第一存儲部分中讀出用于程序中作為開發(fā)目標(biāo)的類文件,并分析所述類文件中每一個類的結(jié)構(gòu)。隨后,所述部分獲取用于每個類中的類名、方法名和簽名,并基于獲取的類名、方法名和簽名生成在將生成的方面中定義的類名、方法名和簽名的候選。建議分析部分從第二存儲部分讀出由將要被刪除的方面提供的建議的候選用作公共處理,并分析建議的候選的數(shù)據(jù)結(jié)構(gòu)?;陬愋畔⒎治霾糠值念惤Y(jié)構(gòu)的分析結(jié)果,用戶接口管理部分使得圖形用戶界面屏幕顯示示出了用于程序中作為開發(fā)目標(biāo)的類的類名、方法名和簽名的類圖以及由建議分析部分所分析的建議的候選。當(dāng)由用戶從被顯示在圖形用戶界面屏幕上的建議的候選中選擇的任意圖標(biāo)被拖到類圖中的任意類的位置時,方面生成部分顯示由類信息分析部分所生成的并能夠在所述類中被選擇的類名、方法名和簽名的候選。隨后,所述部分通過將由用戶所選擇的類名、方法名和簽名的候選的數(shù)據(jù)應(yīng)用于由用戶所選擇的建議候選的數(shù)據(jù)結(jié)構(gòu)來生成方面。日本專利公報(JP-P2007-213498A)公開了一種方面顯示系統(tǒng),其能夠基于建議的方面和指定的點切除把將被并入的方面的處理顯示在目標(biāo)程序處理的源代碼的圓周上,并能夠輕松地追蹤其中并入了該方面的程序的最終處理的整個流程。方面顯示系統(tǒng)把將被并入計算機程序中的方面顯示在計算機程序的源代碼中。方面顯示系統(tǒng)包括讀出部分、代碼分析部分、方面分析部分和顯示控制部分。讀出部分讀出計算機程序的源代碼和已編譯的可執(zhí)行代碼,以及根據(jù)面向方面編程的方面程序的源代碼和已編譯的可執(zhí)行代碼。 代碼分析部分分析計算機程序的已編譯可執(zhí)行代碼以獲取用于識別屬于計算機程序的過程定義的信息,以及計算機程序的對應(yīng)于所述過程定義的開始命令和結(jié)束命令的開始源代碼行和結(jié)束源代碼行,并將它們存入存儲部分。方面分析部分分析方面程序的已編譯可執(zhí)行代碼。隨后,所述部分基于用于識別屬于方面程序的整合部分定義和在整合部分定義中定義的字符串的信息來檢測整合目標(biāo)過程的信息。隨后,所述部分獲取用于識別與整合部分定義相關(guān)聯(lián)的整合過程定義的信息,以及方面程序的對應(yīng)于整合過程的開始命令和結(jié)束命令的開始源代碼行和結(jié)束源代碼行。顯示控制部分選擇計算機程序的源代碼并搜索與識別屬于所選計算機程序的過程定義的信息一致的整合目標(biāo)過程的信息。隨后,所述部分獲取用于識別與用于識別所述一致整合目標(biāo)過程所屬于的整合部分定義的信息相關(guān)聯(lián)的整合過程定義的信息。隨后,所述部分通過插入或替換將在整合過程定義的開始源代碼行和結(jié)束源代碼行之間的整合處理顯示在屬于所述對應(yīng)計算機程序的過程定義的開始源代碼行和結(jié)束源代碼行的圓周上。引用文獻列表專利文獻專利文獻I :日本專利公報(JP-P2007-122670A)專利文獻2 :日本專利公報(JP-P2008-310679A)專利文獻3 :日本專利公報(JP-P2007-213487A)專利文獻4 :日本專利公報(JP-P2007-213498A)
發(fā)明內(nèi)容
對于相關(guān)應(yīng)用程序定制,提出了一種程序修改部分的應(yīng)用程序,如通過修改程序部分實現(xiàn)定制操作的版本升級功能。另一方面,未提出對用于判斷程序的哪一部分應(yīng)被修改以定制程序的支持。因此,存在用于定制的必需的程序開發(fā)困難的問題。本發(fā)明的示例性目的是提供一種簡化用于現(xiàn)有應(yīng)用程序的定制過程的應(yīng)用程序修改部分搜索裝置和應(yīng)用程序修改部分搜索方法。根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置包括測試執(zhí)行部分,該測試執(zhí)行部分在基于輸入?yún)?shù)對應(yīng)用程序執(zhí)行覆蓋測試時生成多個日志;以及結(jié)果處理部分,該結(jié)果處理部分基于多個日志生成點候選報告。多個日志分別指示了在覆蓋測試執(zhí)行期間被調(diào)用的多個方法中將參數(shù)指定為自變量的方法的調(diào)用棧(call stack)。該調(diào)用棧指示在其中定義了方法的調(diào)用的應(yīng)用程序上的位置。點候選報告指示了在應(yīng)用程序中點的候選,當(dāng)基于參數(shù)執(zhí)行處理的調(diào)度時,對于該點的候選來說修改是必要的。根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索方法包括在基于輸入?yún)?shù)對應(yīng)用程序執(zhí)行覆蓋測試時生成多個日志的步驟;基于所述多個日志生成點候選報告的步驟;以及基于所述點候選報告定制應(yīng)用程序的步驟。多個日志分別指示了在覆蓋測試執(zhí)行期間被調(diào)用的多個方法中將參數(shù)指示為自變量的方法的調(diào)用棧。該調(diào)用棧指示在其中定義了方法的調(diào)用的應(yīng)用程序上的位置。點候選報告指示了在應(yīng)用程序中點的候選,當(dāng)基于參數(shù)執(zhí)行處理調(diào)度時,對于該點的候選來說修改是必要的。根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置和應(yīng)用程序修改部分搜索方法,用戶能夠參考應(yīng)用程序中對其來說修改是必要的點的候選,并且因此能夠輕松地定制應(yīng)用程序。
結(jié)合附圖和對示例性實施例的說明,本發(fā)明的上述目的、優(yōu)勢和特征將更加明顯,其中圖I是示出了根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置的方框圖;圖2是示出了根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索方法的流程圖;圖3是示出了輸入輸出驗證部分的操作的流程圖;圖4是示出了結(jié)果處理部分的操作的流程圖;圖5示出了參數(shù)定義的示例;圖6示出了方面定義的示例;圖7示出了操作日志的示例;圖8示出了步驟A300的處理結(jié)果的一部分;圖9示出了步驟A300的處理結(jié)果的另一部分;圖10示出了步驟A301的處理結(jié)果;圖11示出了步驟A302到A305的處理結(jié)果;圖12示出了步驟A306到A308的處理結(jié)果;以及圖13示出了點候選報告。
具體實施例方式下面將參照附圖來說明根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置的示例性實施例。然而,這些示例性實施例并不限制本發(fā)明的技術(shù)范圍。如圖I所示,應(yīng)用程序修改部分搜索裝置包括測試執(zhí)行部分100和結(jié)果處理部分200。測試執(zhí)行部分100是應(yīng)用程序121操作的基本環(huán)境。結(jié)果處理部分200處理輸出自測試執(zhí)行部分100的操作日志,并生成點候選報告。測試執(zhí)行部分100包括方面處理部分110、執(zhí)行引擎部分120、輸入輸出驗證部分130和日志提取部分140。方面處理部分110具有將用于輸出操作日志的處理插入應(yīng)用程序121中的功能。執(zhí)行引擎部分120具有執(zhí)行應(yīng)用程序121的功能。而且,執(zhí)行引擎部分120通過使用測試程序310執(zhí)行應(yīng)用程序121的邏輯的覆蓋測試。根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置包括輸入裝置(未圖示)。根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置通過輸入裝置輸入應(yīng)用程序121和測試程序310。覆蓋測試(coverage test)是指以一條件作為輸入的測試,在該條件下在應(yīng)用程序121中實現(xiàn)的邏輯被徹底地(無遺漏地)執(zhí)行。通常將覆蓋測試準(zhǔn)備為單元測試,與應(yīng)用程序121 —起實現(xiàn)。輸入輸出驗證部分130具有判斷發(fā)生在應(yīng)用程序121中的方法調(diào)用的自變量是否與參數(shù)列表300匹配的功能。日志提取部分140具有以調(diào)用棧(調(diào)用路徑)的形式輸出發(fā)生在應(yīng)用程序121中的方法調(diào)用的功能。方面處理部分110包括方面生成部分111和方面應(yīng)用部分112。方面生成部分111具有生成方面形式的邏輯的功能,其判斷發(fā)生在應(yīng)用程序121中的方法調(diào)用的自變量是否與在參數(shù)列表300中定義的參數(shù)組匹配。根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置通過輸入裝置輸入?yún)?shù)列表300。方面應(yīng)用部分112具有將由方面生成部分111所生成的方面應(yīng)用于應(yīng)用程序121的功能。結(jié)果處理部分200包括處理棧分析部分210和報告生成部分220。處理棧分析部 分210具有分析由日志提取部分140所輸出的多個調(diào)用棧和合并多個調(diào)用棧的功能。報告生成部分220具有基于被合并的多個調(diào)用棧生成修改點候選報告330的功能。修改點候選報告330指示了由處理棧分析部分210所合并的處理調(diào)用棧,其作為修改部分的候選。結(jié)果處理部分200還包括輸出裝置(未圖示)。輸出裝置顯示修改點候選報告330。圖2示出了根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索方法。首先,用戶生成參數(shù)定義并基于參數(shù)定義生成參數(shù)列表300。用戶使得方面處理部分110通過輸入裝置輸入?yún)?shù)列表300 (步驟A101)。在參數(shù)列表300中所述的參數(shù)是用于識別定制目標(biāo)的ID,其由文件名、URL和數(shù)據(jù)庫名例示。方面生成部分111從輸入的參數(shù)列表300生成方面定義(步驟A102)。這里,生成的方面定義用來檢查參數(shù)是否是作為在應(yīng)用程序中每一個方法調(diào)用的自變量出現(xiàn)。使用比較定義在參數(shù)列表300中的參數(shù)組和關(guān)于每一個方法調(diào)用的方法的自變量的處理來實現(xiàn)方面定義。方面應(yīng)用部分112將由方面生成部分111所生成的方面定義應(yīng)用到應(yīng)用程序121(步驟A103)。由于應(yīng)用過程,對在方面定義中定義的參數(shù)和方法的自變量的檢查在該應(yīng)用程序121中每一個方法調(diào)用的定時被執(zhí)行。執(zhí)行引擎部分120通過使用測試程序310執(zhí)行應(yīng)用程序121的邏輯的覆蓋測試(步驟A104)。覆蓋測試是指以一條件作為輸入的測試,在該條件下在應(yīng)用程序121中實現(xiàn)的邏輯被徹底地執(zhí)行。一般將覆蓋測試準(zhǔn)備為單元測試,與應(yīng)用程序121—起實現(xiàn)。測試執(zhí)行部分100進一步執(zhí)行在步驟A104執(zhí)行時由方面生成部分111所生成的方面定義中定義的處理。作為在方面定義中定義的處理的執(zhí)行結(jié)果,生成操作日志。結(jié)果處理部分200合并在步驟A104中生成的操作日志(步驟A105)。結(jié)果處理部分200將被合并的操作日志輸出為修改點候選報告330(步驟A106)。修改點候選報告330指示了在應(yīng)用程序源代碼上的部分的位置,該部分中定義了調(diào)用特定輸入?yún)?shù)的方法。也就是說,被包括在修改點候選報告330中的信息是參數(shù)標(biāo)識符、方法名、以及定義了相應(yīng)方法的應(yīng)用程序源代碼的行數(shù)。圖3示出了由方面生成部分111所生成的方面定義中定義的處理。在步驟A104執(zhí)行期間每次當(dāng)調(diào)用應(yīng)用程序121的方法時,執(zhí)行所述處理。輸入輸出驗證部分130首先在當(dāng)調(diào)用應(yīng)用程序121的方法時將指示了在處理中的參數(shù)列表300中參數(shù)索引的m重置為O (步驟A201)。接下來,輸入輸出驗證部分130評估m(xù)是否大于在參數(shù)列表300中定義的參數(shù)數(shù)量(步驟A202)。當(dāng)步驟A202的評估為真時,即當(dāng)m大于參數(shù)數(shù)量時(在步驟A202處為“是”),輸入輸出驗證部分130結(jié)束所述處理。當(dāng)步驟A202的評估為假時,即當(dāng)m不大于參數(shù)數(shù)量時(在步驟A202處為“否”),輸入輸出驗證部分130將指示了在處理中方法自變量的索引(順序)的η重置為0(步驟A203)。接下來,輸入輸出驗證部分130評估η是否大于在處理中的方法中定義的自變量數(shù)量(步驟Α204)。當(dāng)步驟Α204的評估為真時,即當(dāng)η大于自變量數(shù)量時(在步驟Α204處為“是”),輸入輸出驗證部分130將m增加I (步驟A205)并返回到步驟A202的處理。當(dāng)步驟A204的評估為假時,即當(dāng)η不大于自變量數(shù)量時(在步驟Α204處為“否”),輸入輸出驗證部分130評估第η個方法的自變量是否與參數(shù)列表300中的第m個值相同(步驟A206)。當(dāng)步驟A206的評估為真時,即,當(dāng)?shù)讦莻€方法的自變量與第m個值相同時(在步驟A206處為“是”),輸入輸出驗證部分130在相應(yīng)方法被調(diào)用的時刻將調(diào)用棧輸出到操作 日志(步驟A207)。在參數(shù)定義中被匹配的參數(shù)、指示被匹配方法的調(diào)用順序的調(diào)用棧信息、以及關(guān)于源代碼的被匹配方法的位置(行數(shù)量)被記錄在操作日志中以被輸出。當(dāng)步驟A206的評估為假時,即當(dāng)?shù)讦莻€方法的自變量與第m個值不同時(在步驟A206處為“否”)或者在步驟A207之后,輸入輸出驗證部分130將η增加I (步驟Α208)并返回到步驟Α204的處理。圖4示出了步驟Α105的操作。首先,處理棧分析部分210將針對每一個參數(shù)在步驟Α207中輸出的操作日志劃分為比較目標(biāo)(步驟Α300)。接下來,處理棧分析部分210將每一個參數(shù)的操作日志集以調(diào)用棧深度的升序分類(步驟Α301)。例如,當(dāng)存在調(diào)用棧DlOO(方法A —方法B —方法C —方法D)和調(diào)用棧DlOl (方法A —方法B —方法C)時,處理棧分析部分210以順序(調(diào)用棧DlOl —調(diào)用棧D100)對調(diào)用棧DlOO和DlOl分類,因為調(diào)用棧DlOl的深度較淺。接下來,處理棧分析部分210將預(yù)定處理重復(fù)與在步驟Α301中被分類的列表的入口(entry)數(shù)量相同的次數(shù)(步驟A302)。接下來,處理棧分析部分210將預(yù)定處理重復(fù)與調(diào)用棧的入口(b)數(shù)量相同的次數(shù),入口(b)具有與在處理中的入口(a)的調(diào)用棧相同的深度(步驟A303)。接下來,處理棧分析部分210評估入口(a)的調(diào)用棧是否與入口(b)的調(diào)用棧相同(步驟A304)。當(dāng)步驟A304的評估為真時,即當(dāng)入口(a)的調(diào)用棧與入口(b)的調(diào)用棧相同時(在步驟A304處為“是”),處理棧分析部分210從操作日志中刪除入口(b)(步驟A305)。當(dāng)步驟A304的評估為假時,即當(dāng)入口(a)的調(diào)用棧與入口(b)的調(diào)用棧不同時(在步驟A304處為“否”),或者在步驟A305的處理結(jié)束之后,處理棧分析部分210繼續(xù)步驟A303的循環(huán)。也就是說,處理棧分析部分210對具有與在處理中的入口(a)的調(diào)用棧相同深度的調(diào)用棧的每一個入口(b)執(zhí)行步驟A304和步驟A305的處理。接下來,處理棧分析部分210將預(yù)定處理重復(fù)與具有深度為(在處理中的入口(a)的調(diào)用棧深度-I)的調(diào)用棧的入口(c)數(shù)量相同的次數(shù)(步驟A303)。處理棧分析部分210評估入口(C)的調(diào)用棧是否被包括在入口(a)的調(diào)用棧中(步驟A307)。當(dāng)步驟A307的評估為真,即當(dāng)入口(c)的調(diào)用棧被包括在入口(a)的調(diào)用棧中時(在步驟A307處為“是”),處理棧分析部分210從操作日志中刪除入口(c)(步驟A308)。當(dāng)步驟A307的評估為假,即當(dāng)入口(C)的調(diào)用棧不被包括在入口(a)的調(diào)用棧中時(在步驟A307處為“否”),或者在步驟A308的處理結(jié)束之后,處理棧分析部分210繼續(xù)步驟A306的循環(huán)。也就是說,處理棧分析部分210對具有深度等于(在處理中的入口(a)的調(diào)用棧深度-I)的調(diào)用棧的每一個入口(c)執(zhí)行步驟A307和步驟A308的處理。在步驟A306的循環(huán)結(jié)束之后,處理棧分析部分210繼續(xù)步驟A302的循環(huán)。也就是說,處理棧分析部分210對在步驟A301中分類的列表的每一個入口執(zhí)行步驟A303到A308的處理。通過執(zhí)行上述操作,根據(jù)本發(fā)明的應(yīng)用修改部分搜索裝置能夠自動地查找用于定制應(yīng)用程序所必須的處理的修改候選部分。另外,應(yīng)用程序開發(fā)者不需要理解整個應(yīng)用程 序源代碼,并且能夠通過參考點候選報告330得知在定制應(yīng)用程序121中修改是必要的源代碼上的部分,據(jù)此能夠輕松定制應(yīng)用程序121。根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置使用方面技術(shù)通過嵌入方法自變量的比較性邏輯和參數(shù)生成了用于查找對于定制應(yīng)用程序121所必須的處理的修改候選部分的日志。因此,根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置能夠達到如上所述的全面搜索而不需要另外在應(yīng)用程序121中實現(xiàn)特殊邏輯,并且能夠防止應(yīng)用程序121的源代碼污染。當(dāng)修改候選部分包括相同調(diào)用棧時,根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置采用具有最淺處理調(diào)用棧的修改候選部分,并排除重疊的修改候選部分的信息。因此,冗余修改候選部分的信息未被包括在獲得的修改候選部分的報告中,且避免了定制處理被雙重并入等問題。另外,根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置能夠在單元測試和合并測試(其通常針對應(yīng)用程序執(zhí)行)期間查找源代碼上對其來說修改是必要的部分。結(jié)果,根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置能夠以低成本定制應(yīng)用程序,因為開發(fā)處理不需要被改變也不需要被擴展。[示例]本示例示出了在由應(yīng)用程序開發(fā)者生成預(yù)定參數(shù)列表以及測試執(zhí)行部分100輸出預(yù)定操作日志情況中的操作。圖5示出了參數(shù)列表。參數(shù)列表示出了參數(shù)ElOO和參數(shù)E101。參數(shù)ElOO指示作為數(shù)據(jù)庫的連接目的地的“dataSource”將在定制中被修改。參數(shù)ElOl指示作為設(shè)置文件路徑的“setting, properties”將在定制中被修改。方面生成部分111基于參數(shù)定義生成了方面定義。圖6示出了方面定義。方面定義使用AspectJ作為方面實現(xiàn)。方面定義實現(xiàn)了圖3中的流程圖。方面定義是由包括行FlOO到行F104的多個行組成。行FlOO指示了指示每一個方法調(diào)用的中斷的定義。行FlOl定義了由“checkParameter”所定義的處理在由行FlOO所定義的時間處被執(zhí)行。行F102表示行F103以及此后的行的處理被重復(fù)與圖5中定義的參數(shù)的數(shù)量相同的次數(shù)。行F103表示行F104以及此后的行的處理被重復(fù)與作為檢查目標(biāo)的方法的自變量數(shù)量相同的次數(shù)。行F104表示對作為檢查目標(biāo)的參數(shù)和作為檢查目標(biāo)的方法自變量是否是相同的值進行檢查并且在相同值的情況中處理調(diào)用棧被輸出到操作曰志。接下來,方面生成部件111將以上述方式生成的圖6中的方面定義輸出到方面應(yīng)用部分112。接下來,方面應(yīng)用部分112將圖6中的方面定義應(yīng)用到執(zhí)行引擎部分120,并應(yīng)用到應(yīng)用程序121。應(yīng)用方法取決于執(zhí)行引擎,并且未在本發(fā)明中定義。例如,當(dāng)Java和AspectJ被用作執(zhí)行引擎時,通過使用Java的代理功能附加了被稱為加載時編織器(LoadTime Weaver)的AspectJ工具,以應(yīng)用所述方面。接下來,執(zhí)行引擎部分120執(zhí)行測試程序310以執(zhí)行用于應(yīng)用程序121的覆蓋測試。測試程序310使用了在圖5中參數(shù)列表中定義的參數(shù)。也就是說,其被作為數(shù)據(jù)庫連接到連接目的地“dataSource”并且“setting, properties”被用作為設(shè)置文件。在覆蓋測試期間,每次當(dāng)被包括在應(yīng)用程序121中的方法調(diào)用發(fā)生時,被定義在圖6的方面定義中的檢查處理進行操作。也就是說,輸入輸出驗證部分130檢測方法調(diào)用。日志提取部分140基于由輸入輸出驗證部分130所檢測的方法調(diào)用來生成操作日志。圖7示出自從日志提取部分140中輸出的操作日志的示例。操作日志由多個入口 GlOO到G104構(gòu)成。入口 GlOO指示了圖5的參數(shù)定義的參數(shù)ElOO的參數(shù)值“dataSource”表現(xiàn)為類“A”的方法“二(two)”的自變量。入口 G100也指示了類“應(yīng)用程序(Application)”的“主要(main)”方法,類“A”的“一(one)”方法和類“A”的“二(two)”方法按此順序被調(diào)用為引導(dǎo)到類“A”的方法“二(two)”的調(diào)用棧。在每一個入口的右邊的圓括號示出了在其中定義了相應(yīng)方法的源代碼上的位置,即源代碼的文件和行數(shù)量。也就是說,入口 G100指示了類“A”的方法“二(two)”被定義在源代碼“A. java”的第150行中。入口 GlOl指示了圖5的參數(shù)定義的參數(shù)E100的參數(shù)值“dataSource”表現(xiàn)為類“A”的方法“二(two)”的自變量。入口 G102指示了圖5的參數(shù)定義的參數(shù)E100的參數(shù)值“dataSource”表現(xiàn)為類“A”的方法“三(three)”的自變量。入口 G103指示了圖5的參數(shù)定義的參數(shù)E100的參數(shù)值“dataSource”表現(xiàn)為類“A”的方法“四(four)”的自變量。入口 G104指示了圖5的參數(shù)定義的參數(shù)E100的參數(shù)值“setting, properties”表現(xiàn)為類“A”的方法“五(five)”的自變量。在圖4中的步驟A300的處理中,處理棧分析部分210將圖7中的操作日志劃分成數(shù)量與作為由參數(shù)定義所定義的參數(shù)的數(shù)量相同的數(shù)據(jù)片段。圖8示出了對應(yīng)于被劃分的多個數(shù)據(jù)片段之間的參數(shù)E100的數(shù)據(jù)。數(shù)據(jù)由入口G100、入口 G101、入口 G102和入口 G103構(gòu)成。在圖7所示的多個入口中,入口 G100到G103分別指示了指示參數(shù)E100的參數(shù)值出現(xiàn)的入口。也就是說,入口 G100對應(yīng)于圖7所示的入口 G100。入口 GlOl對應(yīng)于圖7所示的入口 G101。入口 G102對應(yīng)于圖7所示的入口 G102。入口 G103對應(yīng)于圖7所示的入口 G103。圖9示出了對應(yīng)于被劃分的多個數(shù)據(jù)片段之間的參數(shù)ElOl的數(shù)據(jù)。數(shù)據(jù)由入口G104構(gòu)成。在圖7所示的多個入口中,入口 G104指示了指示參數(shù)ElOl的參數(shù)值出現(xiàn)的入口。也就是說,入口 G104對應(yīng)于圖7所示的入口 G104。在圖4的步驟S301的處理中,處理棧分析部分210將圖8中的數(shù)據(jù)的入口分類并將圖9中數(shù)據(jù)的入口分類。圖10示出了通過將圖8中數(shù)據(jù)的入口 G100到G103分類所生成的數(shù)據(jù)。數(shù)據(jù)由入口 G100、入口 G101、入口 G103和入口 G102構(gòu)成。數(shù)據(jù)示出入口 G100的下一個是入口G101,入口 GlOl的下一個是入口 G103,入口 G103的下一個是入口 G102。由于入口 GlOO的調(diào)用棧的深度是三,入口 GlOl的調(diào)用棧的深度是三,入口 G102的調(diào)用棧的深度是四,入口G103的調(diào)用棧的深度是三,因此數(shù)據(jù)示出入口 G100、入口 G101、入口 G103和入口 G102被以深度的升序分類。也就是說,數(shù)據(jù)示出圖8中數(shù)據(jù)的入口 G102和入口 G103的順序互換。圖9的數(shù)據(jù)由單個入口 G104構(gòu)成,并且因此在圖4的步驟A301的處理中未被改變以保留圖9中所示的數(shù)據(jù)。在圖4的步驟A303到A305的處理中,處理棧分析部分210從圖10的數(shù)據(jù)入口中刪除了預(yù)定入口并從圖9的數(shù)據(jù)入口中刪除了預(yù)定入口。圖11示出了通過從圖10的數(shù)據(jù)中刪除預(yù)定入口所生成的數(shù)據(jù)。數(shù)據(jù)由入口 G100、入口 G103和入口 G102構(gòu)成。由于圖10的數(shù)據(jù)的入口 GlOO和GlOl的調(diào)用棧相同,因此數(shù)據(jù)示出了從圖10的數(shù)據(jù)中刪除入口 GlOl所生成的數(shù)據(jù)。圖9的數(shù)據(jù)由單個入口 G104構(gòu)成,并且因此在圖4的步驟A303到A305的處理中 未刪除入口從而使數(shù)據(jù)保留為如圖9所示。在圖4的步驟A306到A308的處理中,處理棧分析部分210從圖11的數(shù)據(jù)入口中刪除了預(yù)定入口并從圖9的數(shù)據(jù)入口中刪除了預(yù)定入口。圖12示出了通過從圖11的數(shù)據(jù)入口中刪除預(yù)定入口所生成的數(shù)據(jù)。數(shù)據(jù)由入口GlOO和入口 G103構(gòu)成。由于圖11的數(shù)據(jù)的入口 G103的調(diào)用棧被包括在入口 G102的調(diào)用棧中,因此數(shù)據(jù)示出了通過從圖11的數(shù)據(jù)中刪除入口 G102所生成的數(shù)據(jù)。圖9的數(shù)據(jù)由單個入口 G104構(gòu)成,并且因此在圖4的步驟A306到A308的處理中未刪除入口從而使數(shù)據(jù)保留為如圖9所示。在圖2的步驟A106的處理中,報告生成部分220基于圖12的數(shù)據(jù)和圖9的數(shù)據(jù)生成點候選報告。圖13示出了基于圖12的數(shù)據(jù)和圖9的數(shù)據(jù)生成的點候選報告。點候選報告由入口 G100、入口 G102 和入口 G104 構(gòu)成。通過參考這樣的點候選報告,應(yīng)用程序開發(fā)者不需要理解整個應(yīng)用程序源代碼,并且能夠了解在定制應(yīng)用程序121中對其來說修改是必要的源代碼上的部分,據(jù)此能夠輕松定制應(yīng)用程序121。在示例中,與圖7所示的多個入口的數(shù)量相比,圖11所示的多個入口的數(shù)量較小。也就是說,示例進一步指示使用根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置的根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索方法的執(zhí)行能夠阻止在修改候選部分包括相同調(diào)用棧的情況下定制處理被雙重并入等問題。注意,根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索裝置可由計算機實現(xiàn)。計算機包括可移除存儲器驅(qū)動器或通信裝置。當(dāng)插入記錄介質(zhì)時,可移除存儲器驅(qū)動器用來讀出被記錄在記錄介質(zhì)中的數(shù)據(jù)。當(dāng)插入記錄介質(zhì)時,可移除存儲器驅(qū)動器進一步用來安裝被記錄在計算機上的記錄介質(zhì)中的計算機程序。記錄介質(zhì)由閃存、磁盤(軟盤、硬盤)、磁帶(錄像磁帶)、光盤(⑶,DVD)和磁光盤例示。通信裝置用來通過通信網(wǎng)絡(luò)讀出被記錄在其他計算機上的信息。通信裝置進一步用來將公開給通信網(wǎng)絡(luò)的計算機程序安裝到在計算機上。通信網(wǎng)絡(luò)由LAN、互聯(lián)網(wǎng)和專用線路例示。在此情況中,通過將實現(xiàn)這些功能的多個計算機程序安裝到計算機上,計算機執(zhí)行根據(jù)本發(fā)明的應(yīng)用程序修改部分搜索方法。
關(guān)于在本說明書和附圖之間的對應(yīng)關(guān)系,參考標(biāo)記100指示測試執(zhí)行部分。參考標(biāo)記200指示結(jié)果處理部分。參考標(biāo)記300指示參數(shù)列表。參考標(biāo)記110指示方面處理部分。參考標(biāo)記111指示方面生成部分。參考標(biāo)記112指示方面應(yīng)用部分。參考標(biāo)記120指示執(zhí)行引擎部分。參考標(biāo)記121指示應(yīng)用程序。參考標(biāo)記130指示輸入輸出驗證部分。參考編號140指示日志提取部分。參考標(biāo)記210指示處理棧分析部分。參考標(biāo)記220指示報告生成部分。參考標(biāo)記310指示測試程序。參考標(biāo)記330指示點候選報告。已參照示例性實施例(其包括示例)具體說明了本發(fā)明,然而本發(fā)明不局限于上述實施例和示例。在不背離本發(fā)明的精神和范圍的情況下,可以作出能夠被本領(lǐng)域普通技術(shù)人員理解的本發(fā)明的各種形式和細(xì)節(jié)的變化。以上已與示例性實施例(其包括示例)一起說明了本發(fā)明,然而,對于本領(lǐng)域普通技術(shù)人員來說明顯的是,這些示例性實施例(其包括示例)僅僅被提供用來解釋本發(fā)明;示例性實施例(其包括示例)不應(yīng)依賴于將權(quán)利要求解釋為限制意義的目的。本申請基于并要求于2010年3月4日提交的日本專利申請No. 2010-047845的優(yōu)·選權(quán)權(quán)益,其全部內(nèi)容通過弓I用結(jié)合于此。上述實施例的部分或全部能夠被說明為下列補充說明但不限于以下內(nèi)容。(補充說明I)一種應(yīng)用程序修改部分搜索裝置,包括測試執(zhí)行部分,該測試執(zhí)行部分當(dāng)基于輸入?yún)?shù)對應(yīng)用程序執(zhí)行覆蓋測試時生成多個日志;以及結(jié)果處理部分,該結(jié)果處理部分基于所述多個日志生成點候選報告,其中所述多個日志分別指示在所述覆蓋測試的執(zhí)行期間被調(diào)用的多個方法中、將所述參數(shù)指定為自變量的方法的調(diào)用棧,所述調(diào)用棧指示在所述應(yīng)用程序上的其中定義了所述方法的調(diào)用的位置,并且所述點候選報告指示了在所述應(yīng)用程序中當(dāng)基于所述參數(shù)執(zhí)行處理調(diào)度時對其來說修改是必要的點的候選。(補充說明2)根據(jù)補充說明I所述的應(yīng)用程序修改部分搜索裝置,其中所述測試執(zhí)行部分包括方面處理部分,該方面處理部分基于所述參數(shù)生成程序邏輯;執(zhí)行引擎部分,該執(zhí)行引擎部分將所述程序邏輯應(yīng)用到所述應(yīng)用程序;輸入輸出驗證部分,該輸入輸出驗證部分當(dāng)每一個方法被調(diào)用時基于所述程序邏輯評估所述參數(shù)是否表現(xiàn)為所述應(yīng)用程序的每一個方法的自變量;以及日志提取部分,該日志提取部分當(dāng)所述參數(shù)表現(xiàn)為所述每一個方法的自變量時基于所述每一個方法的調(diào)用棧生成所述日志。(補充說明3)根據(jù)補充說明2所述的應(yīng)用程序修改部分搜索裝置,其中所述結(jié)果處理部分包括處理棧分析部分,該處理棧分析部分從所述多個日志中提取多個提取日志;以及報告生成部分,該報告生成部分基于所述多個提取日志生成所述點候選報告,由所述點候選報告所指示的多個候選對應(yīng)于所述多個提取日志;并且
所述多個候選中對應(yīng)于單個日志的候選指示了由所述單個日志所指示的調(diào)用棧中的最深調(diào)用。(補充說明4)根據(jù)補充說明3所述的應(yīng)用程序修改部分搜索裝置,其中當(dāng)所述多個日志的第一日志包括所述多個日志的第二日志時,所述處理棧分析部分通過從所述多個日志中刪除所述第一日志來生成所述多個提取日志。(補充說明5)根據(jù)補充說明3或補充說明4所述的應(yīng)用程序修改部分搜索裝置,其中所述測試執(zhí)行部分當(dāng)不同于所述參數(shù)的另一參數(shù)被進一步輸入時生成多個完整日志,所述處理棧分析部分進一步將所述多個完整日志劃分成所述多個日志和指示所 述多個方法中將所述另一參數(shù)指定為自變量的另一方法的調(diào)用棧的多個其他日志,并且從所述多個其他日志中提取多個其他提取日志,并且所述報告生成部分進一步基于所述多個其他提取日志生成所述點候選報告。(補充說明6)一種應(yīng)用程序修改部分搜索方法,包括當(dāng)基于輸入?yún)?shù)對應(yīng)用程序執(zhí)行覆蓋測試時生成多個日志的步驟;基于所述多個日志生成點候選報告的步驟;以及基于所述點候選報告定制所述應(yīng)用程序的步驟,其中所述多個日志分別指示在所述覆蓋測試的執(zhí)行期間被調(diào)用的多個方法中將所述參數(shù)指定為自變量的方法的調(diào)用棧,所述調(diào)用棧指示在所述應(yīng)用程序上的其中定義了所述方法的調(diào)用的位置,并且所述點候選報告指示了在所述應(yīng)用程序中當(dāng)基于所述參數(shù)執(zhí)行處理調(diào)度時對其來說修改是必要的點的候選。(補充說明7)根據(jù)補充說明6所述的應(yīng)用程序修改部分搜索方法,還包括基于所述參數(shù)生成程序邏輯的步驟;將所述程序邏輯應(yīng)用到所述應(yīng)用程序的步驟;當(dāng)調(diào)用每一個方法時,基于所述程序邏輯評估所述參數(shù)是否表現(xiàn)為所述應(yīng)用程序的每一個方法的自變量的步驟;以及當(dāng)所述參數(shù)表現(xiàn)為所述每一個方法的自變量時,基于所述每一個方法的調(diào)用棧生成所述日志的步驟。(補充說明8)根據(jù)補充說明7所述的應(yīng)用程序修改部分搜索方法,還包括從所述多個日志中提取多個提取日志的步驟;以及基于所述多個提取日志生成所述點候選報告的步驟,其中由所述點候選報告所指示的多個候選對應(yīng)于所述多個提取日志;并且所述多個候選中對應(yīng)于單個日志的候選指示了由所述單個日志所指示的調(diào)用棧中的最深調(diào)用。
(補充說明9)根據(jù)補充說明8所述的應(yīng)用程序修改部分搜索方法,其中當(dāng)所述多個日志的第一日志包括所述多個日志的第二日志時,通過從所述多個日志中刪除所述第一日志來生成所述多個提取日志。(補充說明10)根據(jù)補充說明8或補充說明9所述的應(yīng)用程序修改部分搜索方法,還包括將不同于所述參數(shù)的另一參數(shù)被進一步輸入時生成的多個完整日志劃分成所述多個日志和指示所述多個方法中將所述另一參數(shù)指定為自變量的另一方法的調(diào)用棧的多個其他日志的步驟;以及從所述多個其他日志中提取多個其他提取日志的步驟,
其中進一步基于所述多個其他提取日志生成所述點候選報告。(補充說明11)一種使得計算機執(zhí)行根據(jù)補充說明6到10中任意一項所述的應(yīng)用程序修改部分搜索方法的計算機程序。(補充說明12)一種記錄了根據(jù)補充說明11所述的應(yīng)用程序修改部分搜索方法的計算機可讀記錄介質(zhì)。
權(quán)利要求
1.一種應(yīng)用程序修改部分搜索裝置,包括 測試執(zhí)行部分,該測試執(zhí)行部分當(dāng)基于輸入?yún)?shù)對應(yīng)用程序執(zhí)行覆蓋測試時生成多個日志;以及 結(jié)果處理部分,該結(jié)果處理部分基于所述多個日志生成點候選報告, 其中所述多個日志分別指示在所述覆蓋測試的執(zhí)行期間被調(diào)用的多個方法中、將所述參數(shù)指定為自變量的方法的調(diào)用棧, 所述調(diào)用棧指示在所述應(yīng)用程序上的其中定義了所述方法的調(diào)用的位置,并且所述點候選報告指示了在所述應(yīng)用程序中當(dāng)基于所述參數(shù)執(zhí)行處理調(diào)度時對其來說修改是必要的點的候選。
2.根據(jù)權(quán)利要求I所述的應(yīng)用程序修改部分搜索裝置,其中所述測試執(zhí)行部分包括 方面處理部分,該方面處理部分基于所述參數(shù)生成程序邏輯; 執(zhí)行引擎部分,該執(zhí)行引擎部分將所述程序邏輯應(yīng)用到所述應(yīng)用程序; 輸入輸出驗證部分,該輸入輸出驗證部分當(dāng)所述應(yīng)用程序的每一個方法被調(diào)用時基于所述程序邏輯評估所述參數(shù)是否表現(xiàn)為所述每一個方法的自變量;以及 日志提取部分,該日志提取部分當(dāng)所述參數(shù)表現(xiàn)為所述每一個方法的自變量時基于所述每一個方法的調(diào)用棧生成所述日志。
3.根據(jù)權(quán)利要求2所述的應(yīng)用程序修改部分搜索裝置,其中所述結(jié)果處理部分包括 處理棧分析部分,該處理棧分析部分從所述多個日志中提取多個提取日志;以及 報告生成部分,該報告生成部分基于所述多個提取日志生成所述點候選報告, 其中,由所述點候選報告所指示的多個候選對應(yīng)于所述多個提取日志;并且所述多個候選中對應(yīng)于單個日志的候選指示了由所述單個日志所指示的調(diào)用棧中的最深調(diào)用。
4.根據(jù)權(quán)利要求3所述的應(yīng)用程序修改部分搜索裝置,其中當(dāng)所述多個日志的第一日志包括所述多個日志的第二日志時,所述處理棧分析部分通過從所述多個日志中刪除所述第一日志來生成所述多個提取日志。
5.根據(jù)權(quán)利要求3或4所述的應(yīng)用程序修改部分搜索裝置,其中所述測試執(zhí)行部分當(dāng)不同于所述參數(shù)的另一參數(shù)被進一步輸入時生成多個完整日志, 所述處理棧分析部分進一步將所述多個完整日志劃分成所述多個日志和指示所述多個方法中將所述另一參數(shù)指定為自變量的另一方法的調(diào)用棧的多個其他日志,并且從所述多個其他日志中提取多個其他提取日志,并且 所述報告生成部分進一步基于所述多個其他提取日志生成所述點候選報告。
6.—種應(yīng)用程序修改部分搜索方法,包括 當(dāng)基于輸入?yún)?shù)對應(yīng)用程序執(zhí)行覆蓋測試時生成多個日志的步驟; 基于所述多個日志生成點候選報告的步驟;以及 基于所述點候選報告定制所述應(yīng)用程序的步驟, 其中所述多個日志分別指示在所述覆蓋測試的執(zhí)行期間被調(diào)用的多個方法中將所述參數(shù)指定為自變量的方法的調(diào)用棧, 所述調(diào)用棧指示在所述應(yīng)用程序上的其中定義了所述方法的調(diào)用的位置,并且 所述點候選報告指示了在所述應(yīng)用程序中當(dāng)基于所述參數(shù)執(zhí)行處理調(diào)度時對其來說修改是必要的點的候選。
7.根據(jù)權(quán)利要求6所述的應(yīng)用程序修改部分搜索方法,還包括 基于所述參數(shù)生成程序邏輯的步驟; 將所述程序邏輯應(yīng)用到所述應(yīng)用程序的步驟; 當(dāng)調(diào)用所述應(yīng)用程序的每一個方法時,基于所述程序邏輯評估所述參數(shù)是否表現(xiàn)為所述每一個方法的自變量的步驟;以及 當(dāng)所述參數(shù)表現(xiàn)為所述每一個方法的自變量時,基于所述每一個方法的調(diào)用棧生成所述日志的步驟。
8.根據(jù)權(quán)利要求7所述的應(yīng)用程序修改部分搜索方法,還包括 從所述多個日志中提取多個提取日志的步驟;以及 基于所述多個提取日志生成所述點候選報告的步驟, 其中由所述點候選報告所指示的多個候選對應(yīng)于所述多個提取日志; 并且 所述多個候選中對應(yīng)于單個日志的候選指示了由所述單個日志所指示的調(diào)用棧中的最深調(diào)用。
9.根據(jù)權(quán)利要求8所述的應(yīng)用程序修改部分搜索方法,其中當(dāng)所述多個日志的第一日志包括所述多個日志的第二日志時,通過從所述多個日志中刪除所述第一日志來生成所述多個提取日志。
10.根據(jù)權(quán)利要求8或9所述的應(yīng)用程序修改部分搜索方法,還包括 將不同于所述參數(shù)的另一參數(shù)被進一步輸入時生成的多個完整日志劃分成所述多個日志和指示所述多個方法中將所述另一參數(shù)指定為自變量的另一方法的調(diào)用棧的多個其他日志的步驟;以及 從所述多個其他日志中提取多個其他提取日志的步驟, 其中進一步基于所述多個其他提取日志生成所述點候選報告。
全文摘要
所公開的應(yīng)用程序修改部分搜索裝置設(shè)有測試執(zhí)行單元和結(jié)果處理單元,測試執(zhí)行單元用于當(dāng)基于已輸入的參數(shù)對應(yīng)用程序執(zhí)行窮盡測試時創(chuàng)建多個日志,結(jié)果處理單元用于基于多個日志創(chuàng)建點候選報告。多個日志中的每一個示出了當(dāng)窮盡測試被執(zhí)行時調(diào)用的多個方法中指定該參數(shù)作為自變量的方法的調(diào)用棧。調(diào)用棧額外示出了已定義了方法的調(diào)用的應(yīng)用程序中的位置。點候選報告示出了在應(yīng)用程序內(nèi)的點中當(dāng)通過參數(shù)執(zhí)行處理切換時對其來說修改是必要的點的候選。
文檔編號G06F9/44GK102782649SQ20118001231
公開日2012年11月14日 申請日期2011年3月2日 優(yōu)先權(quán)日2010年3月4日
發(fā)明者副島賢司 申請人:日本電氣株式會社