一種軟件單元與部件與相結合的源代碼變更影響分析與測試方法。單元級源代碼變更影響分析和測試包括:構造程序單元流圖;創建線性獨立的測試路徑集;查找修改的代碼在流圖中的節點并確定為變更點;使用路徑選擇器在線性獨立測試路徑集中選取包含了變更點的路徑以形成受影響路徑集;執行受影響路徑集中的路徑;將執行的結果和預期的結果進行比較。部件級源代碼變更影響分析和測試包括:構造程序調用圖,調用圖使用節點和邊描述程序的調用結構;創建線性獨立的測試子樹集;確定修改的代碼所在的單元,作為變更點;使用子樹選擇器在線性獨立測試子樹集中選取包含變更點的子樹形成受影響子樹集;執行受影響子樹集中的子樹;比較執行結果和預期結果。
【技術實現步驟摘要】
本專利技術涉及程序開發測試領域,更具體地說,本專利技術涉及一種源代碼變更影響分析方法,此外,本專利技術還涉及一種采用了該源代碼變更影響分析之后實施測試的方法。
技術介紹
在現有系統源代碼基礎上的開發需要修改大量的軟件代碼,軟件調試工作需要隨時修改代碼,而軟件維護升級過程亦需要修改代碼,代碼變更時刻伴隨著軟件研發活動,在現代軟件開發過程中越來越重要。代碼的變更通常會產生“副作用”,可能會影響到軟件的內外部接口、功能特性和性能等多方面的內容,如果沒有對代碼的變更影響面進行充分的分析與測試,可能導致程序運行時出現異常甚至崩潰。 圈復雜度(Cyclomatic Complexity)是一種為程序邏輯復雜性提供定量測度的軟件度量,該度量的值代表了程序單元中的線性獨立路徑(Linearly Independent Path)數量,并提供了確保所有語句至少執行一次的測試數量的上界。線性獨立路徑是指程序中至少引進一個新的處理語句集合或一個新條件的任一路徑。采用流圖(與流程圖不同,流圖只有邊和節點表示,用于圈復雜度的計算和獨立路徑的創建)的描述時,線性獨立路徑必須至少包含一條在定義路徑之前不曾用到的邊。線性獨立路徑集合代表了一個測試路徑(TestPath)的集合,按照線性獨立路徑進行的測試是一種高強度的白盒測試。在對代碼局部修改后,可能影響代碼的范圍包括程序單元內部和程序單元之間。在程序單元內部,如果代碼的修改導致了程序控制流的變化,則影響的范圍較大,甚至需要進行所有的獨立路徑的測試;如果代碼的修改未導致程序控制流的變化,則影響的范圍較小,沒有必要對所有的獨立路徑進行測試,由此需要有一種方法排除沒有受到影響的路徑。代碼的修改除了影響代碼所在的單元本身,還會影響到該單元所屬部件的其他程序單元。這時候的變更影響分析可以用該程序部件的集成子樹(Integration Subtree)來實現。集成子樹是程序中圈復雜度流程圖的線性獨立集成路徑,通過對集成子樹中的測試路徑進行測試,可以不用測試單元的其它控制邏輯來測試單元的相互作用。在對部件的測試中同樣需要有一種方法排除沒有受到影響的集成子樹。現行源代碼變更影響分析與測試主要依賴編碼人員憑經驗進行人工分析,未利用圈復雜度、線性獨立路徑和集成子樹等手段來確定變更的影響面,更沒有將此應用到白盒測試過程中。除了人工分析,也有關于面向對象代碼變更影響分析的研究,主要基于類成員依賴關系確定變更影響源和變更類型,依據一定的算法確定變更影響的范圍。對代碼變更進行影響分析與測試有很大的難度,目前缺乏系統的方法進行指導。傳統的變更影響分析與測試方法依賴于編碼人員的經驗和對代碼的熟悉程度,人工分析受變更影響的代碼塊或執行路徑,難以對變更的影響面進行全面評估,也難以對代碼進行充分的測試。依賴經驗進行的分析方法的效果與編碼調試人員的個人能力相關,具有較大的隨機性和盲目性,并且無自動化工具支持,效率低下,不能提供具有系統性的解決方案。而關于面向對象代碼變更影響分析的研究,分析的目標是類,局限于面向對象的代碼,不能對非面向對象代碼進行變更影響分析,并且該方法未對變更影響分析之后的測試流程及方法進行說明。
技術實現思路
本專利技術所要解決的技術問題是針對現有技術中存在上述缺陷,提供軟件部件與單元相結合的源代碼變更影響分析與測試方法。 本專利技術提供了一種源代碼變更影響分析與測試方法,其包括單元級源代碼變更影響分析和測試部分、以及部件級源代碼變更影響分析和測試部分。優選地,所述單元級源代碼變更影響分析和測試部分包括第一步構造程序單元的流圖,所述流圖使用節點和邊描述邏輯控制流;第二步創建線性獨立的測試路徑集;第三步查找修改的代碼在流圖中的節點,并將其確定為變更點;第四步使用路徑選擇器在線性獨立測試路徑集中選取包含了變更點的路徑,以形成受影響路徑集;第五步執行受影響路徑集中的路徑;第六步將執行的結果和預期的結果進行比較。優選地,所述部件級源代碼變更影響分析和測試部分包括第一步驟構造程序的調用圖,所述調用圖使用節點和邊描述程序的調用結構,節點代表程序的單元,邊表示調用關系;第二步驟創建線性獨立的測試子樹集;第三步驟確定修改的代碼所在的單元,作為變更點;第四步驟使用子樹選擇器在線性獨立測試子樹集中選取包含了變更點的子樹形成受影響子樹集;第五步驟執行受影響子樹集中的子樹;第六步驟將執行的結果和預期的結果進行比較。優選地,在所述第六步中,在執行的結果和預期的結果一致時,則判斷程序的修改是正確的。優選地,在所述第一步中,對代碼的控制流分析,此后按照控制流的構造規則確定程序中流圖的節點,然后根據程序中的控制條件將所述節點用邊連接起來,從而構成程序的流圖。優選地,在所述第四步中,路徑選擇器對于所有的變更點,在線性獨立測試路徑集中,檢查每條路徑的節點集,如果包含變更點,則將該路徑添加到受影響路徑集中。優選地,在第六步驟中,如果執行的結果和預期的結果一致,則判斷程序的修改是正確的。優選地,在所述第四步驟中,子樹選擇器對于所有的變更點,在線性獨立集成子樹集中,檢查每個子樹的節點集,如果包含變更點,則將該子樹添加到受影響子樹集中。優選地,在所述第五步驟中,首先創建一個端到端的測試條件列表,從測試條件列表中選擇數據以便在測試每個子樹時設置判定節點的條件。本專利技術的源代碼變更影響分析與測試方法相對于傳統的憑經驗分析源代碼變更影響面并實施測試的方法,具有較強的系統性。本專利技術的源代碼變更影響分析與測試方法能確定部件和/或單元級的代碼變更的影響范圍,不會遺漏測試路徑和集成子樹。對于軟件單元,構造測試路徑選擇器獲取到變更代碼的有效測試路徑集,排除無效測試路徑;對于軟件部件,構造集成子樹選擇器獲取到變更代碼的有效集成子樹集,排除無效集成子樹,提高白盒測試效率。而且,本專利技術的源代碼變更影響分析與測試方法可以避免設計多余的、重復的測試用例。因為測試的范圍縮小到了包含變更點測試路徑或者測試子樹,所以測試工作所需要的代價可以控制在一個合理的范圍內,使用最少的測試用例來完成變更后的代碼的測試,同時又能保證所有受影響的代碼都能夠被測試到,包括單元內部和單元之間的代碼,從而達到變更后的代碼測試覆蓋率的最大化。本專利技術的方法所述源代碼不限于面向對象的軟件代碼,也能對非面向對象軟件代碼進行變更影響分析,具有通用性。 附圖說明結合附圖,并通過參考下面的詳細描述,將會更容易地對本專利技術有更完整的理解并且更容易地理解其伴隨的優點和特征,其中圖I示意性地示出了根據本專利技術實施例的源代碼變更影響分析與測試方法的流程圖。圖2示意性地示出了根據本專利技術實施例的流圖的示例。圖3示意性地示出了根據本專利技術實施例的線性獨立測試路徑的示例。圖4示意性地示出了根據本專利技術實施例的測試子樹集的示例。圖5示意性地示出了根據本專利技術實施例的測試子樹集的示例。需要說明的是,附圖用于說明本專利技術,而非限制本專利技術。注意,表示結構的附圖可能并非按比例繪制。并且,附圖中,相同或者類似的元件標有相同或者類似的標號。具體實施例方式為了使本專利技術的內容更加清楚和易懂,下面結合具體實施例和附圖對本專利技術的內容進行詳細描述。圖I示意性地示出了根據本專利技術實施例的源代碼變更影響分析與測試方法的流程圖。如圖I所示,本專利技術實施例提出了軟件部件與單元相結合的本文檔來自技高網...
【技術保護點】
一種軟件單元與部件與相結合的源代碼變更影響分析與測試方法,其特征在于包括:單元級源代碼變更影響分析和測試部分以及部件級源代碼變更影響分析和測試部分。
【技術特征摘要】
【專利技術屬性】
技術研發人員:徐小春,王禮生,董超群,張垚,楊書軒,黃東海,望正氣,
申請(專利權)人:無錫江南計算技術研究所,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。