鬼佬大哥大
  • / 18
  • 下載費用:30 金幣  

軟件集成測試中的缺陷定位.pdf

摘要
申請專利號:

CN201510184119.3

申請日:

2015.04.17

公開號:

CN105279084A

公開日:

2016.01.27

當前法律狀態:

撤回

有效性:

無權

法律詳情: 發明專利申請公布后的視為撤回IPC(主分類):G06F 11/36申請公布日:20160127|||公開
IPC分類號: G06F11/36 主分類號: G06F11/36
申請人: SAP歐洲公司
發明人: J.海曼; P.邁耶; T.詹森
地址: 德國瓦爾多夫
優先權: 14/313,029 2014.06.24 US
專利代理機構: 北京市柳沈律師事務所11105 代理人: 邵亞麗; 曹瑜
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510184119.3

授權公告號:

|||

法律狀態公告日:

2018.02.09|||2016.01.27

法律狀態類型:

發明專利申請公布后的視為撤回|||公開

摘要

可以在集成測試中執行缺陷定位以更有效地確定最近的源代碼改變是否引起缺陷。標識改變位置,其代表自最后的集成測試運行之后發生的代碼改變(例如,源代碼改變)。可以獲得代碼覆蓋信息,其指示在集成測試期間實際測試的代碼行。可以執行搜索以找到代碼改變和實際測試的代碼之間的交叉,以確定集成測試中可能引起缺陷的一個或多個候選代碼改變。可以基于一個或多個不同的排名算法來對候選代碼改變排名。

權利要求書

1.一種在與系統的代碼相關聯的集成測試期間檢測軟件缺陷的方法,該
方法包括:
在第一時段期間,使用包括多個單獨的測試的測試套件對代碼執行第一
集成測試,其中,至少一部分單獨的測試通過第一集成測試;
接收對代碼的改變,以生成代碼的更新的版本和標識改變的代碼的部分
的第一代碼位置;
在稍后的第二時段期間,使用測試套件對代碼的更新的版本執行第二集
成測試,其中,至少一些單獨的測試沒有通過第二集成測試;
對于在第一時段期間通過但是在第二時段期間沒有通過的單獨的測試,
接收由所述單獨的測試訓練的第二代碼位置;以及
將在第一時段之后改變的第一代碼位置與在第二集成測試期間訓練的第
二代碼位置進行匹配,以檢測代碼的候選缺陷。
2.如權利要求1所述的方法,還包括基于最有可能的候選缺陷,按優先
級排序來排名候選缺陷。
3.如權利要求2所述的方法,其中,通過對于改變的代碼的每個部分,
對訓練了代碼的所述部分并且沒有通過的單獨的測試的數目進行計數,來確
定所述排名。
4.如權利要求2所述的方法,其中,通過對于改變的代碼的每個部分,
對訓練了代碼的所述部分并且沒有通過的單獨的測試的第一數目以及對訓練
了代碼的所述部分并且通過的單獨的測試的第二數目進行計數,并且通過計
算第一數目和第二數目的比率,來確定所述排名。
5.如權利要求2所述的方法,其中,基于沒有通過的代碼的改變部分的
大小來確定排名。
6.如權利要求2所述的方法,其中,基于在沒有通過的測試中改變的代
碼的部分的大小來確定排名。
7.如權利要求1所述的方法,其中,所述代碼包括源代碼和目標代碼,
而且第一代碼位置在源代碼中以及第二代碼位置在目標代碼中,而且其中,
第一代碼位置和第二代碼位置對應代碼的相同部分。
8.如權利要求1所述的方法,其中,所述代碼包括源代碼和與源代碼相
關聯的配置文件。
9.如權利要求1所述的方法,其中,執行第一集成測試和第二集成測試
包括使用測試套件作為輸入來運行測試系統。
10.如權利要求1所述的方法,其中,接收對代碼的改變包括從修訂控
制系統讀取輸出文件。
11.一種其中編碼有計算機可執行的指令的計算機可讀儲存裝置,所述
指令用于使由此被編程的計算系統執行方法,該方法包括:
接收第一集成測試運行和第二集成測試運行的第一集成測試結果和第二
集成測試結果,每個集成測試分別對代碼的第一版本和第二版本使用單獨的
測試的套件;
比較第一集成測試結果和第二集成測試結果,以確定通過一個但是沒有
通過另一個的單獨的測試的集合;
對于所確定的單獨的測試的集合,接收覆蓋數據,其指示代碼的第二版
本的哪些位置在第二集成測試運行期間被執行;
標識指示對代碼的第一版本的更新的改變位置;以及
比較改變位置和覆蓋數據,以確定哪些更新也在第二集成測試運行期間
被測試。
12.如權利要求11所述的計算機可讀儲存裝置,其中,所述更新發生在
第一集成測試運行和第二集成測試運行之間。
13.如權利要求11所述的計算機可讀儲存裝置,還包括執行第一集成測
試運行和第二集成測試運行,包括將單獨的測試分組為用于在測試系統中使
用的單獨的測試的套件。
14.如權利要求11所述的計算機可讀儲存裝置,其中,比較第一集成測
試結果和第二集成測試結果包括確定單獨測試的哪個套件通過第一集成測試
運行然后沒有通過第二集成測試運行。
15.如權利要求11所述的計算機可讀儲存裝置,其中,比較改變位置和
覆蓋數據包括將與改變位置相關聯的行或過程映射到與覆蓋數據中的相同的
行或過程。
16.如權利要求11所述的計算機可讀儲存裝置,還包括生成導致至少一
個單獨的測試沒有通過的錯誤的最有可能的改變位置的列表。
17.如權利要求16所述的計算機可讀儲存裝置,其中,所述列表是基于
一個或多個啟發式模型排名的,包括基于改變位置與覆蓋數據不匹配的數目
來對每個改變位置排名。
18.一種在集成測試中檢測代碼缺陷的系統,包括:
修訂控制系統,其追蹤源代碼改變;
測試系統,其耦接到修訂控制系統以用于接收要測試的代碼;
至少一個數據庫,其耦接到測試系統,存儲至少第一集成測試和第二集
成測試的結果;以及
缺陷定位工具,其耦接到所述至少一個數據庫和修訂控制系統,用于將
與在第一集成測試之后修訂的源代碼和/或配置數據相關聯的位置信息與在
第二集成測試期間訓練的源代碼和/或配置數據的位置信息進行匹配。
19.如權利要求18所述的系統,其中,所述缺陷定位工具生成源代碼和
/或配置數據的候選版本的優先級列表。
20.如權利要求19所述的系統,其中,所述缺陷定位工具被耦接到存儲
器,用于讀取控制如何計算優先級的優先級控制文檔。

