• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    頻譜信息去冗優化的軟件缺陷定位方法技術

    技術編號:10369858 閱讀:231 留言:0更新日期:2014-08-28 12:29
    本發明專利技術提供一種頻譜信息去冗優化的軟件缺陷定位方法,通過運行測試用例,收集程序運行結果信息即頻譜信息;對所得頻譜信息進行去冗優化處理,利用頻譜信息計算可疑度;根據可疑度值的大小對語句進行降序排列,根據已排序的語句序列逐個進行排錯,直至找到引發程序異常的語句。本發明專利技術在基于頻譜的錯誤定位方法中,在利用覆蓋信息表進行可疑度計算之前,對頻譜信息進行去冗余處理,利用有效的頻譜信息進行可疑度計算,提高根據可疑度進行缺陷定位的可靠性,進而提高軟件缺陷定位的效率。

    【技術實現步驟摘要】
    頻譜信息去冗優化的軟件缺陷定位方法
    本專利技術涉及一種頻譜信息去冗優化的軟件缺陷定位方法,屬于軟件測試領域。
    技術介紹
    多年來,人們在缺陷定位的研究中提出了許多方法,主要通過程序的靜態信息和動態信息來定位程序錯誤。但獲得靜態信息的開銷較大,對于大型軟件,全面的靜態分析甚至是不現實的,而動態信息的收集只要是運行測試用例,并不會給測試帶來過多的開銷。同時,由于動態信息包含了程序運行時的信息,與利用靜態信息的方法相比,可以提供更準確的結果。利用程序頻譜信息進行缺陷定位,是目前比較切實有效的軟件缺陷定位方法,程序頻譜是一種表示程序運行時覆蓋情況的信息,反應程序運行某一特征的代碼剖面信息。程序頻譜與程序行為之間存在著一定的關系,通過研究運行失敗測試用例得到的頻譜信息與運行成功測試用例得到的頻譜信息之間的差異性可為軟件缺陷定位提供幫助。對于程序的單條語句,被失效測試用例執行的越多,成功的測試用例執行的越少,語句含有錯誤的可能性就越大,發生錯誤的概率就越大。利用這種特征對程序語句被成功測試用例以及失敗測試用例的覆蓋情況進行統計分析,找出含有缺陷的程序語句。對基于程序頻譜的程序定位方法,可以從多角度采取優化策略提高軟件缺陷定位的效率:第一,提高選取測試用例集的有效性;第二,盡量減少收集程序頻譜的開銷;第三,提高可以度算法的精確度性。在以往的優化策略的基礎上,如何提出一種新的優化策略,對覆蓋信息表進行去冗優化,提高依賴程序語句可疑度進行缺陷定位的可靠性,從而達到提高軟件缺陷定位的效率是在基于程序頻譜的程序定位方法的優化過程中應當予以考慮并解決的問題。
    技術實現思路
    本專利技術對已有缺陷定位方法采取優化策略產生一種新的錯誤定位方法,使缺陷定位的效率更高。通過運行測試用例,收集程序運行結果信息即頻譜信息,對頻譜信息進行去冗優化處理,利用頻譜信息進行可疑度計算,根據可疑度值的大小對語句進行降序排列,最后根據已排序的語句序列逐個進行排錯,直到找到引發程序異常的語句。本專利技術的技術解決方案是:一種頻譜信息去冗優化的軟件缺陷定位方法,通過運行測試用例,收集程序運行結果信息即頻譜信息;對所得頻譜信息進行去冗優化處理,利用頻譜信息計算可疑度;根據可疑度值的大小對語句進行降序排列,根據已排序的語句序列逐個進行排錯,直至找到引發程序異常的語句。優選地,S1、獲取可執行的待測程序以及測試用例集;S2、執行測試用例,獲取程序執行的動態信息;S3、收集所有測試用例的運行情況,并進行去冗余處理,生成無冗余覆蓋信息表;S4、根據覆蓋信息表進行語句可疑度計算;S5、根據可疑度值,對程序語句進行降序排列,根據排序的語句序列進行缺陷定位。優選地,步驟S1具體為:S11、獲取待測的可執行程序P;S12、將程序P的每條語句進行編號,按序編為S1,S2,S3,...,Sj,...,Sn,將編號集合記為S,其中Sj表示程序P的第j條語句,n為程序語句的總條數;S13、獲取測試用例集,記為Listsuites;S14、對Listsuites中的測試用例進行編號,按序編為test1,test2,test3,...,test1,...,testm,其中testi表示測試用例集Listsuites中的第i條測試用例,m為測試用例的總條數。優選地,步驟S2具體為:S21、根據測試用例的編號按序從Listsuites中讀取測試用例testi;S22、根據測試用例的輸入以及執行條件執行讀取的測試用例testi;S23、在測試用例執行過程中對覆蓋語句以及未覆蓋的語句用“0”和“1”進行區分標記,“0”表示語句沒有被當前測試用例執行,“1”表示語句被當前測試用例執行;S24、判定測試用例運行結果;S25、收集測試用例testi的運行情況,記為F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R},,即頻譜信息,其中,T(Sj)表示語句Sj被當前測試用例覆蓋的情況,R表示當前測試用例的運行通過情況;S26、判斷測試用例集中的所有的測試用例是否均被運行,如果“是”,轉步驟S27,否則轉步驟S21;S27、收集所有測試用例的執行情況。優選地,步驟S24具體為:S241、獲取當前測試用例testi在程序中的實際運行結果;S242、獲取當前測試用例testi的預期運行結果;S243、判斷testi的實際運行結果與預期結果是否相同,如果“是”,轉步驟S244,否則轉步驟S245;S244、運行結果記為0,記入R中,R表示測試用例運行結果情況;S245、運行結果記為1,記入R中,R表示測試用例運行結果情況。優選地,步驟S3具體為:S31、首個測試用例默認處理;S32、將FF[test1]{Test1,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}記入覆蓋信息表G,G由FF[test1]{Test1,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}累積生成;S33、獲取下一條測試用例的執行情況F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R};S34、判定F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}是否與覆蓋信息表G已有行F[test]相同,如果“是”,轉步驟S35,否則轉步驟S37;S35、判定測試testi為非有效測試用例;S36、刪除F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R};S37、判定測試用例testi為有效測試用例;S38、對有效測試用例testi進行編號,編為TestI,表示第I個有效測試用例;S39、拓展testi運行結果為FF[testi]{TestI,F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}},即FF[testi]{TestI,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R};S310、將FF[testi]{TestI,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}記入覆蓋信息表G中;S311、判斷Listsuites中所有測試用例是否都被執行,如果“是”,轉步驟S312,否則轉步驟S33;S312、獲得最終覆蓋信息表G。優選地,步驟S31具體為:默認第一個測試用例test1為有效測試用例;對第一個有效測試用例test1進行編號,記為Test1,表示第一個有效測試用例;拓展有效測試用例的執行情況為FF[test1]{Test1,F[test1]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}},即為FF[test1]{Test1,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}。優選地,步驟S4具體為:S41、針對Sj語句,收集執行完測試用例集Listsuites所提供的<aef,aep,anf,anp>,其中,表示語句Sj沒有執行且測試結果正確的次數;表示語句Sj沒有執行且測試結果錯誤的次數;表示語句Sj被執行且測試結果正確的次數;表示語句Sj被執行且測試結果錯誤的次數;Gi,j為覆蓋信息表的第i行本文檔來自技高網...
    頻譜信息去冗優化的軟件缺陷定位方法

    【技術保護點】
    一種頻譜信息去冗優化的軟件缺陷定位方法,其特征在于:通過運行測試用例,收集程序運行結果信息即頻譜信息;對所得頻譜信息進行去冗優化處理,利用頻譜信息計算可疑度;根據可疑度值的大小對語句進行降序排列,根據已排序的語句序列逐個進行排錯,直至找到引發程序異常的語句。

    【技術特征摘要】
    1.一種頻譜信息去冗優化的軟件缺陷定位方法,其特征在于:通過運行測試用例,收集程序運行結果信息即頻譜信息;對所得頻譜信息進行去冗優化處理,利用頻譜信息計算可疑度;根據可疑度值的大小對語句進行降序排列,根據已排序的語句序列逐個進行排錯,直至找到引發程序異常的語句;具體為:S1、獲取可執行的待測程序以及測試用例集;S2、執行測試用例,獲取程序執行的動態信息;S3、收集所有測試用例的運行情況,并進行去冗余處理,生成無冗余覆蓋信息表;具體為:S31、首個測試用例默認處理;具體為:默認第一個測試用例test1為有效測試用例;對第一個有效測試用例test1進行編號,記為Test1,表示第一個有效測試用例;拓展有效測試用例的執行情況為FF[test1]{Test1,F[test1]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}},即為FF[test1]{Test1,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R};收集測試用例testi的運行情況,記為F[testi]{T(S1),T(S2),T(S3)…T(Sj)…T(Sn),R},也即頻譜信息,表示測試用例運行軌跡,其中,T(S1),T(S2),T(S3)…T(Sj)…T(Sn)分別表示各語句S1,S2,S3,...,Sj,...,Sn覆蓋情況,Sj表示程序P的第j條語句,n為程序語句的總條數,R表示運行結果;S32、將FF[test1]{Test1,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}記入覆蓋信息表G,G由FF[test1]{Test1,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}累積生成;S33、獲取下一條測試用例的執行情況F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R};S34、判定F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}是否與覆蓋信息表G已有行F[test]相同,如果“是”,轉步驟S35,否則轉步驟S37;S35、判定測試testi為非有效測試用例;S36、刪除F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R};S37、判定測試用例testi為有效測試用例;S38、對有效測試用例testi進行編號,編為testI,表示第I個有效測試用例;S39、拓展testi運行結果為FF[testi]{TestI,F[testi]{T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}},即FF[testi]{TestI,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R};S310、將FF[testi]{TestI,T(S1),T(S2),T(S3)...T(Sj)...T(Sn),R}記入覆蓋信息表G中;S311、判斷Listsuites中所有測試用例是否都被執行,如果“是”,轉步驟S312,否則轉步驟S33;S312、獲得最終覆蓋信息表G;S4、根據覆蓋信息表進行語句可疑度計算;S5、根據可疑度值,對程序語句進行降序排列,定位缺陷語句。2.如權利要求1所述的頻譜信息去冗優化的軟件缺陷定位方法,其特征在于,步驟S1具體為:S11、獲取待測的可執行程序P;S12、將程序P的每條語句進行編號,按序編為S1,S2,S3,.....

    【專利技術屬性】
    技術研發人員:張衛豐張曉紅王云王子元周國強張迎周
    申請(專利權)人:南京郵電大學
    類型:發明
    國別省市:江蘇;32

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 免费无码看av的网站| 无码不卡亚洲成?人片| 成人免费无码大片a毛片软件 | 国产精品无码AV天天爽播放器 | 免费无码国产V片在线观看| 国内精品久久人妻无码不卡| 亚洲日韩乱码中文无码蜜桃臀网站| 中文字幕乱码无码人妻系列蜜桃 | 日韩国产成人无码av毛片| 日韩中文无码有码免费视频| 亚洲av无码成h人动漫无遮挡| 国产精品无码久久av不卡 | 午夜麻豆国产精品无码| 国产成人无码一区二区在线观看 | 免费a级毛片无码a∨蜜芽试看| 亚洲∧v久久久无码精品| 日韩加勒比一本无码精品| 国产精品成人一区无码| 亚洲精品无码久久| 久久久久亚洲AV无码永不| 内射人妻无码色AV天堂| 亚洲国产精品无码久久久秋霞2| 精品少妇人妻av无码专区| 午夜不卡久久精品无码免费| 国模无码一区二区三区不卡| 亚洲AV无码一区二区三区性色| 亚洲精品色午夜无码专区日韩| 无码人妻精品丰满熟妇区| 中日韩亚洲人成无码网站| 精品少妇无码AV无码专区| 久久久久成人精品无码中文字幕| 日韩人妻无码一区二区三区 | 亚洲色av性色在线观无码| 成人无码A区在线观看视频| 日韩中文无码有码免费视频| 精品无码国产污污污免费| 无码精品久久一区二区三区| 国产精品午夜无码体验区| 亚洲一级特黄无码片| 亚洲人成人无码网www国产| av无码精品一区二区三区四区|