999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于變異技術的軟件故障修復方法研究

2015-06-11 13:23:05曹克浩
今日湖北·下旬刊 2015年12期

曹克浩

摘 要 程序的可維護性和可靠性已經成為軟件產業發展的突出難題,如何快速鎖定故障,如何有效修復軟件已經成為當前軟件工程實踐中最重要的活動之一。基于變異的程序故障修復技術,在闡述C程序表達式故障的方法中,利用變異修復機制來輔助修復程序故障,并通過實例故障來驗證方法的有效性。

關鍵詞 程序軟件 變異技術 故障定位 修復方法

計算機技術的發展,特別是軟件技術的廣泛應用,越來越多的程序在出現故障后帶來了更多維護性難題。軟件測試技術的發展,主要針對軟件程序運行可靠性問題,從程序故障的鎖定及修復中來提升軟件質量。美國標準與技術研究所NIST調查顯示,軟件程序故障修復的成本每年達到595億美元,約占總GDP的0.6%。程序故障修復作為軟件工程實踐中的重要內容,在軟件修復程序中耗時、費力,且完全依賴于軟件開發人員的專業知識和行業經驗。這種現象不僅加長了軟件開發周期,也阻礙了軟件產業的快速發展。因此,積極從軟件程序修復技術及理論研究中,就軟件行業程序故障修復問題進行探討,并從軟件故障修復實踐中來開發自動化修復工具,以改善軟件程序故障修復的缺陷。

一、當前軟件程序故障修復現狀及方法研究

從軟件技術開發實踐來看,軟件程序故障是軟件工程的重要內容,當前軟件開發人員在面臨程序故障修復時,多以手工方式來進行故障定位和修復,使得程序開發周期較長,成本較高。國內外對軟件故障修復理論的研究也取得了一定進展,特別是在內存管理、數據結構修復及特定數據類型的故障提示中也取得一定成績。Dallmeier等人通過對軟件運行與失敗的差異分析,利用回歸測試用例來減少程序修復后產生的新問題;Perkins等人通過不變式監控程序的方法,就匯編級程序錯誤進行自動檢測和修復。然而,這兩種方法主要針對條件表達式或監控器軟件相關的錯誤修復。Arcuri等人首次以遺傳編程自動修復方法,根據程序規模的擴大,利用遺傳編程搜索方法來進行修復,較為適宜單個函數的修復;Weimer等人為了縮小進化算子的搜索空間,采用抽象語法樹先對程序進行抽象,再通過基于遺傳的編程方法就C語言程序和匯編語言程序進行修復。我國學者何加浪等人在Weimer研究基礎上,利用不變量約束來對搜索空間進行簡化,并針對測試過程難以覆蓋所有功能需求,提出成功測試用例學習的不變量約束來解決該難題;成功測試用例與失敗測試用例所執行的路徑不同,對于程序故障及修復方法也不一致,反而限制了程序修復的類型;另外,該方法在修復過程中還產生大量無關冗余的代碼轉換;遺傳算法本身的非穩定性,在程序本身的變化中也存在適應性問題。

二、基于變異技術的軟件故障修復原理及步驟

(1)基于變異技術的軟件故障修復原理。傳統基于變異的測試技術是對已知程序,根據變異算子來得到一批程序故障變異體,利用這些變異體來對測試用例集T進行測試。而新的基于變異技術的程序故障修復技術,則是將之作為故障程序,根據變異算子來選擇故障程序的變異,從而得到一批變異體,利用已知的測試用例集來對這些變異體進行驗證,以得到程序故障修復目標。在制定變異體是否修復軟件故障時,首先需要定義變異體的標準,即對于變異體執行完成后的輸出結果與期望不一致。任何一個被放棄的變異體都不能是故障程序的正確修復版本,原因是這些變異體曾導致測試用例執行失敗。相反,如果一個變異體順利通過測試用例,說明本變異體被故障程序進行正確修復。通過對這些潛在修復版本的分析,可以幫助程序開發人員得到期望的程序。