說明書

軟件集成測試中的缺陷定位

技術領域

本發明涉及軟件測試。

背景技術

在計算機編程中,單元測試(unittesting)是一種軟件測試方法,通過該
方法,源代碼的各個單元、一個或多個計算機程序模塊的集合以及相關聯的
控制數據、使用過程、以及操作過程被測試以確定它們是否適合使用。人們
可以看到的單元作為應用的最小可測試部分。在面向過程編程中,單元可以
是整個模塊,但是更常見的是,它是單獨的功能或過程。在面向對象編程中,
單元通常是整個接口,例如類,但是也可以是單獨的方法。單元測試通常是
在開發過程中由程序員創建的短代碼段。

集成測試是這樣的軟件測試:在該軟件測試中,源代碼的各個單元被組
合并被按組進行測試。集成測試發生在單元測試之后并在驗證測試(其中,
執行檢測以確定是否產品符合規格)之前。集成測試將已經經過單元測試的
模塊作為其輸入,將它們分組為較大的聚合體,將在集成測試計劃中定義的
測試應用于這些聚合體,并傳遞準備進行系統測試的集成系統作為其輸出。
集成測試在大型系統上可能運行數小時。

在集成測試期間,當發生錯誤時,很難知道哪些軟件改變導致錯誤。例
如,在大型系統中,許多開發人員已經提交對不同單元的修改,并且可能非
常難以確定自上次成功運行之后的許多改變中的哪些改變導致錯誤。開發人
員需要手動檢查程序軌跡以確定問題如何發生。幾乎沒有提供指導,而且往
往憑借經驗和運氣來解決問題。這使得集成測試故障診斷非常昂貴,而且削
弱了集成測試的投資回報。

發明內容

提供發明內容來簡單地介紹概念的選擇,其將在下面的具體實施方式中
進一步描述。發明內容不旨在標識所要求保護的主題的關鍵特征或必要特征,
也不是旨在被用于限制所要求保護的主題的范圍。

