亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種用功能圖分析軟件功能變更及其影響的方法

文檔序號:6374842閱讀:211來源:國知局
專利名稱:一種用功能圖分析軟件功能變更及其影響的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種軟件測試方法,具體涉及一種用功能圖分析軟件功能變更及其影響的方法。
背景技術(shù)
軟件變更是軟件生存周期中不可避免且十分頻繁的一種行為,軟件變更后原有軟件將受到不同程度的影響,其中有些影響是顯而易見的,稱為顯性影響,有些影響是潛在的,難以從表面識別,稱為隱性影響。軟件變更影響分析是確定這些變更對軟件所造成的顯性特別是隱性影響,為軟件測試、維護(hù)等提供技術(shù)支持。 20世紀(jì)80年代以來,⑶I (圖形用戶界面)技術(shù)得到了廣泛應(yīng)用,⑶I軟件在給用戶帶來直觀、簡便的同時,其本身所具有的輸入/輸出圖形化、事件驅(qū)動、事件觸發(fā)隨機(jī)性、多任務(wù)以及消息傳遞等特性,使軟件功能變得越來越復(fù)雜。此外,目前大多數(shù)GUI軟件都是采用快速原型方法開發(fā)的,軟件版本變更頻繁。軟件功能的復(fù)雜性導(dǎo)致軟件功能的每一處變更,都將對與此功能相關(guān)的其他功能帶來顯性和隱性影響,隱性影響難以直接、直觀地識別出來,因此,在回歸測試時,只能憑經(jīng)驗設(shè)計測試用例,難免造成測試用例的遺漏、重復(fù)和冗余,嚴(yán)重影響回歸測試的充分性和測試效率。在變更影響域分析領(lǐng)域,有代表性的研究如下I.面向過程分析方法傳統(tǒng)的變更影響分析技術(shù)是針對面向過程程序而提出的,這些方法采用程序依賴圖對程序進(jìn)行分析,運(yùn)用控制依賴和數(shù)據(jù)依賴來表現(xiàn)程序節(jié)點(diǎn)間的依賴關(guān)系??刂埔蕾囀菑某绦蚩刂平Y(jié)構(gòu)中提取出來的軟件運(yùn)行時序邏輯關(guān)系;而數(shù)據(jù)依賴則是從數(shù)據(jù)聲明中提取出來的數(shù)據(jù)定義-引用關(guān)系。使用這種程序依賴圖可以很好地描述面向過程程序中的程序邏輯,但對于面向?qū)ο筌浖幸詫ο鬄榛A(chǔ)的程序邏輯,這些方法不能很好處理因面向?qū)ο笾械亩鄳B(tài)性而產(chǎn)生的間接依賴關(guān)系。2.基于類依賴圖方法近年來,針對面向?qū)ο蟪绦蛱攸c(diǎn),有些學(xué)者將變更影響分析技術(shù)運(yùn)用于面向?qū)ο筌浖?,提出了通過類依賴圖分析變更影響的方法。這種方法粒度過粗,導(dǎo)致分析結(jié)果準(zhǔn)確度不高。上述兩種方法都是以源代碼為分析對象,根據(jù)源代碼變更情況,找出受源代碼變更影響的其他源代碼。采用這些方法,能夠找出代碼變更影響域,但由于軟件代碼與功能不是簡單的對應(yīng)關(guān)系,因此,即使知道了受變更影響的代碼,也無法得知受影響的功能。為了覆蓋受變更影響的源代碼,測試人員還需要花費(fèi)一定的精力閱讀代碼,才能設(shè)計出覆蓋變更影響域的回歸測試用例,從而影響回歸測試的效率。軟件功能是軟件的精髓,用戶通過軟件所提供的功能完成指定的任務(wù),相對于代碼而言,軟件功能更加直觀,因此,從功能層面分析軟件變更影響域?qū)⒏又庇^和簡便,而已有的方法難以有效解決這個問題。

