




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、動態(tài)程序分析方法與工具目錄動態(tài)程序分析方法與工具11.前言21.1研究背景21.2基本概念31.3研究價值和意義41.4研究路線42.研究方法42.1 檢索方案42.2 系統(tǒng)文獻綜述法62.3 文獻計量法73. 文獻計量分析93.1 年限分析93.2 期刊分布93.3 載文比分析103.4 期刊類型分布113.5 作者分析113.6 關(guān)鍵詞分析134.動態(tài)程序分析144.1 動態(tài)程序分析方法144.2 動態(tài)程序分析工具264.3 動態(tài)程序分析在軟件測試中的應(yīng)用265.未來研究展望265.1 錯誤定位新理論和新技術(shù)的引入與集成265.2 程序算法檢測新的發(fā)展形態(tài)275.3 軟件運行平臺的新發(fā)展2
2、76. 結(jié)束語27參考文獻27摘要:關(guān)鍵字:程序分析、動態(tài)程序分析、文獻計量方法1. 前言1.1 研究背景軟件是一種十分特殊的人工制品:它是人類“智力活動”的產(chǎn)物,是對客觀事物的虛擬反應(yīng),是知識的固化和凝練1。迄今為止,軟件已有了50多年發(fā)展歷史,但對于一個給定的軟件,我們目前還不能完全了解它的特性。軟件分析就是以軟件特性為關(guān)注點的研究領(lǐng)域。經(jīng)過這么多年的發(fā)展,目前軟件生命周期中的許多活動(分析,設(shè)計,實現(xiàn),測試,部署,維護等)都離不開分析技術(shù)。盡管軟件分析的能力有限,但它仍然是軟件領(lǐng)域十分有用的技術(shù)。下面將談到兩個概念,“驗證”和“確認”。“驗證”是要回答“軟件制品是否與軟件需求規(guī)約一致”的
3、問題,而“確認”則是回答“軟件的特性是否符合用戶需求”。在英文中,“驗證”是“Do the thing right”,而用“Do the right thing”來解釋“確認”。驗證就是所謂的軟件分析技術(shù),而確認則是軟件測試技術(shù)。軟件分析包括對文檔(需求規(guī)約、設(shè)計文檔、代碼注釋等)的分析、對運行程序的分析,等等。而程序分析中,根據(jù)“是否需要運行程序”為準則,可以將程序分析技術(shù)劃分為靜態(tài)分析技術(shù)和動態(tài)分析技術(shù)兩大類,本文主要嘗試對動態(tài)程序分析涉及的主要方法和工具進行總結(jié)和歸類,并討論動態(tài)程序分析技術(shù)在軟件測試中的應(yīng)用和發(fā)展。本文總共分為6部分,第一部分是前言,主要對研究背景、涉及到的一些基本概念
4、、研究的價值和意義、研究路線等進行了說明。第二部分主要闡述了本文所涉及到的兩種研究方法:文獻計量方法和系統(tǒng)文獻綜述方法。第三部分是根據(jù)文獻計量方法的策略,對檢索到的文獻進行具體的分析。第四部分是本文的核心內(nèi)容,主要總結(jié)和歸納現(xiàn)有的動態(tài)程序分析技術(shù)方法和工具,并討論了動態(tài)程序分析方法和工具在軟件測試中的應(yīng)用。第五部分結(jié)合本文所有信息對動態(tài)程序分析技術(shù)的發(fā)展趨勢進行展望。最后一部分是結(jié)束語,歸納總結(jié)了本文的研究思想和路線。1.2 基本概念1) 軟件分析軟件分析是對軟件進行人工或者自動分析,以驗證、確認或發(fā)現(xiàn)軟件性質(zhì)(或規(guī)約、約束)的過程或活動。包括對文檔(需求規(guī)約、設(shè)計文檔、代碼注釋等)的分析、對
5、運行程序的分析,等等。12) 程序分析程序分析是指對計算機程序行為進行自動分析的過程,主要包括靜態(tài)分析和動態(tài)分析兩種策略,它是以某種語言書寫的程序為對象,對其內(nèi)部的運作流程進行分析。3) 動態(tài)程序分析動態(tài)程序分析是通過運行具體程序并獲取程序的輸出或者內(nèi)部狀態(tài)等信息來驗證或發(fā)現(xiàn)軟件性質(zhì)的過程。4) 靜態(tài)程序分析靜態(tài)程序分析是指在不運行軟件前提下進行的分析過程。5) 軟件測試:軟件測試是一組活動,執(zhí)行這組活動的目的是發(fā)現(xiàn)程序中可能存在的潛在錯誤,驗證在指定條件下程序運行的情況,方法則是給出指定的輸入和期望的結(jié)果,觀察實際的運行結(jié)果和期望結(jié)果之間的差異,從而對軟件的執(zhí)行正確程度做出判斷。(IEEE標
6、準610.12-1990中,對軟件測試是這樣定義的:軟件測試是在指定的條件下操作測試系統(tǒng)或組件,觀察和記錄結(jié)果,并對測試系統(tǒng)或組件的不同方面做出評估的過程。)6) 文獻計量方法文獻計量方法是一種以各種文獻外部特征為研究對象的量化分析方法,主要用于科學(xué)文獻的研究,能夠揭示各門學(xué)科的發(fā)展水平。7) 系統(tǒng)文獻綜述方法系統(tǒng)文獻綜述(systematic literature review),簡稱系統(tǒng)綜述,是主要在醫(yī)學(xué)領(lǐng)域和社會學(xué)研究領(lǐng)域針對某一個研究性問題開展的基于文獻的系統(tǒng)化綜述方法,并于2004年引入軟件工程領(lǐng)域.系統(tǒng)文獻綜述的過程包含3個主要的階段: 制定綜述方案、開展綜述、形成綜述報告。1.3
7、 研究價值和意義為了保證軟件開發(fā)的質(zhì)量,業(yè)界在軟件測試和軟件分析階段投入了大量的人力物力,而動態(tài)程序分析在軟件分析中扮演著極其重要的角色。本文對動態(tài)程序方法和工具進行了分析與總結(jié),并討論了其在軟件測試當中的應(yīng)用,不僅豐富了自己在該領(lǐng)域中的知識,增長了見聞,同時有利于人們在分析軟件特定的質(zhì)量屬性時,選取合適的技術(shù)和工具。1.4 研究路線首先提出該領(lǐng)域的幾個需要最終回答的問題,然后確定關(guān)鍵字以及檢索策略,接著對檢索得到的論文進行篩選,然后對篩選過后剩下的論文進行數(shù)據(jù)提取和分析,最后形成報告。同時,我們借助EndNote文獻管理工具對我們檢索到的文獻進行管理,方便我們閱讀和使用。2. 研究方法2.1
8、 檢索方案2.1.1 研究問題通過該系統(tǒng)評價最終所要回答的問題,同時可能需要進一步明確所感興趣的研究方法(intervention)和研究結(jié)果(outcome)等其他限定條件. 1) 現(xiàn)有程序分析的方法和工具有哪些?2) 動態(tài)程序分析的方法和工具有哪些? 3) 動態(tài)程序分析方法在軟件測試中的應(yīng)用有哪些? 4) 動態(tài)程序分析中有哪些未解決的問題?2.1.2 搜索策略根據(jù)所要研究的問題和關(guān)鍵詞確定查詢語句,并根據(jù)查詢結(jié)果,確定是否需要進行二級查詢(比如引入新的關(guān)鍵詞或者添加新的論文集和期刊)。 確定關(guān)鍵詞:Program Analysis , Software Analysis, Dynamic
9、Program Analysis, Software Testing.邏輯表達式:(dynamic program analysis) AND (method OR tool);(software analysis OR program analysis) AND (method OR tool) ;(software analysis OR program analysis) AND (software testing); dynamic program analysis;(software analysis) OR (program analysis);運用的搜索引擎為Google, Go
10、ogle Scholar, IEEE Xplore;另外在四川大學(xué)圖書館IEEE Digital Library,CNKI數(shù)據(jù)庫,萬方數(shù)據(jù)庫,學(xué)位論文庫、期刊EI和SCI、國際會議論文集中進行檢索,檢索年限為2004年(包括2004)至2013年。文獻資料收集來源一般包括了圖書,期刊,報紙以及網(wǎng)絡(luò)資源。由于圖書的出版周期較長并不能有效反應(yīng)該學(xué)科領(lǐng)域的研究進展情況;網(wǎng)絡(luò)資源豐富而且反應(yīng)速度最快,但信息噪音最強;報紙資源的研究深度尚淺。因此,本文選擇以國內(nèi)外期刊,會議等作為文獻資料的來源。通過檢索,經(jīng)過去重操作,得到相關(guān)論文1066篇。2.1.3 篩選方案1) 長文優(yōu)于短文。對于短文或者Poste
11、r,通過DBLP查詢作者是否有相關(guān)的工作發(fā)表在其他地方,若有,則引用相對比較完整的論文,若沒有,則將相應(yīng)的短文或者Poster排除掉;2) 學(xué)位論文只要博士論文;3) 期刊只搜EI和SCI論文;4) 國際會議最好是國外國際會議,或主要成員是外國學(xué)者;5) 若論文的目的是提出一種形式化驗證技術(shù),則將該論文包含進來;若論文的目的不是提出一種形式化驗證技術(shù),而是基于已有的一種形式化驗證技術(shù)提出了新的軟件形式化驗證技術(shù)和方法,則也將該論文包含進來;6) 雖然論文中沒有涉及到具體的形式化驗證技術(shù),但提出了關(guān)于形式化驗證技術(shù)新的方法論,同樣也將這類論文包含進來;7) 同時對于內(nèi)容重復(fù)的文章:同一作者類似的
12、文章發(fā)表在多個地方或者一篇綜述很好地概括了一系列的相關(guān)研究,只選擇了那些我們認為更具代表性的文章。通過幾輪篩選,最終確定下來的文獻有108篇。2.1.4 數(shù)據(jù)提取和分析 對于檢索到的有關(guān)程序分析的論文,我們對入選的論文根據(jù)提出的問題進行分類、分析和總結(jié)。閱讀過程中重點提取技術(shù)報告數(shù)據(jù)、專利、軟件工具(網(wǎng)站、軟件、描述性語言),應(yīng)用案例、方法等。2.1.5 完成報告在上述工作的基礎(chǔ)上完成最終的報告. 2.2 系統(tǒng)文獻綜述法系統(tǒng)文獻綜述(systematic literature review),簡稱系統(tǒng)綜述,是主要在醫(yī)學(xué)領(lǐng)域和社會學(xué)研究領(lǐng)域針對某一個研究性問題開展的基于文獻的系統(tǒng)化綜述方法,并于
13、2004年引入軟件工程領(lǐng)域.系統(tǒng)文獻綜述的過程包含3個主要的階段: 制定綜述方案主要進行綜述需求分析,明確綜述的目的,設(shè)計開展綜述的規(guī)程,以指導(dǎo)后期的文獻收集等工作; 開展綜述根據(jù)綜述方案預(yù)定的目標,按照綜述步驟進行文獻收集,主要工作包括確定主要的文獻來源、確定收錄標準、實現(xiàn)文獻質(zhì)量評價、開展數(shù)據(jù)抽取與綜合; 形成綜述報告對于綜述進行總結(jié). 圖-系統(tǒng)文獻綜述法框架圖如上圖,系統(tǒng)文獻綜述法細致劃分可劃分為四部分:計劃、選擇、提取和結(jié)果,最后形成系統(tǒng)性的報告。2.3 文獻計量法文獻計量法是一種以各種文獻外部特征為研究對象的量化分析方法,以文獻的量為研究對象,以文獻文本為基本特征。它是借助文獻的各種
14、特征數(shù)量,采用數(shù)學(xué)與統(tǒng)計學(xué)方法來描述、評價和預(yù)測科學(xué)技術(shù)的現(xiàn)狀與發(fā)展趨勢的圖書情報學(xué)分支學(xué)科2。下面通過幾個方面對它進行介紹:1) 性質(zhì)上:文獻計量分析法的特征在于其輸出量必定是量化信息內(nèi)容,是一種基于數(shù)學(xué)和統(tǒng)計學(xué)的定量分析方法。2) 方法論基礎(chǔ)上:文獻計量法是以數(shù)學(xué)和統(tǒng)計學(xué)方法論為基礎(chǔ),在其應(yīng)用過程中再利用推理和比較的方法對文獻的分布趨勢進行預(yù)測。3) 研究對象上:文獻計量法研究的對象主要是文獻的外部形式特征,只適用于有實體形態(tài)的科學(xué)文獻,比如具有著者、引文、詞匯等文獻特征的部分。4) 應(yīng)用領(lǐng)域上:文獻計量法是圖書館學(xué)、情報學(xué)的特殊研究方法,主要用于科學(xué)文獻的研究,對各門學(xué)科都使用。在發(fā)展的
15、幾十年中,文獻計量法的應(yīng)用領(lǐng)域不斷拓寬,其內(nèi)容包括作者分布規(guī)律、文獻分散增長規(guī)律、引文分析等。通過引文分析,了解學(xué)科發(fā)展動態(tài);在學(xué)科核心期刊測定中的應(yīng)用,通過統(tǒng)計分析確定核心期刊的范圍;在圖書情報系統(tǒng)管理領(lǐng)域等情報探索系統(tǒng)研究中也得到廣泛應(yīng)用。5) 研究的側(cè)重點:它側(cè)重于分析文獻形式特征的“量”,它從定量的角度分析文獻規(guī)律,知識間接反映內(nèi)容的相關(guān)關(guān)系。研究步驟:確定研究范圍,抽取樣本,界定分析單元,對分析單元做量化統(tǒng)計,最后根據(jù)統(tǒng)計結(jié)果建立反映其趨勢變化的規(guī)律性結(jié)論。圖-文獻計量法研究步驟3. 文獻計量分析為了觀察整個程序分析領(lǐng)域的研究情況,于是此文獻計量分析的樣本數(shù)據(jù)不僅包括了程序分析技術(shù)中
16、的動態(tài)分析,同時也囊括了靜態(tài)程序分析相關(guān)文獻。3.1 年限分析對采集到的論文的年份,數(shù)量特征進行統(tǒng)計分析,可以在一定程度上根據(jù)文獻的增長情況得到近10年間關(guān)于“程序分析技術(shù)”研究的總體研究水平和發(fā)展速度,如圖1所示:圖1 程序分析研究論文數(shù)量變化從圖1中可以看出自2004年以來關(guān)于程序分析技術(shù)的研究文獻數(shù)量大致呈現(xiàn)上升趨勢,2004至2007關(guān)于此項研究的文獻相對比較少,數(shù)量波動不是很大,2008年數(shù)量相比2007年產(chǎn)生了驟變,2009至2012文獻數(shù)量維持著相對較高的水平,并且在2011年達到最高值,而2013數(shù)量相對減少。3.2 期刊分布論文的期刊分布和載文比可以在一定程度上反映出一段時期
17、內(nèi)該領(lǐng)域研究的成熟度。因此,對程序分析研究論文的期刊分布和載文比進行統(tǒng)計分析可知,自2004年以來,共有317種期刊刊載了相關(guān)的論文刊載程序分析研究論文的期刊數(shù)量呈現(xiàn)逐年增長的趨勢,刊載種數(shù)的增加,說明研究涉及的領(lǐng)域越來越多,分布更加廣泛。圖2 程序分析研究論文期刊分布從圖2可以看出,刊載程序分析研究論文的期刊種數(shù)從2004年到2010年逐年增加,2011有所下降,而2012年,急劇增加,2013年又回到平穩(wěn)狀態(tài)。3.3 載文比分析圖3 程序分析研究論文載文比情況從載文比(該時段論文總數(shù)/該時段的期刊總數(shù))來看,除了2011年載文比達到3.5以外,其他年度載文比斗小于3,特別在2012年,達到
18、最低0.66,這表明程序分析研究論文還沒有向一些特定的期刊集中,研究文獻在期刊分布上還比較分散,該研究的發(fā)展還不夠成熟。3.4 期刊類型分布對刊載論文的期刊類型分布進行分析,可以了解到軟件分析研究的主要集中在哪些類型的期刊,從另外一個方面也能看到該研究領(lǐng)域發(fā)展到了哪一個程度。我們對搜集到的740篇論文進行期刊類型分布統(tǒng)計,如下圖。圖4 程序分析研究論文刊載期刊類型分布情況根據(jù)圖4可以看出,程序分析研究論文主要集中在Conference Proceedings和Journal Article上,其次是在Generic和Thesis上,Conference Paper, Patent 和 Web
19、Page上相對較少。3.5 作者分析作者分布情況可以體現(xiàn)在該領(lǐng)域研究的廣度以及深度。作者數(shù)越多,說明該研究領(lǐng)域越廣,某一個作者出現(xiàn)的頻次越高,說明該作者在這個領(lǐng)域研究得比較深入。通過對搜集到的論文進行作者分布統(tǒng)計(包含第一作者,第二作者,第三作者),共有2074位作者參與該領(lǐng)域的研究,對出現(xiàn)頻次比較高的作者進行統(tǒng)計,列出了前18位作者,如下表。表1 軟件分析研究論文作者分布情況表(前23位)位次作者頻次1肖慶42Amp33徐寶文24張路25Alzamil, Z.A26Wei, Hua27Bruda, S.D.28De Halleus, P.29Farn, Wang210Ganai, M.K.2
20、11Jianguo, Chen212Jie, Zhang213Kroening, D.214Li, J.J.215Ling Dong216Nail, R217Tillmann, N.218Zhiping, Shi219梅宏220Landwehr, J.221趙建華222ValeriyVyatkin223姜淑娟23.6 關(guān)鍵詞分析詞頻分析法師利用能夠揭示或表達文獻核心內(nèi)容的關(guān)鍵詞或主題詞在某一研究領(lǐng)域文獻中出現(xiàn)的頻次高低來確定該領(lǐng)域研究熱點和發(fā)展動向的文獻計量方法。為了更客觀地對軟件分析研究領(lǐng)域的研究熱點進行分析,我們在搜集到的740篇論文中進行關(guān)鍵詞統(tǒng)計分析。我們共獲得6187個關(guān)鍵詞,對這些
21、關(guān)鍵詞進行頻度統(tǒng)計,按照頻次高低排序所得的前31位高頻詞的統(tǒng)計結(jié)果如表2所示。表2 軟件分析研究論文詞頻統(tǒng)計情況(前31位)位次關(guān)鍵詞詞頻1Formal verification262Software testing Program testing1963Program testing1964Model checking1205Software engineering886Software877Formal specification718System testing689Computer science6710Software quality6411Program diagnostics63
22、12Program verification6213Analytical models5214Computational modeling4915testing4916Application software4917Java4718Software systems4619Programming4520Program analysis4321Software reliability4022Educational institutions3823Automata3724Software tools3625Automatic testing3426Unified modeling language3
23、427Safety3028Embedded systems3029Algorithm design and analysis3030Program debugging2931Performance analysis29統(tǒng)計結(jié)果顯示,程序分析研究在形式化驗證,軟件測試,程序測試,模型檢測,軟件工程等方面研究比較突出。軟件分析領(lǐng)域的研究主要集中在軟件模型,軟件測試,程序分析上。4. 動態(tài)程序分析4.1 動態(tài)程序分析方法4.1.1 錯誤定位為了保證軟件開發(fā)的質(zhì)量,工業(yè)界在軟件測試階段投入了大量的人力物力,其中最耗時代價最昂貴的任務(wù)之一就是調(diào)試過程,這是指對程序錯誤進行定位和修正的過程,而錯誤定位又是
24、軟件調(diào)試過程中最耗時和困難的一步。所以,錯誤定位過程中的任何改進都可以在一定程度上降低調(diào)試成本。經(jīng)過多年的研究發(fā)展,在軟件領(lǐng)域出現(xiàn)了很多檢測程序缺陷的技術(shù),本文主要討論的是基于實際執(zhí)行的動態(tài)定位技術(shù)。該技術(shù)通過對源程序、測試結(jié)果以及各種程序行為特征信息的計算分析,給出造成故障的軟件缺陷在源代碼中的可能位置,輔助開發(fā)人員進行程序錯誤的定位和修改。經(jīng)過研究者們的探索,按照使用和操縱的程序執(zhí)行信息的不同,目前的錯誤定位方法該技術(shù)可以分為3類:基于行為特征對比的方法,基于程序狀態(tài)修改的方法和基于程序依賴關(guān)系的方法3。4.1.1.1 基于行為特征對比的方法程序行為特征同時也被稱作程序光譜,是程序執(zhí)行的統(tǒng)
25、計信息。經(jīng)過Reps,Harrold等人的實驗研究,程序出現(xiàn)異常的行為特征不一定表示代碼存在缺陷,但錯誤的程序運行往往會表現(xiàn)出異常的行為特征。基于行為特征對比的方法假設(shè)失敗的測試執(zhí)行會表現(xiàn)出異常的程序行為特征,那么成功執(zhí)行和失敗執(zhí)行中的行為特征的差異就可以用于指導(dǎo)錯誤定位。其工作流程如下:首先,根據(jù)收集信息類型的需要,對源代碼進行插樁并執(zhí)行程序,收集執(zhí)行信息。其次,判斷每個測試用例的執(zhí)行結(jié)果。接著,解析執(zhí)行信息,得到執(zhí)行行為特征。然后,根據(jù)給定的模型,建模程序?qū)嶓w的懷疑度(可能出錯的程度)。最后,以程序?qū)嶓w排名的方式給出定位結(jié)果,將各個程序?qū)嶓w按照懷疑度大小從大到小排列,供開發(fā)人員查看3。目前
26、,按照使用的行為特征信息的種類和策略,大致可以分為5類:基于語句或基本塊,基于謂詞,基于方法,基于定義使用對或信息流以及行為特征信息精煉的方法。1) 基于語句或基本塊2003年,Renieres和Reiss提出NNQ(Nearest Neighbor Queries)方法,假設(shè)存在一個失敗的執(zhí)行和很多成功的執(zhí)行,然后根據(jù)距離準則挑選出一個程序光譜和失敗運行最相似的成功運行(即失敗執(zhí)行的最近鄰居),進而比較它們光譜的不同之處以分離軟件錯誤。與NNQ不同,Jones 和 Harrold 提出的Tarantula法,認為只要是主要被失敗用例執(zhí)行的程序?qū)嶓w就值得被懷疑,同時,它也能容忍出錯的程序?qū)嶓w偶
27、爾被成功用例執(zhí)行。他們使用常用的信息來輔助錯誤定位,包括每個測試用例的執(zhí)行結(jié)果,程序?qū)嶓w(語句,分支或函數(shù)等)被每個測試用例覆蓋的信息以及程序的源代碼。對于程序?qū)嶓we,它的懷疑度計算公式為:其中,failed(e)和passed(e)分別表示失敗用例和通過用例執(zhí)行程序?qū)嶓we的個數(shù),|Tf|和|Tp|表示測試組件中所有失敗用例和通過用例的個數(shù)。e的懷疑度取值范圍從0到1,數(shù)值越大,出錯的可能性越大。開發(fā)人員可以按照懷疑度從大到小的順序?qū)彶樵创a。不同于NNQ和Tarantula這些基于直觀或啟發(fā)式的計算方法,Wong等人提出了一個定義良好的統(tǒng)計方法Croaatab. 它利用覆蓋信息和測試結(jié)果為每
28、條可執(zhí)行語句w構(gòu)建一個交叉表,進而計算卡方統(tǒng)計量和列聯(lián)相關(guān)系數(shù)M(w)。語句w的懷疑度定義如下:然后,Hao等人提出應(yīng)該考慮測試用例的相似性,并消除相似的測試用例對于定位結(jié)果的影響,于是提出了一種名為SAFL(Similarity Aware Fault Localization)的方法。最后,Naish等人總結(jié)了30多種基于語句的定位方法,首先構(gòu)造了一段名為ITE2(If-Then-Else-2)的程序,然后在這個程序中討論各種情形。這個程序可以用于刻畫錯誤定位中的兩種重要場景:存在“噪聲”和信號“微弱”?;谠贗TE2代碼模型上的分析,他們提出了兩種Optimal metric, 語句s的
29、懷疑度定義如下:Yingqi等人結(jié)合程序切片和貝葉斯方法來實現(xiàn)錯誤定位4。首先,我們根據(jù)切片的標準執(zhí)行動態(tài)切片,然后根據(jù)貝葉斯理論計算后驗概率。最后,我們把后驗概率作為語句的懷疑程度按照從大到小的順序進行排列。此方法被應(yīng)用于6個開源項目,通過實驗,此方法在一定程度上可以提高錯誤定位的精確度。統(tǒng)計錯誤定位技術(shù)通過執(zhí)行大量的測試用例來預(yù)測程序錯誤的位置,相關(guān)研究表明,通過測試用例數(shù)量和失敗測試用例數(shù)量之間失衡的程度可能會降低這種技術(shù)的有效性,然而,在實踐中失敗的測試用例往往小于通過的測試用例。于是Yichao等人提出了一種策略5,通過克隆失敗測試用例適當?shù)臄?shù)量以達到通過測試用例的數(shù)量,最終產(chǎn)生平衡
30、的測試組件。分析表明,通過開展克隆兩個具有代表性錯誤定位技術(shù)的有效性可以在一定條件下得到改善。隨著研究的發(fā)展,很多研究者開始探究多故障檢測技術(shù)。Cheng,Gong等人提出了一種有效的機制用于檢測多個故障6,當一個故障被檢測到時,我們用它來解釋我們觀察到的故障,同時更新指標(在檢測可疑序列時的一種準則),以判斷在程序中是否存留其他故障。實驗證明這個方法不僅提高了單故障定位器的效率,同時在很大程度上避免了放棄單故障檢測器而開發(fā)多故障檢測器時的無效的工作與努力。針對動態(tài)程序切片,Hofer等人提出了一種技術(shù)7,可以減少包含在動態(tài)切片中的語句數(shù)目,這種技術(shù)是基于約束的計算,并且允許從不太可能是錯誤的
31、根本原因的切片中移除語句。實驗結(jié)果表明,在有關(guān)切片中得到的片段的數(shù)量,平均降幅超過28%。由于測試覆蓋信息不能識別那些程序?qū)嶓w,而這些實體的執(zhí)行影響了輸出,于是便削弱了實體之間的相關(guān)性。Yan,Lei等人為解決這個問題8,提出了一項新的統(tǒng)計故障定位技術(shù)。該統(tǒng)計方法是利用一組測試運行的程序切片來捕捉在輸出結(jié)果中程序?qū)嶓w執(zhí)行的影響,并且利用統(tǒng)計分析來衡量程序?qū)嶓w故障的可疑度。此外,他們還提出了一種近似后向動態(tài)切片的新切片方法,以此來平衡切片的尺寸和精度,并將此切片方法應(yīng)用于統(tǒng)計方法。實驗表明,在兩個標準的基準測試下,我們的統(tǒng)計方法明顯優(yōu)于其他8個具有代表性的故障定位方法。2) 基于謂詞Liblit
32、和他的同事提出了CBI(Cooperative Bug Isolation)技術(shù),用于定位已部署軟件中的錯誤?;舅枷胧撬鸭脩粼谑褂密浖^程中產(chǎn)生的執(zhí)行信息,進而通過分析這些數(shù)據(jù)將軟件缺陷分離出來。然后,在搜集這些執(zhí)行信息的同時,會對用戶使用的軟件性能有一定的影響,為了解決這個問題,Liblite等人通過在源代碼上的變換,使用稀疏的隨機抽樣,較好地控制了客戶端的性能并返回執(zhí)行時的摘要信息。盡管CBI技術(shù)能夠從廣泛的系統(tǒng)中識別出一些錯誤,但它只考慮了那些在失敗執(zhí)行中取值為真的謂詞,而對于一個總是取值為真的謂詞,CMI技術(shù)就喪失了它的判斷能力。Liu等人對謂詞在成功執(zhí)行和失敗執(zhí)行中的取值模式進行
33、建模,然后基于統(tǒng)計學(xué)中假設(shè)檢驗的原理,量化每個謂詞的錯誤相關(guān)性,建立了SOBER方法。一個謂詞P的取值偏差在成功和失敗執(zhí)行中的差異越大,則謂詞P出錯的可能性越大。令Y表示謂詞P的取值偏差在所有失敗執(zhí)行中的均值。SOBER使用如下公式計算P的懷疑度:其中,sp為謂詞P在所有成功執(zhí)行中謂詞的取值偏差的方差,Z是Y的標準化隨機變量。開發(fā)者可以根據(jù)謂詞的懷疑度的大小審查源代碼,發(fā)現(xiàn)錯誤的位置。然后,Zhang等人研究了短路求值和求值序列對于錯誤定位技術(shù)的影響。他提出了一種基于謂詞的定位方法的改進策略:DES(Debugging through Evaluation Sequences)策略,將每個謂詞
34、排名最高的取值序列作為該謂詞的排名,實驗表明,DES可以提高基于謂詞的錯誤定位技術(shù)的有效性而同時僅產(chǎn)生較小的額外性能開銷。Zunwen,You等人提出了一項新的統(tǒng)計方法9,該方法是通過探測兩個在執(zhí)行過程中順序連接的謂詞的統(tǒng)計行為。如果謂詞被視為一個圖的頂點,那么這個圖的邊則表示程序在執(zhí)行過程軌跡中兩個順序連接謂詞的過渡。每個邊的標簽代表每個轉(zhuǎn)變的頻率。對于每條邊,我們應(yīng)用假設(shè)檢驗來評價在通過運行邊緣評估偏倚和失敗運行邊緣評估偏倚之間的差異。邊緣是根據(jù)從假設(shè)檢驗中得到的故障相關(guān)程度來排列的。實驗證明,我們提出的基于謂詞的故障定位技術(shù)優(yōu)于其他適當運用統(tǒng)計的故障定位技術(shù)。3) 基于方法對于面向?qū)ο蟮?/p>
35、語言,Dallmeier等人提出了基于方法調(diào)用序列的Ample技術(shù),認為只出現(xiàn)在通過執(zhí)行或失敗執(zhí)行中的方法調(diào)用子序列都應(yīng)該被懷疑。與在通過或失敗執(zhí)行中出現(xiàn)的子序列相比,這些子序列被分配較大的懷疑度值,遺失或增添的子序列都值得懷疑,因為它們都可能引發(fā)程序故障。與Ample技術(shù)不同,Yilmaz等人提出使用時間光譜作為程序執(zhí)行的抽象。時間光譜是指程序?qū)嶓w(方法,函數(shù)等)運行的時間特征信息,通常用于程序性能的評價和優(yōu)化。他們提出一種叫做TWT(Time Will Tell)的方法,首先收集成功執(zhí)行和失敗執(zhí)行的時間光譜,接著基于成功執(zhí)行的時間光譜建立程序行為模型,然后使用這個模型來識別失敗執(zhí)行和成功執(zhí)
36、行的偏離程度。SFL(Spectrum-based Fault Localization)是一種輕量級的自動診斷技術(shù),然而當它應(yīng)用于面向?qū)ο蟪绦驎r,它的診斷精確度由于可疑語句被分布到不同的類中而受到限制,于是,Jingxuan,Tu等人提出了一種方法,利用方法調(diào)用異常來提高SFL技術(shù)在面向?qū)ο蟪绦蛑泄收隙ㄎ坏挠行?。其過程如下:首先,基于在通過和失敗運行中方法調(diào)用序列的差異來計算每個類的可疑度;然后,利用每個類的可疑信息細化SFL可疑度序列,以提高面向?qū)ο筌浖收隙ㄎ坏男?。實驗表明,該方法能夠提高SFL技術(shù)的有效性。4) 基于定義使用對、分支或信息流Santelices等人認為有些缺陷最好使
37、用語句覆蓋信息來定位,而有些最好使用分支或者定義使用對的覆蓋信息。首先需要計算一個程序?qū)嶓w的懷疑度,然后對于分支或者定義使用對,根據(jù)3條規(guī)則,將每條語句的可疑度定義為和它關(guān)聯(lián)的分支或定義使用對可疑度的最高值。然后采用max-SBD,avg-SBD和avg-BD 3種策略來獲得一個語句的可疑度得分。即是說一個語句的可疑度得分可以是和它關(guān)聯(lián)的3種程序?qū)嶓w懷疑度得最大值,平均值或只是定義為和它關(guān)聯(lián)的分支和定義使用對懷疑度得平均值。實驗表明,綜合使用多種覆蓋類型的信息,確實可以提高錯誤定位技術(shù)的有效性。與Santelices等人提出的使用單一模型建模程序?qū)嶓w不同,Yu等人進一步提出一個使用多個模型來捕
38、捉不同類型的錯誤的方法LOUPE。假設(shè)對于任一類型的錯誤,存在一種適合模型,它能夠較好識別出錯誤語句,由于錯誤類型事先未知,LOUPE方法建立了多個模型來捕捉語句的異常行為,并試圖選出相應(yīng)的適合模型。動態(tài)信息流分析師一種更加重量級的方法,它考慮5種類型的依賴關(guān)系:動態(tài)直接控制依賴,動態(tài)直接數(shù)據(jù)依賴和3種過程間的依賴關(guān)系。由于動態(tài)信息流分析能夠識別運行時對象之間的信息流,所以也可以用來建模程序元素之間復(fù)雜的交互作用,于是Masri提出了一種基于動態(tài)信息流分析的錯誤定位方法。對于信息流f,懷疑度計算公式如下:然后,每條可執(zhí)行語句被賦予流經(jīng)它的懷疑度最大的信息流的值。并且,值得懷疑的信息流的源語句應(yīng)
39、該先于這條信息流上的其他語句被檢查。5) 行為特征信息的精煉由于受到很多因素的影響,在實踐中,基于行為特征對比的方法的有效性仍然會受到限制。Masri等人通過實驗發(fā)現(xiàn)了這類方法有效性下降的四個場景:錯誤條件滿足,但程序故障并未出現(xiàn)(作者成為巧合正確性);錯誤語句被執(zhí)行,但程序故障并未出現(xiàn)(作者稱為弱巧合正確性);程序故障和不止一個的不同類型的程序元素的組合有關(guān);以及很多程序元素不在通過程序中出現(xiàn),卻出現(xiàn)在所有的失敗執(zhí)行中。前三個場景可能會影響錯誤定位技術(shù)的準確性,后一個會影響精確性。為了進一步提高定位技術(shù)的有效性,研究者提出了不同的精煉方法來減少各種因素的影響。針對弱巧合正確性,Wang等人受
40、后向動態(tài)切片的啟發(fā),將與程序輸出結(jié)果無關(guān)的實體的覆蓋信息去除,以精煉程序輸出特征。由于以上錯誤定位技術(shù)只關(guān)注與評估單個的程序?qū)嶓w的懷疑度,而忽略了被感染的程序狀態(tài)在它們之間的傳播,于是Zhang等人提出使用控制流邊的信息來表示成功執(zhí)行和失敗執(zhí)行,然后比較它們的差異來建模每個基本塊對于程序故障的貢獻程度。由于基于頻譜定位技術(shù)中故障類型和數(shù)量,測試組件的質(zhì)量比較敏感,Gopinath等人10提出了一種新的技術(shù),該技術(shù)應(yīng)用于基于光譜的協(xié)同規(guī)范分析,以更準確地定位故障。他們的觀點是違反規(guī)范的不可滿足性分析,可被用于計算包含可能故障語句的不可滿足核心和生成有助于基于光譜的定位技術(shù)的測試用例。此方法是迭代
41、的,并且可以通過反饋回路獲取更加精確的故障定位。SAT-TAR是體現(xiàn)了我們這個技術(shù)針對Java程序的一個框架,并且包含了多故障檢測技術(shù)。實驗證明,此項技術(shù)比state of the art方法更加準確。4.1.1.2 基于程序狀態(tài)修改的方法基于程序狀態(tài)修改的方法通常是在程序執(zhí)行時獲得并修改程序的狀態(tài),然后觀察修改后的測試結(jié)果,進而找出對測試結(jié)果有影響的關(guān)鍵謂詞或語句。由于程序運行時的狀態(tài)有多種可能性,所以這類方法經(jīng)常需要采取一些簡化策略來提高錯誤定位的效率。Delta Debugging方法是由Zeller提出的一種能自動縮小程序的成功運行過程和失敗運行過程之間區(qū)別的技術(shù)。它采用分治思想,把軟
42、件配置(測試輸入,源程序等)變動的集合進行劃分,然后分別進行測試。然后遞歸地把導(dǎo)致失敗配置的集合并入結(jié)果為通過配置的集合。這樣逐漸減小兩個集合之間的差異,最終確認成功配置和失敗配置差別的一個最小集。2005年,此方法被應(yīng)用到程序狀態(tài)上,自動化找出導(dǎo)致程序失敗的語句。改變分支的取值結(jié)果是改變運行時變量的值的一種特殊情形。Jeffrey等人提出了Value Replacement方法:首先嘗試改變運行時變量的值以得到成功用例,進而將這種信息用于錯誤定位。然后將使用的值替換成另外一個,并觀察是否會產(chǎn)生正確結(jié)果。Feng Li等人提出了一種新的基于狀態(tài)的錯誤定位方法DelFal11。假設(shè)執(zhí)行軌跡的可用
43、性導(dǎo)致報告的程序執(zhí)行失敗,這種新方法依次選擇設(shè)置跟蹤點以便對程序執(zhí)行狀態(tài)高效自動的探索來幫助開發(fā)人員找到編程所觀察到的執(zhí)行失敗。每個這樣的集合跟蹤點,在每個軌跡點的程序狀態(tài)被象征性地改變。通過否定每種原子謂詞,去觀察同樣的故障是否發(fā)生在從源代碼中相應(yīng)的程序點符號執(zhí)行繼續(xù)進行。這組跟蹤點是備選集合中的最小程序狀態(tài)集,這樣一組跟蹤點被稱為最小調(diào)試邊界集MDFS(Minimum Debugging Frontier Set)。根據(jù)符號執(zhí)行的結(jié)果,下一個MDFS是根據(jù)向前或向后移動剩余程序軌跡而確定的。當故障代碼被發(fā)現(xiàn)時,軌跡跟蹤過程會被縮短并繼續(xù)進行下去。MDFS方法需要被提供執(zhí)行失敗的位置,但所需
44、的程序狀態(tài)的規(guī)范是可選的。有了這樣的規(guī)范,它可以實現(xiàn)更加精確的錯誤報告。實驗證明此方法在合理的時間內(nèi)可以有效的解釋故障。4.1.1.3 基于程序依賴關(guān)系的方法基于程序依賴關(guān)系的方法側(cè)重于使用程序的動態(tài)依賴關(guān)系給出值得懷疑的語句的集合。這個集合包含錯誤語句和調(diào)試上下文,由于這個集合通常會包含一些冗余的語句,所以需要使用一個技術(shù)來簡化。Zhang等人從動態(tài)角度提出隱式依賴(implicit dependence )的概念,它只會將已經(jīng)觀測到的發(fā)生在謂詞和變量使用上的依賴關(guān)系加入切片中。進一步,他們使用一種需求驅(qū)動的策略來減小探測隱式依賴的開銷。為了減小動態(tài)切片的規(guī)模,研究著提出了許多種簡化策略。G
45、upta等人整合了Delta Debugging技術(shù)來識別一個最小的故障相關(guān)的輸入,然后基于這個輸入計算動態(tài)前向切片并以錯誤輸出為準則產(chǎn)生的動態(tài)后向切片取交集,作為引發(fā)故障的砍片(chop)。Baah等人擴展了程序依賴圖,通過測試用例的執(zhí)行信息估計節(jié)點間的統(tǒng)計依賴,建立了程序依賴圖PPDG(Probabilistic Program Dependence Graph)。它是基于概率圖模型的框架,首先產(chǎn)生依賴圖,然后得到標記了子節(jié)點和父節(jié)點之間條件概率的變換程序依賴圖。與此同時,插樁源程序得到測試用例的執(zhí)行信息,通過學(xué)習(xí)執(zhí)行信息中的數(shù)據(jù),最終得到PPDG。與PPDG不同,F(xiàn)eng和Gupta為每
46、種指令類型建立了通用模型。給定一組程序的執(zhí)行軌跡,并包括至少一個成功執(zhí)行和至少一個失敗執(zhí)行,可以基于動態(tài)依賴圖建立基于貝葉斯網(wǎng)絡(luò)的錯誤流圖(Error Flow Graph)和通用的概率模型。然后使用標準的推理算法從業(yè)節(jié)點沿著錯誤流后向追溯尋找錯誤可能性最大的可執(zhí)行語句。一種常用的定位錯誤的方法是根據(jù)通過執(zhí)行和失敗執(zhí)行來計算程序塊的可疑度,但這種技術(shù)并沒有完全考慮到程序塊之間的以來關(guān)系,因此錯誤定位的能力受到了限制。Wanzhi,Wen等人經(jīng)過研究12,打算利用程序切片技術(shù)和統(tǒng)計方法,該統(tǒng)計方法是從程序塊之間提取它們之間依賴關(guān)系并且喜歡它們的執(zhí)行歷史。然后根據(jù)統(tǒng)計方法對可疑程序塊進行排序,并建
47、立一個程序切片譜。我們期望的是這個方法能夠直接促進軟件故障定位有效性和精確度的改進,從而減少軟件開發(fā)和維護的成本。4.1.1.4 其他方法Wong等人提出了一種名為DStar(D*)的技術(shù)13,它可以自動提示進行錯誤定位的可疑位置而不需要任何程序結(jié)構(gòu)或語義的先驗信息。通過實驗,DStar(D*)方法在24個程序錯誤定位中,與其他38種不同的錯誤定位技術(shù)相比,無論是單故障還是多故障,它都是最有效的。實驗同時也表明,DStar(D*)方法隨著指數(shù)*的有效性增加,逐漸達到一個平穩(wěn)狀態(tài)。Yan Lei等人提出了一種名為BSSFL(Backward-Slice-based Statistical Fau
48、lt Localization)的錯誤定位方法14。該方法假定測試預(yù)言存在來確定測試用例的結(jié)果是否是失敗或通過,但由于在現(xiàn)實中,測試預(yù)言并不總是存在,因此在這種情況下BSSFL是不可行的。在目前的研究中,變質(zhì)測試已被廣泛研究,以緩解測試預(yù)言問題,因此,我們利用變質(zhì)測試進行BSSFL。在此過程中,我們用后向切片和違反或不違反變質(zhì)測試組,而不是后向切片和失敗或通過的單個測試用例。此方法不需要測試用例的執(zhí)行結(jié)果,所以它可以擴展到?jīng)]有測試預(yù)言存在的領(lǐng)域。實驗表明,我們提出的方法在測試預(yù)言存在的情況下較現(xiàn)有的BSSFL技術(shù)效率更高。最近的研究表明,利用因果推斷技術(shù)來減少混雜偏倚以提高統(tǒng)計錯誤定位(SFL
49、)在程序語句水平的有效性,然而由于非常大的程序和測試組件,會造成一定的影響,為降低影響,Gang Shu等人提出并評估了一種新的方法級SFL技術(shù)MFL15,該技術(shù)基于因果推斷,并采用了新的算法來選擇協(xié)變量以調(diào)節(jié)混雜偏倚的使用。同時,試圖確保這樣的協(xié)變量滿足能夠識別觀測數(shù)據(jù)的因果效應(yīng)的條件可交換性和積極性。實驗表明,我們的方法比知名的SFL方法更有效,并且,我們的混雜因素選擇算法優(yōu)于兩種選擇。近來,隨著人工智能的快速發(fā)展,基于人工智能理論的故障診斷技術(shù)吸引了越來越多人的注意。Guoshun,Chen等人16認為MAS(Multi-Agent Sysytem)具有較強的自主性,智能性和社會能力,很
50、適合用于診斷軟件系統(tǒng),并很容易與現(xiàn)軟件密集型裝備現(xiàn)有的軟件測試方案進行集成。于是,他們提出了一種新的基于MAS的故障診斷框架,此框架已應(yīng)用與真正的軟件診斷當中,并且證明了它的有效性。(需要詳細列出這個四層框架)Roychowdhury等人提出了一種新的方法17,該方法基于伯努利分歧來自動定位故障,所以,該方法是從信息論和機器學(xué)習(xí)中西吸取的概念,并將它應(yīng)用于軟件工程。經(jīng)過初步的實驗研究,表明此方法給故障定位技術(shù)帶來了希望。Xiaomin,Wang等人18為了解決現(xiàn)有定位技術(shù)的限制性,提出了一種新的技術(shù),建立一種新的行為模型,并提出相應(yīng)的故障定位技術(shù)。實驗表明,這項新技術(shù)優(yōu)于其他SBFL故障定位技
51、術(shù),并且,我們發(fā)現(xiàn),這項技術(shù)的有效性來自于分層行為模型的指導(dǎo)。雖然基于頻譜的貝葉斯推理可以有效地根據(jù)通過/失敗測試案例來排列候選故障位置,但是診斷質(zhì)量高度依賴于地層測試組件的規(guī)模和多樣性。由于在實踐中測試組件通常不表現(xiàn)出必要的屬性,據(jù)此,Gampos等人19提出了一種技術(shù)用新的能夠優(yōu)化診斷質(zhì)量的測試案例來擴展現(xiàn)有的測試組件。我們運用概率理論概念中的熵來指導(dǎo)測試用例生成,使得在診斷排名中的不確定量達到最小化。我們的ENTBUG原型擴展了基于搜索的測試用例生成工具EVOSUITE使用熵在其潛在的遺傳算法的實用度函數(shù),我們將此技術(shù)應(yīng)用到了7個真正的故障定位當中,實驗結(jié)果表明,相對使用原始的測試組件,
52、該方法在診斷排名的熵上平均下降了49%,從而導(dǎo)致在尋找真正故障時下降了91%的檢查幅度。De Souza, H.A等人20提出了一項新的技術(shù),該技術(shù)使用整合覆蓋數(shù)據(jù)來指導(dǎo)故障定位過程。通過排序的方法調(diào)用可疑對,被調(diào)查的路線排序方法列表隨之被創(chuàng)建。在每個方法中,單元覆蓋被用于定位故障。實驗對4個包含了2000到80000行代碼中的55個BUG進行了分析,結(jié)果表明,通過使用路線圖,故障定位過程的有效性得到了明顯提高:固定基本塊中的78%的故障被定為成功,比Tarantula技術(shù)高出40%。4.1.2 算法檢測在眾多的軟件系統(tǒng)和應(yīng)用中,許多被檢測到的缺陷都是由于程序設(shè)計或低效的編碼造成的。4.1.2
53、.1 冗余計算(Redundant Computation)冗余計算在軟件程序中是一種普遍發(fā)生的現(xiàn)象,在多數(shù)情況下,它是軟件缺陷發(fā)生的根源,消除冗余計算不僅可以提高程序性能,而且還能識別軟件程序中的潛在錯誤。冗余計算在多數(shù)情況下都是由于程序算法設(shè)計的不足所造成的,針對這個問題,Zakarya,A.Alzamil 21提出了一種動態(tài)方法來理解程序的動態(tài)行為。該方法能夠識別執(zhí)行程序語句中沒有輸出的計算,這些計算就被成為冗余計算。這種冗余計算能夠指導(dǎo)開發(fā)者識別潛在的算法問題。在他的實驗中,通過RCAT (Redundant Computation Analysis Tool )搜索工具檢測C程序當中
54、的冗余計算并且識別與冗余計算相關(guān)的潛在缺陷。表3-Initial Experiment Result表3所顯示的就是作者實驗的結(jié)果,通過實驗結(jié)果,我們可以看出,此方法可以幫助開發(fā)者檢測冗余計算,并且指導(dǎo)開發(fā)者提高程序的算法,開發(fā)更加健壯的程序軟件。4.1.3 數(shù)據(jù)檢測類4.1.3.1 浮點數(shù)精度問題(Floating-Point Accuracy Problems)在程序中使用浮點數(shù),很容易造成舍入或災(zāi)難性取消等精度問題。然而這些現(xiàn)象引發(fā)的錯誤難以追查:程序不一定崩潰,程序結(jié)果不一定是顯然錯誤的,但往往是有細微的錯誤存在,如果開發(fā)者進一步使用這些值,就可能會造成災(zāi)難性的錯誤。Florian等人
55、針對浮點數(shù)問題,提出了一種支持程序員發(fā)現(xiàn)精度問題的動態(tài)程序分析方法22。他們使用二進制轉(zhuǎn)換,將浮點數(shù)轉(zhuǎn)換到更高的精度,此外,還是用輕量級切片方法來追蹤錯誤評估。他們通過捕獲到的比較典型的浮點數(shù)問題和分析SPECFP2006浮點數(shù)基準來評估我們的分析。在后者中,我們會通過工具來追尋一個災(zāi)難性的取消是如何導(dǎo)致精度完全失效進而引發(fā)的毫無意義的一個結(jié)果。在試驗中,他們利用VDBIF(Valgrind Dynamic Binary Instrumentation Framework)框架來執(zhí)行實驗的分析并且將它運用到大規(guī)模的基準程序中。分析結(jié)果顯示,我們的分析能夠幫助開發(fā)者追蹤和修正浮點數(shù)精度問題。圖-
56、Result of the SPECFP2006 benchmarks with the “test” data sets4.2 動態(tài)程序分析工具最近的研究表明,矛盾、重復(fù)或嘈雜的光譜可能影響SBFL指標排名的準確性,Danel等人23據(jù)此提出并開發(fā)了一種新的SBFL工具,該工具可以通過測試用例預(yù)處理過濾掉矛盾,重復(fù)或其他嘈雜的光譜。實驗表明,該帶有測試用例預(yù)處理的SBFL工具已經(jīng)成功改善了SBFL指標在大多數(shù)研究中的性能。4.3 動態(tài)程序分析在軟件測試中的應(yīng)用5. 未來研究展望作為軟件技術(shù)研究領(lǐng)域的核心內(nèi)容之一,動態(tài)程序分析技術(shù)隨著軟件技術(shù)的發(fā)展而處于不斷發(fā)展之中,并受到如下幾個方面的推動:
57、程序錯誤定位新理論和新技術(shù)的引入與集成、程序算法檢測新的發(fā)展形態(tài)、軟件運行平臺的新發(fā)展等等。5.1 錯誤定位新理論和新技術(shù)的引入與集成1) 測試組件(test suite)的影響測試組件的組成會對錯誤定位技術(shù)的有效性產(chǎn)生影響。當前的錯誤定位技術(shù)通常假設(shè)測試用例集滿足測試充分性準則,足以滿足錯誤定位的需要2) 多個缺陷的定位3) 定位結(jié)果的理解4) 錯誤修復(fù)的建議5.2 程序算法檢測新的發(fā)展形態(tài)5.3 軟件運行平臺的新發(fā)展6. 結(jié)束語本文從錯誤定位、算法檢測、數(shù)據(jù)監(jiān)測等方面對動態(tài)程序分析技術(shù)進行歸納總結(jié),并對未來的研究趨勢進行展望。動態(tài)程序分析在過去幾十年間取得了很大的進步,研究者們貢獻了巨大的力量,但仍有很多問題需要進一步的深入研究。在錯誤定位方面,例如缺乏用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版戰(zhàn)略專利申請與市場推廣合同模板
- 2025版標識標牌行業(yè)趨勢預(yù)測與戰(zhàn)略規(guī)劃合同
- 人工智能技術(shù)優(yōu)化金融審計流程2025年研究報告
- 2025白蟻防制與建筑智能化系統(tǒng)集成技術(shù)服務(wù)協(xié)議
- 二零二五版企業(yè)采購監(jiān)控設(shè)備采購合同范本
- 2025版餐廳餐飲廢棄物處理與資源化利用合同模板
- 教育政策在提升社會文明程度中的作用
- 2025版車庫租賃權(quán)轉(zhuǎn)讓及使用權(quán)買賣合同
- 2025版高強度板梁運輸?shù)跹b專項合作協(xié)議
- 二零二五年度個人消費分期按揭合同
- 民政局協(xié)議離婚的協(xié)議書(2025年版)
- 2025年全國普通話水平測試15套復(fù)習(xí)題庫及答案
- 工傷受傷經(jīng)過簡述模板
- 矛盾糾紛調(diào)解培訓(xùn)課件
- 2025-2030全球雨生紅球藻蝦青素油行業(yè)調(diào)研及趨勢分析報告
- 2025年中國中煤江蘇分公司招聘筆試參考題庫含答案解析
- 國家開放大學(xué)法學(xué)本科《商法》期末紙質(zhì)考試第四大題案例分析庫2025珍藏版
- 實驗室技術(shù)崗前培訓(xùn)制度
- 煙氣CEMS在線比對驗收調(diào)試報告附表D.1-12計算公式(HJ-75-2017)
- 手術(shù)間體溫下降的后果及預(yù)防
- 醫(yī)院十四五發(fā)展規(guī)劃
評論
0/150
提交評論