在一個實施例中,可以在集成測試中執行缺陷定位,以更有效地確定最
近的代碼改變(例如,源代碼改變)是否引起缺陷。標識改變位置,其代表
自最后的集成測試運行之后發生的代碼改變。可以獲得代碼覆蓋信息,其指
示在集成測試期間實際測試的代碼行。可以執行搜索以找到代碼改變和實際
測試的代碼之間的交叉,以確定集成測試中可能引起缺陷的一個或多個候選
代碼改變。

在可以補充其他實施例的另一個實施例中,候選代碼改變可以基于一個
或多個不同的排名算法來排名。排名算法可以基于多個測量的參數,諸如在
沒有通過的測試中最頻繁地訓練的代碼改變、或者按改變的代碼行測量的源
代碼改變的大小。可以基于這些參數來使用排名算法的不同組合。

從下面參照附圖的詳細描述,本發明的前述和其它的目的、特征和優點
將變得更加明顯。

附圖說明

圖1示出了可以用于在軟件集成測試期間定位缺陷的系統的實施例。

圖2示出了根據一個實施例的、可以與圖1結合使用以定位缺陷的方法
的流程圖。

圖3是根據另一個實施例的、多個啟發式模型可以被用于生成導致缺陷
的候選源代碼修訂的排序列表的的方法的流程圖。

圖4是根據另一個實施例的、用于在集成測試期間定位缺陷的流程圖。

圖5是根據又一個實施例的、用于在集成測試期間定位缺陷的流程圖。

圖6是示出用于定位缺陷的簡單示例性實現的表。

圖7是可以實施所描述的實施例的適合的計算環境的一般例子。

具體實施方式

圖1示出了根據一個實施例的用于在軟件集成測試期間定位缺陷的總體
系統100。修訂控制系統110可以是本領域中已知的標準修訂控制系統。修
訂控制系統是源代碼版本控制系統,其保存源代碼(例如,文件)并且記錄
何時由誰做出了哪些改變。版本控制提供了有關在兩個時間點之間哪些源文
件/對象被改變(例如,諸如哪些行被改變,哪些過程被改變等)。這些“源
改變”不僅包括程序的源代碼,而且還包括配置文件以及可能影響程序的行
為的其他因素(artifact)。源改變可以被存儲在數據庫111中,其在所示的實
施例中被示出代碼的兩個版本(即,版本1和2)并且在兩個版本之間存在
改變。其他版本和相關聯的改變也可以被存儲在其中。

系統100還可以包括測試系統112,這也是本領域中已知的常用系統。
測試系統112訓練或運行代碼(源代碼和配置數據),以確定系統的正確行為。
測試系統112可以針對被運行的每個測試,輸出結果狀態(例如,通過/沒有
通過)。例如,結果可以被存儲在一個或多個數據庫,諸如數據庫114、116
中。測試系統112還可以測量在測試運行中實際使用源代碼的哪個部分。通
常,測試系統112可以輸出覆蓋簡檔(coverageprofile)120,其指示哪個代
碼行被訓練(即,運行)或者哪些配置參數被使用。可替代地或附加地,覆
蓋簡檔120可以指示哪些子例程或程序模塊(例如,對象)(即,在邏輯上分
組在一起的多行代碼)被使用。

測試系統112可以接收多個輸入。第一輸入130可以包括測試套件,其
包括兩個或更多個單獨測試的集合。測試系統112還可以采用要被測試的代
碼作為輸入,所述代碼是從版本控制系統110輸出的。在這個例子中,代碼
是由編譯器134編譯的機器代碼132的一個或多個版本。雖然未單獨示出,
但是編譯器134也可以被集成到修訂控制系統110中。另外,雖然未示出,
但是修訂控制系統110可以直接向要測試的測試系統112提供解釋代碼。

測試系統112在測試套件130中對于代碼132的版本執行測試。集成測
試的多次運行可以被執行。在系統100的例子中,兩次獨立的運行被示出,
一個用于代碼的第一版本,一個用于代碼的第二版本。通常,代碼的第二版
本與第一版本相同,但是有更新。測試系統的輸出包括第一運行的結果114
和第二運行的結果116。結果114、116包括組成測試套件的單獨測試的結果。