發(fā)明內(nèi)容
本發(fā)明所解決的技術(shù)問題是提供一種用功能圖分析軟件功能變更及其影響的方法,主要解決如何從軟件功能層面分析軟件變更影響域,從而提高變更影響域分析的直觀性、充分性和效率。技術(shù)方案包括一種用功能圖分析軟件功能變更及其影響的方法,包括構(gòu)建軟件功能圖;通過對被測軟件進(jìn)行分析,找出軟件所有的功能以及功能之間的關(guān)系;分析控件變更影響;通過比較新舊版本軟件功能圖,找出新舊版本功能差異及差 異影響;分析代碼變更影響;通過比較新舊版本軟件源程序代碼,找出代碼變更部分,根據(jù)代碼變更情況,采用方法依賴圖找出受代碼變更影響的代碼;控件與代碼映射;通過分析源程序代碼,采用代碼與界面控件映射方法,找出變更代碼所對應(yīng)的軟件功能,將代碼變更轉(zhuǎn)化為功能變更;分析功能變更影響域;根據(jù)功能變更和代碼變更所影響到的軟件功能情況,采用深度搜索算法,找出經(jīng)過功能變更點(diǎn)的所有功能。進(jìn)一步,軟件功能圖構(gòu)建具體包括詞法和語法分析;采用類編譯原理技術(shù),對被測軟件源代碼進(jìn)行詞法和語法分析,通過分析得到抽象語法樹和符號表;
圖形用戶界面GUI控件辨識;采用深度優(yōu)先搜索技術(shù),遍歷抽象語法樹和符號表,得到源代碼中所有的GUI控件;軟件功能圖生成;根據(jù)⑶I控件之間的相互關(guān)系,通過對⑶I控件分析,生成完整的軟件功能圖。進(jìn)一步在控件變更影響分析中,針對新舊版本兩個軟件,首先生成軟件功能圖Gl和軟件功能圖G2,而后通過比較這兩個軟件功能圖,標(biāo)識出發(fā)生變化的控件,最后根據(jù)標(biāo)識出的控件找出受變更影響的其他控件。進(jìn)一步,代碼變更影響分析的步驟包括構(gòu)建方法依賴圖和方法變更影響傳遞圖,將方法依賴轉(zhuǎn)換為方法變更影響傳遞;方法變更影響和屬性變更影響分析。根據(jù)方法變更和屬性變更類型分析代碼變更影響。進(jìn)一步,通過控件與代碼映射建立源代碼與控件之間的映射關(guān)系,從而將代碼變更轉(zhuǎn)化為功能變更。利用代碼變更影響分析結(jié)果,根據(jù)其中受到影響的方法集合和屬性集合找出與其對應(yīng)的控件,并在軟件功能比較結(jié)果圖中予以標(biāo)識。進(jìn)一步,功能變更影響域分析是根據(jù)軟件功能變更標(biāo)識結(jié)果,找出經(jīng)過變更點(diǎn)的所有功能路徑,所述功能路徑是受功能變更影響的部分,也是回歸測試時必須覆蓋的最小功能集。與現(xiàn)有技術(shù)相比較,本發(fā)明的有益效果是
本發(fā)明針對GUI軟件特點(diǎn),從軟件功能出發(fā),提出了基于控件變更和代碼變更的軟件功能變更影響域分析方法。與已有方法相比,有以下優(yōu)點(diǎn)(I)克服了面向過程方法不適用于面向?qū)ο筌浖娜秉c(diǎn),能夠處理面向?qū)ο筌浖械亩鄳B(tài)、繼承等,適用于面向?qū)ο筌浖?2)與基于類劃分的代碼依賴圖相比,本發(fā)明中采用方法依賴圖描述代碼依賴關(guān)系,代碼分析粒度適中,能夠準(zhǔn)確反映代碼變更對軟件功能帶來的影響;(3)與單純的功能變更影響分析相比,本發(fā)明充分考慮了代碼變更和控件變更對軟件功能帶來的影響,影響分析全面,沒有遺漏;(4)與單純的代碼變更影響分析相比,本發(fā)明根據(jù)控件和代碼之間的關(guān)聯(lián)關(guān)系,將代碼變更轉(zhuǎn)換為功能變更,變更影響分析結(jié)果直觀,便于使用。


