999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于抽象語法樹的修改影響分析方法

2012-08-16 01:10:12侯秀萍孫士明
長春工業大學學報 2012年4期
關鍵詞:定義程序影響

高 燦, 侯秀萍, 孫士明

(長春工業大學 計算機科學與工程學院,吉林 長春 130012)

0 引 言

在軟件測試和維護過程中,一旦發現軟件系統中存在錯誤,則應立即排除它們,為了保證程序的修改沒有引入新的錯誤,則必須對其進行回歸測試。為了節省測試成本、提高測試效率,回歸測試只需要測試那些由于修改而受到影響的部分[1]。

面向對象程序中,多態允許對同樣的請求可以有不同的響應,動態綁定允許在程序運行時才決定它的執行體,類的繼承和使用過程使得面向對象程序具有模塊化、層次化和有利于代碼重用等優點,但同時又使得程序修改的擴散效應更加明顯[2]。例如,繼承使得一個類的成員變量和成員函數能夠被一些子類所重用[3],所以,當修改父類的時候就會導致與它相關的類也要在回歸測試的過程中重新進行測試。

在回歸測試中,重新測試所有的類從測試代價和成本上講是完全沒有必要的,僅測試那些修改的內容和修改影響到的內容就能夠達到和全部重測同樣的效果。楊芙清[4]等通過分析面向對象軟件系統的特性,定義了對象之間的依賴關系,通過依賴關系導出測試對象的方法序列。Rothermel[5]等提出通過構建程序依賴圖(Program Dependence Graph)來表示數據依賴和控制依賴,并找出關于繼承、封裝和多態等構造關系的子類和其它類[6]。

文中針對面向對象程序具有繼承、封裝、多態等特點,深入研究了程序修改的影響范圍,提出了基于抽象語法樹的修改影響分析方法,為測試人員提供合理的測試范圍,期望能夠達到減少回歸測試花銷,提高測試效率的目的。

1 程序依賴關系研究

1.1 依賴關系定義(Dependence Relationship,DR)

面向對象程序的封裝性要求把屬性和方法封裝在一起形成類,不同的類通過方法的調用實現交互。

定義1 類C定義為屬性集V和方法集M的并集,記為:

定義2 類C與C′之間的依賴關系D定義為在集合C和C′上的二元關系,記為:

其中,序偶〈x,y〉表示元素x依賴于元素y,即元素y的變化會影響到元素x。

定義3 數據依賴(Data Dependence,DD)。設類C中存在屬性v∈V,若屬性集V發生屬性類型和值的調整及屬性數量的增減等變化,導致類C′中引用屬性v的方法發生變化,則稱類C′數據依賴于類C,記為:C′DDC。

定義4 控制依賴(Control Dependence,CD)。設類C中存在方法m∈M,若方法集M發生訪問類型、參數和語句的變化及方法數量的增減等情況,導致類C′中調用方法m的方法發生變化,則稱類C′控制依賴于類C,記為:C′DCC。

1.2 依賴關系存儲結構設計

根據程序依賴關系的定義,可以解析源文件語法樹,抽取其數據依賴和控制依賴關系,將其存于相應的存儲結構中,為修改影響分析提供依據。其主要結構設計如下:

1)數據依賴關系表(Date Dependence Relationship Table,DDRT)。

DDRT::= (Class,Field,Method),其中:

Class:類名;

Field:屬性名;

Method:使用該變量的方法名。

2)控制依賴關系表(Control Dependence Relationship Table,CDRT)。

CDRT ::=(Class,Method,Method_call,Class_call),其中:

Class:類名;

Method:方法名;

Method_call:被調用的方法名;

Class_call:被調用方法所在的類名。

2 基于抽象語法樹的修改影響分析

在軟件測試過程中要對程序源代碼的語法結構進行合理存儲,以利于確定修改信息,因此需要找到一種源代碼語法層次信息的載體,也就是從程序源代碼文件生成的抽象語法樹(Abstract Syntax Tree,AST)[8],并通過遍歷Java源程序的抽象語法樹獲取源程序中的類名、方法名、屬性名和調用信息等內容存儲在二維表中。Eclipse開發平臺中的JDT(Java Development Tooling)工具通過對源程序進行語法分析和詞法分析可以將源代碼解析成抽象語法樹,用戶只需要指明源文件的存儲位置并調用ASTParser類中的creatAST()方法就可以得到源程序中的類名、方法名、屬性名和調用信息等內容并進行存儲,以便后續使用。