缺陷定位工具140可以接收包括代碼的第一版本和代碼的第二版本之間
的改變的文件111、覆蓋簡檔120、以及第一集成測試的結果114和第二集成
測試的結果116,作為輸入。根據特定應用,也可以使用其他輸入。缺陷定
位工具140可以包括比較引擎142,其確定來自測試套件130的單獨測試中
的哪個測試通過了第一運行,但是沒有通過第二運行。從所述確定得到的測
試的子集可以被存儲在存儲器位置中,如在144所示。

匹配引擎150可以從比較引擎142讀取結果144。在可替換的實施例中,
匹配引擎150可以直接從比較引擎讀取結果。對于在144處標識的測試,匹
配引擎150從數據庫111獲得版本1和2之間改變的代碼。例如,改變的代
碼可以通過行號來指示。然后在第二集成測試的覆蓋簡檔120中搜索這些代
碼改變。如果存在匹配,則表示代碼在修訂之間有改變并且被測試系統訓練,
這意味著執行測試系統作為測試過程的一部分運行了這些代碼行。結果是文
件111的子集,其中子集包括在第二集成測試期間中被測試系統訓練的源代
碼修訂。從而,子集包括多個候選錯誤。通常,連續的多行源代碼可以被視
為一組,并被共同標識為候選錯誤。

候選錯誤可以根據哪些代碼改變可能導致錯誤的優先級,被組織成排序
列表。確定優先級引擎(prioritizingengine)160可以基于多個可能的啟發式
模型,來按排序組織候選錯誤。優先級控制162可以被用于控制哪個模型被
使用。通常,優先級排名基于多少單獨的測試使用了與候選錯誤相關聯的代
碼或者代碼的大小。不同模型的詳細例子將參照圖3在下面進一步說明。確
定優先級的結果可以被輸出為導致錯誤的候選代碼改變170的排序列表。

圖2示出了根據一個實施例的、可以與圖1結合使用的流程圖200。在
過程塊210中,可以在源代碼和/或配置數據的第一時段期間執行第一集成測
試,所述源代碼和/或配置數據一起形成代碼的版本1。例如,再次參考圖1,
修訂控制系統110可以要么提供被編譯的機器代碼132,要么提供可以被測
試系統112解釋的代碼。然后,測試系統112可以使用測試套件130執行第
一集成測試,以運行多個單獨的測試。測試的結果可以存儲在數據庫114中。
結果通常包括測試套件130中的每個單獨的測試是通過測試還是未通過測
試。在過程塊220中,可以接收對源代碼和/或配置數據的修訂。例如,開發
人員可以將更新插入到修訂控制系統110,以生成代碼的新版本(在這個例
子中被稱為版本2)。修訂控制系統可以自動追蹤這些更新,并提供顯示改變
的輸出文件111。代碼的新版本可以以類似于版本1的方式,被再次傳遞到測
試系統112。

在過程塊230,可以對代碼的版本2執行第二集成測試。像第一集成測
試一樣,第二集成測試可以由測試系統112執行。通常,測試系統使用與用
于版本1測試相同的測試套件130。第二集成測試的結果可以存儲在數據庫
116中,并且可以包括針對測試套件中的每個單獨的測試的結果,其包括每
個單獨測試是通過還是未通過。第二集成測試在第二時段T2運行,而且第一
集成測試在早于T2的第一時段T1運行。在這兩個時段之間,針對代碼的軟
件修訂發生。通常,軟件修訂本身可以引起導致單獨測試沒有通過的新的錯
誤。

在過程塊240中,將第一集成測試與第二集成測試進行比較。在執行比
較時,比較測試套件中的每個單獨的測試的結果,以查看哪些單獨的測試先
前通過,但是現在沒有通過。在T1和T2之間做出改變的源代碼導致錯誤發
生的概率很高。這個比較可以通過比較引擎142執行,其讀取第一集成測試
結果114和第二集成測試結果116并生成輸出144,其指示單獨的測試的子集
初次通過了但是現在沒有通過。

