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

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

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

曹克浩

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

關(guān)鍵詞 程序軟件 變異技術(shù) 故障定位 修復方法

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

一、當前軟件程序故障修復現(xiàn)狀及方法研究

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

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

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

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

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

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

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

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

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

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

參考文獻:

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

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

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

主站蜘蛛池模板: 亚洲免费三区| 亚洲最新在线| 亚洲欧美极品| 欧美成人h精品网站| 很黄的网站在线观看| 日本a∨在线观看| 朝桐光一区二区| 国产欧美日韩视频怡春院| 国产麻豆另类AV| 久久鸭综合久久国产| 亚洲欧美日韩精品专区| 国产精品色婷婷在线观看| 日韩专区欧美| 色婷婷综合激情视频免费看| 久久一本日韩精品中文字幕屁孩| 精品国产一区二区三区在线观看| 亚洲黄色成人| 国产99视频在线| 91网站国产| 一区二区三区成人| 午夜限制老子影院888| 久草国产在线观看| 国模私拍一区二区| 精品一区二区三区波多野结衣| 欧美、日韩、国产综合一区| 2022国产91精品久久久久久| 欧美成人A视频| 亚洲天堂2014| 强奷白丝美女在线观看| 日韩AV无码一区| 免费精品一区二区h| 性色一区| 91精品国产麻豆国产自产在线| 青青青草国产| 青青青亚洲精品国产| 久草视频一区| 99久久国产综合精品女同 | 亚洲综合色区在线播放2019| 成人精品亚洲| www.狠狠| 热久久综合这里只有精品电影| 精品福利视频网| 69国产精品视频免费| 久草视频精品| 9丨情侣偷在线精品国产| 91毛片网| 青青热久免费精品视频6| 91高清在线视频| 成人在线天堂| 免费视频在线2021入口| 欧美成人午夜视频免看| 国产农村精品一级毛片视频| 日韩在线影院| 中文无码精品A∨在线观看不卡| 欧美一道本| 亚洲永久视频| a在线观看免费| 精品少妇人妻无码久久| 中文字幕资源站| 欧美成人一级| 激情网址在线观看| 国产成人精品视频一区视频二区| 欧美一级高清免费a| 一级毛片网| 亚洲视频免费播放| 国产精品自拍露脸视频| 国产精品免费入口视频| 欧美啪啪网| 久久99国产综合精品女同| 视频一区亚洲| 久久国产高清视频| 久久情精品国产品免费| 亚洲床戏一区| 国产成人免费手机在线观看视频| 国产女主播一区| 性做久久久久久久免费看| 色哟哟精品无码网站在线播放视频| 91欧美在线| 免费一级成人毛片| 国产人在线成免费视频| 美女被操91视频| www.亚洲一区二区三区|