專利名稱:一種基于修改影響分析的部件軟件回歸測試用例更新方法
技術(shù)領(lǐng)域:
本發(fā)明提出了一種基于修改影響分析的回歸測試用例更新方法,主要是利用修改影響分析結(jié)果,對部件軟件API回歸測試用例進(jìn)行更新,屬于軟件測試中回歸測試的技術(shù)領(lǐng)域。
背景技術(shù):
現(xiàn)代的軟件系統(tǒng)很多是由可重用的部件所構(gòu)成,這些部件可以由第三方提供或者是內(nèi)建的。在部件系統(tǒng)中,系統(tǒng)的質(zhì)量主要依賴于系統(tǒng)的組成部件。在軟件維護期間,任何的部件修改會對部件本身帶來影響,還可能影響部件所在的整個軟件系統(tǒng)。因此,我們需要對部件修改進(jìn)行影響分析,這是部件軟件質(zhì)量保證的一種重要手段。有效的修改影響分析可以減少軟件維護的成本,同時測試員只需要對受修改影響的部件功能或者關(guān)系進(jìn)行測 試,從而也減少了回歸測試的成本。在部件軟件演化周期中,當(dāng)部件由于更新或者升級而被修改以后,我們需要對部件和系統(tǒng)層面都要進(jìn)行修改影響分析,同時也是為了后面的單元、集成以及系統(tǒng)重測做好前期的準(zhǔn)備工作?;谀P偷姆椒ㄒ呀?jīng)被廣泛應(yīng)用在修改影響分析和回歸測試]等軟件維護活動中,實踐證明是有效可行的。在部件系統(tǒng)中,模型可以用來表示部件內(nèi)部以及部件之間的依賴,交互及架構(gòu)關(guān)系。因此,我們需要對部件系統(tǒng)進(jìn)行合適的建模,來進(jìn)行修改影響分析。從不同的視角,部件組成的系統(tǒng)可以建立不同的模型,比如從外部用戶的角度,部件的主要功能是提供API,于是可以建立API模型;從系統(tǒng)層面看,部件之間存在著交互關(guān)系,還有組合,配置等多種架構(gòu)關(guān)系,可以建立相應(yīng)的系統(tǒng)模型。因此,建立合適的部件以及系統(tǒng)模型,是修改影響分析的重要前提。另外,模型還可以幫助定義重測標(biāo)準(zhǔn)和制定重集成策略,方便測試以及回歸測試的自動化,對于整個軟件維護階段都有著重要意義。在部件軟件中通常需要對部件功能操作序列進(jìn)行測試。如何利用修改影響分析結(jié)果對部件功能訪問測試序列進(jìn)行更新是部件API回歸測試的一項重要任務(wù)。
發(fā)明內(nèi)容
本發(fā)明的目的是使用修改影響分析結(jié)果對部件API回歸測試用例進(jìn)行更新,該方法能夠識別出部件修改影響,而且能夠識別出受修改影響的部件API測試序列。本發(fā)明為實現(xiàn)上述目的,采用如下技術(shù)方案一種基于修改影響分析的部件軟件回歸測試用例更新方法,包括如下步驟I)通過比較部件修改前后版本的模型獲取修改信息;2)創(chuàng)建部件功能調(diào)用圖和功能數(shù)據(jù)調(diào)用圖,用來表示部件內(nèi)部功能,API及端口之間的依賴關(guān)系;其中,部件功能調(diào)用圖表示部件內(nèi)部功能函數(shù)之間的直接調(diào)用關(guān)系;功能數(shù)據(jù)調(diào)用圖表示部件內(nèi)部功能函數(shù)通過數(shù)據(jù)定義-使用所形成的依賴關(guān)系;(創(chuàng)建部件功能調(diào)用圖和功能數(shù)據(jù)調(diào)用圖是公知技術(shù)不詳細(xì)描述)3)在部件功能調(diào)用圖和功能數(shù)據(jù)調(diào)用圖上面通過圖可達(dá)性算法識別出受修改影響的部件功能,從而識別出受修改影響的部件API ;(公知技術(shù)不詳細(xì)描述)4)將測試序列所覆蓋的部件API在部件功能訪問圖上標(biāo)識出;5)將步驟3)中識別的受影響的部件API匹配到部件功能訪問圖上面,然后結(jié)合步驟4)識別出需要添加、刪除、修改以及重用的部件API回歸測試用例。所述步驟5)中識別出需要添加、刪除、修改以及重用的部件API回歸測試用例的具體方法如下如果一個測試序列在修改前后的部件功能訪問圖中,并且該序列對應(yīng)路徑的所有節(jié)點都沒有受修改影響,那么該測試序列是可重用的;如果一個測試序列對應(yīng)路徑的任意一個節(jié)點或鏈接被刪除都沒有受修改影響,并且該節(jié)點或鏈接也不存在于修改后的部件功能訪問圖中,那么該測試序列應(yīng)該被刪除;如果一個測試序列在修改前后的部件功能訪問圖中,并且該序列對應(yīng)路徑中至少有一個節(jié)點受到了修改影響,那么該測試序列是需要修改的;如果修改后的部件功能訪問圖中存在著新的路徑,那么需要生成新的測試序列來覆蓋。有益效果本發(fā)明方法提出了一種基于修改影響分析的部件軟件回歸測試用例更 新方法,利用修改影響分析識別出部件API修改及影響,然后建立重測模型,利用修改影響結(jié)果在重測模型上面識別出需要更新的回歸測試用例。主要有以下一些優(yōu)點(I)針對部件API進(jìn)行修改影響分析及回歸測試。對于部件用戶來說,部件內(nèi)部往往是不可見的。因此在部件更新或者新版本發(fā)布的時候,部件API的修改及其影響比較對用戶是很重要的。用戶可以根據(jù)修改影響結(jié)果對基于部件的系統(tǒng)進(jìn)行重測分析和測試。(2)基于修改影響分析進(jìn)行回歸測試,可以利用修改影響分析結(jié)果,識別出需要重測的部件API,減少了多余測試用例的選擇,從而降低了回歸測試成本。(3)綜合考慮了整個回歸測試過程的各個階段,比如修改識別,影響分析,保證了回歸測試的系統(tǒng)性。利用本方法可以對部件修改后進(jìn)行系統(tǒng)化的修改影響分析和回歸測試。
圖I是本發(fā)明提出的部件功能訪問序列圖的一個計算器例子。圖2是本發(fā)明所采用的一般的部件回歸測試過程示意圖。圖3是本發(fā)明的體系結(jié)構(gòu)即本發(fā)明方法包括的主要的組件示例。圖4是本發(fā)明方法的流程示意圖。圖5是本發(fā)明具體實施例中使用到的部件功能依賴圖例子。
具體實施例方式下面結(jié)合附圖對發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。本發(fā)明所提出的一種基于修改影響分析的部件軟件回歸測試用例更新方法,雖然各個步驟都是常規(guī)公知技術(shù),但是本發(fā)明的新穎性與創(chuàng)造性在于將現(xiàn)有的公知技術(shù)組合在一起解決了更新部件軟件回歸測試用例這個技術(shù)問題。本發(fā)明所提出的方法是現(xiàn)有技術(shù)中從未出現(xiàn)的。從外部用戶者的角度,部件可以看成是一個API模型。部件對外的接口主要有API功能(參數(shù))和端口。API就是部件對外提供的應(yīng)用功能。端口表示部件內(nèi)部調(diào)用外部其他部件功能的函數(shù)。本發(fā)明方法提出了一種基于修改影響分析的部件軟件回歸測試用例更新方法,利用修改影響分析識別出部件API修改及影響,然后建立重測模型,利用修改影響結(jié)果在重測模型上面識別出需要更新的回歸測試用例。圖I是本發(fā)明提出的部件功能訪問序列圖的一個計算器例子。圖2給出了我們所采用的部件軟件一般回歸測試過程示意圖。這里的回歸測試主要有兩部分組成修改分析和測試覆蓋分析。修改分析主要是識別部件修改點。在程序修改信息不知的情況下,通常將原程序和修改后的程序比較,進(jìn)行差異分析。在本發(fā)明中,部件修改信息也是可以通過比較修改前后的版本獲知的。測試覆蓋分析測試用例的覆蓋部分。在本發(fā)明中,測試用例是基于API訪問序列的,也就是部件API功能訪問的測試序列。一、體系結(jié)構(gòu) 圖3給出了針對部件API回歸測試用例更新設(shè)計體系結(jié)構(gòu)。根據(jù)這個結(jié)構(gòu),我們可以設(shè)計本發(fā)明的軟件實施工具。下面給出幾個主要部分的具體說明。I數(shù)據(jù)層數(shù)據(jù)層主要是部件API回歸測試的模型數(shù)據(jù)庫和重測數(shù)據(jù)庫。模型數(shù)據(jù)庫存儲的是我們使用到的一些重測模型以及源數(shù)據(jù),比如本發(fā)明中的部件功能訪問序列圖CFAG,還有用于修改影響分析的依賴圖模型,比如部件功能依賴圖和部件數(shù)據(jù)功能依賴圖。重測數(shù)據(jù)庫包括所有的部件重測測試套。2服務(wù)層服務(wù)層是該體系結(jié)果的核心部分。在服務(wù)層最下面是回歸測試庫管理,上面是識別器和算法運行器。識別器用于支持上層的修改識別分析,包括對修改版本前后的部件軟件進(jìn)行差異識別,得到修改點。算法運行器涉及到上層的影響分析,重測識別以及覆蓋分析等。影響分析需要在修改點上進(jìn)行可達(dá)性算法計算,找出受影響的部件函數(shù)和API ;覆蓋分析主要分析API測試序列所覆蓋的API功能,將其在重測模型上體現(xiàn)出來;重測識別通過影響分析結(jié)果和覆蓋分析結(jié)果,識別出需要添加、刪除、修改以及重用的回歸測試用例。3用戶層用戶層可以提供如下一些服務(wù)功能( I)部件資源管理,用于獲取和維護部件元數(shù)據(jù),包括API接口等。(2)測試用例管理,包括對測試用例和腳本進(jìn)行添加、刪除、修改等操作。(3)重測執(zhí)行,用來支持測試套中部件API測試序列的執(zhí)行。(4)測試和重測管理,用于獲取和維護部件API測試模型,相關(guān)的源數(shù)據(jù),以及更新的版本。(5)修改識別和分析,用于識別和分析新版本中部件的修改。(6)影響識別和分析,識別修改帶來的影響。(7)測試用例更新,根據(jù)修改影響識別出需要重測的測試用例,并且添加,刪除,和修改相應(yīng)的測試用例。二、方法流程本方法的實現(xiàn)流程可以總結(jié)如下(I)通過比較部件修改前后版本的模型獲取修改信息。流程(2)介紹具體的模型及建模過程。(2)創(chuàng)建部件功能調(diào)用圖和功能數(shù)據(jù)調(diào)用圖,用來表示部件內(nèi)部功能,API及端口之間的依賴關(guān)系。部件功能調(diào)用圖表示部件內(nèi)部功能函數(shù)之間的直接調(diào)用關(guān)系;功能數(shù)據(jù)調(diào)用圖表示部件內(nèi)部功能函數(shù)通過數(shù)據(jù)定義-使用所形成的依賴關(guān)系。由于部件軟件缺乏對外可見,可追蹤和可管理的修改信息,所以從部件外部的角度來說,需要從某種機制中使得修改信息能夠可見。在模型上面識別這些不同的修改類型,是影響分析的前提條件。比如說通過比較修改前后的部件功能依賴圖FDG,我們可以識別出圖中添加、刪除和改動的結(jié)點或者邊,從而識別出發(fā)生修改的的部件功能或者依賴關(guān)系。(3)修改影響分析。在部件功能調(diào)用圖和功能數(shù)據(jù)調(diào)用圖上面通過圖可達(dá)性算法識別出受修改影響的部件功能,從而進(jìn)一步識別出受修改影響的部件API。(4)測試覆蓋分析。將API測試序列覆蓋在部件功能訪問圖上表示,也就是將測試序列所覆蓋的部件API在部件功能訪問圖上標(biāo)識出。
(5)測試用例更新。將過程(3)中識別的受影響的部件API匹配到部件功能訪問圖上面,然后對受影響的測試序列進(jìn)行更新操作,識別出需要添加、刪除、修改以及重用的部件API回歸測試用例?;?,部件功能訪問圖,我們有如下一些測試用例更新規(guī)則規(guī)則I如果一個測試序列在修改前后的部件功能訪問圖中,并且該序列對應(yīng)路徑的所有節(jié)點都沒有受修改影響,那么該測試序列是可重用的;規(guī)則2如果一個測試序列對應(yīng)路徑的任意一個節(jié)點或鏈接被刪除都沒有受修改影響,并且該節(jié)點或鏈接也不存在于修改后的部件功能訪問圖中,那么該測試序列應(yīng)該被刪除;規(guī)則3如果一個測試序列在修改前后的部件功能訪問圖中,并且該序列對應(yīng)路徑中至少有一個節(jié)點受到了修改影響,那么該測試序列是需要修改的;規(guī)則4如果修改后的部件功能訪問圖中存在著新的路徑,那么需要生成新的測試序列來覆蓋。圖4是本發(fā)明方法的流程示意圖。實施例為了方便描述,我們假定有如下簡化的應(yīng)用實例我們有部件Cl的功能函數(shù)和API功能依賴圖如圖5所示。假設(shè)功能函數(shù)Fl被修改,那么對部件功能函數(shù)和API進(jìn)行修改影響分析,在圖上進(jìn)行可達(dá)性運算(公知技術(shù)不進(jìn)一步描述),可以得到受修改影響的部件功能分別是F2,F(xiàn)3,F(xiàn)4,F(xiàn)6,F(xiàn)5,F(xiàn)13,F(xiàn)14。根據(jù)API功能,我們得到受影響的API分別是F3_API,F(xiàn)4_API, F5_API, F14_API。假定我們有如下的API功能訪問測試序列用例Tl:F3_API,F(xiàn)4_API,F(xiàn)7_APIT2: F3_API,F(xiàn)4_API,F(xiàn)5_APIT3: F3_API,F(xiàn)4_API,F(xiàn)16_APIT4:F7_API,F(xiàn)10_APIT5:F3_API, F12_API, F16_API根據(jù)我們的API功能訪問測試序列更新規(guī)則,測試用例Tl,T2,T3所測試的序列中都有受修改影響的API,因此,Tl,T2,T3需要修改,而測試用例T4,T5中所測試的序列中沒有受修改影響的API,因此,T4和T5 可以是可以重用的測試用例。
權(quán)利要求
1.一種基于修改影響分析的部件軟件回歸測試用例更新方法,其特征在于,包括如下步驟 1)通過比較部件修改前后版本的模型獲取修改信息; 2)創(chuàng)建部件功能調(diào)用圖和功能數(shù)據(jù)調(diào)用圖,用來表示部件內(nèi)部功能、API及端口之間的依賴關(guān)系;其中,部件功能調(diào)用圖表示部件內(nèi)部功能函數(shù)之間的直接調(diào)用關(guān)系;功能數(shù)據(jù)調(diào)用圖表示部件內(nèi)部功能函數(shù)通過數(shù)據(jù)定義-使用所形成的依賴關(guān)系; 3)在部件功能調(diào)用圖和功能數(shù)據(jù)調(diào)用圖上面通過圖可達(dá)性算法識別出受修改影響的部件功能,從而識別出受修改影響的部件API ; 4)將測試序列所覆蓋的部件API在部件功能訪問圖上標(biāo)識出; 5)將步驟3)中識別的受影響的部件API匹配到部件功能訪問圖上面,然后結(jié)合步驟 4)識別出需要添加、刪除、修改以及重用的部件API回歸測試用例。
2.根據(jù)權(quán)利要求I所述的回歸測試用例更新方法,其特征在于,所述步驟5)識別出需要添加、刪除、修改以及重用的部件API回歸測試用例的具體方法如下如果一個測試序列在修改前后的部件功能訪問圖中,并且該序列對應(yīng)路徑的所有節(jié)點都沒有受修改影響,那么該測試序列是可重用的;如果一個測試序列對應(yīng)路徑的任意一個節(jié)點或鏈接被刪除都沒有受修改影響,并且該節(jié)點或鏈接也不存在于修改后的部件功能訪問圖中,那么該測試序列應(yīng)該被刪除;如果一個測試序列在修改前后的部件功能訪問圖中,并且該序列對應(yīng)路徑中至少有一個節(jié)點受到了修改影響,那么該測試序列是需要修改的;如果修改后的部件功能訪問圖中存在著新的路徑,那么需要生成新的測試序列來覆蓋。
全文摘要
本發(fā)明公布了一種基于修改影響分析的回歸測試用例更新方法;首先對部件軟件修改前后的版本進(jìn)行修改分析,識別出修改點;接著對修改點在部件功能依賴圖上面進(jìn)行修改影響分析,得到受修改影響的部件功能和PI;最后,根據(jù)修改影響分析結(jié)果,將受影響的API映射到重測模型上,然后基于重測模型的影響,對回歸測試用例進(jìn)行添加、刪除、修改、重用等更新。該方法能夠識別出部件修改影響,而且能夠識別出受修改影響的部件API測試序列。
文檔編號G06F11/36GK102831060SQ201210303829
公開日2012年12月19日 申請日期2012年8月24日 優(yōu)先權(quán)日2012年8月24日
發(fā)明者李必信, 陶傳奇, 孫小兵 申請人:東南大學(xué)