在過程塊250中,可以獲得覆蓋簡檔。例如,覆蓋簡檔通常包括指示在
第二集成測試期間被運行的特定例程或代碼行的信息。為了獲得覆蓋簡檔,
匹配引擎150可以直接從測試系統112讀取覆蓋簡檔,或者從數據庫讀取覆
蓋簡檔。在一些實施例中,覆蓋簡檔可以被存儲在鏈接到集成測試結果的數
據庫116中。在過程塊260中,可以獲得位置信息,其指示由于修訂而改變
的源代碼和/或配置。例如,匹配引擎150可以直接讀取修訂控制系統110以
獲得位置信息,或者它可以讀取數據庫111。在過程塊270中,修訂的位置信
息可以匹配到與覆蓋簡檔相關聯的位置信息。例如,可以在覆蓋簡檔中搜索
與代碼相關聯的行號。對于連續源代碼行的組,通常針對覆蓋簡檔搜索組中
的第一行號。如果存在匹配,則確定源代碼改變已經被測試系統訓練。因此,
源代碼改變可以被認為是在集成測試中引起錯誤的候選源代碼改變。多個源
代碼改變可以被確定并被包括為附加候選錯誤。

圖3是用于針對由匹配引擎150找到的候選錯誤確定優先級的方法的流
程圖300。流程圖300可以通過確定優先級引擎160來執行,以生成包括源
代碼改變和/或配置改變的候選代碼改變的排序列表。在過程塊310中,可以
接收匹配信息,以用于匹配在集成測試中導致錯誤的候選源代碼或配置數據
改變。例如,匹配信息可以從匹配引擎150接收。在過程塊320中,可以讀
取優先級控制文件162。基于優先級控制文件中的配置數據,確定優先級引
擎160可以采用由不同的過程塊330、340、350和360所指示的多個路徑中
的一個。這些不同的路徑中的每一個按照導致錯誤或缺陷的候選源代碼修訂
的優先級排序輸出列表(過程塊370)。

在過程塊330中,基于訓練被修訂的源代碼和/或配置數據的沒有通過的
單獨測試的數目來生成優先級排序列表。在這個過程中,對于每個源代碼改
變,對于來自測試套件130的在集成測試1期間通過而在集成測試2期間沒
有通過的單獨測試做出標識(以被下稱為“紅色測試”)。通過集成測試1和
集成測試2的任何單獨測試被認為是“綠色測試”。然后計算訓練每個源代碼
改變的紅色測試的數目的計數。最高數目的計數被認為是最有可能的原因,
而且在優先級列表的頂部。后續候選錯誤根據它們相關聯的計數按排序被添
加到列表。

在過程塊340中,可以使用訓練被修訂的源代碼和/或配置數據的通過和
沒有通過的比率來生成優先級排序列表。因此,可以計算訓練候選代碼的紅
色測試和綠色測試的計數。可以通過紅色/綠色測試的比率來定義排名。具有
最高比率的代碼改變是缺陷的最有可能的原因。后續候選錯誤根據它們相關
聯的比率被添加到列表。

在過程塊350中,可以使用源代碼和/或配置數據中改變的大小來生成優
先級排序列表。例如,可以使用改變的行數、改變的項目、改變的過程等來
確定優先級排序。最大改變可以被認為是缺陷的最有可能的原因。后續候選
錯誤也可以基于大小來排序。

在過程塊360中,可以使用修改的源代碼和/或配置改變的大小和訓練的
所有源代碼和/或配置數據的大小來生成優先級排序列表。因此,例如,每個
沒有通過的測試中的多個代碼改變可以通過測試中被訓練的代碼(即,被覆
蓋的代碼)的總大小來劃分。小代碼覆蓋簡檔中的代碼改變與非常大的代碼
覆蓋簡檔中的代碼改變相比,具有更高的影響概率。

可以使用除了330、340、350和360外的其它過程或它們的組合。盡管
如此,無論哪個被使用,都可以按照引起缺陷的候補代碼修訂的優先級排序
輸出列表(過程塊370)。