(2)故障程序修復實施步驟。基于變異技術的故障程序修復方法,其具體實施步驟表示如下:一是要確定故障類型,利用程序變異技術對某類特定的程序故障進行測試,在修復之前,首先要明確變異修復程序的故障類型。程序設計人員在對程序常見故障類型進行分析,并從發生概率高且危害大的故障類型進行修復,有助于提升軟件的修復效果,降低軟件開發成本。二是選擇合適的變異算子,對于變異算子是基于變異技術的故障修復方法,也是產生變異體的基礎。通過導入多元化變異算子,能夠從不同類型的故障測試中進行修復,最大化的提升變異體的生成。程序故障修復方法應該能滿足不同類型的故障測試,高效的修復方法需要變異修復的代價盡可能小。因此,在對變異算子的設計上,要從執行效率和變異體修復效果上來針對不同程序故障類型進行修復。三是設定變異修復停止條件。在進行變異技術故障修復執行過程中,對于某些特定的程序故障,并不是所有程序故障都能夠得到修復,只有當產生并檢查一定數量的變異體后,如果找不到對應的修復版本的變異體,則會提示:繼續還是停止;如果選擇繼續,則進行再次修復版本變異體的查找,否則直到找到變異體被檢查出,修復程序并不停止。通常情況下,對于修復對象為大型程序軟件時,對于變異體的數量要求也較大,如果選擇繼續則會浪費系統資源,因此需要設置一個停止條件。三是變異故障程序,對于所設計的變異算子本身,由于設置的變異修復停止條件不同,對故障程序進行變異產生變異體時,可以先利用故障定位技術來對故障程序進行明確,再利用故障檢測結果來選擇修復程序故障,從而降低修復代價。四是確定修復變異體版本,并通過變異故障程序返回到產生新的變異體,以檢查和確定故障程序的潛在修復版本。

三、C語言程序故障修復方法

(1)C語言程序故障類型劃分。C語言軟件開發常用語言,在對C語言程序進行故障修復測試中,需要對所提供的故障系統類型進行分析,總的來說歸結為四類:即內存故障,以內存資源釋放、分配錯誤、函數返回值錯誤、非法指針應用錯誤等;條件表達式錯誤,通常表現在If、While、For結構開頭的條件表達式,其錯誤主要與關系運算符、邏輯運算符及邊界條件故障有關;變量賦值錯誤,其故障主要發生在變量賦值語句中,如某些運算符或邊界賦值錯誤而引發的變量賦值故障;語句冗余或缺失類錯誤,隨著程序工作流程和設計流程的差異而導致程序執行失敗。

(2)C語言變異算子的設計。變異算子是程序故障修復的關鍵,也是基于變異測試技術最常用的程序變異體。變異算子在設計上主要從算術運算符的變異、關系運算符的變異,以及邏輯運算符的變異中來完成。針對程序中常用的運算符,能夠從運算符錯誤引起的變量賦值故障或條件表達式故障中,對包含算術、關系、邏輯運算符的程序語言進行測試。針對程序設計中的條件表達式、變量賦值故障,以及語句冗余或賦值缺失等故障,從變異算子的設計上,能夠實現對每一類特殊故障類型的修復,如多一些子類型故障進行修復,就需要從程序發生錯誤的概率中進行針對性設計,優先為故障發生率高的程序設計相應的變異算子。

(3)變異算子處理方法。針對不同類型的變異算子,在進行變異故障修復中,對于運算符變異,從常用運算符如算術運算符、關系運算符、邏輯運算符、自增/自減運算符、位操作符、賦值運算符等,利用替換運算符進行變異,能夠修復的故障類型主要有變量賦值故障和條件表達式故障。如對于條件表達式中的變異,針對可疑程序語句的條件表達式,從整體取反進行變異,或者通過整體加1或減1來進行變異;對于邊界值變異,針對可疑語句中的For循環,通過初始量增1或減1進行變異;對于初始化變量賦值偏差錯誤,可疑通過賦值方法進行修復;對于常量浮點變異,針對可疑語句進行變異成等值的浮點型常量,如float a=1/2;假設程序對a的期望值為0.5,根據C語言語法,可疑從分子分母整型常量賦值中來引發變量賦值故障,以完成對錯誤的修復。對于類型擴展變異,通過對可疑程序語句中的float、int等關鍵字,將其變異為高一級類型,以修復由精度缺失帶來的變量賦值故障。

