新四季網

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

2023-06-26 10:24:31

頻譜信息去冗優化的軟體缺陷定位方法
【專利摘要】本發明提供一種頻譜信息去冗優化的軟體缺陷定位方法,通過運行測試用例,收集程序運行結果信息即頻譜信息;對所得頻譜信息進行去冗優化處理,利用頻譜信息計算可疑度;根據可疑度值的大小對語句進行降序排列,根據已排序的語句序列逐個進行排錯,直至找到引發程序異常的語句。本發明在基於頻譜的錯誤定位方法中,在利用覆蓋信息表進行可疑度計算之前,對頻譜信息進行去冗餘處理,利用有效的頻譜信息進行可疑度計算,提高根據可疑度進行缺陷定位的可靠性,進而提高軟體缺陷定位的效率。
【專利說明】頻譜信息去冗優化的軟體缺陷定位方法
【技術領域】
[0001]本發明涉及一種頻譜信息去冗優化的軟體缺陷定位方法,屬於軟體測試領域。
【背景技術】
[0002]多年來,人們在缺陷定位的研究中提出了許多方法,主要通過程序的靜態信息和動態信息來定位程序錯誤。但獲得靜態信息的開銷較大,對於大型軟體,全面的靜態分析甚至是不現實的,而動態信息的收集只要是運行測試用例,並不會給測試帶來過多的開銷。同時,由於動態信息包含了程序運行時的信息,與利用靜態信息的方法相比,可以提供更準確的結果。
[0003]利用程序頻譜信息進行缺陷定位,是目前比較切實有效的軟體缺陷定位方法,程序頻譜是一種表示程序運行時覆蓋情況的信息,反應程序運行某一特徵的代碼剖面信息。程序頻譜與程序行為之間存在著一定的關係,通過研究運行失敗測試用例得到的頻譜信息與運行成功測試用例得到的頻譜信息之間的差異性可為軟體缺陷定位提供幫助。對於程序的單條語句,被失效測試用例執行的越多,成功的測試用例執行的越少,語句含有錯誤的可能性就越大,發生錯誤的概率就越大。利用這種特徵對程序語句被成功測試用例以及失敗測試用例的覆蓋情況進行統計分析,找出含有缺陷的程序語句。
[0004]對基於程序頻譜的程序定位方法,可以從多角度採取優化策略提高軟體缺陷定位的效率:第一,提高選取測試用例集的有效性;第二,儘量減少收集程序頻譜的開銷;第三,提高可以度算法的精確度性。在以往的優化策略的基礎上,如何提出一種新的優化策略,對覆蓋信息表進行去冗優化,提高依賴程序語句可疑度進行缺陷定位的可靠性,從而達到提高軟體缺陷定位的效率是在基於程序頻譜的程序定位方法的優化過程中應當予以考慮並解決的問題。

【發明內容】