圖4是可用于在集成測試中定位缺陷的方法的流程圖400。在過程塊410
中,可以使用測試套件在第一時間點(T1)執行第一集成測試。如前所述,
測試系統112可以讀取測試套件,并使用測試套件中的單獨的測試來測試代
碼的第一版本。在過程塊420中,接收對代碼的改變以及與這些改變相關聯
的位置(被稱為第一代碼)。例如,開發人員可以更新代碼以包括新的功能或
對現有功能進行改善或修復。捕獲與改變相關聯的數據是可用的修訂控制系
統的標準輸出,如在110所示。在處理塊430中,第二集成測試可以在第二
時間點(T2)執行。第二集成測試使用與第一集成測試相同的測試套件,但
是訓練代碼的第二版本,其包括來自過程塊420的改變。在過程塊440中,
對于先通過然后沒有通過的測試,接收由測試訓練的第二代碼位置。應當認
識到,第一代碼位置可以是諸如源代碼中的行號的位置,而第二代碼位置可
以是諸如目標代碼中的行號的位置。然而,第一位置和第二位置二者都可以
對應于代碼的相同部分。因此,與源代碼相關聯的行號可以對應于目標代碼
中的行號,因為兩者是相同內容的不同表示。在過程塊450中,可以在包含
第二代碼位置的文件中搜索第一代碼位置,以找到匹配位置。在一個例子中,
可以在覆蓋簡檔中搜索與源代碼修訂相關聯的行號以便找到匹配位置數據,
其指示由第二集成測試訓練的源代碼。

圖5是根據另一實施例的用于在集成測試期間定位缺陷的流程圖500。
在過程塊510中,可以接收與分別對代碼的第一版本和第二版本進行的第一
和第二集成測試有關的結果。通常,對代碼的第一版本進行更新以獲得代碼
的第二版本。第一版本和第二版本可以是代碼的任何版本,但第一和第二是
指一個在另一個之前開發的時間序列。

在過程塊520中,將第一集成測試結果與第二集成測試結果進行比較,
以確定在通過第一集成測試之后在第二集成測試中沒有通過的單獨的測試。
在過程塊530中,接收覆蓋數據,其指示代碼的第二版本的哪些位置在第二
集成測試運行期間被運行。在過程塊540中,標識代碼改變位置,其指示第
一集成測試和第二集成測試之間增加的新的代碼改變。代碼改變位置可以從
修訂控制系統來獲得。在過程塊550,可以將改變位置與覆蓋數據進行比較,
以確定哪些改變的代碼也在第二集成測試運行期間被測試。只需要改變的代
碼和測試的代碼之間的交叉來將改變的代碼標識為代碼的候選錯誤。

圖6是示出如何可以識別候選代碼段并且為其確定優先級的例子。具體
地,在600中示出了包括多排的代碼覆蓋表,每排包括源代碼行。在這個例
子中,兩個文件F1和F2被改變。如在610所示,F1中的行10-12被改變。
如在620所示,F1的行18-20被改變。最后,在630,F2的行30-34被改變。
為了便于說明,只有三個代碼改變被示出,但是在典型的設計環境中,存在
成百上千的改變。集成測試被執行兩次,并且包括6個單獨的測試T1-T6。
可以使用任何數目的測試。在排640中,示出了對于兩個測試運行的測試結
果。測試T1、T2、T3和T5通過第一集成測試和第二集成測試。然而,T4
和T6被示為通過第一集成測試(由更深色的框指示通過)但是未能通過第二
集成測試。排610、620和630中的每一個示出了哪些源代碼改變被由X指
定的單獨測試訓練。代碼覆蓋表600示出,T4訓練了源代碼段610和630二
者,但是沒有訓練620。因此,源代碼段620不可能在T4導致錯誤。其他沒
有通過的測試,T6,只訓練了源代碼段630。因此,源代碼段610和630二
者被認為是可能導致缺陷的候選。與此相比,源代碼段620未被T4或T6訓
練,并且不能成為候選。

可以執行候選源代碼段610、630的排名。在一個示例的排名中(上面與
圖3的330有關的描述),由于兩個沒有通過的測試T4、T6訓練源代碼630
并且只有T4訓練610,因此代碼630將是排名最高的候選。因此,在630處
所指示的改變是沒有通過測試T4、T6的最有可能的原因。

在另一個實施例中,可以執行下面的步驟。

1.在第一階段中,單獨的測試被分組到一起批處理運行的測試套件中。

2.測試套件被運行,而且每個單獨的測試的結果被存儲在數據庫中,以
使得測試結果的歷史是可訪問的。

3.在時間T1,給定的測試套件TS1具有成功/綠色測試的集合=綠色
(TS1,T1),而且也可能具有沒有通過/紅色測試的集合=紅色(TS1,T1)。
只有綠色測試被認為用于進一步分析。

4.在測試套件TS1的另一次運行之前,源改變SC1的集合被提交到修
訂控制系統,從而進入測試系統。這些改變將影響后續測試運行。

