新四季網

用於基於框架的應用程式的回歸測試選擇方法和裝置的製作方法

2023-05-28 13:48:01 4

專利名稱:用於基於框架的應用程式的回歸測試選擇方法和裝置的製作方法
技術領域:
本發明涉及計算機領域,具體涉及電腦程式的測試,更具體涉及一種用於基於 框架的應用程式的回歸測試選擇方法和裝置。
背景技術:
選擇性回歸測試涉及使用整個測試套(test suite)的子集來重新測試軟體系統 的應用程式,以驗證對應用程式的修改沒有對符合需求規範的現有功能造成不利影響。回 歸測試選擇就是指從原來的整個測試套中選擇用於重新測試的測試用例。用於傳統的商業 Java應用的傳統回歸測試選擇方法通過獲得經歷純Java代碼的變化點的測試用例來生成 回歸測試套。在這種方法中,使用運行蹤跡監視(execution trace monitor)技術來獲得應 用的運行蹤跡,並使用諸如程序依賴圖(Program Dependence Graph)、路徑分析、數據流、 圖遍歷(Graph Walk)、防火牆等靜態程序分析技術來分析程序修改的影響,從而得以判斷 每個測試用例是否經歷了受修改影響的功能,並進而選擇需要進行重新運行的測試用例。這種傳統的回歸測試選擇方法僅適用於傳統的Java應用,其中應用的邏輯僅存 在於在代碼中。然而,在目前流行的基於框架的應用程式-例如J2EE應用中,應用邏輯不僅 存在於代碼中,而且存在於框架配置文件(例如,Spring, Struts, iBatis等框架的配置文 件)中。對於基於框架的應用程式來說,對程序的修改既可能發生在程序代碼中,也可能發 生在配置文件中。因此,回歸測試用例的選擇不僅應當考慮代碼中的變化及其影響,而且應 當考慮到配置文件的變化及其影響。而現有的回歸測試選擇技術只能處理代碼中的變化, 而不能處理配置文件中的變化。因此,現在的通常做法是當發生配置文件中的變化時,重 新運行全部測試用例,這將造成耗費大量測試時間和測試資源;或者,人工選擇回歸測試用 例,這不但很耗時,而且覆蓋性較差,而很可能遺漏了那些應該進行重新測試的測試用例。

發明內容
根據本發明的一個方面,提供了一種用於基於框架的應用程式的回歸測試選擇方 法,所述應用程式包含程序文件和配置文件,所述方法包括在應用程式修改前,通過分析 應用程式的配置文件提取框架配置模型實例,所述框架配置模型實例描述了該應用程式的 框架配置中的各配置節點以及各配置節點中包含的代碼單元之間的關係;通過對該應用程 序的測試用例的運行使用蹤跡監視,構建測試用例的調用流,所述調用流包括測試用例運 行過程中所經歷的程序文件中的代碼單元以及代碼單元之間的控制流關係;以及通過將所 述框架配置模型實例中的配置節點與所述測試用例的調用流中的代碼單元相關聯,獲得測 試用例的擴展調用流。根據本發明的另一個方面,提供了一種用於基於框架的應用程式的回歸測試選擇 裝置,所述應用程式包含程序文件和配置文件,所述裝置包括框架分析器,用於在應用程 序修改前,通過分析應用程式的配置文件提取框架配置模型實例,所述框架配置模型實例 描述了該應用程式的框架配置中的各配置節點以及各配置節點中包含的代碼單元之間的
6關係;測試特徵提取引擎,用於通過對該應用程式的測試用例的運行使用蹤跡監視構建測 試用例的調用流,所述調用流包括測試用例在運行過程中所經歷的程序文件中的代碼單元 以及代碼單元之間的控制流關係;以及節點/代碼單元關聯引擎,用於將所述框架配置模 型實例中的配置節點與所述測試用例的調用流中的代碼單元相關聯,獲得測試用例的擴展 調用流。本發明的技術方案通過考慮配置文件的變化的影響增強了回歸測試選擇,使得所 選擇的回歸測試套具有良好的覆蓋性,更為全面和實用,從而便利了基於框架的應用程式 的回歸測試。本發明的技術方案適用於各種框架,並可通過對不同框架的配置文件的處理 自動選擇回歸測試用例,而不需要人工進行選擇。


