[發(fā)明專利]基于路徑覆蓋測(cè)試用例自動(dòng)生成的單元測(cè)試方法有效
| 申請(qǐng)?zhí)枺?/td> | 201810501975.0 | 申請(qǐng)日: | 2018-05-23 |
| 公開(公告)號(hào): | CN108710575B | 公開(公告)日: | 2020-11-24 |
| 發(fā)明(設(shè)計(jì))人: | 黃翰;連木明;劉方青;楊忠明;郝志峰 | 申請(qǐng)(專利權(quán))人: | 華南理工大學(xué) |
| 主分類號(hào): | G06F11/36 | 分類號(hào): | G06F11/36 |
| 代理公司: | 廣州粵高專利商標(biāo)代理有限公司 44102 | 代理人: | 何淑珍;江裕強(qiáng) |
| 地址: | 510640 廣*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 路徑 覆蓋 測(cè)試 自動(dòng) 生成 單元測(cè)試 方法 | ||
1.基于路徑覆蓋測(cè)試用例自動(dòng)生成的單元測(cè)試方法,其特征在于,包括以下步驟:
(a) 對(duì)輸入源程序即源代碼進(jìn)行文件預(yù)處理,使其符合詞法分析與語(yǔ)法分析要求的語(yǔ)法結(jié)構(gòu);文件預(yù)處理中,若有多文件,在C/C++中將通過(guò)include語(yǔ)句進(jìn)行識(shí)別,將需要include的文件放到同一個(gè)源文件中;將if-elseif-else結(jié)構(gòu)中在elseif和else中插入塊結(jié)束標(biāo)識(shí)符,將if-elseif-else結(jié)構(gòu)轉(zhuǎn)換成if-else嵌套結(jié)構(gòu),將switch語(yǔ)句結(jié)構(gòu)中case多分支結(jié)構(gòu)進(jìn)行轉(zhuǎn)換成if-else多嵌套結(jié)構(gòu),降低代碼抽象程度與控制流圖實(shí)現(xiàn)難度;
(b) 對(duì)步驟(a)預(yù)處理后的輸入源代碼進(jìn)行詞法分析,建立符號(hào)表;
(c) 對(duì)步驟(a)預(yù)處理后的輸入源代碼進(jìn)行語(yǔ)法分析,建立源代碼對(duì)應(yīng)的控制流圖(CFG),其中包含控制節(jié)點(diǎn)、普通節(jié)點(diǎn)與終止節(jié)點(diǎn),將源代碼轉(zhuǎn)化可執(zhí)行的中間代碼,并在控制節(jié)點(diǎn)中插入可執(zhí)行代碼;源代碼中存在函數(shù)調(diào)用與遞歸函數(shù),將函數(shù)視為一個(gè)模塊,對(duì)函數(shù)進(jìn)行分析,構(gòu)建該函數(shù)代碼對(duì)應(yīng)的控制流圖,在函數(shù)調(diào)用時(shí),將函數(shù)對(duì)應(yīng)的控制流圖的第一個(gè)節(jié)點(diǎn)的指針傳給調(diào)用函數(shù),組合構(gòu)建控制流圖;對(duì)于簡(jiǎn)單的遞歸函數(shù)則將其構(gòu)建為帶有局部回路的控制流圖子圖,遞歸調(diào)用時(shí)將子圖傳給外部調(diào)用者構(gòu)建總的控制流圖;
步驟(b)(c)中,普通節(jié)點(diǎn)與控制節(jié)點(diǎn)中的存儲(chǔ)的是源代碼的中間代碼表示方法,程序的執(zhí)行可以抽象為內(nèi)存中變量值的修改,該方法將變量表示為ID符,并壓棧,同時(shí)再將該變量在符號(hào)表中的地址壓棧,在后面中間代碼執(zhí)行階段,便可通過(guò)ID標(biāo)識(shí)符獲知當(dāng)前處理為變量,接著通過(guò)ID后面的地址能訪問(wèn)到該變量位置,并對(duì)變量進(jìn)行操作,如果是數(shù)字,則將NUM符壓棧,同時(shí)將數(shù)字的值壓棧,操作符直接壓棧,通過(guò)這種中間代碼表示降低高級(jí)程序設(shè)計(jì)語(yǔ)言的抽象程度,之后創(chuàng)建一個(gè)中間代碼解釋器,便能直接運(yùn)行設(shè)計(jì)的中間代碼;構(gòu)建的中間代碼解釋器其基本原理是使用棧式計(jì)算機(jī)的機(jī)理,通過(guò)一個(gè)棧與幾個(gè)暫存器來(lái)執(zhí)行中間代碼,并返回中間代碼執(zhí)行結(jié)果;
將代碼轉(zhuǎn)為中間代碼之后,降低了代碼抽象程度,在實(shí)際的中間代碼運(yùn)行中,采用中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式的方法,通過(guò)棧的數(shù)據(jù)結(jié)構(gòu)計(jì)算中間代碼的結(jié)果;
(d) 由測(cè)試用例自動(dòng)生成算法生成測(cè)試用例;
(e) 由測(cè)試用例執(zhí)行模塊獲取測(cè)試用例,并驅(qū)動(dòng)控制流圖中節(jié)點(diǎn)的可執(zhí)行代碼的執(zhí)行,根據(jù)可執(zhí)行代碼執(zhí)行結(jié)果計(jì)算適應(yīng)度函數(shù)fitness適應(yīng)值;
(f) 若當(dāng)前節(jié)點(diǎn)不是終止節(jié)點(diǎn),由可執(zhí)行代碼的執(zhí)行結(jié)果選擇下一個(gè)子節(jié)點(diǎn)重復(fù)(c),(d),(e)步驟;否則進(jìn)入下一步;
(g) 當(dāng)前節(jié)點(diǎn)是終止節(jié)點(diǎn),獲取fitness適應(yīng)值的最終結(jié)果,并生成該測(cè)試用例對(duì)應(yīng)的路徑編碼;
(h) 判斷路徑覆蓋是否已經(jīng)達(dá)到100%或者運(yùn)行是否已經(jīng)超時(shí),若已經(jīng)達(dá)到100%則進(jìn)入下一步,若已經(jīng)超時(shí)則退出,否則,重復(fù)(d),(e),(f),(g)步驟;
(i) 生成包含測(cè)試用例對(duì)應(yīng)覆蓋的路徑,以及路徑覆蓋率的測(cè)試報(bào)告。
2.根據(jù)權(quán)利要求1所述的基于路徑覆蓋測(cè)試用例自動(dòng)生成的單元測(cè)試方法,其特征在于:步驟(b)(c)中,對(duì)源代碼進(jìn)行詞法分析與語(yǔ)法分析,生成源代碼的對(duì)應(yīng)的控制流圖(CFG),通過(guò)循環(huán)、分支、順序結(jié)構(gòu)能表示任何可執(zhí)行代碼的結(jié)構(gòu),所以將順序執(zhí)行代碼轉(zhuǎn)化為控制流圖中的順序節(jié)點(diǎn),其中包含著源代碼中順序結(jié)構(gòu)代碼的中間表示代碼,用棧存儲(chǔ)相關(guān)代碼信息,將分支結(jié)構(gòu)與循環(huán)結(jié)構(gòu)通過(guò)構(gòu)建圖的分支節(jié)點(diǎn)與局部回路形式將分支與循環(huán)結(jié)構(gòu),在圖中實(shí)例化。
3.根據(jù)權(quán)利要求1所述的基于路徑覆蓋測(cè)試用例自動(dòng)生成的單元測(cè)試方法,其特征在于:步驟(c)中,設(shè)計(jì)一套基于棧式計(jì)算機(jī)的中間代碼指令,將操作符轉(zhuǎn)換為對(duì)應(yīng)的運(yùn)算指令,增加PUSH,POP,MOV的操作指令與增加ID,NUM,STR的標(biāo)識(shí)指令;用以將高級(jí)程序設(shè)計(jì)語(yǔ)言進(jìn)行轉(zhuǎn)化生成中間代碼,通過(guò)中間代碼的執(zhí)行來(lái)模擬程序的執(zhí)行。
4.根據(jù)權(quán)利要求1所述的基于路徑覆蓋測(cè)試用例自動(dòng)生成的單元測(cè)試方法,其特征在于:步驟(b)(c)中,在語(yǔ)法分析過(guò)程中,采用遞歸下降的分析方法將源代碼進(jìn)行語(yǔ)法分析,從而輔助控制流圖的構(gòu)建,通過(guò)步驟(b)(c) 系統(tǒng)性地根據(jù)測(cè)試用例自動(dòng)生成算法的需求構(gòu)建源程序解析生成控制流圖,從而使控制流圖生成自動(dòng)化生產(chǎn)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于華南理工大學(xué),未經(jīng)華南理工大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810501975.0/1.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過(guò)測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過(guò)處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過(guò)軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- 路徑搜索系統(tǒng)、路徑搜索終端和路徑搜索方法
- 路徑計(jì)算方法、路徑計(jì)算單元及路徑計(jì)算系統(tǒng)
- 路徑顯示裝置、路徑顯示方法、路徑顯示程序及路徑顯示系統(tǒng)
- 路徑引導(dǎo)裝置、路徑引導(dǎo)方法及路徑引導(dǎo)程序
- 路徑搜索系統(tǒng)、路徑搜索方法及路徑搜索程序
- 路徑引導(dǎo)裝置、路徑引導(dǎo)方法以及路徑引導(dǎo)程序
- 路徑搜索系統(tǒng)、路徑搜索方法以及路徑搜索程序
- 路徑搜索裝置、路徑搜索系統(tǒng)及路徑搜索方法
- 路徑輸出方法、路徑輸出系統(tǒng)和路徑輸出程序
- 路徑評(píng)價(jià)裝置、路徑評(píng)價(jià)系統(tǒng)、路徑評(píng)價(jià)方法以及路徑評(píng)價(jià)程序
- 軟件測(cè)試系統(tǒng)及測(cè)試方法
- 自動(dòng)化測(cè)試方法和裝置
- 一種應(yīng)用于視頻點(diǎn)播系統(tǒng)的測(cè)試裝置及測(cè)試方法
- Android設(shè)備的測(cè)試方法及系統(tǒng)
- 一種工廠測(cè)試方法、系統(tǒng)、測(cè)試終端及被測(cè)試終端
- 一種軟件測(cè)試的方法、裝置及電子設(shè)備
- 測(cè)試方法、測(cè)試裝置、測(cè)試設(shè)備及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 測(cè)試裝置及測(cè)試系統(tǒng)
- 測(cè)試方法及測(cè)試系統(tǒng)
- 一種數(shù)控切削指令運(yùn)行軟件測(cè)試系統(tǒng)及方法