對于一個面向對象程序P,通過遍歷抽象語法樹建立其DDRT表和CDRT表分別為T1,T2;設修改后的程序為P′,其DDRT表和CDRT表分別為T′1,T′2。

針對面向對象程序的特點,將程序的修改定義為6種原子修改,分別為:

1)增加方法;

2)刪除方法;

3)修改方法;

4)增加屬性;

5)刪除屬性;

6)修改屬性。

所有的修改都可以視為這幾種操作的組合。

2.1 增加方法(Added Method)

當增加一個方法時,還要同時增加對這個方法的調用,受到影響的部分為修改后的程序中直接和間接調用它的那些方法。因此,設新增加的方法為(C,m),按下述遞歸規則定義受其影響的方法集合AAM(C,m)定義為 :

從AMi(C,m)構成 AMi+1(C,m),如果不增加任何新的元素,有

2.2 刪除方法(Deleted Method)

當刪除一個方法時,對于這個方法的調用也同時被刪除,因此,受到影響的部分為修改前的程序中調用它的那些方法。設刪除的方法為(C,m),則受到影響的方法集合DM(C,m)定義為:

從DMi(C,m)構成 DMi+1(C,m),如果不增加任何新的元素,有

2.3 修改方法(Changed Method)

對方法的修改包括以下幾種情況:

1)修改方法的訪問類型(public,protected和private)。

若將訪問類型由public或者protected類型變為private類型,則方法不能被其它方法調用,因此,修改后的程序中不會出現對它的調用關系,受到影響的部分為修改前的程序中直接和間接調用該方法的其它方法,也就是相當于刪除一個方法,對于此類情況的處理方法同式(4);反之,若將訪問類型由private類型變為public或者protected類型,則方法能被其它方法調用,因此,修改后的程序中調用該方法的其它方法受到影響,也就是相當于增加一個方法,處理方法同式(3)。

2)修改方法的參數(包括參數類型、參數個數和參數值)和方法體中的語句時,修改前和修改后的程序中直接和間接調用該方法的其它方法都會受到影響,因此處理按照方法式(3)和式(4),并取兩種方法計算出的結果的并集。

2.4 增加屬性(Added Property)

當增加一個屬性時,受到影響的部分為修改后的程序中使用它的那些方法以及調用那些方法的其它方法。因此,設新增加的屬性為(C,v),則受影響的方法集合AP(C,v)定義為:

從APi(C,v)構成APi+1(C,v),如果不增加任何新的元素,有

2.5 刪除屬性(Deleted Field)

當刪除一個屬性時,受到影響的部分為修改前的程序中使用它的那些方法以及調用那些方法的其它方法。因此,設刪除的屬性為(C,v),則受影響的方法集合DP(C,v)定義為:

從DPi(C,v)構成DPi+1(C,v),如果不增加任何新的元素,有

2.6 修改屬性(Changed Property)

當修改一個屬性時,受到影響的部分為修改后的程序中使用它的那些方法以及調用那些方法的其它方法。因此,設修改的屬性為(C,v),則受影響的方法集合CP(C,v)定義為:

從CPi(C,v)構成CPi+1(C,v),如果不增加任何新的元素,有

2.7 其它修改

除了以上提到的6種原子修改外,還有基于類粒度的修改,如增加類(Added Class)、刪除類(Deleted Class)和修改類(Changed Class)。

增加類表示在一個空類中增加新的方法和屬性。因此,可以使用式(3)和式(5)中提供的方法來確定受到修改影響的方法集。

刪除類相當于對一個類刪除它的所有屬性和方法。因此,可以使用式(4)和式(6)中提供的方法鑒別修改影響范圍。

修改類相當于對一個類中的屬性和方法的修改,因此,可以使用式(3)、式(4)和式(7)中提供的方法確定修改影響范圍。

3 實驗結果

通過以上提到的集中方法,對一個Java測試程序進行了修改影響分析實驗。該程序中包含6個類和20個方法,實驗結果見表1。

表1 實驗結果

從表中可以看出,與全部重測所有類中的所有方法相比,基于抽象語法樹的修改影響分析方法能夠減少回歸測試中重新測試的方法數量,從而有效提高回歸測試的效率,但是這種方法僅適合少量修改的情況。