所附權利要求中闡述了被認為是本發明的特點的創造性特徵。但是,通過參照附 圖閱讀下面對說明性實施例的詳細說明可更好地理解發明本身以及其優選使用模式、目 標、特徵以及優點,在附圖中圖1示意性地例示了一個典型的J2EE應用以及配置文件中的修改對程序測試運 行的影響;圖2示出了根據本發明的實施例的用於基於框架的應用程式的回歸測試選擇方 法的流程圖;圖3示意性地示出了根據本發明的實施例的用於基於框架的J2EE應用的回歸測 試選擇方法;圖4示出了框架配置模型實例片段的示例;圖5A例示了使用現有的蹤跡監視技術生成的測試用例的調用流;圖5B例示了使用本發明的關聯步驟生成的測試用例的擴展調用流;以及圖6示出了根據本發明的實施例用於基於框架的J2EE應用的回歸測試選擇裝置。
具體實施例方式本發明提供了一種用於基於框架的應用程式運行的回歸測試的方法,包括如下步 驟通過分析基於框架的應用程式的配置文件提取框架配置模型實例,所述框架配置模型 實例描述了該應用程式的框架配置中的各配置節點以及各配置節點中包含的代碼單元之 間的關係;通過運行測試套中的測試用例並使用蹤跡監視構建測試用例的調用流,所述調 用流包括測試用例在運行過程中所經歷的程序代碼單元及其控制流關係;以及通過將所述 框架配置模型實例中的配置節點與所述調用流中的程序代碼單元相關聯,來獲得測試用例 的擴展調用流。以下以J2EE應用為例,詳細說明本發明的實施方式。所屬技術領域的技術人員應 當明白,本發明並不限於J2EE應用的特定細節,基於J2EE應用的實施方式,完全可以推廣 到其它基於框架的應用程式。圖1示意性地例示了一個典型的J2EE應用以及配置文件中的修改對程序測試運 行的影響。如圖所示,該J2EE應用具有如下6層:ffeb,Action,Service,DA0,Object和DB 層,每層包括各自的程序代碼單元。Web層為JSP。當用戶通過JSP提交一個Actior^orm從而與應用交互時,Mruts框架將根據配置文件struts-config.xml中的配置把該 ActionForm傳遞給Action層中特定的Action類。當該Action類執行完成後,結果字符 串將根據同一個配置文件中的配置將應用引導到下一個JSP。在該圖的左測,示出了 5個 測試用例及其調用流;在該圖的右測,示出了配置片段。如本領域的技術人員所知的,測試 用例的調用流是指測試用例在運行過程中所調用的程序代碼單元集合以及程序代碼單元 之間的控制流關係。測試用例的調用流可以用調用流圖來表示,該調用流圖中的節點表示 程序代碼單元,而節點之間的邊表示程序代碼單元之間的控制流關係。如圖1所示,測試用 例1的調用流為UIl- > A3- > S4- > D5- > 03- > DB2,測試用例2的調用流為UI4- > A5- > S5- > D5- > 03- > DBl,測試用例 3 的調用流為 UIl- > Al- > S2- > D3- > 02- > DB1,測試用例4的調用流為UI4- > A4- > S5- > D4- > 04- > DB1,測試用例5的調用流 為 UI2- > A2- > Sl- > D3- > 01- > DBl。如圖1中的配置文件片段101所示,當由「UMaction」指示的Actior^orm被提交 時,相關的Action類「A5」將被觸發來處理該Actior^orm。該操作過程的硬編碼處理結果 「success」將使調用流轉到JSP 「UI5」 (未示出)。可通過更新配置文件而不是更新Java 代碼或JSP代碼來改變該調用流。例如,如附圖中所示,如果在版本v2中將版本vl中的上 述配置文件片段中的「A5」修改為「A3」,則將使處理ActionR)rm 「UMaction」的Action類 從「A5」變為「A3」。這就意味著,調用流中包含UI4- > A5的測試用例2需要在回歸測試中 重新運行(配置文件修改後測試用例2的調用流中代碼單元A3之後的路徑未示出)。如圖1中的配置文件片段102所示,在服務層,服務bean S2的屬性是「daobean」, 這是該服務bean的變量的聲明。在這裡,「daobean」是一個接口。服務bean動態調用該接 口的實現來合成業務邏輯。在Spring框架中,依賴性查詢機制使得動態綁定是可配置的。 例如,Spring配置文件的XML片段指示接口 「daobean」將由DAO類「D3」實例化。換言之, 調用「daobean」的方法的服務S2的任何方法將被動態綁定到D3的相應實現方法。如果隨 著需求的變化,如圖1中的配置文件片段102所示,在新版本中,該服務需要通過「D4」來合 成業務邏輯,則通過將「D3」更改為「D4」來更新配置文件。為了驗證該更改的正確性,通過 S2中的daobean經歷了 D3的方法的測試用例3需要重新運行。如圖1中的配置文件片段103所示,在數據層,DAO類中的「code, getsingle」的ID 引用將觸發配置文件中的 SQLi吾句「selectC0DEID,C0DENAME,from T_C0DE where CODEID = #COdeID#」的執行。假設如附圖中所示,該SQL語句在新版本中被更改為「selectCODEID, C0DENAME,from T_C0DE 」,則通過D4經歷了配置文件中的該先前的SQL語句的測試用例4 將具有不同的行為,因此需要重新運行來驗證該更新。在附圖1所示的示例中,通過代碼分析得知的程序代碼中的修改只有S4,因此只 會考慮重新運行經歷了 S4的測試用例1。這就是說,在傳統的回歸測試選擇方法中,由於 只考慮代碼中的更改,因此只能選擇測試用例1進行回歸測試,而無法選擇其他測試用例, 覆蓋性較差,增加了由於修改導致程序錯誤的風險。本發明的回歸測試選擇方法由於不僅 考慮了程序代碼中的更改,而且考慮到配置文件中的更改,因此,能夠選擇測試用例1、2、3、 4進行回歸測試,具有良好的覆蓋性,可以有效地測試和糾正由於配置文件的修改可能導致 的程序錯誤。下面參照附圖來說明本發明的實施例。在下面的說明中,闡述了許多具體細節以
8便更全面地了解本發明。但是,對於本技術領域內的技術人員明顯的是,本發明的實現可不 具有這些具體細節中的一些。此外,應當理解的是,本發明並不限於所介紹的特定實施例。 相反,可以考慮用下面的特徵和要素的任意組合來實施本發明,而無論它們是否涉及不同 的實施例。因此,下面的方面、特徵、實施例和優點僅作說明之用而不應被看作是所附權利 要求的要素或限定,除非權利要求中明確提出。下面參照圖2,其示出了根據本發明的實施例的用於基於框架的應用程式的回歸 測試選擇方法的流程圖。如圖所示,該方法包括以下步驟在步驟201,在應用程式修改前,通過分析應用程式的配置文件提取框架配置模型 實例,所述框架配置模型實例描述了該應用程式的框架配置中的各配置節點及其與程序代 碼單元之間的關係。在步驟202,通過運行該應用程式的測試用例並使用蹤跡監視,構建測試用例的調 用流,所述調用流包括測試用例運行過程中所經歷的程序文件中的代碼單元以及代碼單元 之間的控制流關係。在步驟203,通過將所述框架配置模型實例中的配置節點與所述調用流中的代碼 單元相關聯,來獲得測試用例的擴展調用流。可選地,在步驟204,在應用程式修改後,選擇其擴展調用流發生更改的測試用例, 作為將被重新運行的測試用例。下面參照圖3,其以J2EE應用為例示意性地示出了根據本發明的實施例的用於基 於框架的應用程式的回歸測試選擇方法。如圖所示,該方法包括以下步驟步驟1、提取框架配置模型實例。框架配置模型實例用於描述一個框架下的特 定J2EE應用的配置中的各配置節點中所表示虛擬代碼單元(即從配置文件中獲得的代 碼單元)及其與程序代碼單元之間的關係。所述代碼單元(包含虛擬代碼單元和程序 代碼單元)可以是代碼中的類、表單請求、JSP、函數和變量等。代碼單元集合可表示為 ITAdT-Artifact的縮寫,表示IT製品,其中ITA可以分為兩部分,一部分是程序代碼單元 集合CU,另一部分是虛擬代碼單元集合VU),而單個代碼單元可表示為ita,這裡的ita可 以是一個OTi (OTi表示一個程序代碼單元),也可以是一個VUi (VUi表示一個虛擬代碼單 元)。每一個框架(例如Spring,Struts,iBatis等)都規定了屬於該框架的配置文件的獨 特的結構、語法和語義,其可稱為該框架的元模型。提取框架配置模型實例需要根據一個框 架所規定的配置文件的結構、語法和語義來分析屬於該框架的特定J2EE應用的配置文件, 從而獲得該配置文件中的各配置節點及其與程序代碼單元之間的關係。對於XML格式的配 置文件來說,可以將XML根節點之下的所有二級XML節點當作配置節點。例如,通過分析如 下所述的Mruts配置文件片段〈action name = "UI4action 「 class = "A5 「 Xresult name ="success「 >UI5/action>,可以獲得如圖4所示的框架配置模型實例片段。該框架配置模型實例片段包 括action節點,結合Mruts的語義,可以知道action節點的name屬性的值表示一個 ita"UI4action", action i ^ ^ class Mt生白勺it.g—f ita"A5", action τι^^ result 子節點的name屬性的值表示一個ita 『『success」,action節點的result子節點的值(VALUE)表示一個ita 「UI5」。這些ITA之間隱含了由Mruts語法所定義的控制流關係。本發明將在J2EE框架配置模型實例中的所表示的虛擬代碼單元與程序代碼單元 之間的關係歸納為5種普遍適用的類型,稱為連接模式。也就是說,在任何J2EE框架中,由 配置文件表示的配置節點與程序代碼單元之間的關係都屬於這5種連接模式中的一種或 幾種。這5種連接模式的形式化表示如下所示P1 VUi VUj I (3CUi,CUi ID = VUi ID)門(ΞCUj ,CUj ID = VUj ID)屍3 Ft// > Fi7y·丨(3 CUj , CUj ID = VUj ID ) Π
(,3 CUi, CUi ID = VUi ID U (3 CUi, CUi ID = VUi ID 門 CUi Vaule Φ VUi Value ))P A . VUi > VUj I (3 CUi,CUi ID = VUi ID)門
(,3 CUj 』 CUj ID = VUj ID U (彐 CUj , CUj ID = VUj ID Π CUj Value * VUj Value ))P5 :VUi > VUj I (,3 CUi, CUi ID = VUi ID) Π (-i3 CUj, CUj ID = VUj ID)其中,VUi和Wj分別表示在配置文件中所表示的虛擬代碼單元,VUi. ID和VUj. ID 分別表示VUi和VUj的標識,VUi. Value和VUj. Value分別表示VUi和VUj所表示的代碼 片段的內容KUi和OTj分別表示程序代碼單元,OTi. ID和OTj. ID分別表示OTi和OTj的 標識,⑶i. Value和OTj. Value分別表示OTi和OTj的代碼片段的內容。這裡的ID可以是 類標識、JSP標識、方法標識或字符串等。「」表示控制流方向,即當程序執行完「>」左邊的代碼單元後, 會觸發「>」右邊的代碼單元的調用。「 I 」表示該模式合法的必要條件,即只有右邊的公式 成立時該模式才是合法的。「H」表示「與」的關係,即只有當運算符兩邊的表達式同時成立 時,整個表達式才成立,「 U,,表示「或」的關係,即關係兩邊的表達式只要有一個成立,整個 表達就成立。「 3」表示存在量詞,「^3」表示非存在量詞。這5個連接模式所表示的具體含 義如下連接模式Pl表示了框架配置所表示的虛擬代碼單元(VUi)和虛擬代碼單元(VUj) 之間的控制反轉關係。當應用程式運行到與VUi具有相同ID的CUi時,實際上是通過與 VUj具有相同的標識的CUj的執行來實現的。例如,在圖1所示的配置文件片段示例102 中,daobean是連接模式Pl中的VUi,而D3是連接模式Pl中的VUj。根據這些虛擬代碼單 元所屬於Spring這種框架的語義可知,daobean是類S2的接口變量,而D3是該接口的實 現類,daobean的執行實際上是由D3的執行來實現的。這兩個虛擬代碼單元在程序代碼單 元中都有具有相同ID的程序代碼單元與之對應。連接模式P2表示了框架所表示的VUi和VUj之間的控制流關係。在這種連接模 式中,VUi和VUj在程序代碼單元中都能找到具有相同ID的CUi和CUj與之對應,程序執行 到VUi的時候,會觸發調用與VUj具有相同ID的CUj的調用。例如,在圖1所示的配置文件 片段示例101中,配置文件中的虛擬代碼單元「success」和UI5分別對應於程序中action 函數中程序代碼單元常量「success」和JSP頁面UI5。這樣,根據Mruts這種框架的語義, 在應用執行過程中,對常量「success」的訪問將導致UI5的執行。在這裡,「success」是連接模式P2中的VUi,而UI5是連接模式P2中的VUj,這兩個VU在程序中都有對應的具有相 同ID的程序代碼單元,即OTi和⑶j。連接模式P3和P4表示了框架所表示的VUi和VUj之間的控制流關係,模式P3和 模式P4是對稱的。對連接模式P4來說,在程序代碼中能夠找到與VUi具有相同ID值的 CUi,但是無法找到與Wj表示的虛擬代碼單元相同(ID和Value都相同)的程序代碼單元 CUj0如果滿足連接模式P4,則程序執行到與VUi對應的CUi的時候,將觸發VUj的執行。 例如,在圖1所示的配置文件片段示例103中,根據rtatis這種框架的語義,SQL片段的執 行將由標識為code. getSingle的程序代碼單元的執行所觸發,所述SQL片段只出現在配置 文件中。在這裡,code. getSingle是連接模式P4中的VUi,所述SQL片段是連接模式P4中 的VUj。這裡的SQL片段在程序中沒有與之對應的程序代碼單元。連接模式P3與連接模式 P4類似,細節省略。連接模式P5表示這樣的兩個虛擬代碼單元,VUi和VUj在程序代碼中都沒有對應 的程序代碼單元,框架隱含了 VUi和VUj之間的控制流關係。例如,在圖1所示的配置文件 片段示例103中,從SQL片段的執行到SQL執行返回的SQL ResultMap0這兩個單元都是只 有在配置文件中才有的單元。在這裡,所述SQL片段和resultMap分別是連接模塊P5中的 VUi和VUj。當程序執行到VUi的時候會觸發VUj的調用。由框架配置文件提取的框架配置模型實例中的每個配置節點將包含上述5種連 接模式中的一個或多個。在本步驟中,結合每種框架的語義,便可以提取出框架配置模型。 框架配置模型的形式化表示可以如下所示框架配置模型FC = {NODE},FC表示框架配置,NODE表示一個J2EE應用的由配置文件表示的框 架配置中的配置節點node的集合,其中node = {id,VU,CP},node表示框架配置中的一個 配置節點(例如可以是XML格式的配置文件中的XML節點),id表示該配置節點的唯一標 識,VU表示該配置節點包含的虛擬代碼單元集合,CP表示該配置節點所涉及的一組連接模 式。例如,對於圖1中所示的框架配置文件示例,可以生成框架配置模型如下FC = {Action, Bean, klect},其中的這三個node的具體內容如下表A所示
IDVUCPactionUI4action,A5,success,UI5P2 :UI4action > A5 P2 :success >,UI5beanS2,service. s2,Daobean,D3Pl :S2 < service. s2, Pl Daobean java. lang. Long P4 :code—getSingle > SQLFragment P5 :SQLFragment > get-codes-result
11
表A 框架配置模型示例其中,SQLFragment是指圖1中的配置文件片段102中的SQL語句片段,S卩「select CODEID, CODENAME, from T_C0DE where CODEID = #codeID#,,。步驟2、混合測試用例特徵獲取(profiling)。該步驟的目的是獲得測試套中測試 用例的擴展調用流,即考慮到配置文件影響的調用流。調用流表示測試例執行過程中,執行 到的ITA之間的控制流關係。該步驟包括如下子步驟子步驟2. 1,對測試用例的運行進行特徵獲取,並構建表示測試用例的行為的調用 流,所述調用流包括測試用例所經歷的代碼中的ita及其間的控制流關係。特徵獲取可以使用現有的蹤跡監視技術來進行,並可藉助於前文中所述的各種靜 態程序分析手段。優選地,特徵獲取可以在實際測試過程中進行,並可以通過在修改前的被 測J2EE應用程式上運行測試用例來進行。就是說,在使用各測試用例運行修改前的被測程序的過程中,使用現有的蹤跡監 視技術,例如通過對被測程序進行插樁,來獲取每個測試用例對被測程序中的各程序代碼 單元的調用過程。測試用例的調用流可以用如下測試用例模型表示測試用例模型tc = (ITA,E),tc表示測試用例的調用流,即測試用例所經歷的一組代碼單元以 及程序代碼單元之間的控制流關係,其中-ITA表示測試用例所經歷的程序代碼單元ita的集合,ita表示測試例執行中捕 獲的的一個程序代碼單元,包括Java方法、Java類、JSP加載、HTML表單提交、javascript 函數、轉發映射(Forward mapping)字符串、對象關係映射(Ob ject Relation Mapping) sql 語句等。在該子步驟2. 1中構建的調用流中,ITA僅包含程序代碼單元,而在下述子步驟2. 2 中形成的擴展調用流中,ITA可能同時包含虛擬代碼單元和程序代碼單元。-E表示從這個測試例中所有的ita. pre到ita,或者ita到ita. sue的控制流關 系的集合,其中,前驅程序單元ita. pre的執行將導致ita的執行,ita的執行將導致後繼程 序單元ita. sue的執行。例如,對於圖1中所示的測試用例2,通過蹤跡監視技術生成的調 用流 tc 為 UI4- > A5- > S5- > D5- > 03- > DB1,其中 UI4、A5、S5、D5、03、DB1 為各 ita, 而它們之間的有向箭頭表示這些ita之間的控制流。所以E就是控制流關係集合{UI4-> A5, A5- > S5, S5- > D5, D5- > 03,03- > DB1}。以 A5 為例,UI4 就是 A5 的前驅程序單元 A5. pre, S5就是A5的後繼程序單元A5. sue。子步驟2. 2,將配置節點與程序代碼單元相關聯。就是說,根據前述生成的框架配 置模型中各配置節點包含的連接模式,將該連接模式涉及的虛擬代碼單元或邊添加到上述 測試用例的調用流中,從而形成測試用例的擴展調用流,該擴展調用流不僅包含了測試用 例對程序代碼中各單元的調用過程,而且考慮了配置文件對該調用過程的影響。根據本發明的一實施例,該關聯子步驟可以對一個測試用例的調用流tc使用如 下關聯算法執行來獲得這個tc的擴展調用流1)對於框架配置FC中的每個節點,遍歷該節點的所有連接模式,並根據不同的連 接模式分別進行到步驟2)、3)、4)、5)。
2)對於連接模式P1,假設OTi是tc中與FC中的VUi匹配(即具有相同的ID)的 程序代碼單元,CUj是tc中與FC中的VUj匹配的程序代碼單元。根據該模式所表示的涵 義,程序中對CUi的調用是通過對CUj的調用來實現的。因此,添加一個從CUi到CUj的邊 (邊表示兩個代碼單元之間的控制流關係),以表示VUi和VUj之間的控制反轉關係。例如, 參看表A,在圖1所示的示例配置文件片段102中,D3是VUj,daobean是VUi,service. s2 調用daobean的時候實際上是調用了 D3,但使用現有的蹤跡監視技術只能獲得service. s2 調用了 daobean。這裡,測試用例3的tc中的D3就是OTj,即匹配VUj的程序代碼單元,tc 中的daobean就是⑶i,即匹配VUi的程序代碼單元,因此需要在tc中添加一個從OTi到 CUj的邊,即從daobean到D3的邊來表示這個隱含的調用(應指出的是,圖1中左側示出的 測試用例3的調用流中的S2- > D3實際上是S2- > daobean- > D3的省略表示)。3)對於連接模式P2,假設tc中的OTj是與FC中的VUj匹配的程序代碼單元,OTi 是與FC中的VUi匹配的程序代碼單元。如果在tc中存在⑶i,則添加從OTi到OTj的邊。 如果在tc中不存在⑶i,則首先在tc中添加⑶i,然後去掉OTj的前驅節點OTj. pre到OTj 的邊,並添加從CUj. pre到CUi的邊,最後添加從CUi到CUj的邊。例如,在圖1所示的示 例配置文件片段101中,UMaction是VUi,A5是VUj,表示當調用了 UMaction後會觸發 調用A5。這兩個虛擬代碼單元在程序中都有對應的程序代碼單元,但在程序中不知道它們 之間的調用關係(因為它們之間的調用關係是在配置文件中指定的,而不是在程序中指定 的),因此需要在tc中對應的程序代碼單元之間添加一條邊以表示它們之間的調用關係; 如果在tc中還不存在UMaction,則需要首先在tc中添加UMaction,刪除A5的前驅節點 (例如UI4)到A5的邊,添加A5的前驅節點至IJ UMaction的邊,以及UMaction到A5的邊。4)對於連接模式P3,在tc中添加一個新的VUi。假設tc中的OTj是與VUj匹配 的程序代碼單元,添加從VUi到OTj的邊。5)對於連接模式P4,在tc中添加一個新的VUj。假設tc中的OTi是與VUi匹配 的程序代碼單元,添加從⑶i到VUj的邊。例如,在圖1所示的示例配置文件片段103中, code. getSingle為VUi,在tc中的code. getSingle是與該VUi對應的CUi,其執行實際上 會調用到配置文件片段中的SQL代碼單元(SQLFragment)這個VUj。由於在tc不存在與 該VUj對應的程序代碼單元⑶j,因此需要在tc中添加一個新的VUj,即SQL代碼單元,並 添加從CUi到該VUj的邊來表示這個隱藏的控制流關係。6)對於連接模式P5,如果VUi和Wj都已存在於tc中(例如,通過以上算法步驟 已將VUi和VUj添加到tc中),則添加一個從VUi到VUj的邊;如果VUi和VUj中的一個尚 不存在於tc中,則首先在tc中添加該不存在的VUi或VUj,然後再添加一個從VUi到VUj 的邊。例如,在圖1所示的示例配置文件片段103中,對於SQL單元和resultMap這對遵循 連接模式P5的VUi和VUj,由於在上述針對連接模式P4的處理中已經將SQL單元添加到tc 中,因此這裡只需要將resultMap這個VUj添加到tc中,然後添加從SQL單元到resultMap 的邊以表示從VUi到VUj之間的控制流關係。7)輸出最後得到的tc,作為該測試用例的擴展調用流。例如,對於圖1中所示的測試用例2,在擴展前的子步驟2. 1中生成的調用流 是UI4- > A5- > S5- > D5- > 03- > DBl0在關聯子步驟2. 2中,針對該調用流應用 UI4action- > A5這個連接模式P2,其中UI4action是VUi,A5是VUj。VUi和VUj在程序中都有對應的程序代碼單元,但在程序中不知道它們之間的調用關係,因此需要在調用流 中對應的程序代碼單元之間添加一條邊以表示它們之間的調用關係(如果在該測試用例 的調用流中UMaction還不存在,則需要首先在調用流中添加UMaction,刪除A5的前驅節 點到A5的邊,添加A5的前驅節點到UMaction的邊,然後添加UMaction到A5的邊),以 表示當UI4調用A5時,是因為調用了 UMaction後會觸發調用A5。這樣,最後獲得的擴展 調用流為UI4- > U14action- > A5- > S5- > D5- > 03- > DBl以上描述了用於建立配置節點與程序代碼單元之間的關聯的一個特定的具體算 法,應指出的是,上述描述中的細節僅為示例,而不是對本發明的限制。現參照圖5A和圖5B,圖5A例示了使用現有的蹤跡監視技術生成的測試用例的調 用流,其中,Bl表示在被測程序修改之前該測試用例的調用流,B2表示在被測程序被修改 之後所預計的該測試用例的調用流;圖5B例示了使用本發明的關聯步驟生成的該測試用 例的擴展調用流,其中,B3表示在被測程序修改之前該測試用例的擴展調用流,B4表示在 被測程序修改之後所預計的該測試用例的擴展調用流。如圖5A所示,在Bl和B2中,由於 被測程序的代碼未作修改,同時沒有考慮到配置文件的修改的影響,因此,錯誤地預計程序 修改後的調用流B2與程序修改前的調用流B是相同的,從而不會選擇該測試用例來重新運 行。然而,如圖5B所示,在B3中,由於添加了來自配置文件的虛擬代碼單元UMaction及 其與程序代碼單元A5之間的邊,這樣,當修改了配置文件後,UMaction將控制流流向A3而 不是A5,調用流B3在新的版本中就應該變為B4示意的調用流,這樣,就可以正確地反映該 測試用例的調用流在新的版本中將會改變,從而使測試者能夠選擇該測試用例來進行回歸 測試。步驟3、統一更改識別在該步驟中,通過靜態分析原程序P和修改後的程序P』來識別程序中的修改,然 後識別這些修改對測試用例的擴展調用流的影響。程序中的修改分為兩類語言級別的修 改(LLM),即程序代碼中的修改,以及配置級別的修改(CLM),即配置文件中的修改。這兩類 修改都可能影響到測試用例的擴展調用流。無論是LLM還是αΜ,它們對測試用例的擴展調 用流的影響包括對tc中的ita的更改,以及對ita之間的邊的更改。本發明提出的統一更 改識別方法遵循以下公式統一更改={ITA更改U邊更改}ITA 更改={Cl U C2}Cl = {ITA I ita 屬於 CU 且 ita. value 已被更改}C2 = {ITA| ita 是 VUi 且 VUi. value 已被更改}邊更改={C3 U C4 U C5 U C6},在計算前需要按照步驟1的方法生成與P』對應 的框架配置模型實例FC』C3 {edgeij | edgeij指示VUi流向VUj的控制流關係的邊,其中VUi或者VUj兩 者之一在CU中能夠找到與之對應的CUi或者CUj。在與P』對應的FC』中,VUi流向VUj的 控制流關係的邊上的虛擬節點VUi或VUj已被修改為VUi,或VUj,}C4 {edgeij | edgeij指示VUi流向VUj的控制流關係的邊,其中VUi和VUj在CU 中都能夠找到與之對應的CUi和CUj,在P與』對應的FC』中,VUi流向VUj的控制流關係 的邊上的虛擬節點VUi或VUj被修改為VUi,或VUj}
C5 {edgeij | edgeij指示VUi流向VUj的控制流關係的邊,其中VUi和VUj在CU 中都沒有與之對應的CUi和CUj,在P』對應的FC』中,VUi流向VUj的控制流關係的邊上的 虛擬節點VUi或VUj被修改為VUi,或VUj}C6 {edgeij I edgeij指示VUi流向VUj的控制流關係的邊,在P,對應的FC,中, 沒有一條VUi,流向VUj,的控制流關係的邊使得VUi,= VUi或者VUj,= VUj,也就是說, 這條邊在新的Fe』中已經完全被刪除,其中沒有任何一個連接模式中包含VUi或者VUj}該步驟包括如下子步驟子步驟3. 1,通過靜態分析原程序文件和修改後的程序文件識別代碼的更改。所有 導致應用邏輯變化的語言代碼的修改都被識別。該子步驟可使用現有的靜態程序分析和比 較方法來完成。例如,類成員方法中使用的公開成員變量的初始化變化將被認為是程序變化。對 於顯式地經歷被刪除或添加的方法的測試用例來說,一定存在被刪除或添加的調用入口, 因此,將只考慮調用入口的刪除或添加,而不再考慮方法的刪除或添加。成員變量的名稱變 化,註解的添加、刪除和修改,以及格式調整將不會造成應用邏輯的變化,因此也不予考慮。 應注意的是,父類的方法變化將不會為每一個子類重新識別,因為對於子類中繼承方法的 調用來說,蹤跡監視方法將記錄父類方法調用,這樣,在回歸測試選擇中將不會忽略任何變 化的方法執行。子步驟3. 2,通過分析和比較被測J2EE應用的原配置文件和修改後的配置文件識 別被測J2EE應用的配置更改。在該子步驟中,可以首先使用如以上步驟一中所述的方法根 據原配置文件和修改後的配置文件分別構建修改前後的被測J2EE應用的框架配置模型實 例,然後通過比較修改前後的框架配置模型實例來識別框架配置中的更改,如配置節點中 的虛擬代碼單元的更改、替換等。子步驟3. 3,確定所識別的代碼更改和配置更改對每個測試用例的擴展調用流的影響。對於所識別的代碼更改來說,需要判斷每個測試用例的擴展調用流中是否包含了 更改的程序代碼單元。只要該擴展調用流包含了更改的程序代碼單元,則該擴展調用流就 受到該更改的影響,因此,該測試用例需要重新運行以進行回歸測試。這樣的代碼更改即為 Cl。對於所識別的配置更改來說,需要根據所識別的配置更改確定每個測試用例的擴 展調用流中是否存在相應變化。具體地,根據所識別的配置更改確定每個測試用例的擴展 調用流中是否存在如下5種類型的變化,即由CLM造成的C2、C3、C4、C5和C6 由CLM造成的C2,這是由配置更改造成的虛擬代碼單元的內部變化,即對VUi的值 的更改。例如,在配置文件中將VUi的值從「select CODEID,CODENAME,from T_C0DE where CODEID = #codeID#」 修改為 「selectCODEID,CODENAME,from T_C0DE where C0DEID」。這 樣,在測試用例的擴展調用流中該VUi就被標識為已更改。由CLM造成的C3,即由配置更改造成的測試用例的擴展調用流中與VUi到VUj控 制流對應的邊的變化,其中邊的一個節點有程序代碼單元與之對應,另一個節點沒有程序 代碼單元與之對應,此時當VUi到VUj的控制流對應的邊上的兩個節點在FC』中有一個發 生更新時,這條邊需要被視為已修改。應注意的是,C3對應於上述連接模式P3和P4。
由CLM造成的C4,即由配置更改造成的測試用例的擴展調用流中與VUi到VUj控 制流對應的邊的變化,其中邊的兩個節點都有程序代碼單元與之對應,此時當VUi到Wj控 制流對應的邊上的兩個節點在FC』中有一個發生更新時,這條邊需要被視為已修改。應注意 的是,C4對應於上述連接模式Pl和P2。對於連接模式Pl來說,如果在運行時實現VUi的 Wj被更新為VUj』,則在修改後的程序中VUi的執行將通過對VUj』的調用來實現。因此, 測試用例的擴展調用流中從VUi到VUj的邊(也即為對應的OTi到OTj的邊)應當被標識 為變化的邊。例如,如果VUi 「daobean」的實現類從VUj 「D3」更新為VUj』 「D4」,則任何 測試用例的擴展調用流中存在的邊「daobean- > D3」應當被標識為已更改。對於連接模式 P2,假設是VUj在FC』中被更新為VUj,那麼該更新將使得在修改後的程序中從VUi到VUj 的流程流向VUj』。例如,將A5修改為A3將導致在修改後的程序中由UHaction流向A3。由CLM造成的C5,即由配置更改造成的測試用例的擴展調用流中的邊的變化,其 中邊的虛擬代碼單元在CU中都找不到對應的程序代碼單元,在新的FC』中這條邊上的一個 虛擬代碼單元已被修改。應注意的是,C4對應於上述連接模式P5。例如,如果在FC』中, VUj 「Get-Code-Result」 被修改為新的 VUj,「Get-Code-Result-new」,則在修改後的程序 的調用流中當執行到SQL代碼單元(即VUi)後,將調用「Get-Code-Result-new」,因此可以 認為從SQL代碼單元到「Get-Code-Result」的邊已發生更改。應指出的是,以上由CLM造成的變化C3、C4和C5可被概括為由配置更改造成的擴 展調用流中的邊的變化,其中,邊的一個節點被更改。由CLM造成的C6,即在配置更改後,這條邊在新的FC』中已經完全被刪除,在FC』 中沒有任何一個連接模式中包含VUi或者VUj,那麼這條邊應被視為發生更改。只要該擴展調用流包含了上述6種類型的變化中的任何一個或多個變化,則該擴 展調用流就受到該更改的影響,因此,該擴展調用流對應的測試用例需要重新運行以進行 回歸測試。步驟4、測試用例選擇。該步驟從全部測試用例中選擇那些其擴展調用流中發生變 化的測試用例,即包含了上述變化類型Cl、C2、C3、C4、C5和C6中的任何變化的測試用例, 作為將要重新運行的回歸測試套。也就是說,任何測試用例,只要其經歷的程序代碼單元或 虛擬代碼單元發生變化,或者其經歷的連接兩個虛擬代碼單元的邊在新的FC』中發生變化, 或者這條邊在新的FC』中被刪除,則該測試用例都將被選入將重新運行的回歸測試套。以 上描述了根據本發明的實施例的用於基於框架的J2EE應用的回歸測試選擇方法,應指出 的是,以上描述僅是對本發明的實施例的示例性說明,而不是對本發明的限制。本發明的方 法可具有更多、更少或不同的步驟,一些步驟之間可具有與所描述不同的順序,一些步驟可 合併為更大的步驟,或劃分為更小的步驟,等等。所有這些變化都處於本發明的範圍之內。在相同的發明構思下,本發明提供一種用於基於框架的應用程式的回歸測試選擇 裝置,包括框架分析器,用於通過分析修改前的基於框架的應用程式的配置文件提取框架 配置模型實例,所述框架配置模型實例描述了該應用程式的框架配置中的各配置節點及其 與程序代碼單元之間的關係;測試特徵提取引擎,用於通過運行測試用例並使用蹤跡監視 構建每個測試用例的調用流,所述調用流包括測試用例在運行過程中所經歷的程序代碼單 元及其控制流關係;以及節點/代碼單元關聯引擎,用於通過將所述框架配置模型實例中 的配置節點與所述調用流中的程序代碼單元相關聯,來獲得每個測試用例的擴展調用流。
16
下面參照附圖6,以J2EE應用作為應用程式的例子,描述根據本發明的實施例的 用於基於框架的應用程式的回歸測試選擇裝置。為簡明起見,在以下描述中,省略了與以上 描述重複的部分細節,因此,可參見以上描述獲得對本發明的增強回歸測試選擇裝置的更 詳細的了解。如附圖6所示,根據本發明的實施例的用於基於框架的應用程式(例如J2EE應 用)的回歸測試選擇裝置包括如下部件測試特徵提取引擎601,框架分析器602,代碼更改 分析器603,節點/代碼單元關聯引擎604,更改/測試映射引擎605,以及可選的回歸測試 套選擇器606。測試特徵提取引擎601用於在測試用例的測試執行過程中獲取每個測試用例的 調用流,即測試用例在被測J2EE應用中所調用的各程序單元及其控制流。所述被測J2EE 應用為修改前的被測J2EE應用。該測試特徵提取引擎601可通過現有的蹤跡監視工具以 及靜態程序分析技術來實現。框架分析器602用於從J2EE應用的框架配置文件中構建該J2EE應用的框架配置 模型,所述構架配置模型反映了 J2EE應用的框架配置中的各配置節點及其包含的代碼單 元之間的關係,即每個配置節點涉及的連接模式。框架分析器602需要根據特定J2EE框架 所規定的配置文件的特定結構、語法和語義來構建框架配置模型。特定J2EE框架(例如, Spring,Struts,iBatis等)所規定的配置文件的特定結構、語法和語義也可稱為該框架的 元模型。在框架分析器602能夠對屬於特定框架的框架配置文件進行處理之前,首先可以 使用該框架的元模型對框架分析器602進行配置,這樣框架分析器602就能夠根據該框架 的元模型對屬於該框架的框架配置文件進行分析,從而構建所述框架配置模型。對於每一 種框架,僅需對框架分析器602配置一次。所述J2EE應用的框架配置中的各配置節點與程序代碼單元之間的關係選自如下 5種連接模式P\ VUi VUj 丨(3CUi,CUi ID = VUi ./Λ) Π (3CUj ,CUj ID = VUj ID)P3 VUi > VUj I (3CX^ ,CUj ID = VUj .ID)
權利要求
1.一種用於基於框架的應用程式的回歸測試選擇方法,所述應用程式包含程序文件和 配置文件,所述方法包括在應用程式修改前,通過分析應用程式的配置文件提取框架配置模型實例,所述框架 配置模型實例描述了該應用程式的框架配置中的各配置節點以及各配置節點中包含的代 碼單元之間的關係;通過對該應用程式的測試用例的運行使用蹤跡監視,構建測試用例的調用流,所述調 用流包括測試用例運行過程中所經歷的程序文件中的代碼單元以及代碼單元之間的控制 流關係;以及通過將所述框架配置模型實例中的配置節點與所述測試用例的調用流中的代碼單元 相關聯,獲得測試用例的擴展調用流。
2.根據權利要求1的方法,還包括在應用程式修改後,選擇其擴展調用流發生更改的測試用例,作為將被重新運行的測 試用例。
3.根據權利要求2的方法,其中,所述選擇其擴展調用流發生更改的測試用例,作為將 被重新運行的測試用例包括通過比較修改前後的應用程式的配置文件,識別應用程式的配置更改; 確定所識別的配置更改對測試用例的擴展調用流的影響;以及 選擇其擴展調用流受到所識別的配置更改影響的測試用例,作為將被重新運行的測試 用例。
4.根據權利要求3的方法,其中,通過比較修改前後的配置文件識別應用程式的配置 更改包括通過分析修改前後的配置文件分別提取修改前後的框架配置模型實例;以及 通過比較修改前後的框架配置模型實例來識別應用程式的配置更改。
5.根據權利要求3的方法,其中,所述確定所識別的配置更改對測試用例的擴展調用 流的影響包括對於所識別的配置更改,判斷測試用例的擴展調用流中是否存在相應變化。
6.根據權利要求3-5的任何之一的方法,進一步包括通過比較修改前後的應用程式的程序文件,識別應用程式的代碼更改; 對於所識別的代碼更改,判斷測試用例的擴展調用流中是否包含更改了的代碼單元;以及選擇其擴展調用流包含更改了的代碼單元的測試用例,作為將被重新運行的測試用例。
7.根據權利要求1-5中的任何一個的方法,其中,所述應用程式是J2EE應用程式,且所 述J2EE應用程式的框架配置中的各配置節點中包含的代碼單元之間的關係選自如下5種 連接模式P1-P5 Pl VUi VUj I (3CUi,CUi ID = VUi ID)門(5CUj ,CUj ID = VUj ID) P3 VUi > VUj I (BCUj,CUj ID = VUj .ID) D (,彐 CUi,CUi ID = VUi ID U (彐 CUi,CUi ID = VUi ID Π CUi Vaule Ψ VUi Value ))P^ VUi > VUj I (3CUi ,CUi ID 二 VUi ./Ζ>)ΠCUj , CUj ID = VUj ID U (3 CUj, CUj ID 二 VUj ID 門 CUj Value Φ VUj Value )) P 5 VUi > VUj I (,彐 CUi,CUi ID = VUi ID)門(,3 CUj, CUj ID = VUj ID)其中,VUi和VUj分別表示在配置文件中所表示的代碼單元,VUi. ID和VUj. ID分別表 示VUi和VUj的標識,VUi. Value和VUj. Value分別表示VUi和VUj所表示的代碼片段的 內容;⑶i和OTj分別表示程序文件中的代碼單元,OTi. ID和OTj. ID分別表示OTi和OTj 的標識,⑶i. Value和OTj. Value分別表示OTi和OTj的代碼片段的內容;「」表示控制流方向,「 I 」表示模式合法的必要條件,「 η 」表示「與」的關係,「 U 」 表示「或」的關係,「 3 」表示存在量詞,「,3 」表示非存在量詞。
8.根據權利要求7的方法,其中,根據配置節點所涉及的連接模式,將所述框架配置模 型實例中的配置節點與所述調用流中的代碼單元相關聯。
9.根據權利要求8的方法,其中,根據配置節點所涉及的連接模式將所述框架配置模 型實例中的配置節點與所述調用流中的代碼單元相關聯包括對於連接模式Pl,在所述調用流中添加從OTi到⑶j的邊;對於連接模式P2,如果在所述調用流中存在CUi,則在所述調用流中添加從CUi到CUj 的邊;如果在所述調用流中不存在CUi,則在所述調用流中添加CUi,刪除CUj的前驅節點 ⑶j. pre到CUj的邊,添加從OTj. pre到OTi的邊,並添加從OTi到OTj的邊; 對於連接模式P3,在所述調用流中添加VUi,以及從VUi到OTj的邊; 對於連接模式P4,在所述調用流中添加VUj,以及從OTi到VUj的邊; 對於連接模式P5,如果VUi和VUj都已存在於所述調用流中,則添加從VUi到VUj的 邊;如果VUi和VUj中的一個還不存在於所述調用流中,則首先在所述調用流中添加該不存 在的VUi或VUj,然後再添加從VUi到VUj的邊。
10.根據權利要求9的方法,其中,所述判斷測試用例的擴展調用流中是否存在相應 變化包括判斷測試用例的擴展調用流中是否存在如下三種類型的變化中的一個或多個變 化由配置更改造成的虛擬代碼單元的內部變化,其中,虛擬代碼單元是指該應用程式的 框架配置中的配置節點中所表示的代碼單元;由配置更改造成的擴展調用流中的邊的變化,其中,邊的一個節點被更改;以及 由配置更改造成的測試用例的擴展調用流中的邊的刪除。
11.一種用於基於框架的應用程式的回歸測試選擇裝置,所述應用程式包含程序文件 和配置文件,所述裝置包括框架分析器,用於在應用程式修改前,通過分析應用程式的配置文件提取框架配置模 型實例,所述框架配置模型實例描述了該應用程式的框架配置中的各配置節點以及各配置 節點中包含的代碼單元之間的關係;測試特徵提取引擎,用於通過對該應用程式的測試用例的運行使用蹤跡監視構建測試 用例的調用流,所述調用流包括測試用例在運行過程中所經歷的程序文件中的代碼單元以 及代碼單元之間的控制流關係;以及節點/代碼單元關聯引擎,用於通過將所述框架配置模型實例中的配置節點與所述測 試用例的調用流中的代碼單元相關聯,獲得測試用例的擴展調用流。
12.根據權利要求11的裝置,還包括回歸測試套選擇器,用於在應用程式修改後,選擇其擴展調用流發生更改的測試用例, 作為將被重新運行的測試用例。
13.根據權利要求12的裝置,其中,所述框架分析器還用於通過比較修改前後的應用程式的配置文件識別應用程式的配 置更改;所述裝置進一步包含更改/測試映射引擎,用於確定所述框架分析器所識別的配置更 改對測試用例的擴展調用流的影響;其中,所述回歸測試套選擇器選擇其擴展調用流受到所識別的配置更改影響的測試用 例,作為將被重新運行的測試用例。
14.根據權利要求13的裝置,其中,所述框架分析器用於通過分析修改前後的基於框架的應用程式的配置文件分別提取修改前後的框架配置 模型實例;以及通過比較修改前後的框架配置模型實例來識別應用程式的配置更改。
15.根據權利要求13的裝置,其中,更改/測試映射引擎用於對於所識別的配置更改,判斷測試用例的擴展調用流中是否存在相應變化。
16.根據權利要求13-15的任何之一的裝置,還包括代碼更改分析器,用於通過比較修改前後的應用程式的程序文件來識別應用程式的代 碼更改;更改/測試映射引擎,用於對於所識別的代碼更改,判斷測試用例的擴展調用流中是 否包含更改了的代碼單元,其中,所述回歸測試套選擇器還用於選擇其擴展調用流包含更改了的代碼單元的測試 用例,作為將被重新運行的測試用例。
17.根據權利要求11-15中的任何一個的裝置,其中,所述應用程式是J2EE應用程式, 且所述J2EE應用程式的框架配置中的各配置節點中包含的代碼單元之間的關係選自如下 5種連接模式P1-P5 PI: VUi VUj CUi, CUi ID = VUi ID)門(彐 CUj, CUj ID = VUj ID) P3 : VUi > VUj I (彐CUj,CUj ID = VUj ID) ΠCUi,CUi ID = VUi ID U (3 CUi, CUi ID = VUi ID Π CUi Vaule Φ VUi Value )) P A . VUi > VUj I (3 CUi, CUi ID = VUi ID)門 (-,3 CUj , CUj ID = VUj ID U (3 CUj , CUj ID = VUj ID 門 CUj Value * VUj Value )) P5 VUi > VUj I (-,3 CUi,CUi ID = VUi.ID)[\ (,彐 CUj, CUj ID = VUj ID ) 其中,VUi和VUj分別表示在配置文件中所表示的代碼單元,VUi. ID和VUj. ID分別表 示VUi和VUj的標識,VUi. Value和VUj. Value分別表示VUi和VUj所表示的代碼片段的 內容;⑶i和OTj分別表示程序文件中的代碼單元,OTi. ID和OTj. ID分別表示OTi和OTj 的標識,⑶i. Value和OTj. Value分別表示OTi和OTj的代碼片段的內容;「」表示控制流方向,「 I 」表示模式合法的必要條件,「 η 」表示「與」的關係,「 U 」 表示「或」的關係,「 3 」表示存在量詞,「,3 」表示非存在量詞。
18.根據權利要求17的裝置,其中,節點/代碼單元關聯引擎根據配置節點所涉及的連 接模式,將所述框架配置模型實例中的配置節點與所述調用流中的代碼單元相關聯。
19.根據權利要求18的裝置,其中,所述節點/代碼單元關聯引擎用於 對於連接模式Pl,在所述調用流中添加從OTi到⑶j的邊;對於連接模式P2,如果在所述調用流中存在CUi,則在所述調用流中添加從CUi到CUj 的邊;如果在所述調用流中不存在CUi,則在所述調用流中添加CUi,刪除CUj的前驅節點 ⑶j. pre到OTj的邊,添加從OTj. pre到OTi的邊,並添加從OTi到OTj的邊; 對於連接模式P3,在所述調用流中添加VUi,以及從VUi到OTj的邊; 對於連接模式P4,在所述調用流中添加VUj,以及從OTi到VUj的邊; 對於連接模式P5,如果VUi和VUj都已存在於所述調用流中,則添加從VUi到VUj的 邊;如果VUi和VUj中的一個還不存在於所述調用流中,則首先在所述調用流中添加該不存 在的VUi或VUj,然後再添加從VUi到VUj的邊。
20.根據權利要求19的裝置,其中,所述更改/測試引擎用於判斷測試用例的擴展調用 流中是否存在如下三種類型的變化中的一個或多個變化由配置更改造成的虛擬代碼單元的內部變化,其中,虛擬代碼單元是指該應用程式的 框架配置中的配置節點中所表示的代碼單元;由配置更改造成的擴展調用流中的邊的變化,其中,邊的一個節點被更改;以及 由配置更改造成的測試用例的擴展調用流中的邊的刪除。
全文摘要
公開了一種用於基於框架的應用程式的回歸測試選擇方法和裝置,該方法包括通過分析修改前的應用程式的配置文件提取框架配置模型實例,其描述了該應用程式的框架配置中的各配置節點以及各配置節點中包含的代碼單元之間的關係;通過對測試用例的運行使用蹤跡監視構建測試用例的調用流,其包括測試用例在運行過程中所經歷的程序代碼單元及其控制流關係;通過將配置節點與調用流中的程序代碼單元相關聯,來獲得測試用例的擴展調用流;以及選擇其擴展調用流發生更改的測試用例,作為將重新運行的回歸測試套。
文檔編號G06F11/36GK102110048SQ20091026527
公開日2011年6月29日 申請日期2009年12月28日 優先權日2009年12月28日
發明者劉鶴輝, 朱俊, 朱瑋, 李中傑, 李少春, 談華芳, 黃勝 申請人:國際商業機器公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