[發(fā)明專利]一種程序隱性約束提取方法及系統(tǒng)有效
| 申請?zhí)枺?/td> | 201810215371.X | 申請日: | 2018-03-15 |
| 公開(公告)號: | CN108563561B | 公開(公告)日: | 2020-06-23 |
| 發(fā)明(設(shè)計)人: | 宮云戰(zhàn);張明哲;王雅文;金大海 | 申請(專利權(quán))人: | 北京郵電大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京路浩知識產(chǎn)權(quán)代理有限公司 11002 | 代理人: | 王瑩;吳歡燕 |
| 地址: | 100876 北京市*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 程序 隱性 約束 提取 方法 系統(tǒng) | ||
本發(fā)明提供一種程序隱性約束提取方法及系統(tǒng),包括:對于待測程序中的任一函數(shù),將任一路徑上的入口節(jié)點作為當前節(jié)點;獲取當前節(jié)點與任一函數(shù)對應(yīng)的抽象語法樹上對應(yīng)的當前語法節(jié)點,若當前語法節(jié)點包含目標變量,獲取目標變量類型,根據(jù)目標變量類型和作用于目標變量的運算符類型匹配隱性約束規(guī)則,提取目標變量的隱性約束;否則,將當前節(jié)點的下一個節(jié)點重新作為當前節(jié)點,重復(fù)上述步驟,直到任一路徑的出口節(jié)點為當前節(jié)點。本發(fā)明提出一種程序隱性約束提取方法及系統(tǒng),可以實現(xiàn)隱性約束的提取,可以在一定程度上減小目標變量的搜索空間,保證生成測試數(shù)據(jù)的正確性,進而確保后續(xù)測試數(shù)據(jù)順利執(zhí)行。
技術(shù)領(lǐng)域
本發(fā)明涉及軟件測試技術(shù)領(lǐng)域,更具體地,涉及一種程序隱性約束提取方法及系統(tǒng)。
背景技術(shù)
在面向路徑的測試數(shù)據(jù)自動生成方法中,約束系統(tǒng)的建立和求解是其中的關(guān)鍵問題。約束系統(tǒng)的建立需要對程序進行靜態(tài)分析,獲取各程序點處的程序語義,將代碼抽象和近似成由目標變量組成的形式化斷言集合,這些形式化斷言集合即限制目標變量取值的約束。通過使用約束求解算法對這些約束進行求解,可以獲得滿足當前路徑約束的測試數(shù)據(jù)。
在上述過程中,如何建立一個能準確反映程序語義且可解的約束系統(tǒng)是實現(xiàn)測試數(shù)據(jù)生成的前提。為了建立一個這樣的約束系統(tǒng),不僅要對包括復(fù)雜數(shù)據(jù)類型在內(nèi)的非線性操作進行建模以獲取可解的約束;還要盡可能的挖掘程序中各種操作的語義,建立相應(yīng)約束,縮小后續(xù)求解空間。
基于此,提出了程序隱性約束的概念,通過分析各種操作固有語義以外的語義信息,提取程序的隱性約束,增強了約束的完備性,為后續(xù)的約束求解及測試數(shù)據(jù)執(zhí)行提供了方便。
程序隱性約束的提取不僅可以在一定程度上縮小目標變量的搜索空間,更有利于生成滿足路徑覆蓋要求的測試數(shù)據(jù),主要包括以下幾個方面:
1、隱性約束基于程序語義推導(dǎo)產(chǎn)生,是程序固有語義對目標變量產(chǎn)生的約束的加強,使目標變量的搜索空間進一步減小,提高了測試數(shù)據(jù)生成效率。
2、隱性約束確保生成測試數(shù)據(jù)的正確性,保證了目標變量相應(yīng)操作能正確、合法的沿當前路徑執(zhí)行。
3、隱性約束的添加使測試數(shù)據(jù)能夠順利執(zhí)行,保證了基于路徑的覆蓋測試流程的正確進行,使每次執(zhí)行都能得到相應(yīng)的路徑覆蓋率,間接的提高了測試覆蓋率和測試效率。
因此,尋找一種高效的程序隱性約束提取方法是十分必要的。
發(fā)明內(nèi)容
本發(fā)明提供一種克服上述問題或者至少部分地解決上述問題的一種程序隱性約束提取方法及系統(tǒng)。
根據(jù)本發(fā)明的一個方面,提供一種程序隱性約束提取方法,包括:
S1,對應(yīng)待測程序中的任一函數(shù),獲取所述任一函數(shù)對應(yīng)的控制流圖的入口節(jié)點到出口節(jié)點的任一路徑,將所述任一路徑上的入口節(jié)點作為當前節(jié)點;
S2,獲取所述當前節(jié)點與所述任一函數(shù)對應(yīng)的抽象語法樹上對應(yīng)的當前語法節(jié)點;根據(jù)所述當前語法節(jié)點的類型,判斷是否進行進一步遍歷,若所述當前語法節(jié)點對應(yīng)賦值語句或分支語句,則對當前語法節(jié)點進行遍歷訪問;根據(jù)所述當前語法節(jié)點的類型,遍歷訪問當前語法節(jié)點并判斷所述當前語法節(jié)點是否包含目標變量;若所述當前語法節(jié)點包含所述目標變量,獲取所述目標變量和作用于所述目標變量的運算符,根據(jù)所述目標變量類型和作用于所述目標變量的運算符類型,匹配對應(yīng)的預(yù)設(shè)隱性約束規(guī)則,根據(jù)確定的預(yù)設(shè)隱性約束規(guī)則提取所述目標變量的隱性約束,所述目標變量為所述待測程序的輸入變量或所述待測程序的全局變量;
否則,將所述當前節(jié)點的下一個節(jié)點重新作為所述當前節(jié)點,重復(fù)上述步驟,直到所述任一路徑的出口節(jié)點為當前節(jié)點。
根據(jù)本發(fā)明的另一個方面,提供一種程序隱性約束提取系統(tǒng),包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京郵電大學,未經(jīng)北京郵電大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810215371.X/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





