面向C語言的符號執(zhí)行引擎設(shè)計與實現(xiàn)
發(fā)布時間:2022-10-21 19:14
隨著我國航天、軌道交通與芯片等產(chǎn)業(yè)的不斷發(fā)展,高安全領(lǐng)域軟件系統(tǒng)的數(shù)量和規(guī)模不斷擴大。出于高穩(wěn)定性、強實時性和兼容性等需求,這些系統(tǒng)通常使用具有足夠靈活性的C語言進行開發(fā)。由于對系統(tǒng)安全性的高要求,此類軟件系統(tǒng)代碼需要進行充分單元測試,并要求達到接近100%的測試覆蓋率。因此,企業(yè)通常需要專業(yè)測試人員針對C代碼函數(shù)進行手工編寫單元測試用例,但仍然存在測試用例編寫效率低下、質(zhì)量參差不齊等問題。針對上述問題,本文提出了將符號執(zhí)行技術(shù)應(yīng)用于C語言單元測試用例自動生成的方法,實現(xiàn)了以高覆蓋率為導向的單元測試用例自動生成工具,本文主要的貢獻如下:構(gòu)建C語言符號執(zhí)行引擎:本文設(shè)計實現(xiàn)的符號執(zhí)行引擎使用靜態(tài)分析和控制流分析來解析處理待測C源碼,生成待測程序的抽象語法樹,構(gòu)建控制流圖模型;诳刂屏鲌D,使用狀態(tài)搜索器和執(zhí)行器對程序路徑進行符號執(zhí)行,并在此過程中獲取路徑對應(yīng)的測試輸入,得到單元測試用例數(shù)據(jù),實現(xiàn)單元測試用例自動生成工具的核心功能。滿足MC/DC覆蓋的高效搜索算法:在符號執(zhí)行引擎中,實現(xiàn)了滿足MC/DC覆蓋準則的單元測試用例生成的方法,同時優(yōu)化程序路徑搜索效率,提出并實現(xiàn)了洪水搜索算法,支...
【文章頁數(shù)】:99 頁
【學位級別】:碩士
【文章目錄】:
摘要
abstract
第1章 緒論
1.1 選題背景及意義
1.2 國內(nèi)外研究現(xiàn)狀分析
1.3 本文的主要工作
1.4 本文組織結(jié)構(gòu)
第2章 相關(guān)技術(shù)介紹
2.1 單元測試簡介
2.1.1 覆蓋準則
2.1.2 常見單元測試工具
2.1.3 單元測試的挑戰(zhàn)
2.2 LLVM編譯器基礎(chǔ)架構(gòu)
2.3 符號執(zhí)行技術(shù)簡介
2.3.1 符號執(zhí)行示例
2.3.2 符號執(zhí)行與測試用例自動生成
2.3.3 符號執(zhí)行的限制
2.3.4 動態(tài)符號執(zhí)行框架KLEE
2.4 Z3定理證明器
2.5 本章小結(jié)
第3章 符號執(zhí)行引擎框架設(shè)計
3.1 需求簡述
3.2 技術(shù)難點
3.2.1 C代碼解析處理問題
3.2.2 類型系統(tǒng)構(gòu)建問題
3.2.3 開發(fā)測試平臺的差異性問題
3.3 符號執(zhí)行引擎整體架構(gòu)
3.3.1 整體架構(gòu)設(shè)計
3.3.2 符號類型系統(tǒng)
3.3.3 C代碼預處理與解析
3.3.4 符號執(zhí)行內(nèi)核
3.4 測試用例生成與統(tǒng)計
3.5 符號執(zhí)行引擎算法設(shè)計
3.5.1 設(shè)計原則
3.5.2 類型內(nèi)存系統(tǒng)構(gòu)建算法
3.5.3 洪水搜索算法
3.5.4 MC/DC覆蓋率統(tǒng)計算法
3.6 單元測試自動化工具框架設(shè)計
3.7 私有云測試平臺架構(gòu)設(shè)計
3.8 本章小結(jié)
第4章 符號執(zhí)行引擎具體實現(xiàn)
4.1 開發(fā)環(huán)境
4.1.1 環(huán)境搭建
4.2 預處理與解析模塊實現(xiàn)
4.3 符號執(zhí)行內(nèi)核模塊實現(xiàn)
4.4 約束求解與用例統(tǒng)計模塊實現(xiàn)
4.5 本章小結(jié)
第5章 單元測試自動化工具的實驗與評估
5.1 實驗環(huán)境與評估基準
5.2 實驗結(jié)果與分析
5.3 本章小結(jié)
第6章 總結(jié)與展望
6.1 本文的總結(jié)
6.2 未來可研究方向
參考文獻
攻讀碩士學位期間科研成果
致謝
【參考文獻】:
期刊論文
[1]SMT求解技術(shù)簡述[J]. 金繼偉,馬菲菲,張健. 計算機科學與探索. 2015(07)
[2]軟件回歸測試研究[J]. 馬軍勇,楊勝建. 電子測試. 2009(06)
本文編號:3696221
【文章頁數(shù)】:99 頁
【學位級別】:碩士
【文章目錄】:
摘要
abstract
第1章 緒論
1.1 選題背景及意義
1.2 國內(nèi)外研究現(xiàn)狀分析
1.3 本文的主要工作
1.4 本文組織結(jié)構(gòu)
第2章 相關(guān)技術(shù)介紹
2.1 單元測試簡介
2.1.1 覆蓋準則
2.1.2 常見單元測試工具
2.1.3 單元測試的挑戰(zhàn)
2.2 LLVM編譯器基礎(chǔ)架構(gòu)
2.3 符號執(zhí)行技術(shù)簡介
2.3.1 符號執(zhí)行示例
2.3.2 符號執(zhí)行與測試用例自動生成
2.3.3 符號執(zhí)行的限制
2.3.4 動態(tài)符號執(zhí)行框架KLEE
2.4 Z3定理證明器
2.5 本章小結(jié)
第3章 符號執(zhí)行引擎框架設(shè)計
3.1 需求簡述
3.2 技術(shù)難點
3.2.1 C代碼解析處理問題
3.2.2 類型系統(tǒng)構(gòu)建問題
3.2.3 開發(fā)測試平臺的差異性問題
3.3 符號執(zhí)行引擎整體架構(gòu)
3.3.1 整體架構(gòu)設(shè)計
3.3.2 符號類型系統(tǒng)
3.3.3 C代碼預處理與解析
3.3.4 符號執(zhí)行內(nèi)核
3.4 測試用例生成與統(tǒng)計
3.5 符號執(zhí)行引擎算法設(shè)計
3.5.1 設(shè)計原則
3.5.2 類型內(nèi)存系統(tǒng)構(gòu)建算法
3.5.3 洪水搜索算法
3.5.4 MC/DC覆蓋率統(tǒng)計算法
3.6 單元測試自動化工具框架設(shè)計
3.7 私有云測試平臺架構(gòu)設(shè)計
3.8 本章小結(jié)
第4章 符號執(zhí)行引擎具體實現(xiàn)
4.1 開發(fā)環(huán)境
4.1.1 環(huán)境搭建
4.2 預處理與解析模塊實現(xiàn)
4.3 符號執(zhí)行內(nèi)核模塊實現(xiàn)
4.4 約束求解與用例統(tǒng)計模塊實現(xiàn)
4.5 本章小結(jié)
第5章 單元測試自動化工具的實驗與評估
5.1 實驗環(huán)境與評估基準
5.2 實驗結(jié)果與分析
5.3 本章小結(jié)
第6章 總結(jié)與展望
6.1 本文的總結(jié)
6.2 未來可研究方向
參考文獻
攻讀碩士學位期間科研成果
致謝
【參考文獻】:
期刊論文
[1]SMT求解技術(shù)簡述[J]. 金繼偉,馬菲菲,張健. 計算機科學與探索. 2015(07)
[2]軟件回歸測試研究[J]. 馬軍勇,楊勝建. 電子測試. 2009(06)
本文編號:3696221
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3696221.html
最近更新
教材專著