圖I是本發(fā)明的主工作流程圖;圖2是本發(fā)明中軟件功能圖生成的工作流程圖;圖3是本發(fā)明中詞法和語法分析流程圖;圖4是本發(fā)明中⑶I控件辨識的工作流程圖;圖5是本發(fā)明中控件與代碼映射表生成流程圖;圖6是本發(fā)明中控件變更影響分析流程圖;圖7是本發(fā)明中程序模塊劃分示意圖;圖8是本發(fā)明中類變更對控件影響示意圖;圖9是本發(fā)明中代碼變更影響分析的流程圖;圖10是本發(fā)明中的方法依賴圖;圖11是本發(fā)明中依賴關(guān)系方向和變更傳遞方向不意圖;圖12是本發(fā)明中方法依賴圖和方法變更傳遞圖;圖13是本發(fā)明中變更前后的學(xué)生管理系統(tǒng)界面圖;圖14是本發(fā)明中VI. O版軟件功能圖;圖15是本發(fā)明中V2. O版軟件功能圖;圖16本發(fā)明中方法變更及函數(shù)調(diào)用關(guān)系圖。
具體實施例方式本發(fā)明針對已有方法存在的問題,從軟件功能的角度分析軟件功能變更影響域,主要解決如何找出軟件中受代碼變更影響的軟件功能,從而提高變更影響域分析的直觀性、充分性和效率。對于GUI軟件而言,軟件功能變更來自于兩個方面,一是界面控件變更,二是底層代碼變更。界面控件變更將顯性影響軟件已有的功能,底層代碼變更將隱性影響軟件已有功能。本發(fā)明針對這兩種變更,對功能變更影響域進(jìn)行分析。下面參考附圖和優(yōu)選實施例,對本發(fā)明技術(shù)方案作詳細(xì)說明。如圖I所示,是本發(fā)明的主工作流程圖。一種用功能圖分析軟件功能變更及其影響的執(zhí)行過程如下。
步驟I :軟件功能圖構(gòu)建。通過對被測軟件進(jìn)行分析,找出軟件所有的功能以及功能之間的關(guān)系;步驟2 :控件變更影響分析。通過比較新舊版本軟件功能圖,找出新舊版本功能差異及差異影響;步驟3 :代碼變更影響分析。通過比較新舊版本軟件源程序代碼,找出代碼變更部分,根據(jù)代碼變更情況,采用方法依賴圖找出受代碼變更影響的代碼;步驟4 :控件與代碼映射。通過分析源程序代碼,采用代碼與界面控件映射方法,找出變更代碼所對應(yīng)的軟件功能,將代碼變更轉(zhuǎn)化為功能變更;步驟5 :功能變更影響域分析。根據(jù)功能變更和代碼變更所影響到的軟件功能,采用深度搜索算法,找出經(jīng)過功能變更點(diǎn)的所有功能,這些功能就是受軟件變更影響的功倉泛。下面對上述5個步驟作詳細(xì)說明。如圖2所示,是本發(fā)明中軟件功能圖生成的工作流程圖。軟件功能圖用來描述軟件所具有的功能,是本發(fā)明的基礎(chǔ),這部分功能主要通過分析源程序代碼,構(gòu)建語法樹和符號表,在此基礎(chǔ)上,找出源程序與軟件界面的對應(yīng)關(guān)系,并生成軟件功能圖。步驟I中的軟件功能圖生成包括如下步驟步驟11 :詞法和語法分析。采用類編譯原理技術(shù),對被測軟件源代碼進(jìn)行詞法和語法分析,通過分析,得到抽象語法樹和符號表;步驟12 =GUI控件辨識。采用深度優(yōu)先搜索技術(shù),遍歷抽象語法樹和符號表,得到源代碼中所有的⑶I控件(如窗口、按鈕等);步驟13 :軟件功能圖生成。根據(jù)⑶I控件之間的相互關(guān)系(如父子關(guān)系、調(diào)用關(guān)系等),通過對⑶I控件分析,生成完整的軟件功能圖。該方案可以使用算法I描述。算法I. GetGUIRelationGraph (P)輸入P :源代碼輸出G :P中⑶I軟件控件關(guān)系圖I. (AST, SymTable)<-Lexical_Syntax_Analyze(P)2.⑶IEmtList〈_GEL_AST_SymTable(AST, SymTable)3. (G, T) <-GRG_AST_GEL (AST,⑶IEmtLi st)4. Return (G, T)算法I的第I步以P (被測軟件的源代碼)為參數(shù)調(diào)用函數(shù)Lexical_Syntactax_Analyze,得到P的抽象語法樹AST和符號表SymTable ;第2步以AST和SymTable為參數(shù)調(diào)用函數(shù)GEL_AST_SymTable,得到P的⑶I控件列表⑶IEmtList ;第3步以AST和⑶IEmtList為參數(shù)調(diào)用函數(shù)GRG_AST_GEL,得到⑶I軟件功能圖。
步驟11中,詞法和語法分析的主要目的是得到被測軟件源代碼的抽象語法樹和
符號表。定義I :抽象語法樹是一棵樹T=〈V, E>,其中V是樹的節(jié)點(diǎn),由源代碼中的各種語法結(jié)構(gòu)組成;
E是樹的邊,負(fù)責(zé)連接各種語法結(jié)構(gòu)。定義2 :符號表是一個表形數(shù)據(jù)結(jié)構(gòu),詞法分析過程中產(chǎn)生的標(biāo)識符作為符號表的入口,后續(xù)分析得到的信息,如標(biāo)識符的類型、使用方式、存儲空間等都可以根據(jù)需要加入到表中。如圖3所示,是本發(fā)明中詞法和語法分析流程圖。詞法和語法分析是生成軟件功能圖的基礎(chǔ)。本發(fā)明采用通用的方法對被測軟件的源代碼進(jìn)行詞法和語法分析。由算法2描述。算法2. Lexical_Syntax_Analyze (P)輸入P :源代碼輸出(AST,SymTable) P的抽象語法樹和符號表
I. TokenStream<-Lexical_Analyze(P)2. (AST, SymTable)<-Syntax_Analyze(TokenStream)3. Return (AST, SymTable)源代碼在經(jīng)過詞法和語法分析后,將得到其抽象語法樹和符號表。算法2的第I步對源代碼P進(jìn)行詞法分析,得到P的標(biāo)記流TokenStream ;第2步以標(biāo)記流為基礎(chǔ)進(jìn)行語法分析,得到P的抽象語法樹AST和符號表SymTable ;第3步將AST和SymTable返回。步驟12中GUI控件辨識的目的是找出程序中所設(shè)計的所有GUI控件,即通過對抽象語法樹和符號表的分析,辨識出所有的GUI控件。這一步主要通過對抽象語法樹的遍歷和對符號表的查找來完成。主要方法是以深度優(yōu)先方法遍歷抽象語法樹,如果某個葉子節(jié)點(diǎn)是變量,這時通過查找符號表,可以得到該變量的類型;如果該類型是GUI控件類型,則說明該變量所描述的是一個GUI控件。程序編譯和本方案中的GUI控件辨識都使用了抽象語法樹和符號表,但兩者的目的不同,前者的目的是生成并優(yōu)化目標(biāo)代碼,而后者的目的是找出源代碼中所有的GUI控件。I.⑶I控件類型編程語言不同,其所包含的控件類型也不同,以Java Swing為例,其所包含的控件可以分為如下幾類(I)窗口和窗框類JWindow, JColorChooser, JComponent, JDesktopPane, JDialog,JEditorPane, JFileChooser, JFrame, JInternalFrame, JLayeredPane, JOptionPane, JRootPane, JScrollPane, JSplitPane, JTabbedPane ;(2)按鈕類JButton, JToggleButton, JCheckBox, JCheckBoxMenuItem, JComboBox,JRadioButton, JRadioButtonMenuItem ;(3)菜單類JMenu, JMenuBar, JMenuItem, JPopupMenu ;(4)文本輸入類JTextArea, JTextComponent, JTextField, JPasswordField ;(5)其它JTree, JViewPort, JScrollBar, JSeparator, JSlider, JSpinner, JTable,JTableHeader, JToolBar, JToolTip, JLabel, JList, JProgressBar0雖然這些控件有各自的使用方法,但是,將某個變量定義為某種控件的方式是由語言本身的規(guī)范確定的,因此,可以根據(jù)這些規(guī)范,采用統(tǒng)一的方法辨識這些控件。2.變量定義方式
對控件變量的定義方式主要有2種(I)變量聲明在程序設(shè)計語言中,變量聲明負(fù)責(zé)指出某變量的存在以及其相關(guān)的性質(zhì),但并不對其進(jìn)行初始化。例如privatejavax. swing. JButton computeButton;該語句定義了類型為javax. swing. JButton 白勺變量 computeButton (2)變量定義在程序設(shè)計語言中,變量定義不僅負(fù)責(zé)指出某變量的存在以及其相關(guān)的性質(zhì),還需要對其進(jìn)行初始化。例如javax. swing. JMenu fileMenu=new javax. swing. JMenu (); 該語句定義了類型為javax. swing. JMenu的變量fileMenu并使用new語句對其進(jìn)行了初始化。3.控件辨別方法如圖4所示,是本發(fā)明中GUI控件辨識的工作流程圖。通過在抽象語法樹中對上述兩種定義方式進(jìn)行搜索,同時結(jié)合符號表中的內(nèi)容,就可以辨識出源代碼中所有的控件
及其變量。通過遍歷抽象語法樹和查找符號表,可以生成⑶I控件列表。算法3. GEL_AST_SymTable (AST, SymTable)描述了⑶I控件辨別算法。算法3. GEL_AST_SymTable (AST, SymTable)輸入AST :源代碼的抽象語法樹輸入SymTable :源代碼的符號表輸出GEL :源代碼中的⑶I控件列表I. GEL<-[];2.遍歷AST的所有葉子節(jié)點(diǎn)Node3. if (LookUpType (SymTable, Node) =GUI 控件類型)4. GEL<-Node: :GEL5. Return GEL算法3的第I步初始化返回值GEL為空列表;第2步至第4步開始遍歷抽象語法樹AST ;其中第3步調(diào)用函數(shù)LookUpType (SymTable, Node)判斷葉子節(jié)點(diǎn)Node是否為⑶I控件類型,如果是,則在第4步將該節(jié)點(diǎn)加入返回值GEL列表;抽象語法樹AST遍歷完成后,第5步將⑶I控件列表GEL返回。如圖5所示,是本發(fā)明中控件與代碼映射表生成流程圖。步驟13中,要生成軟件功能圖,除了獲取程序中的控件外,還需要知道這些控件之間的關(guān)系。GUI控件之間具有多種關(guān)系,主要包括父子關(guān)系、兄弟關(guān)系和調(diào)用關(guān)系。定義3 :父子關(guān)系。父子關(guān)系是指在定義過程中產(chǎn)生的控件之間的某種與層次相關(guān)的定義關(guān)系。編程語言不同,其表征方式也不相同。在Java Swing中,父子關(guān)系的定義主要通過父控件的.add()函數(shù)(控件類型不同,該函數(shù)也有所區(qū)別)來完成。例如,在下面的代碼中
權(quán)利要求
1.一種用功能圖分析軟件功能變更及其影響的方法,包括 構(gòu)建軟件功能圖;通過對被測軟件進(jìn)行分析,找出軟件所有的功能以及功能之間的關(guān)系; 分析控件變更影響;通過比較新舊版本軟件功能圖,找出新舊版本功能差異及差異影響; 分析代碼變更影響;通過比較新舊版本軟件源程序代碼,找出代碼變更部分,根據(jù)代碼變更情況,采用方法依賴圖找出受代碼變更影響的代碼; 控件與代碼映射;通過分析源程序代碼,采用代碼與界面控件映射方法,找出變更代碼所對應(yīng)的軟件功能,將代碼變更轉(zhuǎn)化為功能變更; 分析功能變更影響域;根據(jù)功能變更和代碼變更所影響到的軟件功能情況,采用深度搜索算法,找出經(jīng)過功能變更點(diǎn)的所有功能。
2.如權(quán)利要求I所述的用功能圖分析軟件功能變更及其影響的方法,其特征在于,軟件功能圖構(gòu)建具體包括 詞法和語法分析;采用類編譯原理技術(shù),對被測軟件源代碼進(jìn)行詞法和語法分析,通過分析得到抽象語法樹和符號表; 圖形用戶界面GUI控件辨識;采用深度優(yōu)先搜索技術(shù),遍歷抽象語法樹和符號表,得到源代碼中所有的GUI控件; 軟件功能圖生成;根據(jù)⑶I控件之間的相互關(guān)系,通過對⑶I控件分析,生成完整的軟件功能圖。
3.如權(quán)利要求I所述的用功能圖分析軟件功能變更及其影響的方法,其特征在于在控件變更影響分析中,針對新舊版本兩個軟件,首先生成軟件功能圖Gl和軟件功能圖G2,而后通過比較這兩個軟件功能圖,標(biāo)識出發(fā)生變化的控件,最后根據(jù)標(biāo)識出的控件找出受變更影響的其他控件。
4.如權(quán)利要求I所述的用功能圖分析軟件功能變更及其影響的方法,其特征在于,代碼變更影響分析的步驟包括 構(gòu)建方法依賴圖和方法變更影響傳遞圖,將方法依賴轉(zhuǎn)換為方法變更影響傳遞; 方法變更影響和屬性變更影響分析,根據(jù)方法變更和屬性變更類型分析代碼變更影響。
5.如權(quán)利要求I所述的用功能圖分析軟件功能變更及其影響的方法,其特征在于,通過控件與代碼映射建立源代碼與控件之間的映射關(guān)系,從而將代碼變更轉(zhuǎn)化為功能變更,利用代碼變更影響分析結(jié)果,根據(jù)其中受到影響的方法集合和屬性集合找出與其對應(yīng)的控件,并在軟件功能比較結(jié)果圖中予以標(biāo)識。
6.如權(quán)利要求I所述的用功能圖分析軟件功能變更及其影響的方法,其特征在于,功能變更影響域分析是根據(jù)軟件功能變更標(biāo)識結(jié)果,找出經(jīng)過變更點(diǎn)的所有功能路徑,所述功能路徑是受功能變更影響的部分,也是回歸測試時必須覆蓋的最小功能集。
全文摘要
本發(fā)明公開了一種用功能圖分析軟件功能變更及其影響的方法,包括通過對被測軟件進(jìn)行分析,構(gòu)建軟件功能圖;分析控件變更和代碼變更影響;控件與代碼映射,通過分析源程序代碼,采用代碼與界面控件映射方法,找出變更代碼所對應(yīng)的軟件功能,將代碼變更轉(zhuǎn)化為功能變更;根據(jù)功能變更和代碼變更所影響到的軟件功能情況,分析功能變更影響域,找出經(jīng)過功能變更點(diǎn)的所有功能。本發(fā)明采用方法依賴圖描述代碼依賴關(guān)系,能夠準(zhǔn)確反映代碼變更對軟件帶來的影響;充分考慮了代碼變更和控件變更對軟件功能帶來的影響,影響分析全面;根據(jù)控件和代碼之間關(guān)聯(lián)關(guān)系將代碼變更轉(zhuǎn)換為功能變更,變更影響分析結(jié)果直觀。
文檔編號G06F11/36GK102831057SQ201210286848
公開日2012年12月19日 申請日期2012年8月13日 優(yōu)先權(quán)日2012年8月13日
發(fā)明者于秀山, 王建偉, 許峰, 宋炎淼, 于長鉞, 楊豹, 董昕, 劉然, 劉怡靜, 黃忠見, 遲芳 申請人:于秀山
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1