欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于動(dòng)態(tài)切片的輕量級錯(cuò)誤定位技術(shù)實(shí)現(xiàn)方法

文檔序號:8258354閱讀:639來源:國知局
一種基于動(dòng)態(tài)切片的輕量級錯(cuò)誤定位技術(shù)實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種錯(cuò)誤定位的方法,主要從動(dòng)態(tài)切片的過程中提取有用信息,再用 輕量級的方法分析,為程序員提供錯(cuò)誤語句塊的可疑度排序,屬于軟件測試領(lǐng)域。
【背景技術(shù)】
[0002] 軟件調(diào)試需要程序員進(jìn)行大量的人機(jī)交互。故障定位是調(diào)試過程中最為耗時(shí)和費(fèi) 力的活動(dòng)之一,它通過審查源程序語義和結(jié)構(gòu),結(jié)合分析程序的執(zhí)行過程及結(jié)果,輔助開發(fā) 人員找到軟件故障位置。研宄人員提出了一系列自動(dòng)化的故障定位方法,這些方法可分為 靜態(tài)方法和動(dòng)態(tài)方法。靜態(tài)方法利用程序的依賴關(guān)系、類型約束等信息來分析程序中的可 能故障點(diǎn);動(dòng)態(tài)方法則通過測試程序,跟蹤程序的執(zhí)行軌跡和覆蓋信息來進(jìn)行故障定位。高 效地定位軟件故障可減輕程序員手工排查程序語句的工作量,提升調(diào)試速度和效率。
[0003] 錯(cuò)誤定位的2個(gè)階段:1、找出值得被懷疑的語句2、從這些語句中再確定是否真正 是錯(cuò)誤語句。由第一階段:高懷疑度語句需要先于低懷疑度語句被檢查。由第二階段:我們 假定只要被程序員檢查的有懷疑的語句都能找出其中的錯(cuò)誤。錯(cuò)誤定位方法繁多,但是歸 根結(jié)底可以分為3種:
[0004] 1、基于行為特征對比的方法。2、基礎(chǔ)程序狀態(tài)修改的方法。3、基于程序依賴關(guān)系 的方法。
[0005] 程序行為特征,也被稱為程序頻譜(program spectra),是程序執(zhí)行特征的統(tǒng)計(jì)信 息。
[0006] 基礎(chǔ)程序狀態(tài)修改的方法通常在程序執(zhí)行時(shí),獲得并修改程序的狀態(tài),然后觀察 修改后的測試結(jié)果(成功/失?。?,進(jìn)而找出對測試結(jié)果有影響的語句。
[0007] 基于程序依賴關(guān)系的方法,例如符號執(zhí)行,與執(zhí)行實(shí)際的目標(biāo)程序不同它僅依賴 程序的源代碼,以符號代替具體變量的值作為程序的輸入數(shù)據(jù)。這種方法側(cè)重于靜態(tài)分析。 而切片等方法則側(cè)重于使用程序的動(dòng)態(tài)依賴關(guān)系給出值得懷疑的語句的集合,這個(gè)集合除 了包含錯(cuò)誤語句外,還提供了一個(gè)供程序員理解的調(diào)試上下文。但通常這類集合也會(huì)包含 一些冗余的語句,需要使用一些技術(shù)來化簡集合。

【發(fā)明內(nèi)容】

[0008] 技術(shù)問題:本發(fā)明的目的是提供一種基于動(dòng)態(tài)切片的輕量級錯(cuò)誤定位技術(shù)實(shí)現(xiàn)方 法,目前現(xiàn)有的錯(cuò)誤定位技術(shù)主要從靜態(tài)、動(dòng)態(tài)和統(tǒng)計(jì)這3個(gè)方面單獨(dú)分析,錯(cuò)位定位效率 往往不能達(dá)到實(shí)際的要求。本發(fā)明利用程序切片中的動(dòng)態(tài)切片方法,在取得程序切片之后 先進(jìn)行初步的切片分析,然后將結(jié)果送給輕量級錯(cuò)誤定位模型,進(jìn)行最后一步的統(tǒng)計(jì)分析, 最后得出可疑度語句塊的排名,并且同時(shí)保證了高精度和低誤判率。
[0009] 技術(shù)方案:本發(fā)明結(jié)合約束求解器,動(dòng)態(tài)生成測試用例,再對程序進(jìn)行動(dòng)態(tài)切片和 斷點(diǎn)分析,利用切片后的結(jié)果,進(jìn)行可疑度排序,最終提高錯(cuò)誤定位的效率。
[0010] 該發(fā)明由5個(gè)模塊組成,其中,最頂層是測試用例生成模塊,主要負(fù)責(zé)測試用例的 自動(dòng)化生成。中間是程序狀態(tài)修改模塊,主要負(fù)責(zé)動(dòng)態(tài)的改變謂詞的結(jié)果,以產(chǎn)生值得進(jìn)行 切片的關(guān)鍵謂詞。其次是斷點(diǎn)分析模塊、切片分析模塊和可疑度統(tǒng)計(jì)模塊。其中,斷點(diǎn)分析 模塊主要負(fù)責(zé)分析程序崩潰的情況,對無法正常執(zhí)行結(jié)束的程序進(jìn)行分析,決定了這個(gè)發(fā) 明的健壯性。切片分析模塊主要是對依賴圖進(jìn)行動(dòng)態(tài)切片,切片之后的結(jié)果以執(zhí)行了程序 哪幾行的形式反饋給用戶,用戶根據(jù)切片結(jié)果,對其進(jìn)行初步分析。可疑度統(tǒng)計(jì)模塊主要負(fù) 責(zé)計(jì)算每條可疑語句塊的可疑度。
[0011] 有益效果:本發(fā)明在對源程序進(jìn)行切片時(shí),并非漫無目的的尋找切片興趣點(diǎn),而 是,通過先尋找程序中存在的謂詞,對其結(jié)果進(jìn)行強(qiáng)制改變,從而使程序的執(zhí)行結(jié)果發(fā)生變 化,從而產(chǎn)生關(guān)鍵謂詞,再對關(guān)鍵謂詞進(jìn)行切片,大大減少了切片的工作量。其次,本發(fā)明對 程序不包含謂詞的情況也作了詳細(xì)的討論,并提出了一種2分?jǐn)帱c(diǎn)算法,精確的計(jì)算出程 序崩潰時(shí)的切片語句,從而使得本發(fā)明適用于所有的程序。
[0012] 精度高:基于程序頻譜的輕量級錯(cuò)誤定位方法,往往不考慮程序執(zhí)行的動(dòng)態(tài)依賴 關(guān)系,所以導(dǎo)致了最后的可疑度語句塊過于龐大。本發(fā)明優(yōu)先對源程序進(jìn)行切片,將有依賴 關(guān)系包括控制依賴和數(shù)據(jù)依賴的語句塊篩選了出來,然后再進(jìn)行輕量級分析的時(shí)候就不會(huì) 產(chǎn)生太多的語句塊。
【附圖說明】
[0013] 圖1是本發(fā)明方案的總體實(shí)施流程,包括5大模塊,測試用例生成模塊,程序狀態(tài) 修改模塊,斷點(diǎn)分析模塊,切片分析模塊和可疑度分析模塊。
[0014] 圖2是本發(fā)明的測試用例生成模塊,利用約束求解器生成測試用例并對其進(jìn)行分 類,最后送入程序狀態(tài)修改模塊。
[0015]圖3是本發(fā)明的程序狀態(tài)修改模塊,主要工作是進(jìn)行謂詞分析和將部分沒有謂詞 的程序送入斷點(diǎn)分析模塊。
[0016]圖4是本發(fā)明的斷點(diǎn)分析模塊,此模塊負(fù)責(zé)處理程序崩潰的情況。
[0017] 圖5是本發(fā)明的切片分析模塊,負(fù)責(zé)生成源程序的切片結(jié)果,切片結(jié)果為執(zhí)行過 哪些和被切語句有關(guān)的語句。
[0018]圖6是本發(fā)明的可疑度分析模塊,主要負(fù)責(zé)計(jì)算所有具有可疑度的語句的具體的 可疑度,此可疑度將直接輔助程序員進(jìn)行錯(cuò)誤定位。
【具體實(shí)施方式】
[0019] 1.程序狀態(tài)修改
[0020] 1. 1、有謂詞情況
[0021] (1)讀取源程序,每次讀取一行,用正則表達(dá)式進(jìn)行謂詞匹配,并記錄匹配到的謂 詞。若程序無謂詞,則跳轉(zhuǎn)到步驟1.2。
[0022] (2)修改謂詞的取值。修改后有兩種情況:第一種,修改謂詞后程序的執(zhí)行狀態(tài)沒 發(fā)生改變,此時(shí)繼續(xù)查找下一個(gè)謂詞;第二種,程序的執(zhí)行狀態(tài)發(fā)生改變,這時(shí)記錄下使得 程序狀態(tài)發(fā)生改變的謂詞,取得所有謂詞后,執(zhí)行步驟2。
[0023] 1. 2、無謂詞情況:對于錯(cuò)誤的測試用例,程序的結(jié)果有兩種,第一種是產(chǎn)生錯(cuò)誤的 輸出結(jié)果,第二是程序無法正常執(zhí)行結(jié)束,中途崩潰報(bào)告異常。
[0024] (1)對于第一種,直接從錯(cuò)誤的輸出結(jié)果的變量開始進(jìn)行后向切片,得到影響該變 量的語句塊。
[0025] (2)對于第二種,使用二分法設(shè)置斷點(diǎn),其基本算法是:
【主權(quán)項(xiàng)】
1. 一種基于動(dòng)態(tài)切片的輕量級錯(cuò)誤定位方法,其特征在于該方法由5個(gè)模塊組成,其 中, 最頂層是測試用例生成模塊,主要負(fù)責(zé)測試用例的自動(dòng)化生成。 第二層是程序狀態(tài)修改模塊,主要負(fù)責(zé)動(dòng)態(tài)地改變謂詞的結(jié)果,以產(chǎn)生值得進(jìn)行切片 的關(guān)鍵謂詞。 其余模塊分別是斷點(diǎn)分析模塊、切片分析模塊和可疑度統(tǒng)計(jì)模塊;其中,斷點(diǎn)分析模塊 主要負(fù)責(zé)分析程序崩潰的情況,對內(nèi)存泄漏和堆棧溢出情況下無法正常執(zhí)行結(jié)束的程序進(jìn) 行分析;切片分析模塊主要是對依賴圖進(jìn)行動(dòng)態(tài)切片,切片之后的結(jié)果以執(zhí)行了程序哪幾 行的形式反饋給用戶,用戶根據(jù)切片結(jié)果,對其進(jìn)行初步分析;可疑度統(tǒng)計(jì)模塊主要負(fù)責(zé)計(jì) 算每條可疑語句塊的可疑度。 在對源程序進(jìn)行切片時(shí),并非漫無目的的尋找切片興趣點(diǎn),而是,通過先尋找程序中存 在的謂詞,對其結(jié)果進(jìn)行強(qiáng)制改變,從而使程序的執(zhí)行結(jié)果發(fā)生變化,產(chǎn)生關(guān)鍵謂詞,再對 關(guān)鍵謂詞進(jìn)行切片,其次,針對程序不包含謂詞的情況提出了一種二分?jǐn)帱c(diǎn)算法,精確的計(jì) 算出程序崩潰的時(shí)候的切片語句,該方法的具體步驟如下:
1.程序狀態(tài)修改 1. 1、有謂詞情況 1) 讀取源程序,每次讀取一行,用正則表達(dá)式進(jìn)行謂詞匹配,并記錄匹配到的謂詞,若 程序無謂詞,則跳轉(zhuǎn)到步驟1. 2 ; 2) 修改謂詞的取值,修改后有兩種情況:第一種,修改謂詞后程序的執(zhí)行狀態(tài)沒發(fā)生 改變,此時(shí)繼續(xù)查找下一個(gè)謂詞;第二種,程序的執(zhí)行狀態(tài)發(fā)生改變,這時(shí)記錄下使得程序 狀態(tài)發(fā)生改變的謂詞,取得所有謂詞后,執(zhí)行步驟2 ; 1. 2、無謂詞情況:對于錯(cuò)誤的測試用例,程序的結(jié)果有兩種,第一種是產(chǎn)生錯(cuò)誤的輸出 結(jié)果,第二種是程序無法正常執(zhí)行結(jié)束,中途程序報(bào)錯(cuò)并崩潰直接退出執(zhí)行,報(bào)告異常; 1) 對于第一種,直接從錯(cuò)誤的輸出結(jié)果的變量開始進(jìn)行后向切片,得到影響該變量的 語句塊; 2) 對于第二種,使用二分法設(shè)置斷點(diǎn); 3) 在得到程序執(zhí)行結(jié)束后的最后記錄的斷點(diǎn)和此斷點(diǎn)的前一個(gè)記錄的斷點(diǎn)之后,取兩 者之間的最小值,在最小的斷點(diǎn)之后插入一條程序強(qiáng)制停止執(zhí)行的語句,然后再對其進(jìn)行 切片; 4) 得到程序的切片結(jié)果之后,將其加上1. 2. 3步驟得到的兩個(gè)斷點(diǎn)之間的所有語句, 并記錄為新的切片結(jié)果,送入下一個(gè)模塊分析; 2、 切片分析: 1) 運(yùn)行源程序產(chǎn)生源程序的src.be文件; 2) 產(chǎn)生每個(gè)基本塊的追蹤代碼; 3) 鏈接動(dòng)態(tài)庫產(chǎn)生可執(zhí)行exe文件; 4) 運(yùn)行后綴名為.trace,exe的可執(zhí)行文件,產(chǎn)生切片結(jié)果; 5) 對錯(cuò)誤的測試用例的切片結(jié)果取交集Uf; 6) 對成功的測試用例的切片結(jié)果取交集Us; 7) 取叫和UJ勺交集Uf+s;再計(jì)算UFn=Uf-Uf+s; 8)將Uf+S中的語句設(shè)其可疑度為0;將(UF1)U(UF2) ? ? *U(UFn)=叫中的語句設(shè)其可 疑度為最高100%,可疑度最高的語句將被優(yōu)先檢查,剩下的未被檢查的語句uf,=Uf-叫將 被送到可疑度分析模塊進(jìn)行下一步分析; 3、 可疑度分析: 1) 可疑度分析矩陣第一列為Uf,的所有語句,這些語句都是切片處理后的語句,相比較 和直接使用統(tǒng)計(jì)分析的方法有很大的簡化度; 2) 可疑度分析矩陣第一行為所有執(zhí)行的測試用例; 3) 可疑度分析矩陣的每個(gè)元素為執(zhí)行這個(gè)測試用例的時(shí)候是否執(zhí)行過這條語句,1為 執(zhí)行,〇為未執(zhí)行; 4) 對于每個(gè)測試用例的每條語句,計(jì)算執(zhí)行了這個(gè)語句的失敗和成功的測試用例的個(gè) 數(shù),f和s; 5)計(jì)算f和s占總失敗測試用例的個(gè)數(shù)的比值fail%和占總成功測試用例的比值 success%; 6) 最后計(jì)算每條語句的可疑度,公式如下:
4、 錯(cuò)誤定位 根據(jù)每條語句的可疑度,由高到低,分別檢查每條語句,檢查到錯(cuò)誤語句后記錄下出錯(cuò) 語句。
【專利摘要】本發(fā)明是一種基于動(dòng)態(tài)切片的輕量級錯(cuò)誤定位方法,最頂層是測試用例生成模塊,主要負(fù)責(zé)測試用例的自動(dòng)化生成。第二層是程序狀態(tài)修改模塊,主要負(fù)責(zé)動(dòng)態(tài)地改變謂詞的結(jié)果,以產(chǎn)生值得進(jìn)行切片的關(guān)鍵謂詞。其余模塊分別是斷點(diǎn)分析模塊、切片分析模塊和可疑度統(tǒng)計(jì)模塊;其中,斷點(diǎn)分析模塊主要負(fù)責(zé)分析程序崩潰的情況,對內(nèi)存泄漏和堆棧溢出情況下無法正常執(zhí)行結(jié)束的程序進(jìn)行分析;切片分析模塊主要是對依賴圖進(jìn)行動(dòng)態(tài)切片,切片之后的結(jié)果以執(zhí)行了程序哪幾行的形式反饋給用戶,用戶根據(jù)切片結(jié)果,對其進(jìn)行初步分析;可疑度統(tǒng)計(jì)模塊主要負(fù)責(zé)計(jì)算每條可疑語句塊的可疑度。大大減少了切片的工作量。精確的計(jì)算出程序崩潰時(shí)候的切片語句。
【IPC分類】G06F11-36
【公開號】CN104572474
【申請?zhí)枴緾N201510050259
【發(fā)明人】張迎周, 滕慶亞, 馬鳳嬌, 居友道, 徐曼青, 高海燕, 徐晨晨, 閆麗
【申請人】南京郵電大學(xué)
【公開日】2015年4月29日
【申請日】2015年1月30日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
阿鲁科尔沁旗| 南郑县| 保康县| 双鸭山市| 固镇县| 屯门区| 郁南县| 哈尔滨市| 瑞金市| 马边| 北宁市| 铅山县| 淮阳县| 濮阳县| 竹溪县| 鲁山县| 全南县| 镶黄旗| 双鸭山市| 志丹县| 缙云县| 霍林郭勒市| 延安市| 大名县| 修武县| 沅陵县| 蕉岭县| 中阳县| 台前县| 嘉定区| 东源县| 信阳市| 镇平县| 泰兴市| 德庆县| 太仓市| 乌兰察布市| 陆川县| 屯门区| 高台县| 贡山|