[0005]本發明對已有缺陷定位方法採取優化策略產生一種新的錯誤定位方法,使缺陷定位的效率更高。通過運行測試用例,收集程序運行結果信息即頻譜信息,對頻譜信息進行去冗優化處理,利用頻譜信息進行可疑度計算,根據可疑度值的大小對語句進行降序排列,最後根據已排序的語句序列逐個進行排錯,直到找到引發程序異常的語句。
[0006]本發明的技術解決方案是:
[0007]一種頻譜信息去冗優化的軟體缺陷定位方法,
[0008]通過運行測試用例,收集程序運行結果信息即頻譜信息;
[0009]對所得頻譜信息進行去冗優化處理,利用頻譜信息計算可疑度;
[0010]根據可疑度值的大小對語句進行降序排列,根據已排序的語句序列逐個進行排錯,直至找到弓I發程序異常的語句。
[0011]優選地,S1、獲取可執行的待測程序以及測試用例集;
[0012]S2、執行測試用例,獲取程序執行的動態信息;[0013]S3、收集所有測試用例的運行情況,並進行去冗餘處理,生成無冗餘覆蓋信息表;
[0014]S4、根據覆蓋信息表進行語句可疑度計算;
[0015]S5、根據可疑度值,對程序語句進行降序排列,根據排序的語句序列進行缺陷定位。
[0016]優選地,步驟SI具體為:
[0017]S11、獲取待測的可執行程序P ;
[0018]S12、將程序P的每條語句進行編號,按序編為S1, S2, S3,…,S」,...,Sn,將編號集合記為S,其中S」表示程序P的第j條語句,η為程序語句的總條數;
[0019]S13、獲取測試用例集,記為Listsuites ;
[0020]S14、對Listsuites中的測試用例進行編號,按序編為
[0021]test」 test2, test3,...,test」..., testm,其中 testj 表不測試用例集 Listsuites中的第i條測試用例,m為測試用例的總條數。
[0022]優選地,步驟S2具體為:
[0023]S21、根據測試用例的 編號按序從Listsuites中讀取測試用例testi ;
[0024]S22、根據測試用例的輸入以及執行條件執行讀取的測試用例test ;
[0025]S23、在測試用例執行過程中對覆蓋語句以及未覆蓋的語句用「O」和「I」進行區分標記,「O」表示語句沒有被當前測試用例執行,「 I 」表示語句被當前測試用例執行;
[0026]S24、判定測試用例運行結果;
[0027]S25、收集測試用例test的運行情況,記為
[0028]Fttesti] (T(S1), T(S2), T (S3)...T (Sj)...T (Sn),R},,即頻譜信息,其中,T(Sj)表示語句S」被當前測試用例覆蓋的情況,R表示當前測試用例的運行通過情況;
[0029]S26、判斷測試用例集中的所有的測試用例是否均被運行,如果「是」,轉步驟S27,否則轉步驟S21 ;
[0030]S27、收集所有測試用例的執行情況。
[0031]優選地,步驟S24具體為:
[0032]S241、獲取當前測試用例test在程序中的實際運行結果;
[0033]S242、獲取當前測試用例test的預期運行結果;
[0034]S243、判斷實際運行結果與預期結果是否相同,如果「是」,轉步驟S244,否則轉步驟S245 ;
[0035]S244、運行結果記為0,記入R中,R表示測試用例運行結果情況;
[0036]S245、運行結果記為1,記入R中,R表示測試用例運行結果情況。
[0037]優選地,步驟S3具體為:
[0038]S31、首個測試用例默認處理;
[0039]S32、將 FF[testJ (Test1, T(S1), T (S2), T (S3)...T (Sj)...T (Sn), R}記入覆蓋信息表G,G由
[0040]FF [testj (Test1,T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}累積生成;
[0041]S33、獲取下一條測試用例的執行情況
[0042]F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R};
[0043]S34、判定 Fbesti] {T (S1),T (S2),T (S3)…T (Sj)…T (Sn),R}是否與覆蓋信息表 G已有行F[test]相同,如果「是」,轉步驟S35,否則轉步驟S37 ;
[0044]S35、判定測試tesh為非有效測試用例;
[0045]S36、刪除 FEtestJIT(S1),T(S2) ,T(S3)...T(Sj)...T(Sn),R};
[0046]S37、判定測試用例tesh為有效測試用例;
[0047]S38、對有效測試用例test進行編號,編為Test1,表示第I個有效測試用例;
[0048]S39、拓展testi運行結果為
[0049]FF [testj (Test1, F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}},
[0050]即FF [testj (Test1, T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R};
[0051]S310、將 FFttesti] (Test1, T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}記入覆蓋信息表G中;
[0052]S311、判斷Listsuites中所有測試用例是否都被執行,如果「是」,轉步驟S312,否則轉步驟S33 ;
[0053]S312、獲得最終覆蓋信息表G。
[0054]優選地,步驟S31具體為:
[0055]默認第一個測試用例test:為有效測試用例;
[0056]對第一個有效測試用例test:進行編號,記為Test1,表不第一個有效測試用例;
[0057]拓展有效測試用例的執行情況為
[0058]FF [testj (Test1,F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}},
[0059]即為FF [testj (Test1,T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}。
[0060]優選地,步驟S4具體為:
[0061]S41、針對S」語句,收集執行完測試用例集Listsuites所提供的<arf,

aep, anf,anp>,其中,
【權利要求】
1.一種頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於: 通過運行測試用例,收集程序運行結果信息即頻譜信息; 對所得頻譜信息進行去冗優化處理,利用頻譜信息計算可疑度; 根據可疑度值的大小對語句進行降序排列,根據已排序的語句序列逐個進行排錯,直至找到引發程序異常的語句。
2.如權利要求1所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於: s1、獲取可執行的待測程序以及測試用例集; s2、執行測試用例,獲取程序執行的動態信息; s3、收集所有測試用例的運行情況,並進行去冗餘處理,生成無冗餘覆蓋信息表; s4、根據覆蓋信息表進行語句可疑度計算; s5、根據可疑度值,對程序語句進行降序排列,定位缺陷語句。
3.如權利要求1所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於,步驟SI具體為: s11、獲取待測的可執行程序P; s12、將程序P的每條語句進行編號,按序編為S1,S2, S3,..., Sj,..., Sn,將編號集合記為S,其中S」表示程序P的第j條語句,η為程序語句的總條數; s13、獲取測試用例集,記為Listsuites; SHjfListsuites中的測試用例進行編號,按序編為 test^ test2, test3, , test^ , testm,其中 testi 表不測試用例集 Listsuites 中的第i條測試用例,m為測試用例的總條數。
4.如權利要求1所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於,步驟S2具體為: s21、根據測試用例的編號按序從Listsuites中讀取測試用例tesh; s22、根據測試用例的輸入以及執行條件執行讀取的測試用例test; s23、在測試用例執行過程中對覆蓋語句以及未覆蓋的語句用「O」和「I」進行區分標記,「O」表示語句沒有被當前測試用例執行,「 I 」表示語句被當前測試用例執行; s24、判定測試用例運行結果; s35、收集測試用例tesh的運行情況,記為 Fttesti] {T (S1),T (S2),T (S3)…T (Sj)…T (Sn),R},即頻譜信息,其中,T (Sj)表示語句Sj被當前測試用例覆蓋的情況,R表示當前測試用例的運行通過情況; s26、判斷測試用例集中的所有的測試用例是否均被運行,如果「是」,轉步驟S27,否則轉步驟S21 ; s27、收集所有測試用例的執行情況。
5.如權利要求4所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於,步驟S24具體為: s241、獲取當前測試用例test在程序中的實際運行結果; s242、獲取當前測試用例test的預期運行結果; s243、判斷實際運行結果與預期結果是否相同,如果「是」,轉步驟S244,否則轉步驟S245 ;S244、運行結果記為O,記入R中,R表示測試用例運行結果情況; S245、運行結果記為1,記入R中,R表示測試用例運行結果情況。
6.如權利要求1所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於,步驟S3具體為: S31、首個測試用例默認處理;
S32、將FF [testj (Test1, T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}記入覆蓋信息表 G,G 由 FF [testj ITest1,T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}累積生成; S33、獲取下一條測試用例的執行情況
F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R};
S34、判定F [testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}是否與覆蓋信息表 G 已有行F[test]相同,如果「是」,轉步驟S35,否則轉步驟S37 ; S35、判定測試test為非有效測試用例;
S36、刪除Fttesti] {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}; S37、判定測試用例test為有效測試用例; S38、對有效測試用例test進行編號,編為Test1,表示第I個有效測試用例; S39、拓展test運行結果為
FF[testj (Test1, F[testj {T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}},
即 FFEtesti] (Test1, T(S1), T(S2), T (S3)...T (Sj)...T (Sn), R};
S310、將FFttesti] ITest1, T(S1),T(S2),T (S3)...T (Sj)...T (Sn),R}記入覆蓋信息表G中; S311、判斷Listsuites中所有測試用例是否都被執行,如果「是」,轉步驟S312,否則轉步驟S33 ; S312、獲得最終覆蓋信息表G。
7.如權利要求6所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於,步驟S31具體為: 默認第一個測試用例test為有效測試用例; 對第一個有效測試用例test:進行編號,記為Test1,表不第一個有效測試用例; 拓展有效測試用例的執行情況為
FF[testJ ITest1, Fttest1] (T(S1), T (S2),T (S3)...T(Sj)...T (Sn),R}},
即為 FF[testj ITest1,T (S1),T (S2),T (S3)...T (Sj)...T (Sn),R}。
8.如權利要求1-7任一項所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於,步驟S4具體為: S41、針對&語句,收集執行完測試用例集Listsuites所提供的,其中,
9.如權利要求1-7任一項所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於,步驟S5具體為: S51、語句排序;
獲取語句編號序列S:S1; S2,S3...Sj...Sn; 獲取語句序列S中相應語句的可疑度值序列z:z1; z2,z3...Zj...Zn,其中τ、表示第j條語句的可疑度值; 根據Z中可疑度值進行降序排列; 根據已排序的Z序列,對S進行排序; S52、錯誤定位。
10.如權利要求9所述的頻譜信息去冗優化的軟體缺陷定位方法,其特徵在於,步驟S52具體為: S521、獲取重新排序的S序列; S522、按序獲取S中的編號Sj;S523、查看程序P的語句S」是否含有缺陷,如果「是」,轉步驟S524,否則轉步驟S522; S524、確定程序語句S」為缺陷語句,缺陷定位成功。
【文檔編號】G06F11/36GK104008051SQ201410210134
【公開日】2014年8月27日 申請日期:2014年5月16日 優先權日:2014年5月16日
【發明者】張衛豐, 張曉紅, 王雲, 王子元, 周國強, 張迎周 申請人:南京郵電大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