[發(fā)明專利]一種改進(jìn)的基于符號(hào)執(zhí)行的軟件靜態(tài)測試方法及工具無效
| 申請(qǐng)?zhí)枺?/td> | 201010180129.7 | 申請(qǐng)日: | 2010-05-24 |
| 公開(公告)號(hào): | CN102262580A | 公開(公告)日: | 2011-11-30 |
| 發(fā)明(設(shè)計(jì))人: | 劉久富;婁堅(jiān)波;李金奎;王偉;蘇青琴;陳魁 | 申請(qǐng)(專利權(quán))人: | 南京航空航天大學(xué) |
| 主分類號(hào): | G06F11/36 | 分類號(hào): | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 210016*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 改進(jìn) 基于 符號(hào) 執(zhí)行 軟件 靜態(tài) 測試 方法 工具 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種改進(jìn)的基于符號(hào)執(zhí)行的軟件靜態(tài)測試方法及工具,屬于軟件的靜態(tài)測試技術(shù)領(lǐng)域。
背景技術(shù)
軟件測試技術(shù)通常分為靜態(tài)測試和動(dòng)態(tài)測試。動(dòng)態(tài)測試就是執(zhí)行程序,再觀察其行為是否滿足要求。既可由用戶直接觀察,也可以使用一定的輔助工具。靜態(tài)測試是不執(zhí)行程序代碼而尋找程序代碼中可能存在的缺陷或評(píng)估程序代碼的過程,程序靜態(tài)測試的目標(biāo)不是證明程序完全正確,而是作為動(dòng)態(tài)測試的補(bǔ)充,在程序運(yùn)行前盡可能多的發(fā)現(xiàn)其中隱含的錯(cuò)誤,提高程序的可靠性和健壯性,靜態(tài)測試在更高的抽象層次上對(duì)程序的某些屬性進(jìn)行考察,而不是對(duì)程序的某一個(gè)特定輸入的考察。
現(xiàn)在國內(nèi)對(duì)于靜態(tài)測試中的符號(hào)執(zhí)行方法方面的研究并不是很充分,國內(nèi)比較著名的是:北京航空航天大學(xué)軟件研究所開發(fā)的SafePro?C/C++,SafePro?C/C++提供多選窗口單驅(qū)動(dòng)的用戶工作環(huán)境,支持若干種測試信息的快速關(guān)聯(lián)分析,提供了圖文并茂的軟件測試結(jié)果報(bào)告,同時(shí)支持靜態(tài)和動(dòng)態(tài)測試。
在這些已有的軟件靜態(tài)測試?yán)碚摵蜏y試工具中,一般仍然或多或少存在以下不足:
(1)對(duì)符號(hào)執(zhí)行功能模塊沒有得到充分重視和實(shí)現(xiàn);
(2)對(duì)隱含的代碼錯(cuò)誤測試效果不好,如果再次測試將花費(fèi)大量的人力物力。
發(fā)明內(nèi)容
本發(fā)明目的是針對(duì)現(xiàn)有技術(shù)存在的缺陷提供一種改進(jìn)的基于符號(hào)執(zhí)行的軟件靜態(tài)測試方法及工具。
本發(fā)明公布了一種改進(jìn)的基于符號(hào)執(zhí)行的軟件靜態(tài)測試方法,已經(jīng)開發(fā)包含該方法的面向宿主的軟件自動(dòng)化測試工具。其特征在于包括如下步驟:
1、第一階段分析。其中包括:
1.1)將被測代碼輸入測試工具中;
1.2)根據(jù)C語言文法自定義一個(gè)關(guān)鍵詞列表,并對(duì)照關(guān)鍵詞列表對(duì)被測試代碼進(jìn)行詞法分析;
1.3)根據(jù)C語言文法自定義函數(shù)結(jié)構(gòu)模塊、構(gòu)造抽象語法樹的生成算法,并對(duì)照詞法分析的結(jié)果,利用“自下而上”的方法(即從從語法樹的末端開始,步步向上“歸約”),對(duì)被測代碼進(jìn)行語法分析,最終得到程序靜態(tài)分析樹(PAT)作為一個(gè)中間表示形式,并且利用文檔進(jìn)行存儲(chǔ);
2、第二階段分析。其中包括:
2.1)根據(jù)第一階段分析步驟(1.2)中的詞法分析結(jié)果,以特定結(jié)構(gòu)體的形式(包含變量名稱及變量的符號(hào)值)建立變量列表、以鏈表的形式存儲(chǔ)當(dāng)前路徑條件(便于回溯);
2.2)根據(jù)第一階段分析步驟(1.3)中的語法分析結(jié)果,對(duì)程序靜態(tài)分析樹進(jìn)行中序遍歷,同時(shí)對(duì)變量列表中變量的符號(hào)值進(jìn)行替換;將步驟(2.1)中存儲(chǔ)的路徑條件進(jìn)行約束求解得到可執(zhí)行路徑,并且依照算法得到每個(gè)變量最終的符號(hào)執(zhí)行結(jié)果,最終以文本的格式保存。
本發(fā)明出了可以進(jìn)行傳統(tǒng)符號(hào)執(zhí)行得到相應(yīng)的結(jié)果之外,還可以根據(jù)C語言的文法,對(duì)于程序中潛在的錯(cuò)誤進(jìn)行報(bào)錯(cuò),例如while()語句中若循環(huán)條件為空,則會(huì)自動(dòng)報(bào)錯(cuò),因此通用性比較強(qiáng)的。
附圖說明
圖1:本發(fā)明工作流程圖;
圖2:本發(fā)明語法分析過程流程圖;
圖3:本發(fā)明符號(hào)執(zhí)行過程流程圖;
具體實(shí)施方式
下面結(jié)合附圖1、圖2、圖3對(duì)本發(fā)明的工作流程進(jìn)行詳細(xì)說明。
基于符號(hào)執(zhí)行的軟件靜態(tài)測試方法,有如下軟件測試步驟:
1、第一階段分析,具體步驟如圖2所示,其中包括:
1.1)將被測代碼輸入測試工具中;
1.2)根據(jù)C語言文法自定義一個(gè)關(guān)鍵詞列表,并對(duì)照關(guān)鍵詞列表對(duì)被測試代碼進(jìn)行詞法分析;
1.3)根據(jù)C語言文法自定義函數(shù)結(jié)構(gòu)模塊、構(gòu)造抽象語法樹的生成算法,并對(duì)照詞法分析的結(jié)果,利用“自下而上”的方法(即從從語法樹的末端開始,步步向上“歸約”),對(duì)被測代碼進(jìn)行語法分析,最終得到程序靜態(tài)分析樹(PAT)作為一個(gè)中間表示形式,并且最終用樹形控件進(jìn)行顯示;
其中,步驟(1.2)進(jìn)一步包括:(1.2.1)建立一個(gè)關(guān)鍵詞列表,該關(guān)鍵詞列表包含有C語言文法中的大部分關(guān)鍵詞;(1.2.2)將被測代碼保存于臨時(shí)文件中,以讀文件的方式,將被測代碼讀入詞法分析模塊;(1.2.3)根據(jù)所讀出字符的不同類型,進(jìn)入相應(yīng)的掃描狀態(tài)(例如:若讀取字符為a-z或A-Z中的一個(gè),則進(jìn)入INID掃描狀態(tài),繼續(xù)讀取下一個(gè)字符,以此類推直至遇到終結(jié)符為止);(1.2.4)若詞法分析的返回值是關(guān)鍵詞列表中的成員,則調(diào)用替換函數(shù)返回相應(yīng)的替換值;詞法分析直至文件中內(nèi)容被全部讀完方才結(jié)束;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于南京航空航天大學(xué),未經(jīng)南京航空航天大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010180129.7/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測;錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過測試作故障硬件的檢測或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過處理作錯(cuò)誤檢測、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過軟件的測試或調(diào)試防止錯(cuò)誤
- 碼轉(zhuǎn)換裝置、接收機(jī)以及碼轉(zhuǎn)換方法
- TrueType符號(hào)與基于路徑的點(diǎn)狀地圖符號(hào)交換方法
- 一種生成嵌入式程序運(yùn)行符號(hào)表的方法和裝置
- 控制車內(nèi)后視鏡的按鈕符號(hào)的方法
- 一種基于矢量符號(hào)描述語言的電子海圖擴(kuò)展符號(hào)構(gòu)建系統(tǒng)
- 一種用于無線光通信的方法及通信裝置
- 計(jì)算機(jī)圖形符號(hào)化表達(dá)方法、電子設(shè)備、存儲(chǔ)介質(zhì)
- 一種圖像識(shí)別的方法和裝置
- 標(biāo)點(diǎn)符號(hào)的校正方法及設(shè)備、介質(zhì)
- 一種被用于無線通信的節(jié)點(diǎn)中的方法和裝置
- 以注射方式執(zhí)行死刑的自動(dòng)執(zhí)行車的執(zhí)行床
- 過程執(zhí)行裝置、過程執(zhí)行方法以及過程執(zhí)行程序
- 用以執(zhí)行跳舞電子游戲的執(zhí)行系統(tǒng)及其執(zhí)行方法
- 策略執(zhí)行系統(tǒng)及其執(zhí)行方法
- 腳本執(zhí)行系統(tǒng)和腳本執(zhí)行方法
- 命令執(zhí)行設(shè)備、命令執(zhí)行系統(tǒng)、命令執(zhí)行方法以及命令執(zhí)行程序
- 程序執(zhí)行裝置、程序執(zhí)行系統(tǒng)以及程序執(zhí)行方法
- 處理執(zhí)行設(shè)備和由該處理執(zhí)行設(shè)備執(zhí)行的方法
- 有序任務(wù)的執(zhí)行方法、執(zhí)行裝置和執(zhí)行系統(tǒng)
- 執(zhí)行器(閥門執(zhí)行器)