(4)變量修復停止條件。從程序故障修復方法中,必須要對不能修復的故障類型,以及找不到潛在修復版本的情況進行終止修復,這就需要從變異修復中設定某一停止條件。如當變異修復所使用的代價高于某一限值時,仍未找到潛在修復版本的變異體就會返回程序終止。簡言之,對于某一變異體從產生到執行完所用的代價為e,若在找到潛在修復版本時需要檢查n個變異體,則此次修復代價為;可見,對于變異修復代價主要取決于n值大小,也就是修復過程所檢查的變異體數量。

(5)潛在修復版本的確定。基于變異技術的程序故障修復,是對程序在執行過程中對變異體進行所有測試用例后還活著,則說明該變異體為潛在修復版本。同樣,在變異修復程序設計上,還應該至少包括一個失敗測試用例,與潛在修復版本具有不同的輸出結果。基于變異技術的故障修復方法,并沒有對所有測試用例的數量進行限制,當每次測試用例集中的測試用例數量過多時,則會帶來更大的驗證變異體的代價。因此,可以對測試用例集的選取進行確定,以避免變異體修復所花費的代價過多。程序設計人員可以從測試用例集的選擇上,先對測試用例集進行優化,再進行故障程序變異修復。

參考文獻:

[1]陳翔,顧慶.變異測試:原理、優化和應用[J].計算機科學與探索, 2012(12).

[2]周改云,張國平,呂瓊帥,黎遠松.利用智能控制流方法的嵌入式軟件故障檢測[J].電子技術應用,2015(10).

(作者單位:河南財政稅務高等專科學校)

主站蜘蛛池模板: 日本人妻一区二区三区不卡影院| 9丨情侣偷在线精品国产| 久久精品中文字幕免费| 人人妻人人澡人人爽欧美一区| 亚洲第一视频网站| 亚洲欧美精品在线| 91最新精品视频发布页| 欧美啪啪视频免码| 91精品伊人久久大香线蕉| 91小视频版在线观看www| 香蕉视频在线观看www| 精品国产中文一级毛片在线看| 国产成人8x视频一区二区| 不卡网亚洲无码| 亚洲色图另类| 亚洲AV无码不卡无码 | 成人免费一级片| 亚洲丝袜中文字幕| 成年女人a毛片免费视频| 国产内射在线观看| 国产成人精品一区二区秒拍1o| 小说 亚洲 无码 精品| 成人精品视频一区二区在线 | av无码久久精品| 国产福利不卡视频| 亚洲天堂视频在线免费观看| 丁香婷婷久久| 成人亚洲天堂| 美女啪啪无遮挡| 日韩国产无码一区| 欧美一区国产| 色婷婷电影网| 日韩欧美色综合| 成年人国产网站| 国产美女久久久久不卡| 中文字幕久久亚洲一区| 国产激爽大片在线播放| 91亚洲视频下载| 亚洲天堂网站在线| 91久久国产综合精品| 熟妇无码人妻| 亚洲欧美综合在线观看| 另类欧美日韩| 国产va在线观看免费| 国产Av无码精品色午夜| 欧美午夜网站| www亚洲天堂| 国产极品美女在线播放| 国产精品美人久久久久久AV| 日日拍夜夜嗷嗷叫国产| 久久精品欧美一区二区| 久久这里只有精品66| 欧美三级日韩三级| 久久不卡国产精品无码| 色综合成人| 国产精品亚洲精品爽爽| 大陆精大陆国产国语精品1024| 日韩不卡高清视频| 国产在线拍偷自揄观看视频网站| 视频国产精品丝袜第一页| 国产福利拍拍拍| 成人福利视频网| 国产福利拍拍拍| 欧美无专区| 九色在线观看视频| 亚洲精品图区| 人人澡人人爽欧美一区| 亚洲精品图区| 九九九久久国产精品| hezyo加勒比一区二区三区| 一级全免费视频播放| 国产簧片免费在线播放| 国产成人综合久久精品尤物| www.youjizz.com久久| 波多野结衣AV无码久久一区| 欧美a在线看| 日韩无码真实干出血视频| 成人在线天堂| 香蕉eeww99国产在线观看| 国产不卡一级毛片视频| 欧美精品高清| 999国产精品永久免费视频精品久久|