[發明專利]一種基于蛻變關系的整數溢出故障檢測方法有效
| 申請號: | 201510039364.5 | 申請日: | 2015-01-26 |
| 公開(公告)號: | CN104572470B | 公開(公告)日: | 2017-10-03 |
| 發明(設計)人: | 惠戰偉;黃松;李輝;任正平;胡斌;余沛毅 | 申請(專利權)人: | 中國人民解放軍理工大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 南京鐘山專利代理有限公司32252 | 代理人: | 戴朝榮 |
| 地址: | 210007 江*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 蛻變 關系 整數 溢出 故障 檢測 方法 | ||
技術領域
本發明涉及軟件中整數溢出故障檢測,尤其涉及一種基于蛻變關系的整數溢出故障檢測方法,屬于軟件測試領域。
背景技術
整數溢出故障被認為是影響軟件系統安全性的重要因素。為了檢測這種故障的出現,通常存在兩種方法。第一種是靜態測試,又稱為靜態審查,通過一些靜態審查工具,對程序源代碼或者二進制代碼按照設定的規則進行審查。這種方法最大的優點就是可以自動化實施,避免人工的參與,也提高了方法的可行性。但是它最大的缺點就是誤報率高,即會產生大量的假故障。因為,通過靜態審查工具得到的缺陷或者故障還需要進一步的人工確認,所以大量的假故障會帶來極大的人工確認勞動。
第二種就是動態測試,即通過人工設計一些有針對性的測試用例,從而通過程序運行結果判斷其是否與預期一致。如果不一致,則存在相應的故障。這種方法的優點就是誤報少,即只要測試用例執行結果與預期不一致,則一定存在故障。同時,測試人員也可以針對重點功能模塊設計相應的測試用例,來實現對關鍵功能或者缺陷的重點測試。但是,實際測試中,這種測試所依賴的預期測試結果通常并不容易得到。這也就是軟件測試中的測試判定難題。蛻變測試方法通過驗證被測軟件多次輸出之間是否滿足一定的關系,從而為構造測試判定提供了一種方法。這種關系我們稱之為蛻變關系。顯然,整數溢出故障動態檢測過程中也存在著測試判定難題,即當通過測試用例執行程序時,即使發生整數溢出故障,測試人員也無法確認其結果的正確與否,除非測試結果為程序崩潰等顯性失效。
由此可見,針對整數溢出,靜態測試雖然有靜態審查工具支持,簡單易行,但是其結果可靠性較低,誤報率較高。相對而言,動態測試則可以極大地降低誤報率。但是怎樣設計有效的測試用例,以及怎樣判斷測試用例執行結果是否正確都存在困難。這兩種問題極大地限制了動態測試在整數溢出故障檢測中的應用領域。
發明內容
為了克服現有軟件測試技術中的有關整數溢出的故障檢測和定位中存在的缺陷和不足,本發明的提供了一種基于蛻變關系的整數溢出故障檢測方法。該方法綜合采用靜態測試和動態測試,首先基于靜態測試方法初步確定可能發生整數溢出的檢查點,然后基于“定義-使用”模型來審查檢查點是否存在危險整數,最后查找調用這些危險整數的操作,并在這些操作前插入蛻變關系。這樣當運行目標程序時,可以通過蛻變關系判定其輸出是否發生整數溢出故障。
本發明的技術方案是提供一種基于蛻變關系的整數溢出故障檢測方法,其設計要點在于,包括以下步驟:
步驟1采用靜態測試工具對被測程序源代碼進行靜態檢測,對被測程序源代碼中引用的可能會發生整數溢出的整數的程序源代碼語句標識為整數溢出檢查點;
步驟2所述整數溢出檢查點的整數若存在被“定義-使用”模型中的整數定義語句和整數使用語句所引用,則將其標識為溢出整數,所述“定義-使用”模型包含造成整數溢出故障的整數定義語句表和整數使用語句表的;被整數危險使用語句表中的整數危險使用語句所引用的由于整數溢出造成被測程序安全故障的所述溢出整數標識為危險整數;
步驟3在引用所述危險整數的語句被執行前采用蛻變測試方法檢測所述危險整數是否發生整數溢出故障;所述蛻變測試方法包括針對所述危險整數構造的用于檢測危險整數溢出故障的蛻變關系集,對危險整數構造的滿足蛻變關系集中的蛻變關系的輸入關系r的測試用例,測試用例所對應的被測程序的輸出若不滿足蛻變關系的輸出關系rf,則所述危險整數在后續使用語句的引用中發生整數溢出故障。。
在軟件測試的應用中,本發明還有如下進一步優化的技術方案。
進一步地,所述步驟2中的整數定義語句表包括:
輸入定義,通過包含輸入終端輸入或文件輸入的外部輸入改變內存儲空間中整數變量的存儲單元的存儲值;
賦值定義,通過賦值操作改變內存儲空間中整數變量的存儲單元的存儲值;
其它定義,通過環境變量改變內存儲空間中整數變量的存儲單元的存儲值;
所述步驟2中的整數使用語句表包括:
謂詞使用,謂詞判斷語句中引用到整數變量;
計算使用,計算語句中引用到整數變量;
輸出使用,被測程序輸出為整數變量;
定位使用,被測程序中的數組、指針索引引用整數變量定位數據在存儲空間的位置;
迭代使用,被測程序的迭代次數或者循環次數的計數器引用整數變量。
進一步地,所述步驟2中的整數危險使用語句表包括:
輸出使用,程序輸出為整數變量的整數數值;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍理工大學,未經中國人民解放軍理工大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510039364.5/2.html,轉載請聲明來源鉆瓜專利網。