5.在稍后的時間點T2>T1,測試套件TS1再次被運行。步驟4中的改變
影響T1和T2之間的測試運行。

6.在T2運行的測試TS1的結果被考慮,尤其是最新沒有通過的測試
(NewlyFailedTests)NFT(TS1,T2,T1)的子集=紅色(綠色(TS1,T1),
T2),它是在T1先前運行中為綠色但是現在在T2已經變成紅色(=沒有通過)
的測試的集合。這個信息可以從測試結果的歷史獲得。

7.考慮NFT(T2)的代碼覆蓋簡檔,即,尤其是哪些源改變被這些測試
使用。源改變SC1的集合與NFT(T2)的代碼覆蓋簡檔交叉,以便得到SC1
的子集。這個交叉被稱為SC1_failed(SC1_沒有通過),而且它定義了可能是
這個運行中測試沒有通過的原因的改變的集合。因此,任何測試沒有“使用”
的改變將不會在SC1_failed中。

8.在第二階段(它可以在一些實施方案中實現)中,通過若干啟發式模
型來排名SC1_failed中的改變,以確定一個或多個沒有通過測試的最有可能
的原因(=源改變)。這將產生例如列表,其中,最可能的原因是被列在列表
的頂部。所使用的啟發式模型如下:

a.對于SC1_failed中的每個源改變,對這個源(代碼,配置等)所訓練
/使用的“紅色測試”的數目進行計數。具有最高數目的一個是最有可能的原
因。

b.對于SC1_failed中的每個源改變,不僅對這個源所使用的紅色測試進
行計數,而且還對這個源所使用的綠色測試進行計數。通過紅色/綠色測試的
比率來定義排名。具有最高比率的源改變是最有可能的原因。

c.考慮源改變的大小,例如改變的行/項目的數目。“最大改變”是最有
可能的原因。

d.考慮每個沒有通過的測試中的源改變的數目,并且通過測試中使用的
(=覆蓋的)代碼的總大小來對所述源改變進行劃分。小代碼覆蓋簡檔中的源
改變與非常大的代碼覆蓋簡檔中的源改變相比,具有更高的影響概率。

這些啟發式模型可以以不同的方式進行組合,并且附加的啟發式模式是
可能的。

綜上所述,這個算法產生導致測試沒有通過的最可能的原因的排序列表,
以使得缺陷分析可以集中在這些原因并且更加高效。

參考圖7,計算環境700包括一個或多個處理單元710、715,以及存儲
器720、725。在圖7中,這種基本配置730被包括在虛線內。處理單元710、
715執行計算機可執行指令。處理單元可以是通用中央處理單元(CPU)、專
用集成電路(ASIC)中的處理器或任何其它類型的處理器。在多處理系統中,
多個處理單元執行計算機可執行指令以提高處理能力。例如,圖7示出了中
央處理單元710、以及圖形處理單元或協作處理單元715。有形存儲器720、
725可以是可由(多個)處理單元訪問的易失性存儲器(例如,寄存器、高
速緩存、RAM)、非易失性存儲器(例如,ROM、EEPROM、閃存等)、或兩
者的一些組合。存儲器720、725以適合由(多個)處理單元執行的計算機可
執行指令的形式存儲實施本文所描述的一個或多個創新的軟件780。例如,
軟件780可以包括缺陷定位工具140。

計算系統可以具有附加功能。例如,計算環境700包括存儲裝置740、
一個或多個輸入設備750、一個或多個輸出設備760、以及一個或多個通信連
接770。互連機制(未示出),諸如總線、控制器或網絡,互連計算環境700
的組件。通常,操作系統軟件(未示出)為在計算環境700中執行的其他軟
件提供操作環境,并協調計算環境700的組件的活動。

有形存儲裝置740可以是可移除的或不可移除的,并且包括磁盤、磁帶
或磁帶盒、CD-ROM、DVD、或可用于以非臨時性方式存儲信息并且可以在
計算環境700內的訪問的任何其他介質。存儲裝置740存儲用于實施本文所
描述的一個或多個創新的軟件780的指令。

(多個)輸入設備750可以是諸如鍵盤、鼠標、筆、或軌跡球的觸摸輸
入設備、語音輸入設備、掃描設備、或向計算環境700提供輸入的其他設備。
(多個)輸出設備760可以是顯示器、打印機、揚聲器、CD刻錄機、或從計
算環境700提供輸出的其它設備。

