"/>
【技術實現步驟摘要】
一種基于組合覆蓋的循環代碼模糊測試方法
[0001]本專利技術涉及軟件測試
,更具體的說是涉及一種基于組合覆蓋的循環代碼模糊測試方法。
技術介紹
[0002]隨著計算機軟件應用的越來越廣泛,與此同時,軟件的規模和復雜程度隨著其功能的強大而劇增,在這些大規模的軟件中,循環代碼塊及其中的判定分支語句是構成函數的重要基礎邏輯模塊,也是引起軟件復雜度上升、測試路徑爆炸的主要原因。如果能夠全面地對復雜軟件的循環代碼塊及其中的判定分支語句進行充分測試,不僅能合理分配有限的資金和人力等測試資源,有針對性地對容易出錯的部分進行分析,還可以更加客觀地評價測試結果,對軟件質量、開發成本控制都有著重要的指導意義。現有的白盒測試充分性度量有路徑覆蓋、語句覆蓋、分支覆蓋、和基本路徑覆蓋等。對于循環代碼,難以使用已有的覆蓋指標對測試充分性進行度量。路徑覆蓋指標關注循環上下邊界范圍內所有可能的循環路徑,在復雜軟件中進行窮舉測試顯然不可行;語句覆蓋、分支覆蓋和基本路徑覆蓋關注覆蓋所有的語句、分支和基本路徑,對循環代碼而言又不夠充分。而且,上述覆蓋指標主要基于軟件內部代碼邏輯結構,需要持續跟蹤測試數據集在整個軟件中的執行情況,對于復雜軟件而言,這無疑將產生巨大的開銷。此外,上述結構覆蓋率對測試復雜軟件中關鍵循環代碼塊缺乏針對性。
[0003]因此,如何對循環代碼塊及其中的判定分支語句進行有針對性的模糊測試,以提高測試的充分性,是本領域技術人員亟需解決的問題。
技術實現思路
[0004]有鑒于此,本專利技術設計面向復雜軟件 ...
【技術保護點】
【技術特征摘要】
1.一種基于組合覆蓋的循環代碼模糊測試方法,其特征在于,包括以下步驟:步驟1、根據循環代碼組合覆蓋準則對待測試程序進行插樁,得到插樁后的待測試程序;步驟2、獲取初始種子測試用例集合T
ini
,并將其中的初始種子測試用例在已插樁的被測程序上執行并計算其覆蓋率,將未觸發崩潰的初始種子測試用例加入測試用例隊列T
list
;步驟3、從測試用例隊列T
list
中取出一個種子測試用例t
i
,計算其適應度并為其分配對應資源以變異生成子代測試用例集合步驟4、將子代測試用例集合中的每個子代測試用例在已插樁的被測程序上執行并計算其覆蓋率,根據子代測試用例對循環代碼塊及其中判定分支語句的覆蓋情況,決定是否將其插入測試用例隊列T
list
中;步驟5、判斷是否滿足模糊測試停止條件,若是,則結束測試,若否,則返回步驟3。2.根據權利要求1所述的一種基于組合覆蓋的循環代碼模糊測試方法,其特征在于,所述步驟1中,對待測試程序進行插樁的具體步驟為:步驟1.1、輸入待測試程序;步驟1.2、對待測試程序進行預處理;步驟1.3、生成待測試程序源代碼對應的抽象語法樹;步驟1.4、根據所述抽象語法樹,得到待測試程序中的循環代碼塊及其中的判定分支語句;步驟1.5、基于待測試程序中的循環代碼塊及其中判定分支語句的位置和循環代碼組合覆蓋準則,使用靜態插樁技術進行插樁,植入探針代碼;步驟1.6、輸出插樁后的待測試程序。3.根據權利要求2所述的一種基于組合覆蓋的循環代碼模糊測試方法,其特征在于,所述步驟1.5中,插樁過程中探針的位置被設置在循環代碼塊及其中判定分支語句的開始,即循環代碼塊及其中的判定分支語句后的第一條語句前。4.根據權利要求2所述的一種基于組合覆蓋的循環代碼模糊測試方法,其特征在于,所述步驟1.5中,循環代碼組合覆蓋準則的方法為:代碼塊L的循環代碼塊集合為R={R1,R2,
…
,R
k
,
…
},R
k
表示深度為k的所有循環代碼塊集合,R
k
={r
k,1
,r
k,2
,
…
,r
k,v
,
…
},其中r
k,v
為深度為k的第v個循環代碼塊,B
k,v
={b
k,v,1
,b
k,v,2
,
…
,b
k,v,u
,
…
}為循環代碼塊r
k,v
中的判定分支語句集合,其中b
k,v,u
為深度為k的第v個循環代碼塊中的第u個判定分支語句;對于測試用例t
i
:測試用例t
i
執行代碼塊L的覆蓋情況記錄為執行代碼塊L的覆蓋情況記錄為其中為第k層循環代碼塊的覆蓋情況,的值為深度為k的第v個循環代碼塊被測試用例t
i
執行的次數,執行的次數,為循環代碼塊r
k,v
中判定分支語句的覆蓋情況,其中表示深度為k的第v個循環代碼塊中的第u個判定分支語句是否被測試用例t
i
覆蓋,若覆蓋則值為1,若未覆蓋則值為0。5.根據權利要求1所述的一種基于組合覆蓋的循環代碼模糊測試方法,其特征在于,所
述步驟2的具體步驟為:步驟2.1、輸入初始種子測試用例集合T
ini
;步驟2.2、從初始種子測試用例集合T
ini
中選取一個初始種子測試用例t
i
;步驟2.3、在插樁后的待測試程序上執行所述初始種子測試用例t
i
,并記錄所述初始種子測試用例t
i
的覆蓋情況;步驟2.4、判斷所述初始種子測試用例t
i
的崩潰情況,若所述初始種子測試用例t
i
導致插樁后的待測試程序發生崩潰,則將所述初始種子測試用例t
i
加入崩潰測試用例集合T
e
;若所述初始種子測試用例t...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。