[發明專利]一種基于單元測試的軟件脆弱性測試方法無效
| 申請號: | 201110380418.6 | 申請日: | 2011-11-25 |
| 公開(公告)號: | CN102495796A | 公開(公告)日: | 2012-06-13 |
| 發明(設計)人: | 郭世澤;趙靜;肖奇學;朱峻茂;郭瑞旭;房珊瑤;楊朝紅;吳志勇;沈偉;王雄;李亞輝;陳卓;王巖 | 申請(專利權)人: | 中國人民解放軍總參謀部第五十四研究所 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京理工大學專利中心 11120 | 代理人: | 張利萍;高燕燕 |
| 地址: | 100083 北*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 單元測試 軟件 脆弱 測試 方法 | ||
技術領域
本發明涉及軟件測試技術領域,具體涉及到虛擬化技術、動態二進制插樁技術、符號執行技術。
背景技術
在軟件生命周期中,軟件測試是非常重要的一個環節,高效完備的測試是保證軟件質量的重要手段。基于測試的粒度,軟件測試可以分為系統測試、模塊測試、策略級測試。基于測試收集數據的類型,軟件測試可以分為性能測試、功能測試、穩定性測試等。此外,根據測試過程是否依賴于程序內部結構,軟件測試可以分為白盒測試、黑盒測試、灰盒測試。
基于分層和抽象的原則,計算機系統在不同層面上實現虛擬化技術,以提供多個同構或異構的平臺。在硬件、系統以及應用程序各個層次上,虛擬化提供很好的物理隔離和邏輯隔離,并提供細粒度的運行時信息,在程序分析領域有廣泛的應用。
動態二進制插樁是指在程序運行時,除了正常執行原始程序外,在相關位置插入執行其他代碼,用于完成程序運行時信息收集、分析、優化等工作。根據是否對原始程序執行邏輯產生影響,插樁可以分為有損插樁和無損插樁。插樁技術廣泛運用于程序的分析和調試,根據是否對程序產生影響,插樁可以分為有損插樁和無損插樁,有損插樁依據特定意圖改變程序的控制流和數據流,無損插樁主要用于收集程序的運行時信息,并不會對程序執行流產生影響。根據對象不同,插樁可分為源代碼插樁和二進制插樁。前者是在編譯時,對程序的源代碼插入額外代碼,后者是在運行時插入代碼,用于收集或改變程序的運行狀態。
與實際執行不同,在符號執行中,程序的輸入數據是一個符號,這個符號代表任何可能的輸入,而不是局限某個特定的輸入。程序在執行計算、拷貝、比較、分支跳轉等語句時,都可以表達為對應的符號操作。符號執行在軟件測試和程序證明中有著廣泛的應用。
發明內容
在傳統測試方法中,普遍存在著代碼覆蓋率較低、測試效率低下的缺陷,無法根據實際需求,對特定的代碼路徑進行高效測試。有鑒于此,本發明提供了一種基于單元測試的軟件脆弱性測試方法,用于發現程序潛在的設計缺陷。
該基于單元測試的軟件脆弱性測試方法是這樣實現的:
第一步:加載運行目標測試程序,即測試對象,給定程序輸入驅動程序執行;
第二步:基于動態二進制插樁監控程序運行時狀態,收集程序的運行時信息,判斷程序路徑各個環節的屬性,識別各個代碼區的屬性并進行標記;
所述的基于動態二進制插樁監控的詳細步驟如下:模擬器在執行目標程序時,將程序指令翻譯為等價的微指令,依據物理機器體系結構將微指令轉換為本地指令執行;在指令翻譯前,模擬器即可添加額外代碼,完成對程序的動態插樁;動態二進制插樁包括收集指令的機器碼、指令地址、程序運行上下文信息、程序溢出檢查。
第三步:分析程序路徑各個環節的屬性,將路徑劃分成各個單元,根據配置對各個單元進行符號執行,驅動程序執行不同分支;每個單元對應不同的代碼區,對相應單元執行情況進行標記和歸類;
第四步:在程序執行各個不同分支路徑過程中,分析路徑的屬性和程序的行為,基于同一根節點下的不同子路徑,在各個單元上進行符號執行;基于各個單元前后執行的獨立性,在每一個域上單獨針對一個路徑單元進行測試;
所述的符號執行的方法為:符號執行的輸入被標記為代表任意數據的符號值,程序執行過程中輸入符號相關的表達式,當程序發生分支時,分支條件即可表達為輸入相關的布爾方程,不同的布爾方程反應不同的程序路徑反應不同的程序輸入,對符號方程進行變換求解,即可以自動生成程序的輸入,從而提高測試的路徑覆蓋率。
第五步:基于測試需要和環境配置,對各個域提交的結果進行匯總,判斷程序是否存在設計或實現缺陷。
所述的程序是否存在缺陷是通過斷言來實現的。
本發明的有益效果為:
基于路徑各個環節的屬性,將其劃分成各個單元進行測試,避免了測試在無關的代碼區域進行測試,而且采用虛擬化技術,可以對各個單元進行并行測試,從而極大地提高程序的測試效率。
附圖說明
圖1為基于單元測試的程序脆弱性測試方案的系統框架;
圖2為基于單元測試的程序脆弱性測試方案的系統流程圖;
圖3為程序路徑單元劃分示意圖。
具體實施方式
下面結合附圖并舉實施例,對本發明進行詳細描述。
本發明提供了一種基于單元測試的軟件脆弱性測試方法,其基本思想是通過動態二進制插樁,將程序的執行路徑根據各個環節的屬性進行劃分,得到多個路徑單元。在測試的過程中,對單元內的程序路徑或各個單元同時進行遍歷測試,并匯總測試結果,從而發現程序在設計和實現方面的缺陷。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍總參謀部第五十四研究所,未經中國人民解放軍總參謀部第五十四研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110380418.6/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種航空發動機三支點軸承的裝配方法
- 下一篇:加熱裝置及加熱方法





