"/>
  • 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種基于組合覆蓋的循環代碼模糊測試方法技術

    技術編號:35582961 閱讀:33 留言:0更新日期:2022-11-12 16:15
    本發明專利技術公開了一種基于組合覆蓋的循環代碼模糊測試方法,涉及軟件測試技術領域,首先對待測試程序進行插樁,執行初始種子測試用例并計算其覆蓋情況,將未觸發崩潰的初始種子測試用例加入測試用例隊列;然后從測試用例隊列中逐個取出種子測試用例t

    【技術實現步驟摘要】
    一種基于組合覆蓋的循環代碼模糊測試方法


    [0001]本專利技術涉及軟件測試
    ,更具體的說是涉及一種基于組合覆蓋的循環代碼模糊測試方法。

    技術介紹

    [0002]隨著計算機軟件應用的越來越廣泛,與此同時,軟件的規模和復雜程度隨著其功能的強大而劇增,在這些大規模的軟件中,循環代碼塊及其中的判定分支語句是構成函數的重要基礎邏輯模塊,也是引起軟件復雜度上升、測試路徑爆炸的主要原因。如果能夠全面地對復雜軟件的循環代碼塊及其中的判定分支語句進行充分測試,不僅能合理分配有限的資金和人力等測試資源,有針對性地對容易出錯的部分進行分析,還可以更加客觀地評價測試結果,對軟件質量、開發成本控制都有著重要的指導意義。現有的白盒測試充分性度量有路徑覆蓋、語句覆蓋、分支覆蓋、和基本路徑覆蓋等。對于循環代碼,難以使用已有的覆蓋指標對測試充分性進行度量。路徑覆蓋指標關注循環上下邊界范圍內所有可能的循環路徑,在復雜軟件中進行窮舉測試顯然不可行;語句覆蓋、分支覆蓋和基本路徑覆蓋關注覆蓋所有的語句、分支和基本路徑,對循環代碼而言又不夠充分。而且,上述覆蓋指標主要基于軟件內部代碼邏輯結構,需要持續跟蹤測試數據集在整個軟件中的執行情況,對于復雜軟件而言,這無疑將產生巨大的開銷。此外,上述結構覆蓋率對測試復雜軟件中關鍵循環代碼塊缺乏針對性。
    [0003]因此,如何對循環代碼塊及其中的判定分支語句進行有針對性的模糊測試,以提高測試的充分性,是本領域技術人員亟需解決的問題。

    技術實現思路

    [0004]有鑒于此,本專利技術設計面向復雜軟件循環代碼塊的組合覆蓋測試充分性評價準則,對循環代碼塊及其中的判定分支語句進行有針對性的模糊測試,從組合覆蓋角度來評價循環代碼的測試充分性。首先,根據組合覆蓋準則的需要對待測試程序進行插樁;然后,篩選初始測試用例插入測試用例隊列,并根據所提出的覆蓋準則計算測試用例的適應度;最后,變異生成子代測試用例并進行模糊測試。
    [0005]具體的,為了實現上述目的,本專利技術提供如下技術方案:
    [0006]一種基于組合覆蓋的循環代碼模糊測試方法,包括以下步驟:
    [0007]步驟1、根據循環代碼組合覆蓋準則對待測試程序進行插樁,得到插樁后的待測試程序;
    [0008]步驟2、獲取初始種子測試用例集合T
    ini
    ,并將其中的初始種子測試用例在已插樁的被測程序上執行并計算其覆蓋率,將未觸發崩潰的初始種子測試用例加入測試用例隊列T
    list

    [0009]步驟3、從測試用例隊列T
    list
    中取出一個種子測試用例t
    i
    ,計算其適應度并為其分配對應資源以變異生成子代測試用例集合
    [0010]步驟4、將子代測試用例集合中的每個子代測試用例在已插樁的被測程序上執行并計算其覆蓋率,根據子代測試用例對循環代碼塊及其中判定分支語句的覆蓋情況,決定是否將其插入測試用例隊列T
    list
    中;
    [0011]步驟5、判斷是否滿足模糊測試停止條件,若是,則結束測試,若否,則返回步驟3。
    [0012]可選的,所述步驟1中,對待測試程序進行插樁的具體步驟為:
    [0013]步驟1.1、輸入待測試程序;
    [0014]步驟1.2、對待測試程序進行預處理;
    [0015]步驟1.3、生成待測試程序源代碼對應的抽象語法樹;
    [0016]步驟1.4、根據所述抽象語法樹,得到待測試程序中的循環代碼塊及其中的判定分支語句;
    [0017]步驟1.5、基于待測試程序中的循環代碼塊及其中判定分支語句的位置和循環代碼組合覆蓋準則,使用靜態插樁技術進行插樁,植入探針代碼;
    [0018]步驟1.6、輸出插樁后的待測試程序。
    [0019]可選的,所述步驟1.5中,插樁過程中探針的位置被設置在循環代碼塊及其中判定分支語句的開始,即循環代碼塊及其中的判定分支語句后的第一條語句前。
    [0020]可選的,所述步驟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個判定分支語句;
    [0021]對于測試用例t
    i
    :測試用例t
    i
    執行代碼塊L的覆蓋情況記錄為執行代碼塊L的覆蓋情況記錄為其中為第k層循環代碼塊的覆蓋情況,的值為深度為k的第v個循環代碼塊被測試用例t
    i
    執行的次數,執行的次數,為循環代碼塊r
    k,v
    中判定分支語句的覆蓋情況,其中表示深度為k的第v個循環代碼塊中的第u個判定分支語句是否被測試用例t
    i
    覆蓋,若覆蓋則值為1,若未覆蓋則值為0。
    [0022]可選的,所述步驟2的具體步驟為:
    [0023]步驟2.1、輸入初始種子測試用例集合T
    ini

    [0024]步驟2.2、從初始種子測試用例集合T
    ini
    中選取一個初始種子測試用例t
    i

    [0025]步驟2.3、在插樁后的待測試程序上執行所述初始種子測試用例t
    i
    ,并記錄所述初始種子測試用例t
    i
    的覆蓋情況;
    [0026]步驟2.4、判斷所述初始種子測試用例t
    i
    的崩潰情況,若所述初始種子測試用例t
    i
    導致插樁后的待測試程序發生崩潰,則將所述初始種子測試用例t
    i
    加入崩潰測試用例集合T
    e
    ;若所述初始種子測試用例t
    i
    未導致插樁后的待測試程序發生崩潰,則計算所述初始種子測試用例t
    i
    的循環代碼塊覆蓋情況;
    [0027]步驟2.5、重復步驟2.2至步驟2.4,直至遍歷完初始種子測試用例集合T
    ini
    中的所有初始種子測試用例,將未導致插樁后的待測試程序發生崩潰的初始種子測試用例插入到測試用例隊列T
    list
    中;
    [0028]步驟2.6、輸出測試用例隊列T
    list

    [0029]可選的,所述步驟3的具體步驟為:
    [0030]步驟3.1、從測試用例隊列T
    li本文檔來自技高網
    ...

    【技術保護點】

    【技術特征摘要】
    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...

    【專利技術屬性】
    技術研發人員:崔展齊金昊宸鄭麗偉
    申請(專利權)人:北京信息科技大學
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 久久影院午夜理论片无码| 国产精品va无码免费麻豆| 91精品国产综合久久四虎久久无码一级 | 毛片免费全部播放无码| 亚洲国产成AV人天堂无码| 精品无码久久久久久久动漫| 久久久久亚洲AV无码永不| 免费看成人AA片无码视频吃奶| 亚洲国产成人精品无码区在线网站 | 中文字幕av无码无卡免费| 久久国产三级无码一区二区| 亚洲成a人无码亚洲成av无码 | 人妻少妇看A偷人无码精品| 无码人妻少妇色欲AV一区二区| 无码日韩AV一区二区三区| 亚洲熟妇无码av另类vr影视| 国产精品va无码一区二区| 国产网红主播无码精品 | 国产精品无码免费专区午夜| 国产乱妇无码大片在线观看| 国产精品无码专区| 波多野42部无码喷潮在线| 国产精品午夜无码体验区| 无码AV大香线蕉| 久久久无码精品人妻一区| 亚洲欧洲AV无码专区| 精品少妇人妻av无码久久| 国产爆乳无码视频在线观看| 国产乱子伦精品无码码专区| 国产成人A亚洲精V品无码| 熟妇人妻中文a∨无码| 少妇无码AV无码一区| 曰韩精品无码一区二区三区 | 亚洲VA成无码人在线观看天堂| 人妻丰满av无码中文字幕| 亚洲中文久久精品无码1| 无码人妻AV免费一区二区三区| 亚洲午夜无码久久久久| 中文字幕无码乱人伦| 无码一区二区三区视频| 69天堂人成无码麻豆免费视频|