亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

從靜態(tài)收集的數(shù)據(jù)中標(biāo)識(shí)受影響的測(cè)試的制作方法_3

文檔序號(hào):9493664閱讀:來(lái)源:國(guó)知局
對(duì)代碼112的代碼改變113。構(gòu)建差異108可將具有代碼改變113的代碼112與先前構(gòu)建119中的一個(gè)或多個(gè)進(jìn)行比較。從比較中,構(gòu)建差異108可標(biāo)識(shí)經(jīng)改變的方法114。代碼112可以是產(chǎn)品122的一部分。產(chǎn)品122可以是軟件產(chǎn)品,諸如例如,文字處理產(chǎn)品、電子表格管理產(chǎn)品、帳目管理產(chǎn)品、電子郵件產(chǎn)品、因特網(wǎng)瀏覽產(chǎn)品等。
[0046]方法200包括訪問與產(chǎn)品相關(guān)聯(lián)的代碼的一部分的依賴關(guān)系數(shù)據(jù),該代碼的一部分要被測(cè)試來(lái)確定該產(chǎn)品在該代碼的一部分被執(zhí)行后是否留在適當(dāng)?shù)臓顟B(tài)中,響應(yīng)于該代碼的一部分已經(jīng)被改變來(lái)訪問依賴關(guān)系數(shù)據(jù)(201)。例如,依賴關(guān)系分析器101可訪問代碼112的經(jīng)改變的方法114。經(jīng)改變的方法114可被測(cè)試來(lái)確定在包括經(jīng)改變的方法114在內(nèi)的代碼122被執(zhí)行后產(chǎn)品122是否留在適當(dāng)?shù)臓顟B(tài)中。經(jīng)改變的方法114可響應(yīng)于用戶121作出對(duì)代碼112的代碼改變113而被訪問。
[0047]方法200包括執(zhí)行靜態(tài)依賴關(guān)系分析以從多個(gè)測(cè)試中標(biāo)識(shí)受對(duì)代碼的改變影響的一個(gè)或多個(gè)測(cè)試(202)。例如,依賴關(guān)系分析器101可執(zhí)行靜態(tài)依賴關(guān)系分析來(lái)標(biāo)識(shí)測(cè)試111C(包括在111Α—111Νψ)被經(jīng)改變的方法114影響。
[0048]執(zhí)行靜態(tài)依賴關(guān)系分析包括,對(duì)于多個(gè)測(cè)試中的每個(gè)測(cè)試,遍歷源自該測(cè)試的向外依賴關(guān)系鏈路的傳遞閉包(203)。例如,對(duì)于測(cè)試111Α— 111Ν中的每一個(gè),遍歷模塊102可針對(duì)經(jīng)改變的方法114中的任意來(lái)遍歷源自測(cè)試111Α — 111Ν的向外依賴關(guān)系鏈路的傳遞閉包。向外依賴關(guān)系鏈路可包括調(diào)用、引用等。
[0049]執(zhí)行靜態(tài)依賴關(guān)系分析任選地包括(如由虛線指示的),對(duì)于多個(gè)測(cè)試中的每個(gè)測(cè)試,使用一個(gè)或多個(gè)其他技術(shù)來(lái)更改傳遞閉包(204)。例如,依賴關(guān)系分析器101可使用以下中的一個(gè)或多個(gè)來(lái)更改測(cè)試111Α — 111Ν的傳遞閉包:更先進(jìn)的靜態(tài)分析、試探、動(dòng)態(tài)數(shù)據(jù)等。在一些實(shí)施例中,試探104、動(dòng)態(tài)代碼檢測(cè)器106和修剪模塊107中的一個(gè)或多個(gè)更改測(cè)試的傳遞閉包。
[0050]執(zhí)行靜態(tài)依賴關(guān)系分析包括,對(duì)于多個(gè)測(cè)試中的每個(gè)測(cè)試,使用向外依賴關(guān)系鏈路的(可能經(jīng)更改的)傳遞閉包的反向映射來(lái)推斷對(duì)代碼的改變是否潛在地影響測(cè)試(205)。例如,對(duì)于測(cè)試111A—111N中的每一個(gè),映射模塊103可反向映射源自測(cè)試111A—111N的依賴關(guān)系鏈路的傳遞閉包。從反向映射中,依賴關(guān)系分析器101可推斷經(jīng)改變的方法114以及被經(jīng)改變的方法114調(diào)用的其他方法是否潛在地影響測(cè)試111A—111N。
[0051]反向映射可作為映射表格被維護(hù)在測(cè)試數(shù)據(jù)庫(kù)109中。
[0052]方法200包括將該一個(gè)或多個(gè)測(cè)試包括在用于測(cè)試產(chǎn)品的測(cè)試集之中(206)。例如,依賴關(guān)系分析器101可將測(cè)試111C包括在測(cè)試集117中。測(cè)試集117可包括用于測(cè)試產(chǎn)品122的測(cè)試。
[0053]在一些實(shí)施例中,試探104可被用于更準(zhǔn)確地標(biāo)識(shí)用于包括在測(cè)試集117中的測(cè)試。例如,試探104可被用于協(xié)助標(biāo)識(shí)接口的具體實(shí)現(xiàn)以及標(biāo)識(shí)虛擬方法。
[0054]轉(zhuǎn)向圖3,圖3示出了包括接口在內(nèi)的示例代碼樣本300。如描繪的,在行301定義接口 IFoo。在行302定義接口類型IFoo的類MyFoo。在行303定義方法MyFo0.Beep。在行304定義TestMethodl。TestMethodl ()包括行305,其返回MyFoo的具體實(shí)例。
[0055]試探104可作為用于尋找影響方法的傳遞遍歷的部分來(lái)被包括。由此對(duì)于代碼樣本300而言,可以存在從TestMethodl到{IFo0.Bar (), MyFo0.Bar ()}的鏈路,其進(jìn)而可導(dǎo)致MyFo0.Beep被找到并被包括在影響方法列表中。
[0056]如描述的,動(dòng)態(tài)代碼檢測(cè)器106和修剪模塊107中的一個(gè)或兩者可被用于以動(dòng)態(tài)數(shù)據(jù)來(lái)擴(kuò)充靜態(tài)收集的數(shù)據(jù)。依賴關(guān)系分析器101可具有動(dòng)態(tài)運(yùn)行(例如,使用代碼會(huì)聚、Intellitrace?、測(cè)試影響等)并將該信息注入到受影響的測(cè)試數(shù)據(jù)。例如,動(dòng)態(tài)代碼檢測(cè)器106可推斷在運(yùn)行時(shí)被調(diào)用的方法之間的鏈路。依賴關(guān)系分析器101可將這些推斷出的鏈路作為inferredlinks (推斷出的鏈路)116保存在測(cè)試數(shù)據(jù)庫(kù)109中。類似地,修剪模塊107可修剪出在運(yùn)行時(shí)不被實(shí)際調(diào)用的方法。依賴關(guān)系分析器101可將這些修剪出的方法的指示存儲(chǔ)為經(jīng)修剪的方法124。推斷出鏈路和修剪出的方法兩者可被用于細(xì)化測(cè)試集117的內(nèi)容。
[0057]圖4示出了用于使用試探來(lái)標(biāo)識(shí)潛在地影響測(cè)試的方法的示例計(jì)算機(jī)體系結(jié)構(gòu)400。如描繪的,IFo0.Bar () 307潛在地影響測(cè)試TestMethodl304 (例如,如通過(guò)靜態(tài)分析檢測(cè)的)。代碼改變還可包括對(duì)MyFo0.Bar () 308的改變。試探104可確定MyFo0.Bar () 308還潛在地影響測(cè)試TestMethodl304。因此,MyFo0.Bar () 308可被包括在TestMethodl304的傳遞閉包中。
[0058]圖5示出了包括方法的動(dòng)態(tài)調(diào)用的示例代碼樣本500。代碼樣本500包括行501處的 Method (方法)DoSomething、行 502 處的 Method (方法)DoDynamicLoading 以及行 504處的Method (方法)Testl。串504“DoDynamicLoading (進(jìn)行動(dòng)態(tài)加載)”被包括在MethodDoSomething()中。動(dòng)態(tài)代碼檢測(cè)器106可推斷在運(yùn)行時(shí)與DoDynamicLoading相關(guān)聯(lián)的額外鏈路(相比于靜態(tài)數(shù)據(jù)而言)。動(dòng)態(tài)代碼檢測(cè)器106可推斷方法DoDynamicLoading和Testl之間的鏈路。由此,當(dāng)DoDynamicLoading被改變時(shí),Testl可作為潛在地受影響的測(cè)試被包括。
[0059]圖6示出了用于將鏈路添加到依賴關(guān)系數(shù)據(jù)的示例計(jì)算機(jī)體系結(jié)構(gòu)600。如描繪的,方法602潛在地影響測(cè)試601 (例如,如通過(guò)靜態(tài)分析檢測(cè)的)。代碼改變還可包括對(duì)可動(dòng)態(tài)調(diào)用的方法603的改變。方法602可在運(yùn)行時(shí)調(diào)用可動(dòng)態(tài)調(diào)用的方法603。由此,動(dòng)態(tài)代碼檢測(cè)器106可在運(yùn)行時(shí)推斷方法602和可動(dòng)態(tài)調(diào)用的方法603之間的鏈路604。鏈路604可被用在后續(xù)的分析中以確定可動(dòng)態(tài)調(diào)用的方法603還潛在地影響測(cè)試601。通過(guò)使用鏈路604,可動(dòng)態(tài)調(diào)用的方法603可被包括在測(cè)試601的傳遞閉包中。
[0060]圖7示出了包括條件語(yǔ)句的示例代碼樣本700。代碼樣本700包括行701處的方法DoSomething、行702處的方法DoThingl以及行704處的方法Test。在行706處,Testl被配置成用“true (真)”值來(lái)調(diào)用DoSomthing。由此,當(dāng)Testl被使用時(shí),行707處的條件語(yǔ)句總是被滿足并且DoThingl在行708處被調(diào)用。另一方面,行709處的else (否則)語(yǔ)句從不到達(dá)并且DoThing2從不在行711處被調(diào)用。因此,對(duì)DoThing2的改變不影響Testl。修剪模塊107可檢測(cè)到DoThing2從不被調(diào)用。因此,修剪模塊107可將DoThing2指示為要從Testl的傳遞閉包中修剪的方法。由此,當(dāng)DoThing2被改變時(shí),Testl不作為潛在地受影響的測(cè)試被包括。此外,DoThing2從testl704的傳遞閉包中排除。
[0061]圖8示出了用于從依賴關(guān)系數(shù)據(jù)中修剪方法的示例計(jì)算機(jī)體系結(jié)構(gòu)800。如描繪的,測(cè)試801引用方法802。方法802進(jìn)而引用方法803和804。由此,測(cè)試801潛在地被方法802、803和804中的任意影響。然而,修剪模塊107可檢測(cè)到,在運(yùn)行時(shí),方法
當(dāng)前第3頁(yè)1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1