從靜態(tài)收集的數據中標識受影響的測試的制作方法
【專利說明】
【背景技術】
[0001]1.背景和相關技術
[0002]計算機系統及相關技術影響社會的許多方面。的確,計算機系統處理信息的能力已轉變了人們生活和工作的方式?,F在,計算機系統通常執(zhí)行在計算機系統出現以前人工執(zhí)行的許多任務(例如,文字處理、日程安排、帳目管理等)。最近,計算機系統彼此耦合并耦合到其他電子設備以形成計算機系統及其他電子設備可在其上傳輸電子數據的有線和無線計算機網絡。因此,許多計算任務的執(zhí)行被分布在多個不同的計算機系統和/或多個不同的計算環(huán)境中。
[0003]通常,軟件和硬件計算機兩者相關組件在向公眾發(fā)布之前均被測試。取決于組件的類型,組件可經歷各種不同的測試來幫助確保其如預期的那樣運行。測試還可揭露組件缺陷,這些缺陷在發(fā)布之前糾正要便宜得多并且簡單得多。
[0004]在測試軟件時,測試可包括向軟件提交各種類型的輸入來確定軟件如何進行響應。即使在軟件被發(fā)布后,測試可隨著對軟件作出進一步的改變(例如,更新、打補丁等)而繼續(xù)。在一些實施例中,大量的測試集被創(chuàng)建來測試盡可能多的場景。這在發(fā)布之前是有益的,因為軟件的每個方面可能都需要被測試。
[0005]然而,對于開發(fā)者而言,隨著作出的每個改變來運行所有測試是不方便的。另一方面,當作出對現有軟件的改變時,可能希望將測試針對在其中改變被作出的代碼。由此,開發(fā)者通常基于他們對改變和測試床的理解來選擇要運行的測試的子集。替換地,開發(fā)者可發(fā)起運行完整的測試集。開發(fā)者可允許測試運行達某個時間量以取得關于改變的反饋,潛在地在反饋被接收到后停止測試。不幸的是,這些方法導致針對作出的改變要么過少要么過多的測試被運行。
[0006]由此,一些測試技術嘗試以更自動化的方式來標識相關測試的子集。例如,測試技術可使用來自先前測試運行的動態(tài)數據。然而,使用動態(tài)數據要求測試運行被工具化或采樣,導致(潛在地顯著地)更慢的運行。許多開發(fā)者不愿意為每個測試運行來處理這些延遲,因為這減慢了反饋回路。此外,與這些延遲相關聯的總的時間可在開發(fā)的過程中相加。
[0007]簡要概沐
[0008]本發(fā)明涉及用于從靜態(tài)收集的數據中標識受影響的測試的方法、系統和計算機程序產品。響應于代碼的一部分被改變,該代碼的一部分的依賴關系數據被訪問。該代碼的一部分要被測試以確定在該代碼的一部分被執(zhí)行后包括該代碼的產品是否留在適當的狀態(tài)中。靜態(tài)依賴關系分析被執(zhí)行以從多個測試中標識受對該代碼的改變影響的一個或多個測試。對于多個測試中的每個測試,源自該測試的向外依賴關系鏈路的傳遞閉包被遍歷。任選地,一個或多個其他技術(諸如例如,更先進的靜態(tài)分析、試探、動態(tài)數據等)可被用于更改傳遞閉包。向外依賴關系鏈路的(可能經更改的)傳遞閉包的反向映射被用于推斷對代碼的改變是否潛在地影響測試。一個或多個測試被包括在用于測試產品的測試集之中。
[0009]本概述被提供以便以簡化形式介紹概念的選集,所述概念將在以下詳細描述中進一步描述。該概述不旨在標識所要求保護的主題的關鍵特征或基本特征,也不旨在被用來幫助確定所要求保護的主題的范圍。
[0010]本發(fā)明的附加特征和優(yōu)點將在以下描述中敘述,并且其一部分根據本描述將是顯而易見的,或者可通過對本發(fā)明的實踐來獲知。本發(fā)明的特征和優(yōu)點可通過在所附權利要求書中特別指出的工具和組合來實現和獲得。本發(fā)明的這些以及其它特征、優(yōu)點和特征將根據以下描述和所附權利要求而變得更顯而易見,或者可通過如此后闡述的對本發(fā)明的實踐而獲知。
[0011]附圖簡述
[0012]為了描述可獲得本發(fā)明的上述和其它優(yōu)點和特征的方式,將通過參考附圖中示出的本發(fā)明的具體實施例來呈現以上簡要描述的本發(fā)明的更具體描述??梢岳斫?,這些附圖只描繪了本發(fā)明的各典型實施例,并且因此不被認為是對其范圍的限制,將通過使用附圖并利用附加特征和細節(jié)來描述和解釋本發(fā)明,在附圖中:
[0013]圖1示出促進從靜態(tài)收集的數據中標識受影響的測試的示例計算機體系結構。
[0014]圖2示出了用于從靜態(tài)收集的數據中標識受影響的測試的示例方法的流程圖。
[0015]圖3示出了包括接口的示例代碼樣本。
[0016]圖4示出了用于使用試探來標識潛在地影響測試的方法的示例計算機體系結構。
[0017]圖5示出了包括方法的動態(tài)調用的示例代碼樣本。
[0018]圖6示出了用于將鏈路添加到依賴關系數據的示例計算機體系結構。
[0019]圖7示出了包括條件語句的示例代碼樣本。
[0020]圖8示出了用于從依賴關系數據中修剪方法的示例計算機體系結構。
[0021]詳細描沐
[0022]本發(fā)明涉及用于從靜態(tài)收集的數據中標識受影響的測試的方法、系統和計算機程序產品。響應于代碼的一部分被改變,該代碼的一部分的依賴關系數據被訪問。該代碼的一部分要被測試以確定在該代碼的一部分被執(zhí)行后包括該代碼的產品是否留在適當的狀態(tài)中。靜態(tài)依賴關系分析被執(zhí)行以從多個測試中標識受對該代碼的改變影響的一個或多個測試。對于多個測試中的每個測試,源自該測試的向外依賴關系鏈路的傳遞閉包被遍歷。任選地,一個或多個其他技術(諸如例如,更先進的靜態(tài)分析、試探、動態(tài)數據等)可被用于更改傳遞閉包。向外依賴關系鏈路的(可能經更改的)傳遞閉包的反向映射被用于推斷對代碼的改變是否潛在地影響測試。一個或多個測試被包括在用于測試產品的測試集之中。
[0023]本發(fā)明的各實施例可包括或利用專用或通用計算機,該專用或通用計算機包括諸如舉例而言一個或多個處理器和系統存儲器的計算機硬件,如以下更詳細討論的。本發(fā)明范圍內的各實施例也包括用于實現或存儲計算機可執(zhí)行指令和/或數據結構的實體及其他計算機可讀介質。這樣的計算機可讀介質可以是可由通用或專用計算機系統訪問的任何可用介質。存儲計算機可執(zhí)行指令的計算機可讀介質是計算機存儲介質(設備)。承載計算機可執(zhí)行指令的計算機可讀介質是傳輸介質。由此,作為示例而非限制,本發(fā)明的各實施例可包括至少兩種顯著不同的計算機可讀介質:計算機存儲介質(設備)和傳輸介質。
[0024]計算機存儲介質(設備)包括RAM、ROM、EEPROM、CD-ROM、固態(tài)驅動器(“SSD” )(如基于RAM)、閃存、相變存儲器(“PCM”)、其他類型的存儲器、其他光盤存儲、磁盤存儲或其他磁存儲設備、或可用于存儲計算機可執(zhí)行指令或數據結構形式的所需程序代碼裝置且可由通用或專用計算機訪問的任何其他介質。
[0025]“網絡”被定義為使得電子數據能夠在計算機系統和/或模塊和/或其它電子設備之間傳輸的一個或多個數據鏈路。當信息通過網絡或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計算機時,該計算機將該連接適當地視為傳輸介質。硬連線連接可包括但不限于,具有金屬導體和/或光纖的線。傳輸介質可以包括可以用來攜帶所需要的以計算機可執(zhí)行的指令或數據結構的形式存在的程序代碼裝置并可以被通用或專用計算機訪問的網絡和/或數據鏈路。上述的組合應當也被包括在計算機可讀介質的范圍內。
[0026]此外,在到達各種計算機系統組件之后,計算機可執(zhí)行指令或數據結構形式的程序代碼裝置可從傳輸介質自動傳輸到計算機存儲介質(設備)(或反之亦然)。例如,通過網絡或數據鏈接接收到的計算機可執(zhí)行指令或數據結構可被緩存在網絡接口模塊(例如,“NIC”)內的RAM中,然后最終被傳輸到計算機系統RAM和/或計算機系統處的較不易失性的計算機存儲介質(設備)。因而,應當理解,計算機存儲介質(設備)可被包括在還利用(甚至主要利用)傳輸介質的計