(多個)通信連接770使能通過通信介質與其他計算實體進行通信。通
信介質傳遞信息,諸如計算機可執行指令、音頻或視頻輸入或輸出、或調制
的數據信號中的其它數據。調制的數據信號是這樣的信號,該信號以將信息
編碼到信號中的方式來設置或改變它的特性中的一個或多個。以舉例的方式,
而非限制的方式,通信介質可以使用電、光、RF或其它載體。

雖然為了便于呈現,所公開的方法的一些操作以特定的、順序的排序描
述,但是應當理解的是,這種方式的描述包括重新排列,除非特定的排序是
由如下闡述的特定語言所要求的。例如,在某些情況下,順序描述的操作可
以重新排列或同時執行。此外,為了簡單起見,附圖可能沒有示出所公開的
方法可以與其它方法結合使用的各種方法。

所公開的任何方法可以被實現為存儲在一個或多個計算機可讀存儲介質
(例如,一個或多個光學媒體光盤、易失性存儲器組件(例如DRAM或
SRAM)、或非易失性存儲器組件(如閃存或硬盤驅動器))并且運行在計算
機(例如任何市售的計算機,包括智能電話或包括計算硬件的其他移動設備)
上的計算機可執行指令。術語計算機可讀存儲介質不包括通信連接,諸如信
號和載波。用于實現所公開的技術的任何計算機可執行指令以及在執行所公
開的實施例的過程中創建和使用的任何數據可以被存儲在一個或多個計算機
可讀存儲介質中。計算機可執行指令可以是例如,專用軟件應用或者經由網
絡瀏覽器或其它軟件應用(諸如遠程計算應用)訪問或下載的軟件應用的一
部分。這樣的軟件可以,例如,在單個本地計算機(例如,任何合適的市售
計算機)上、或在使用一個或多個網絡服務器的網絡環境(例如,經由因特
網、廣域網、局域網、客戶端-計算機網絡(例如云計算網絡)、或其它這樣
的網絡)中執行。

為了清楚起見,描述了基于軟件的實現方式的某些選定方面。本領域中
公知的其它細節在此省略。例如,應該理解的是,所公開的技術不限于任何
特定的計算機語言或程序。例如,所公開的技術可以通過以C++、Java、Perl、
JavaScript、AdobeFlash或任何其他合適的編程語言編寫的軟件來實現。同樣
地,所公開的技術不限于任何特定的計算機或硬件的類型。合適的計算機和
硬件的某些細節是公知的,并且不需要在本公開中詳細地闡述。

還應該充分理解,在此描述的任何功能可以至少部分地由一個或多個硬
件邏輯組件,而不是軟件,來執行。例如,但不限于,可以使用的示例類型
的硬件邏輯元件包括現場可編程門陣列(FPGA)、專用集成電路(ASIC)、
專用標準產品(ASSP)、片上系統(SOC)、復雜可編程邏輯器件(CPLD)
等。

此外,任何基于軟件的實施例(包括,例如,用于使計算機執行任何所
公開的方法的計算機可執行指令)可以被上傳、下載、或通過合適的通信手
段來遠程訪問。這樣的合適的通信手段包括,例如,因特網、萬維網、內聯
網、軟件應用、電纜(包括光纖電纜)、磁通信、電磁通信(包括射頻、微波
和紅外線通信)、電子通信、或其它這樣的通信手段。

所公開的方法、裝置和系統不應該以任何方式被解釋為限制。相反,本
公開涉及所公開的各種實施例(單獨以及彼此之間進行各種組合和子組合)
的所有新穎的和非顯而易見的特征。所公開的方法、裝置和系統不限于任何
特定的方面或特征或其組合,而且所公開的實施例也不要求存在一個或多個
特定優點中的任何優點、或者使問題得到解決。

由于所公開的發明的原理可以應用于許多可能的實施例,因此應當認識
到,所示實施例僅是本發明的優選的實施例,而不應被視為限制本發明的范
圍。相反,本發明的范圍由所附的權利要求限定。因此,我們聲明本發明全
部落入這些權利要求的范圍之內。

關 鍵 詞:
軟件 集成 測試 中的 缺陷 定位
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:軟件集成測試中的缺陷定位.pdf
鏈接地址:http://www.wwszu.club/p-6405679.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大