国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于確定測試用例效率的方法和系統(tǒng)的制作方法

      文檔序號:10471042閱讀:352來源:國知局
      用于確定測試用例效率的方法和系統(tǒng)的制作方法
      【專利摘要】提供一種計算機實現(xiàn)的方法、計算機程序產(chǎn)品和系統(tǒng),用于確定測試用例效率。在實現(xiàn)方式中,方法可以包括:確定包括多個測試用例的測試套件中的測試用例執(zhí)行的每個代碼單元,其中,待測試產(chǎn)品包括多個代碼單元。所述方法還可以包括:確定用于所述測試用例的執(zhí)行時間。所述方法可以進(jìn)一步包括:至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,計算所述測試用例的效率等級。
      【專利說明】
      用于確定測試用例效率的方法和系統(tǒng)
      技術(shù)領(lǐng)域
      [0001]本公開一般涉及測試軟件,更具體地說,涉及確定測試用例效率。
      【背景技術(shù)】
      [0002]在開發(fā)周期期間的測試軟件可能是有挑戰(zhàn)性的。軟件包越大,待測試的源和/或可執(zhí)行模塊越個別,問題可能變得越有挑戰(zhàn)性。幾千個測試可能被運行。隨著時間逝去,隨著添加新測試,被稱為測試套件的測試集合可能增長。可能難以確定測試套件中的哪些測試對測試軟件是最有效和有效率的以及哪些測試可能是冗余的。

      【發(fā)明內(nèi)容】

      [0003]根據(jù)實現(xiàn)方式,一種計算機實現(xiàn)的方法可以包括:確定包括多個測試用例的測試套件中的測試用例執(zhí)行的每個代碼單元,其中,待測試產(chǎn)品包括多個代碼單元。所述方法還可以包括:由所述處理器確定用于所述測試用例的執(zhí)行時間。所述方法還可以包括:至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,計算所述測試用例的效率等級。
      [0004]可以包括以下特征中的一個或多個。所述方法還可以包括:確定在所述測試套件中執(zhí)行所述多個代碼單元中的每一個的次數(shù)。所述方法還可以包括:至少部分地基于在所述測試套件中執(zhí)行所述多個代碼單元中的每一個的次數(shù),生成代碼單元分布模型。
      [0005]所述方法還可以包括:至至少部分地基于所述測試用例的效率等級,生成所述測試套件的執(zhí)行模型。所述方法還可以包括:至少部分地基于所述執(zhí)行模型,定義所述多個測試用例的執(zhí)行的順序。所述方法還可以包括:至少部分地基于所述執(zhí)行模型,執(zhí)行所述測試套件的子集。
      [0006]所述方法還可以包括:至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,確定用于所述多個測試用例中的每一個的明智等級。
      [0007]根據(jù)另一實現(xiàn)方式,一種計算機程序產(chǎn)品包括具有其上所存儲的多個指令的計算機可讀介質(zhì)。當(dāng)由處理器執(zhí)行時,所述指令可以使得所述處理器進(jìn)行包括以下的操作:確定包括多個測試用例的測試套件中的測試用例執(zhí)行的每個代碼單元,其中,待測試產(chǎn)品包括多個代碼單元。也可以包括指令,用于確定用于所述測試用例的執(zhí)行時間。也可以包括指令,用于至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,計算所述測試用例的效率等級。
      [0008]可以包括以下特征中的一個或多個。也可以包括指令:確定在所述測試套件中執(zhí)行所述多個代碼單元中的每一個的次數(shù)。還可以包括指令,用于至少部分地基于在所述測試套件中執(zhí)行所述多個代碼單元中的每一個的次數(shù),生成代碼單元分布模型。
      [0009]可以包括指令,用于至少部分地基于所述測試用例的效率等級,生成所述測試套件的執(zhí)行模型。還可以包括指令,用于至少部分地基于所述執(zhí)行模型,定義所述多個測試用例的執(zhí)行的順序。還可以包括指令,用于至少部分地基于所述執(zhí)行模型,執(zhí)行所述測試套件的子集。
      [0010]還可以包括指令,用于至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,確定用于所述多個測試用例中的每一個的明智等級。
      [0011]根據(jù)另一實現(xiàn)方式,一種系統(tǒng)可以包括:至少一個處理器設(shè)備以及與所述至少一個處理器設(shè)備耦合的至少一個存儲器架構(gòu)。所述至少一個處理器設(shè)備可以被配置用于:確定包括多個測試用例的測試套件中的測試用例執(zhí)行的每個代碼單元,其中,待測試產(chǎn)品包括多個代碼單元。所述至少一個處理器還可以被配置用于:確定用于所述測試用例的執(zhí)行時間。所述至少一個處理器可以進(jìn)一步被配置用于:至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,計算所述測試用例的效率等級。
      [0012]可以包括以下特征中的一個或多個。所述至少一個處理器可以進(jìn)一步被配置用于:確定在所述測試套件中執(zhí)行所述多個代碼單元中的每一個的次數(shù)。所述至少一個處理器還可以被配置用于:至少部分地基于在所述測試套件中執(zhí)行所述多個代碼單元中的每一個的次數(shù),生成代碼單元分布模型。
      [0013]所述至少一個處理器可以進(jìn)一步被配置用于:至少部分地基于所述測試用例的效率等級,生成所述測試套件的執(zhí)行模型。所述至少一個處理器還可以被配置用于:至少部分地基于所述執(zhí)行模型,定義所述多個測試用例的執(zhí)行的順序。所述至少一個處理器還可以被配置用于:至少部分地基于所述執(zhí)行模型,執(zhí)行所述測試套件的子集。
      [0014]所述至少一個處理器可以進(jìn)一步被配置用于:至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,確定用于所述多個測試用例中的每一個的明智等級。
      [0015]在附圖和以下描述中闡述一個或多個實現(xiàn)方式的細(xì)節(jié)。從描述、附圖和權(quán)利要求,其它特征和優(yōu)點將變得顯然。
      【附圖說明】
      [0016]圖1是根據(jù)本公開實現(xiàn)方式的包括執(zhí)行測試覆蓋處理的計算設(shè)備的分布式計算網(wǎng)絡(luò)的不意圖;
      [0017]圖2是根據(jù)本公開實現(xiàn)方式的圖1的測試覆蓋處理的流程圖;
      [0018]圖3圖示性描述根據(jù)示例實施例的圖1的測試覆蓋處理的實現(xiàn)方式;
      [0019]圖4圖示性描述根據(jù)示例實施例的圖1的測試覆蓋處理的實現(xiàn)方式;
      [0020]圖5圖示性描述根據(jù)示例實施例的圖1的測試覆蓋處理的實現(xiàn)方式;
      [0021]圖6圖示性描述根據(jù)示例實施例的圖1的測試覆蓋處理的實現(xiàn)方式;
      [0022]圖7是根據(jù)本公開實現(xiàn)方式的圖1的計算設(shè)備的示意圖。
      [0023]各個附圖中的相同標(biāo)號指示相同要素。
      【具體實施方式】
      [0024]參照圖1,示出測試覆蓋處理10。關(guān)于以下討論,意在要理解,可以各種方式實現(xiàn)測試覆蓋處理10。例如,測試覆蓋處理10可以實現(xiàn)為服務(wù)器側(cè)處理、客戶機側(cè)處理或服務(wù)器側(cè)/客戶機側(cè)處理。
      [0025]例如,經(jīng)由測試覆蓋處理10s,測試覆蓋處理10可以實現(xiàn)為純服務(wù)器側(cè)處理。替代地,經(jīng)由客戶機側(cè)應(yīng)用lOcl、客戶機側(cè)應(yīng)用10c2、客戶機側(cè)應(yīng)用10c3和客戶機側(cè)應(yīng)用10c4中的一個或多個,測試覆蓋處理10可以實現(xiàn)為純客戶機側(cè)處理。還替代地,與客戶機側(cè)應(yīng)用10cl、客戶機側(cè)應(yīng)用10c2、客戶機側(cè)應(yīng)用10c3以及客戶機側(cè)應(yīng)用10c4組合,經(jīng)由測試覆蓋處理10s,測試覆蓋處理10可以實現(xiàn)為服務(wù)器側(cè)/客戶機側(cè)處理。在這樣的示例中,測試覆蓋處理1s可以進(jìn)行測試覆蓋處理10的至少一部分功能,并且客戶機側(cè)應(yīng)用lOcl、10c2、10c3和10c4中的一個或多個可以進(jìn)行測試覆蓋處理10的至少一部分功能。
      [0026]相應(yīng)地,如本公開中所使用的測試覆蓋處理10可以包括以下的任何組合:測試覆蓋處理10s、客戶機側(cè)應(yīng)用1cl、客戶機側(cè)應(yīng)用10c2、客戶機側(cè)應(yīng)用10c3和客戶機側(cè)應(yīng)用10c4o
      [0027]還參照圖2,并且如以下將更詳細(xì)地討論的,測試覆蓋處理10可以確定(100)包括多個測試用例的測試套件中的測試用例所執(zhí)行的每個代碼單元,其中,待測試產(chǎn)品包括多個代碼單元。測試覆蓋處理10也可以確定(102)用于測試用例的執(zhí)行時間。至少部分地基于測試用例所執(zhí)行的代碼單元的數(shù)量以及用于測試用例的執(zhí)行時間,測試覆蓋處理10也可以計算(104)測試用例的效率等級。
      [0028]測試覆蓋處理1s可以是服務(wù)器應(yīng)用,并且可以駐留在計算設(shè)備12上而且可以由計算設(shè)備12執(zhí)行,計算設(shè)備12可以連接到網(wǎng)絡(luò)14(如因特網(wǎng)或局域網(wǎng))。計算設(shè)備12的示例可以包括但不限于:個人計算機、服務(wù)器計算機、一系列服務(wù)器計算機、迷你計算機、大型主機計算機或?qū)S镁W(wǎng)絡(luò)設(shè)備。
      [0029]可以存儲在耦合到計算設(shè)備12的存儲設(shè)備16上的測試覆蓋處理1s的指令集和子例程,可以由計算設(shè)備12內(nèi)所包括的一個或多個處理器(未示出)和一個或多個存儲器架構(gòu)(未示出)執(zhí)行。存儲設(shè)備16的示例可以包括但不限于:硬盤驅(qū)動器;帶驅(qū)動器;光驅(qū);RAID設(shè)備;NAS設(shè)備、存儲域網(wǎng)、隨機存取存儲器(RAM);只讀存儲器(ROM);以及所有形式的閃速存儲器存儲設(shè)備。
      [0030]網(wǎng)絡(luò)14可以連接到一個或多個次級網(wǎng)絡(luò)(如網(wǎng)絡(luò)18),其示例可以包括但不限于:例如,局域網(wǎng);廣域網(wǎng);或內(nèi)部網(wǎng)。
      [0031]客戶機側(cè)應(yīng)用10(31、10(:2、10(33、10(34的示例可以包括但不限于肥13瀏覽器或?qū)S脩?yīng)用(例如在移動平臺上運行的應(yīng)用)??梢栽?分別)耦合到客戶機電子設(shè)備28、30、32、34的存儲設(shè)備20、22、24、26上(分別)存儲的客戶機側(cè)應(yīng)用10(31、10(:2、10(33、10(34的指令集和子例程,可以由(分別)并入到客戶機電子設(shè)備28、30、32、34中的一個或多個處理器(未不出)和一個或多個存儲器架構(gòu)(未示出)執(zhí)行。存儲設(shè)備20、22、24、26的示例可以包括但不限于:硬盤驅(qū)動器;帶驅(qū)動器;光驅(qū);RAID設(shè)備;隨機存取存儲器(RAM);只讀存儲器(ROM),以及所有形式的閃速存儲器存儲設(shè)備。
      [0032]客戶機電子設(shè)備28、30、32、34的示例可以包括但不限于個人計算機28、膝上型計算機30、移動計算設(shè)備32、筆記本計算機34、網(wǎng)本計算機(未示出)、服務(wù)器計算機(未示出)、游戲控制臺(未示出)、啟用數(shù)據(jù)的電視控制臺(未示出)以及專用網(wǎng)絡(luò)設(shè)備(未示出)。客戶機電子設(shè)備28、30、32、34可以每個執(zhí)行操作系統(tǒng)。
      [0033]用戶36、38、40、42可以直接通過網(wǎng)絡(luò)14或通過次級網(wǎng)絡(luò)18訪問測試覆蓋處理10。此外,可以經(jīng)由鏈接線路44通過次級網(wǎng)絡(luò)18訪問測試覆蓋處理1。
      [0034]各個客戶機電子設(shè)備(例如客戶機電子設(shè)備28、30、32、34)可以直接或間接地耦合到網(wǎng)絡(luò)14(或網(wǎng)絡(luò)18)。例如,示出個人計算機28直接耦合到網(wǎng)絡(luò)14。此外,示出膝上型計算機30經(jīng)由膝上型計算機30與無線接入點(WAP)48之間所建立的無線通信信道44,無線地耦合到網(wǎng)絡(luò)14。相似地,示出移動計算設(shè)備32經(jīng)由移動計算設(shè)備32與蜂窩網(wǎng)絡(luò)/橋50(其被示出直接耦合到網(wǎng)絡(luò)14)之間所建立的無線通信信道46,無線地耦合到網(wǎng)絡(luò)14 JAP 48可以是例如能夠在膝上型計算機30與WAP 48之間建立無線通信信道44的IEEE 802.1la,802.1lb,802.118、802.1111^-?1和/或藍(lán)牙設(shè)備。此外,示出個人計算機34經(jīng)由硬連線網(wǎng)絡(luò)連接直接耦合到網(wǎng)絡(luò)18。
      [0035]如以上參照圖2—般討論的,測試覆蓋處理10可以確定(100)包括多個測試用例的測試套件中的測試用例執(zhí)行的每個代碼單元,其中,待測試產(chǎn)品包括多個代碼單元。測試覆蓋處理10也可以確定(102)用于測試用例的執(zhí)行時間。至少部分地基于測試用例執(zhí)行的代碼單元的數(shù)量以及用于測試用例的執(zhí)行時間,測試覆蓋處理10也可以計算(104)測試用例的效率等級。
      [0036]測試覆蓋處理10可以確定(100)包括多個測試用例的測試套件中的測試用例所執(zhí)行的每個代碼單元,其中,待測試產(chǎn)品包括多個代碼單元。測試覆蓋處理10可以進(jìn)一步確定
      (102)用于測試用例的執(zhí)行時間。測試套件可以包括多個測試用例。測試套件可用于測試待測試產(chǎn)品。待測試產(chǎn)品可以包括例如軟件應(yīng)用、軟件模塊、軟件模塊的套件和/或軟件應(yīng)用或軟件應(yīng)用的部分或甚至單個代碼行的任何集合。測試用例可以測試待測試產(chǎn)品,例如,以識別缺陷(如bugs)(如操作故障和安全脆弱性)。多個測試用例可以一起提供測試套件,其可以測試待測試產(chǎn)品的各個不同方面,和/或可以通過不同方式和/或以不同程度測試待測試產(chǎn)品的各方面。受測試套件(和/或測試套件內(nèi)的單獨測試用例)測試的待測試產(chǎn)品的不同方面,可以包括例如不同部分(例如代碼部分、功能部分等)、不同屬性(例如缺陷的標(biāo)識、操作故障的標(biāo)識、安全脆弱性的標(biāo)識)、功能測試等。至少測試套件中所包括的多個測試用例的子集可以測試待測試產(chǎn)品。待測試產(chǎn)品可以包括多個代碼單元。通用代碼覆蓋工具可以在代碼覆蓋模式下運行測試用例,以產(chǎn)生描述測試用例執(zhí)行待測試產(chǎn)品中的什么代碼的原始數(shù)據(jù)。這可以通過以下算法來完成:
      [0037]對于測試套件T0...μ中的每個測試用例1\:
      [0038]?提取待測試產(chǎn)品中所執(zhí)行的每個類集合
      [0039]?按類名稱對所提取的類的集合進(jìn)行排序(C0...N,從而對于與測試用例i關(guān)聯(lián)的類j,與特定測試用例關(guān)聯(lián)的特定類可以引用為Clj)
      [0040]?記錄測試用例花費于運行的執(zhí)行(運行MM^(R1)
      [0041]雖然已經(jīng)關(guān)于所執(zhí)行的類描述了以上算法中所包括的代碼單元,但算法可以不限于所執(zhí)行的類。例如,待測試產(chǎn)品內(nèi)所包括的代碼單元可以包括但不限于類、編譯單元、基本塊、語句等。如上所述,測試覆蓋處理10可以確定(100)測試套件Το...μ中的測試用例1\所執(zhí)行的待測試產(chǎn)品的每個代碼單元(例如每個類集合)。可以按代碼單元名稱C0...N對每個代碼單元(例如每個類集合)進(jìn)行排序。測試覆蓋處理10還可以確定(102)并且記錄用于測試用例!\運行的執(zhí)行時間。執(zhí)行時間可以是花費于測試用例從開始運行到結(jié)束的總時間。執(zhí)行時間可以存儲在包括但不限于數(shù)據(jù)文件、數(shù)據(jù)庫等的數(shù)據(jù)存儲中。
      [0042]在實施例中,測試覆蓋處理10可以確定(106)在測試套件中執(zhí)行待測試產(chǎn)品的多個代碼單元中的每一個的次數(shù)。如上所述,待測試產(chǎn)品可以包括多個代碼單元。繼續(xù)于以上算法,通過以下算法,測試覆蓋處理10可以確定(106)在測試套件T0...M中執(zhí)行多個代碼單元中的每一個的次數(shù):
      [0043]?編譯執(zhí)行每個類的每個測試用例(T1)的完整列表
      [0044]?按類名稱(C0...N)對結(jié)果排序
      [0045]?通過所排序的類名稱數(shù)組迭代
      [0046]?對每個類名稱出現(xiàn)多少次計數(shù)
      [0047]?創(chuàng)建命名的映射項Μ,其中,鍵是類名稱,并且值是類名稱執(zhí)行計數(shù)
      [0048]如上所述,測試覆蓋處理10可以通過命名的查找表確定(106)在測試套件Το...μ中可以執(zhí)行多個代碼單元(例如,如在以上算法中所描述的類)中的每一個的次數(shù),從而Mclass—_e可以返回執(zhí)行c lass_name的測試用例的數(shù)量。
      [0049]僅為了示例性的目的提供上述算法。算法不意圖限制本公開,因為其它算法可以是可能的。例如,可以確定執(zhí)行多個代碼單元中的每一個的次數(shù)并且創(chuàng)建命名的映射項的任何算法可以替代上述算法。
      [0050]至少部分地基于在測試套件中執(zhí)行多個代碼單元中的每一個的次數(shù),測試覆蓋處理10可以生成(108)代碼單元分布模型。參照圖3,測試覆蓋處理可以生成(108)分布模型300,以顯示在測試套件Το...μ中可以執(zhí)行多個代碼單元(例如類)中的每一個多少次。從測試用例重疊的觀點來看,該數(shù)據(jù)可用于將測試套件的整體“質(zhì)量”傳送到測試套件擁有者或開發(fā)者。測試套件的質(zhì)量可以至少部分地基于覆蓋的程度(例如所覆蓋的代碼單元的百分比)和測試套件的各個測試用例所覆蓋的代碼單元中的重疊的程度中的一個或多個。例如,圖3包括X軸上的18個測試用例和y軸上達(dá)800個代碼單元。如圖3所示,可以在一個、兩個或三個測試用例中測試多個代碼單元中的大部分,指示測試用例的重疊是合理地低的。分布模型300還包括小數(shù)量例外,指示這些測試用例可能值得進(jìn)一步調(diào)查關(guān)于小數(shù)量例外存在并且跟其它測試用例不一致的原因。由于例外與待測試產(chǎn)品有關(guān),因此可以花費進(jìn)一步的時間探查它們,以便改進(jìn)整體測試套件的效率。注意,分布模型300包括每個測試用例所執(zhí)行的多個代碼單元中的至少一個。這可以指示測試用具使用的基礎(chǔ)架構(gòu)代碼單元(例如類)??梢耘懦@些測試用例,以提供代碼單元分布的更精細(xì)的定義。雖然圖3中示出條形圖,但這僅是為了示例性的目的。分布模型可以是包括但不限于模型、曲線圖、圖表等的任何視覺顯不O
      [0051]至少部分地基于測試用例所執(zhí)行的代碼單元的數(shù)量以及用于測試用例的執(zhí)行時間,測試覆蓋處理10可以進(jìn)一步計算(104)測試用例的效率等級。通過以下算法,測試覆蓋處理10可以計算(104)測試用例(T1)的效率等級(E1):
      [0052]?將速度(Vi)設(shè)置為O
      [0053]?對于測試用例1\所執(zhí)行的每個類,V1增量為在測試套件Το...μ中執(zhí)行該類的次數(shù)的倒數(shù)
      [0054]?將 Ei 設(shè)置為 Vi/Ri
      [0055]如在以上算法中所描述的,測試覆蓋處理10可以將初始速度(V1)分配為零(O)。對于測試用例!\所執(zhí)行的每個代碼單元,速度V1可以測試套件T0...μ執(zhí)行代碼單元的次數(shù)的倒數(shù)為增量。例如,如果測試套件中的五(5)個測試用例執(zhí)行該特定代碼單元,則速度¥1可以遞增五分之一(1/5)。在另一示例中,如果測試套件中的一(I)個測試用例執(zhí)行該特定代碼單元,則速度1可以遞增1/1。然后通過將速度1除以(如以上所計算出的)用于測試用例運行的執(zhí)行時間R1,可以計算(104)效率等SE1。如果測試用例快速執(zhí)行許多代碼單元,并且僅在一個特定測試用例中測試代碼單元,則其可以具有相對高的效率等級。如果測試用例執(zhí)行幾個公用代碼單元并且花費長時間運行,則其可以具有相對低的效率等級。
      [0056]如圖4所示,至少部分地基于測試用例的效率等級,測試覆蓋處理10可以生成
      (110)測試套件的執(zhí)行模型。測試覆蓋處理10可以生成(110)執(zhí)行模型400,以視覺地顯示用于測試套件中所包括的多個測試用例中的每一個的效率等級。測試覆蓋處理10可以從最高效率等級到低效率等級對每個測試用例排序,產(chǎn)生執(zhí)行模型400,以顯示可以最快覆蓋用于待測試產(chǎn)品的最多代碼的測試套件內(nèi)所包括的多個測試用例中的每一個。如果一個測試用例快速執(zhí)行許多代碼單元,則該測試用例可以具有相對高的效率等級。如果一個測試用例緩慢地執(zhí)行小數(shù)量代碼單元,則該測試用例可以具有相對低的效率等級。執(zhí)行模型400可以包括X軸上的測試套件中的每個測試用例名稱以及y軸上的效率等級。對于執(zhí)行模型400內(nèi)所包括的每個測試用例,可以對特定測試用例所執(zhí)行的代碼單元402的數(shù)量以及用于該特定測試用例運行的執(zhí)行時間404生成條形圖。雖然圖4中示出條形圖,但這僅是為了示例性的目的。執(zhí)行模型可以是包括但不限于模型、曲線圖、圖表等的任何視覺顯示。
      [0057]例如,如圖4所示,恰第一測試用例(如CallHierarchy3)可以測試1775個代碼單元中的1552個。在3個測試用例之后,該數(shù)量上升到1738個代碼單元。要執(zhí)行前3個測試用例的總時間在第一測試用例(如CallHierarchy3)之后是455秒,在前3個測試用例之后是1613秒,并且在運行全部18個測試用例之后是9871秒。通過運行3個最高效率測試用例,測試覆蓋處理10可以在1613/9871 (16%)的時間中,覆蓋待測試產(chǎn)品中的代碼單元的1738/1775(97.9%)o
      [0058]在實施例中,至少部分地基于執(zhí)行模型,測試覆蓋處理10可以定義(112)多個測試用例的執(zhí)行順序。至少部分地基于執(zhí)行模型,測試覆蓋處理10可以進(jìn)一步執(zhí)行(114)測試套件的子集。通過圖示以上結(jié)果,通過用于評估可以不測試多少代碼單元(例如類)以及運行測試用例的子集可以節(jié)省多少時間的能力,測試覆蓋處理10可以運行原始測試套件的測試用例的子集。故此,作為用于快速確定待測試產(chǎn)品的版本的質(zhì)量的方式,可以通過相對有效率的方式測試待測試產(chǎn)品,并且可以最早測試最常測試的代碼。
      [0059]圖5包括以上效率數(shù)據(jù)的另一示例圖。圖5凸顯運行超越來自圖4的三個最高效率測試用例的附加測試用例的縮小返回。圖5示出每個隨后測試用例所測試的附加代碼單元502以及其可能花費多少時間504添加每個測試用例。
      [0060]至少部分地基于測試用例所執(zhí)行的代碼單元的數(shù)量以及用于測試用例的執(zhí)行時間,測試覆蓋處理10可以進(jìn)一步確定(116)用于多個測試用例中的每一個的明智等級。明智等級可以例如提供給定測試用例每單位時間所測試的代碼單元的數(shù)量的指示。測試覆蓋處理10可以計算哪些測試用例運用公用代碼單元。因為特定條待測試產(chǎn)品代碼可能是有故障的,所以這對于確定大量測試用例是否可能失敗是有用的。該測量可以被稱為明智等級。通過以下算法,測試覆蓋處理10可以確定(116)測試用例(T1)的明智等級(S1):
      [0061]?將速度(Vi)設(shè)置為O
      [0062]?對于測試用例1\所執(zhí)行的每個類,V1增量為在測試套件Το...μ中執(zhí)行該類的次數(shù)
      [0063]?將 Si 設(shè)置為 Vi/Ri
      [0064]如在以上算法中所描述的,測試覆蓋處理10可以將初始速度(V1)分配為零(O)。對于測試用例!\所執(zhí)行的每個代碼單元(例如類),速度V1可以測試套件T0...μ執(zhí)行代碼單元的次數(shù)為增量(注意,為了計算以上效率等級(E1),速度(V1)遞增測試套件T0...μ中執(zhí)行類的次數(shù)的倒數(shù))。例如,如果測試套件中的五(5)個測試用例執(zhí)行該特定代碼單元,則速度1可以遞增五(5)。在另一示例中,如果測試套件中的一(I)個測試用例執(zhí)行該特定代碼單元,則速度Vi可以遞增I。這可以對于多個代碼單元中的每一個重復(fù)。然后通過將速度Vi除以(如以上所計算出的)用于測試用例運行的執(zhí)行時間化,可以計算明智等級S1。如果測試用例快速執(zhí)行許多代碼單元,并且僅在一個特定測試用例中測試代碼單元,則其可以具有非常高的明智等級。如果測試用例執(zhí)行少數(shù)獨特代碼單元并且花費長時間運行,則其可以具有非常低的明智等級。
      [0065]參照圖6,至少部分地基于測試用例的明智等級,測試覆蓋處理10可以生成測試套件的明智模型。測試覆蓋處理10可以生成明智模型600,以視覺地顯示用于測試套件中所包括的多個測試用例中的每一個的明智等級。測試覆蓋處理10可以從最高明智等級到低明智等級對每個測試用例排序,產(chǎn)生明智模型600,以顯示可以最快覆蓋用于待測試產(chǎn)品的最多代碼的測試套件內(nèi)所包括的多個測試用例中的每一個。如果一個測試用例快速執(zhí)行許多代碼單元,則該測試用例可以具有高明智等級。如果一個測試用例緩慢地執(zhí)行小數(shù)量代碼單元,則該測試用例可以具有低明智等級。明智模型600可以包括X軸上的測試套件中的每個測試用例名稱以及y軸上的效率等級。對于明智模型600內(nèi)所包括的每個測試用例,可以對特定測試用例所執(zhí)行的代碼單元602的數(shù)量以及用于該特定測試用例運行的執(zhí)行時間602生成條形圖。雖然圖6中示出條形圖,但這僅是為了示例性的目的。明智模型可以是包括但不限于模型、曲線圖、圖表等的任何視覺顯示。
      [0066]例如,圖6提供視覺顯示,其測試用例可以被運行以非??焖贉y試代碼單元的非常公用路徑。如圖6所示,通過運行單個測試用例(例如MovePropertyFi Ies)以在415秒中覆蓋458個公用代碼單元(例如類),測試覆蓋處理10可以確定(116)高明智等級。
      [0067]出于各種原因,測試覆蓋處理10可以計算(104)每個測試用例的效率等級。例如,測試覆蓋處理10可以計算(104)每個測試用例的效率等級,以定義(112)多個測試用例的執(zhí)行順序,從而可以通過最有效并且有效率的方式測試用于待測試產(chǎn)品的代碼。此外,作為用于快速確定待測試產(chǎn)品的版本的質(zhì)量的手段,測試覆蓋處理10可以計算(104)每個測試用例的效率等級,以定義(112)多個測試用例的執(zhí)行順序,從而較早而非較遲測試用于待測試產(chǎn)品的最常測試的代碼。測試覆蓋處理10也可以計算(104)每個測試用例的效率等級,以通過分析跨越測試套件內(nèi)所包括的多個測試用例所測試的代碼的分布,理解測試套件的整體“質(zhì)量”。
      [0068]還參照圖7,示出計算系統(tǒng)12的示意圖。雖然該圖中示出計算系統(tǒng)12,但這僅是為了說明的目的,并非意圖限制本公開,因為其它配置是可能的。例如,能夠整體地或部分地執(zhí)行測試覆蓋處理10的任何計算設(shè)備可以替代圖7內(nèi)的計算設(shè)備12,其示例可以包括但不限于客戶機電子設(shè)備28、30、32、34。
      [0069]計算系統(tǒng)12可以包括微處理器200,被配置為例如對測試覆蓋處理10處理數(shù)據(jù)并且執(zhí)行指令/代碼。微處理器200可以耦合到存儲設(shè)備16。如上所述,存儲設(shè)備16的示例可以包括但不限于:硬盤驅(qū)動器;帶驅(qū)動器;光驅(qū);RAID設(shè)備;NAS設(shè)備、存儲域網(wǎng)、隨機存取存儲器(RAM);只讀存儲器(ROM);以及所有形式的閃速存儲器存儲設(shè)備。1控制器202可以被配置為將微處理器200與各種設(shè)備(如鍵盤204、鼠標(biāo)206、USB端口(未示出)以及打印機端口(未示出))耦合。顯示器適配器208可以被配置為將顯示器210(例如CRT或LCD監(jiān)視器)與微處理器200耦合,而網(wǎng)絡(luò)適配器212(例如以太網(wǎng)適配器)可以被配置為將微處理器200耦合到網(wǎng)絡(luò)14(例如因特網(wǎng)或局域網(wǎng))。
      [0070]本發(fā)明可以是系統(tǒng)、方法和/或計算機程序產(chǎn)品。計算機程序產(chǎn)品可以包括計算機可讀存儲介質(zhì),其上載有用于使處理器實現(xiàn)本發(fā)明的各個方面的計算機可讀程序指令。
      [0071]計算機可讀存儲介質(zhì)可以是可以保持和存儲由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計算機可讀存儲介質(zhì)例如可以是一一但不限于一一電存儲設(shè)備、磁存儲設(shè)備、光存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或者上述的任意合適的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機械編碼設(shè)備、例如其上存儲有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質(zhì)不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘枴?br>[0072]這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質(zhì)下載到各個計算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機或外部存儲設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網(wǎng)關(guān)計算機和/或邊緣服務(wù)器。每個計算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計算機可讀程序指令,并轉(zhuǎn)發(fā)該計算機可讀程序指令,以供存儲在各個計算/處理設(shè)備中的計算機可讀存儲介質(zhì)中。
      [0073]用于執(zhí)行本發(fā)明操作的計算機程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機器指令、機器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言一諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言一諸如“C”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠(yuǎn)程計算機上執(zhí)行、或者完全在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機的情形中,遠(yuǎn)程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機可讀程序指令,從而實現(xiàn)本發(fā)明的各個方面。
      [0074]這里參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現(xiàn)。
      [0075]這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質(zhì)中,這些指令使得計算機、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲有指令的計算機可讀介質(zhì)則包括一個制造品,其包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
      [0076]也可以把計算機可讀程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
      [0077]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)
      [0078]在此所使用的術(shù)語僅用于描述特定實施例的目的,而并非意圖限制本公開。如在此使用的,單數(shù)形式“一(a)”、“一(an)”以及“該”意圖也包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理解,術(shù)語“包括”和/或“包含”當(dāng)在本說明書中使用時,指定所聲明的特征、整體(integer )、步驟、操作、元件和/或組件的存在,但不排除一個或多個其它特征、整體、步驟、操作、元件、組件和/或其群組的存在或添加。
      [0079]以下權(quán)利要求中的所有手段或步驟加功能元件的對應(yīng)結(jié)構(gòu)、材料、動作和等效物,意圖包括用于結(jié)合如具體請求保護的其它所請求保護的元件來執(zhí)行功能的任何結(jié)構(gòu)、材料或動作。已經(jīng)為了說明和描述的目的呈現(xiàn)了本公開的描述,但并非意圖以所公開的形式窮盡或限制本公開。在不脫離本公開的范圍和精神的情況下,許多修改和變化對于本領(lǐng)域普通技術(shù)人員將是顯然的。選取并且描述實施例以便最佳地解釋本公開的原理和實際應(yīng)用,并且使得本領(lǐng)域普通技術(shù)人員能夠針對具有如適合于所預(yù)期的具體用途的各種修改的各種實施例理解本公開。
      [0080]已經(jīng)因此詳細(xì)地并且通過參照其實施例描述了本申請的公開,將顯然的是,在不脫離如權(quán)利要求所限定的本公開的范圍的情況下,修改和變化是可能的。
      【主權(quán)項】
      1.一種計算機實現(xiàn)的方法,包括: 由處理器確定包括多個測試用例的測試套件中的測試用例執(zhí)行的每個代碼單元,其中,待測試產(chǎn)品包括多個代碼單元; 由所述處理器確定用于所述測試用例的執(zhí)行時間;以及 由所述處理器至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,計算所述測試用例的效率等級。2.如權(quán)利要求1所述的計算機實現(xiàn)的方法,還包括: 確定在所述測試套件中執(zhí)行所述多個代碼單元中的每一個的次數(shù)。3.如權(quán)利要求2所述的計算機實現(xiàn)的方法,還包括: 至少部分地基于在所述測試套件中執(zhí)行所述多個代碼單元中的每一個的次數(shù),生成代碼單元分布模型。4.如權(quán)利要求1所述的計算機實現(xiàn)的方法,還包括: 至少部分地基于所述測試用例的效率等級,生成所述測試套件的執(zhí)行模型。5.如權(quán)利要求4所述的計算機實現(xiàn)的方法,還包括: 至少部分地基于所述執(zhí)行模型,定義所述多個測試用例的執(zhí)行的順序。6.如權(quán)利要求4所述的計算機實現(xiàn)的方法,還包括: 至少部分地基于所述執(zhí)行模型,執(zhí)行所述測試套件的子集。7.如權(quán)利要求1所述的計算機實現(xiàn)的方法,還包括: 至少部分地基于所述測試用例執(zhí)行的代碼單元的數(shù)量以及用于所述測試用例的執(zhí)行時間,確定用于所述多個測試用例中的每一個的明智等級。8.—種系統(tǒng),包括被配置為進(jìn)行如權(quán)利要求1至7中的任一所述的方法步驟的裝置。
      【文檔編號】G06F11/36GK105824748SQ201610041647
      【公開日】2016年8月3日
      【申請日】2016年1月21日
      【發(fā)明人】M.S.富爾頓, J.R.麥克米倫
      【申請人】國際商業(yè)機器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1