4 結 語

介紹了一種針對面向對象程序的基于抽象語法樹的修改影響分析方法,建議在回歸測試中對修改的方法本身及受到屬性和方法修改所影響的方法進行測試。雖然沒有實現全面的自動化測試,但也在一定程度上提高了測試的效率,減少了測試的代價,在后續的研究過程中將繼續關注修改范圍的自動化確定和回歸測試用例的選擇等問題。

[1]White L J,Leung H K N.A firewall concept for both control-flow and date-flow in regression integration testing[C]//Proceedings of the Conference on Software Maintenance,1992:262-270.

[2]雷海虹,繆力,張大方.面向對象程序的兩種修改影響分析方法[J].計算機工程與科學,27(5):101-103.

[3]陳躍峰,李中彬,谷驍勇.Java編程那些事兒[M].北京:清華大學出版社,2010:150-152.

[4]方菲,孫家骕,楊芙清.面向對象軟件回歸測試技術研究[J].軟件學報,2001,12(3):372-376.

[5]Rothermel G,Harrold M J.Selecting Regression Tests for Object-Oriented Sofware Proc.[C]//IEEE International Conference on Softuare Maintenance,1994:14-25.

[6]馬玉州.面向對象軟件的回歸測試方法研究[D]:[碩士學位論文].長春:吉林大學,2009.

猜你喜歡
定義程序影響
是什么影響了滑動摩擦力的大小
哪些顧慮影響擔當?
當代陜西(2021年2期)2021-03-29 07:41:24
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
擴鏈劑聯用對PETG擴鏈反應與流變性能的影響
中國塑料(2016年3期)2016-06-15 20:30:00
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
山的定義
公務員文萃(2013年5期)2013-03-11 16:08:37
主站蜘蛛池模板: 亚洲无码免费黄色网址| 欧美 亚洲 日韩 国产| av一区二区三区在线观看| 啪啪啪亚洲无码| 91精品啪在线观看国产91九色| a级毛片免费网站| 亚洲欧洲自拍拍偷午夜色| 国产精品成人啪精品视频| 中国一级毛片免费观看| a毛片基地免费大全| 国产精品伦视频观看免费| 国产成人精品免费av| 国产一区三区二区中文在线| 69av在线| 国产欧美亚洲精品第3页在线| 日韩无码真实干出血视频| 日韩黄色大片免费看| 免费无遮挡AV| 国产高清在线观看| 五月激激激综合网色播免费| 狠狠亚洲婷婷综合色香| 91精品人妻互换| 视频在线观看一区二区| 无码中文字幕加勒比高清| 国产精品lululu在线观看| 国内毛片视频| 欧美人在线一区二区三区| 欧美日韩高清| 国产91九色在线播放| 在线免费a视频| 青青青亚洲精品国产| 国产自视频| 国产一区二区人大臿蕉香蕉| 亚洲男人天堂2020| 国产一区二区人大臿蕉香蕉| 国产高清无码麻豆精品| 亚洲婷婷在线视频| 波多野一区| 国产自在线拍| 婷婷六月色| 亚洲精品第一页不卡| 国产 在线视频无码| 成人av专区精品无码国产| 中文字幕在线欧美| 免费全部高H视频无码无遮掩| 四虎成人在线视频| 毛片在线看网站| 午夜无码一区二区三区| 欧美精品成人| 亚洲精品另类| 秋霞国产在线| 久草视频中文| 国产又爽又黄无遮挡免费观看| 日韩性网站| 99国产在线视频| V一区无码内射国产| 一级毛片免费高清视频| 久久综合九色综合97婷婷| 欧美成人手机在线观看网址| 99热最新网址| 中文成人在线| 国产精品成人免费综合| 精品人妻AV区| 中文字幕av无码不卡免费| 亚洲高清无码久久久| 亚洲精品国产日韩无码AV永久免费网| 中文字幕无线码一区| 亚洲视频a| 欧洲欧美人成免费全部视频| 2021国产精品自产拍在线| 国产一级做美女做受视频| 婷婷激情五月网| 中文字幕第1页在线播| 乱人伦99久久| 久爱午夜精品免费视频| 亚洲伊人久久精品影院| 黄色免费在线网址| 日韩精品一区二区三区中文无码| 国产丝袜91| www.youjizz.com久久| 88国产经典欧美一区二区三区| av无码久久精品|