亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)平臺(tái)及方法

文檔序號(hào):6631074閱讀:334來源:國知局
一種基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)平臺(tái)及方法
【專利摘要】本發(fā)明涉及一種基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)平臺(tái)及方法,該平臺(tái)基于CentOS release 6.2(Final)操作系統(tǒng),采用B/S結(jié)構(gòu),通過HTTP請(qǐng)求獲得實(shí)驗(yàn)結(jié)果,返回結(jié)果輸出為XML格式文件流。該平臺(tái)支持快速、可視化、可編輯的軟件錯(cuò)誤自動(dòng)定位實(shí)驗(yàn),研究者可根據(jù)自己的需要定制實(shí)驗(yàn)參數(shù),并利用標(biāo)準(zhǔn)API進(jìn)行數(shù)據(jù)的批量獲取并分析,同時(shí)支持實(shí)驗(yàn)結(jié)果在線展示,極大增加了靈活性。
【專利說明】一種基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)平臺(tái) 及方法

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)平臺(tái)及方法,屬 于軟件測(cè)試【技術(shù)領(lǐng)域】。

【背景技術(shù)】
[0002] 軟件調(diào)試,是對(duì)程序錯(cuò)誤進(jìn)行定位和修正的過程,而對(duì)錯(cuò)誤進(jìn)行定位又是軟件調(diào) 試中最耗時(shí)和最困難的一步。為了降低錯(cuò)誤定位的代價(jià),研究人員提出了基于覆蓋的錯(cuò)誤 定位方法。其主要思想是通過獲取測(cè)試過程中程序?qū)嶓w的覆蓋信息以及每個(gè)測(cè)試用例相對(duì) 應(yīng)的測(cè)試結(jié)果,然后根據(jù)這些信息構(gòu)造公式來計(jì)算該實(shí)體的錯(cuò)誤可疑度值,來表示該實(shí)體 與錯(cuò)誤的關(guān)聯(lián)程度,然后根據(jù)可疑度值的大小來對(duì)語句進(jìn)行排序,生成可疑度排位表,進(jìn)而 指導(dǎo)程序員進(jìn)行錯(cuò)誤定位。程序?qū)嶓w可以是語句、分支、路徑、語句塊等,覆蓋信息用來記錄 程序?qū)嶓w在具體某個(gè)成功或失敗測(cè)試用例下的動(dòng)態(tài)行為,測(cè)試結(jié)果用來記錄每個(gè)測(cè)試用例 成功或者失敗。
[0003] 給定一個(gè)含有η條語句的程序P = <S1,S2, S3, · · ·,Sn>,測(cè)試用例T = {tl,t2,… ,tm}。在軟件測(cè)試過程中,我們可以獲取程序?qū)嶓w在每個(gè)成功和失敗測(cè)試用例下執(zhí)行與否的 信息,記為<必,</,<,</>,其中<為第i個(gè)實(shí)體被成功用例執(zhí)行過的次數(shù),< 為失敗用例 執(zhí)行次數(shù),<為成功用例未覆蓋數(shù),< 為失敗用例未覆蓋數(shù)。一般認(rèn)為,對(duì)于錯(cuò)誤所在的程 序單元,應(yīng)較高而則應(yīng)較低,根據(jù)某些啟發(fā)式策略,利用上述的變量構(gòu)造可疑度計(jì)算 公式,如Tarantula(以算法發(fā)明人命名,暫無中文名稱),即可求每個(gè)程序?qū)嶓w的可疑度值 來表示該語句與錯(cuò)誤的關(guān)聯(lián)程度。由此計(jì)算的可疑度進(jìn)行降序排列,可獲得可疑度排位表。 在排位表中從上到下順序查找錯(cuò)誤語句所在的位置,該位置與總行數(shù)之比即本次定位的效 率。
[0004] 基于這種思想的可疑度計(jì)算模型有很多,相關(guān)的對(duì)比研究也不斷開展,然而還沒 有一套實(shí)驗(yàn)平臺(tái)的存在來對(duì)這些實(shí)驗(yàn)工作進(jìn)行統(tǒng)一。由于缺乏統(tǒng)一的實(shí)驗(yàn)平臺(tái),研究人員 在實(shí)驗(yàn)過程中不得不做大量的重復(fù)性的工作,同時(shí)不同的實(shí)驗(yàn)設(shè)置也會(huì)觀測(cè)到不同的實(shí)驗(yàn) 結(jié)果,這些都會(huì)妨礙實(shí)驗(yàn)的進(jìn)行和實(shí)驗(yàn)結(jié)論的可重現(xiàn)性。


【發(fā)明內(nèi)容】

[0005] 本發(fā)明技術(shù)解決問題:克服現(xiàn)有技術(shù)的不足,提供一種基于覆蓋的軟件缺陷定位 技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)平臺(tái)及方法,將測(cè)試用例的執(zhí)行與可疑度排位計(jì)算相分離,并實(shí)現(xiàn) 了這一平臺(tái),極大簡(jiǎn)化實(shí)驗(yàn)流程,縮短實(shí)驗(yàn)周期的自動(dòng)化在線評(píng)測(cè)。
[0006] 本發(fā)明技術(shù)解決方案:基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)平臺(tái),包 括:覆蓋信息采集模塊、程序信息存儲(chǔ)模塊、參數(shù)解析模塊、可疑度計(jì)算模塊、定位展示模塊 等;
[0007] 覆蓋信息采集模塊:對(duì)錯(cuò)誤定位實(shí)驗(yàn)中某些通用實(shí)驗(yàn)對(duì)象程序及其測(cè)試用例,利 用自動(dòng)化測(cè)試腳本,對(duì)程序自動(dòng)編譯執(zhí)行并搜集執(zhí)行過程中語句的覆蓋信息;從大量覆蓋 信息中提取關(guān)鍵四元組,即每行或每塊代碼執(zhí)行時(shí)被正確用例覆蓋數(shù)、被失敗用例覆蓋數(shù)、 正確用例未覆蓋數(shù)和失敗用例未覆蓋數(shù),并將四元組寫入覆蓋信息存儲(chǔ)模塊;
[0008] 程序信息存儲(chǔ)模塊:程序信息包括兩方面內(nèi)容,其一為程序自身名稱、行數(shù)、函數(shù) 模塊結(jié)構(gòu)及其對(duì)應(yīng)測(cè)試用例數(shù)等靜態(tài)信息,采用數(shù)據(jù)庫存儲(chǔ);其二為在程序執(zhí)行過程中所 得的覆蓋信息與成功或失敗等的動(dòng)態(tài)信息,采用XML文件形式存儲(chǔ),主要包括成功失敗列 表和四元組列表,且支持下載;
[0009] 參數(shù)解析模塊:本平臺(tái)為B/S結(jié)構(gòu),以URL方式調(diào)用,參數(shù)通過Get方式傳入;對(duì) 用戶傳來的URL參數(shù)進(jìn)行解析并配置可疑度計(jì)算條件,參數(shù)包括程序名、程序版本號(hào)、錯(cuò)誤 號(hào)、計(jì)算粒度和可疑度計(jì)算公式等;其中可疑度表示源代碼某部分出現(xiàn)錯(cuò)誤的可疑程度值, 該值依據(jù)相應(yīng)概率模型計(jì)算得到,其計(jì)算公式即為本系統(tǒng)的主要評(píng)測(cè)對(duì)象;公式的輸入?yún)?數(shù)為程序覆蓋信息四元組;依據(jù)粒度為按代碼行、塊和函數(shù)三種單位計(jì)算可疑度;
[0010] 可疑度計(jì)算模塊:根據(jù)參數(shù)解析模塊獲得的計(jì)算公式,從程序信息模塊中讀取程 序基本?目息及覆蓋?目息,計(jì)算獲得代碼塊的可疑度值;
[0011] 定位展示模塊:對(duì)每部分代碼按可疑度降序排列獲得排序表,并將錯(cuò)誤所在部分 的排序位置與總代碼數(shù)的比值作為本次排位的定位效率,將排序結(jié)果以XML格式用HTTP返 回的形式為用戶展示;若以此對(duì)某程序所有版本的所有錯(cuò)誤都進(jìn)行定位,可生成折線圖反 應(yīng)總體定位效果,圖中行坐標(biāo)為定位效率值,縱坐標(biāo)為效率優(yōu)于某值的實(shí)驗(yàn)占總實(shí)驗(yàn)的比 例;
[0012] 基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)方法,實(shí)現(xiàn)步驟如下:
[0013] (1)對(duì)C語言的被測(cè)程序?qū)ο?,利用GCC、gcov等工具編譯源代碼并由自動(dòng)化腳 本依次植入一個(gè)錯(cuò)誤,自動(dòng)運(yùn)行程序及其每個(gè)測(cè)試用例,由diff工具判斷植入的錯(cuò)誤是否 導(dǎo)致輸出不同,依次確定該用例是否通過;同時(shí)生成.gcov文件,包含詳細(xì)的源代碼覆蓋信 息,其中包含大量冗余,從中提取程序單元四元組,并以XML格式寫入文件;
[0014] (2)程序基本信息由MySQL數(shù)據(jù)庫存儲(chǔ),包含程序自身名稱、行數(shù)、函數(shù)模塊結(jié) 構(gòu)及其對(duì)應(yīng)測(cè)試用例數(shù)等靜態(tài)信息,而程序覆蓋信息存為XML文件,分為兩種.out. xml 和.cover, xml,分別用于記錄程序?qū)γ總€(gè)測(cè)試用例是否成功和每次運(yùn)行的覆蓋數(shù)值;
[0015] (3)用戶可以URL形式進(jìn)行調(diào)用,對(duì)URL的參數(shù)進(jìn)行解析,獲取計(jì)算可疑度公式,該 計(jì)算公式可動(dòng)態(tài)編輯,通常由用戶指定,且支持加、減、乘、除、乘方、指對(duì)數(shù)、三角等眾多運(yùn) 算類型;
[0016] (4)按照可疑度公式以及排序粒度,提取覆蓋信息XML文件中的四元組,計(jì)算對(duì)應(yīng) 程序單元的可疑度值,并對(duì)其進(jìn)行降序排列;
[0017] (5)對(duì)獲得的排位表依次索搜錯(cuò)誤所在位置,并將該位置與總行數(shù)之比計(jì)為本次 定位效率,進(jìn)行某一程序全部版本全部錯(cuò)誤的批量實(shí)驗(yàn)時(shí),可利用JQuery插件在客戶瀏覽 器端展示出總體效果折線圖;折線圖對(duì)應(yīng)為定位效率由于某值的單詞實(shí)驗(yàn)的比例。
[0018] 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
[0019] (1)公式可編輯:可疑度計(jì)算公式是可以動(dòng)態(tài)編輯的,這與傳統(tǒng)的腳本本地化執(zhí) 行相比是最大的區(qū)別,使實(shí)驗(yàn)工作具有了極大的靈活性;
[0020] (2)覆蓋信息可重現(xiàn):程序的每行或語句塊的覆蓋信息、測(cè)試用例成功或失敗等 中間數(shù)據(jù)同樣以XML形式可讀,增加了實(shí)驗(yàn)數(shù)據(jù)可靠性和完整性;
[0021] (3)可視化:本發(fā)明可直接生成前面提到過的反映公式綜合效率的折線圖,從圖 中曲線變化可對(duì)公式進(jìn)行直觀評(píng)價(jià);
[0022] (4)快速:由于中間數(shù)據(jù)是事先執(zhí)行并以XML存儲(chǔ)的,所以得到排位表的部分所需 計(jì)算量可以大大縮減,使實(shí)驗(yàn)可以迅速產(chǎn)生結(jié)果。例如使用腳本對(duì)某一程序執(zhí)行一個(gè)錯(cuò)誤 測(cè)試,耗時(shí)在1-15分鐘,而本發(fā)明可在幾秒內(nèi)獲得返回,大大節(jié)省時(shí)間。同時(shí)排位表的XML 格式也清晰易讀,便于實(shí)驗(yàn)人員交流。

【專利附圖】

【附圖說明】
[0023] 圖1為本發(fā)明平臺(tái)體系結(jié)構(gòu)圖;
[0024] 圖2為覆蓋信息采集模塊結(jié)構(gòu)圖;
[0025] 圖3為程序信息存儲(chǔ)模塊結(jié)構(gòu)圖;
[0026] 圖4為參數(shù)解析模塊結(jié)構(gòu)圖;
[0027] 圖5為可疑度計(jì)算模塊結(jié)構(gòu)圖;
[0028] 圖6為Grep程序以Tarantula公式按行排序的可疑度表;
[0029] 圖7為Grep個(gè)版本以Tarantula計(jì)算的按行排序效率曲線圖。

【具體實(shí)施方式】
[0030] 如圖1所示,本發(fā)明的平臺(tái)基于CentOS release6. 2(Final)操作系統(tǒng),采用B/S結(jié) 構(gòu),通過HTTP請(qǐng)求獲得實(shí)驗(yàn)結(jié)果。服務(wù)端采用Java Struts2. 1框架,返回結(jié)果輸出為XML 格式文件流。平臺(tái)使用MySQL數(shù)據(jù)庫存儲(chǔ)實(shí)驗(yàn)程序的相關(guān)信息,對(duì)象程序覆蓋信息則使用 由測(cè)試腳本運(yùn)行生成的XML文件存儲(chǔ)。更具體地包括以下幾個(gè)方面幾個(gè)模塊:覆蓋信息采 集模塊、程序信息存儲(chǔ)模塊、參數(shù)解析模塊、可疑度計(jì)算模塊、定位展示模塊等。
[0031] (1)將程序執(zhí)行時(shí)覆蓋信息作為整個(gè)實(shí)驗(yàn)的中間數(shù)據(jù),通過程序插樁獲 得,運(yùn)行程序則可完成覆蓋信息的統(tǒng)計(jì)。對(duì)于Linux下的C程序,采用能夠與GCC 協(xié)同工作的覆蓋工具Gcov進(jìn)行統(tǒng)計(jì)。如對(duì)于test, c只需在GCC中添加編譯參 數(shù)-fprofile-arcs-ftest-coverage,這時(shí)將產(chǎn)生test, gcno的程序結(jié)構(gòu)圖文件。運(yùn)行程序, 使用Gcov命令則可產(chǎn)生覆蓋信息文本文件test, gcov。對(duì)該文本文件解析掃描可獲得程序 中每條語句在測(cè)試用例下的覆蓋信息,并將這些信息寫入到程序信息存儲(chǔ)模塊。
[0032] (2)對(duì)程序信息進(jìn)行存儲(chǔ)。程序信息包括兩方面內(nèi)容,一為程序自身名稱、行數(shù)、 函數(shù)模塊結(jié)構(gòu)及對(duì)應(yīng)測(cè)試用例數(shù)的靜態(tài)信息,采用MySQL數(shù)據(jù)庫存儲(chǔ);第二為在程序執(zhí)行 過程中所得的覆蓋信息與成功或失敗的動(dòng)態(tài)信息,采用XML文件存儲(chǔ)。靜態(tài)信息包主要括 程序的名稱、版本、錯(cuò)誤名、代碼行數(shù)、測(cè)試用例數(shù)、錯(cuò)誤位置等,因此主要?jiǎng)澐譃榘闯绦颉?版本和錯(cuò)誤名索引的三級(jí)表結(jié)構(gòu)。覆蓋信息由包含兩部分:用例成功或失敗的信息,存儲(chǔ) 在· out. xml后綴名文件中;成功或失敗用例對(duì)每個(gè)代碼塊覆蓋數(shù)存在· cover, xml文件中。
[0033] (3)以Get方式發(fā)出的URL調(diào)用請(qǐng)求,從中提取相關(guān)參數(shù)。支持多種參數(shù)動(dòng)態(tài)配 置,可選若干被測(cè)程序(相關(guān)研究領(lǐng)域通用實(shí)驗(yàn)對(duì)象)及其版本,選擇語句行、語句塊、函數(shù) 等粒度排序,輸入可疑度計(jì)算公式字串等。概率模型公式可根據(jù)使用者動(dòng)態(tài)編輯,避免對(duì)公 式進(jìn)行硬編碼,實(shí)現(xiàn)模塊重用,同時(shí)能夠方便地實(shí)現(xiàn)各種公式的橫向?qū)φ蘸头治觯С职?力口、減、乘、除、乘方、指對(duì)數(shù)、三角等眾多運(yùn)算類型,還支持邏輯運(yùn)算和比較運(yùn)算,同時(shí)也支 持含變量的表達(dá)式。
[0034] (4)依照調(diào)用參數(shù)解析存儲(chǔ)的程序覆蓋信息,查詢對(duì)應(yīng)程序版本錯(cuò)誤名的覆蓋文 件,解析覆蓋四元組,按參數(shù)中指定的計(jì)算公式對(duì)相應(yīng)粒度的代碼單元進(jìn)行可疑度計(jì)算,以 判斷程序單元存在缺陷的可能性,對(duì)可疑度進(jìn)行排序后的結(jié)果將作為最終結(jié)果返回,由于 測(cè)試過程中最耗時(shí)的部分是被測(cè)程序運(yùn)行過程,而對(duì)XML的解析和計(jì)算排序等工作耗時(shí)很 短,且XML文件為事先生成,故計(jì)算可疑度及錯(cuò)誤定位工作耗時(shí)大大縮減。
[0035] (5)對(duì)概率模型的定位效果,能夠以折線圖形式直觀呈現(xiàn)。對(duì)程序運(yùn)行一次測(cè)試用 例集,錯(cuò)誤語句的排位占總語句數(shù)的比例為定位效率,用同樣的概率模型對(duì)多個(gè)程序及其 版本進(jìn)行定位可實(shí)現(xiàn)對(duì)該模型的總體效果評(píng)價(jià),并將結(jié)果展示為折線圖。
[0036] 上述實(shí)現(xiàn)過程具體實(shí)施如下:
[0037] 1.覆蓋信息采集模塊
[0038] 該模塊的實(shí)現(xiàn)過程如圖2所示:
[0039] (1)生成測(cè)試程序的測(cè)試用例并對(duì)其中插入插樁語句代碼用于搜集統(tǒng)計(jì)覆蓋信 肩、。
[0040] (2)以測(cè)試用例為輸入測(cè)試用例,執(zhí)行程序的正確版本,同時(shí)生成輸出文件和包含 覆蓋信息的.gcov文件。
[0041] ⑶執(zhí)行植入錯(cuò)誤的版本,與正確版本搜集相同信息。
[0042] (4)對(duì)輸出兩套輸出文件對(duì)比,若不同則該測(cè)試用例失敗。統(tǒng)計(jì)程序的成功失敗信 息寫入程序信息存儲(chǔ)模塊· out. xml文件。
[0043] (5)對(duì)各用例執(zhí)行中產(chǎn)生的.gcov文件解析并提取函數(shù)與代碼塊的結(jié)構(gòu)關(guān)系,即 代碼包含的函數(shù)名及其中代碼塊和所在行等。獲得每行、每塊等的覆蓋數(shù),各個(gè)失敗的測(cè) 試用例對(duì)某行覆蓋數(shù)累加即為該程序該行的失敗覆蓋數(shù),而每行成功覆蓋數(shù)、成功未覆蓋 數(shù)和失敗未覆蓋數(shù)與此類似,組成每行對(duì)應(yīng)四元組,將函數(shù)結(jié)構(gòu)與四元組寫入程序.cover, xml文件。文件以程序_版本_錯(cuò)誤命名。
[0044] 2.程序信息存儲(chǔ)模塊
[0045] 該模塊的實(shí)現(xiàn)過程如圖3所示:
[0046] (1)程序相關(guān)靜態(tài)信息按照自身名稱、版本號(hào)、錯(cuò)誤名、測(cè)試用例數(shù)等分為四大部 分別存儲(chǔ)在MySQL的不同表中,其中一個(gè)程序名對(duì)應(yīng)若干版本和測(cè)試用例數(shù),一個(gè)版本對(duì) 應(yīng)若干錯(cuò)誤數(shù),表間數(shù)據(jù)項(xiàng)為一對(duì)多的關(guān)系。
[0047] (2)覆蓋信息采用兩種格式XML文件存儲(chǔ),分別為· out. xml和· cover, xml。其 中.out. xml主要有包含輸出成功失敗信息,如〈testl ans = 〃pass〃/>,· cover, xml包含 覆蓋數(shù)信息,如〈block line = 〃38〃passHit = 〃2604〃failHit = 〃0〃/>,意義為初始行為 38的代碼塊,被成功用例覆蓋數(shù)為2604,失敗用例覆蓋數(shù)為0。
[0048] 3.參數(shù)解析模塊
[0049] 該模塊的實(shí)現(xiàn)過程如圖4所示:
[0050] (1)獲取簡(jiǎn)單參數(shù),直接從傳入的URL字串讀出。
[0051] (2)對(duì)讀到的URL中計(jì)算可疑度公式字串進(jìn)行表達(dá)式解析,轉(zhuǎn)化為具體的計(jì)算步 驟。需要支持多種運(yùn)算類型和變量定義。
[0052] 例如調(diào)用:
[0053] http://localhost:8080/sirunl/rankLine. action ? program = grep&version =vl&fault = FAULT Y_F_DG_4&eval = ( % 23 % 7bf % 7d % 2f % 23 % 7bF % 7d) + % 2f+((% 23% 7bf% 7d% 2f% 23% 7bF% 7d) % 2b(% 23% 7bp% 7d% 2f% 23% 7bP% 7d)),其中program參數(shù)為程序名grep,version為版本名vl,fault為錯(cuò)誤名FAULTY_F_ DG_4, eval 為計(jì)算公式字串(#{f}/#{F}V((#{f}/#{F}) + (#{p}/#{P}))的 URL 編碼結(jié)果, 其中#{f}為aef,即錯(cuò)誤用例覆蓋數(shù),#{p}為a印錯(cuò)誤用例覆蓋數(shù),#{F}為F錯(cuò)誤用例數(shù), # {P}為P正確用例數(shù),該公式為Tarantula公式,設(shè)置參數(shù)時(shí)需將公式字符串進(jìn)行URL編碼 轉(zhuǎn)換。

【權(quán)利要求】
1. 一種基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)平臺(tái),其特征在于:所述實(shí)驗(yàn) 平臺(tái)以B/S結(jié)構(gòu),以URL方式調(diào)用,參數(shù)通過Get方式傳入;所述實(shí)驗(yàn)平臺(tái)包括:覆蓋信息采 集模塊、程序信息存儲(chǔ)模塊、參數(shù)解析模塊、可疑度計(jì)算模塊、定位展示模塊; 覆蓋信息采集模塊:對(duì)錯(cuò)誤定位實(shí)驗(yàn)中某些通用實(shí)驗(yàn)對(duì)象程序及其測(cè)試用例,利用自 動(dòng)化測(cè)試腳本,對(duì)程序自動(dòng)編譯執(zhí)行并搜集執(zhí)行過程中語句的覆蓋信息;從大量覆蓋信息 中提取關(guān)鍵四元組,即每行或每塊代碼執(zhí)行時(shí)被正確用例覆蓋數(shù)、被失敗用例覆蓋數(shù)、正確 用例未覆蓋數(shù)和失敗用例未覆蓋數(shù),并將四元組寫入覆蓋信息存儲(chǔ)模塊; 程序信息存儲(chǔ)模塊:程序信息包括兩方面內(nèi)容,第一為程序自身名稱、行數(shù)、函數(shù)模塊 結(jié)構(gòu)及對(duì)應(yīng)測(cè)試用例數(shù)的靜態(tài)信息,采用數(shù)據(jù)庫存儲(chǔ);第二為在程序執(zhí)行過程中所得的覆 蓋信息與成功或失敗的動(dòng)態(tài)信息,采用XML文件形式存儲(chǔ),主要包括成功失敗列表和四元 組列表,且支持下載; 參數(shù)解析模塊:對(duì)用戶傳來的URL參數(shù)進(jìn)行解析并配置可疑度計(jì)算條件,參數(shù)包括程 序名、程序版本號(hào)、錯(cuò)誤號(hào)、計(jì)算粒度和可疑度計(jì)算公式;其中可疑度表示源代碼某部分出 現(xiàn)錯(cuò)誤的可疑程度值,該值依據(jù)相應(yīng)概率模型計(jì)算得到,其計(jì)算公式即為本系統(tǒng)的主要評(píng) 測(cè)對(duì)象;公式的輸入?yún)?shù)為程序覆蓋信息四元組;依據(jù)粒度為按代碼行、塊和函數(shù)三種單 位計(jì)算可疑度; 可疑度計(jì)算模塊:根據(jù)參數(shù)解析模塊獲得的計(jì)算公式,從程序信息模塊中讀取程序基 本信息及覆蓋信息,計(jì)算獲得代碼塊的可疑度值; 定位展示模塊:對(duì)每部分代碼按可疑度降序排列獲得排序表,并將錯(cuò)誤所在部分的排 序位置與總代碼數(shù)的比值作為本次排位的定位效率,將排序結(jié)果以XML格式用HTTP返回的 形式為用戶展示;若以此對(duì)某程序所有版本的所有錯(cuò)誤都進(jìn)行定位,可生成折線圖反應(yīng)總 體定位效果,圖中行坐標(biāo)為定位效率值,縱坐標(biāo)為效率優(yōu)于某值的實(shí)驗(yàn)占總實(shí)驗(yàn)的比例。
2. -種基于覆蓋的軟件缺陷定位技術(shù)的在線評(píng)測(cè)與實(shí)驗(yàn)方法,其特征在于實(shí)現(xiàn)步驟如 下: (1) 對(duì)C語言的被測(cè)程序?qū)ο螅肎CC、gc〇v工具編譯源代碼并由自動(dòng)化腳本依次植 入一個(gè)錯(cuò)誤,自動(dòng)運(yùn)行程序及其每個(gè)測(cè)試用例,由diff工具判斷植入的錯(cuò)誤是否導(dǎo)致輸出 不同,依次確定該用例是否通過;同時(shí)生成.gcov文件,包含詳細(xì)的源代碼覆蓋信息,其中 包含大量冗余,從中提取程序單元四元組,并以XML格式寫入文件; (2) 程序基本信息由MySQL數(shù)據(jù)庫存儲(chǔ),包含程序自身名稱、行數(shù)、函數(shù)模塊結(jié)構(gòu)及其 對(duì)應(yīng)測(cè)試用例數(shù)等靜態(tài)信息,而程序覆蓋信息存為XML文件,分為兩種.out. xml和.cover, xml,分別用于記錄程序?qū)γ總€(gè)測(cè)試用例是否成功和每次運(yùn)行的覆蓋數(shù)值; (3) 用戶可以URL形式進(jìn)行調(diào)用,對(duì)URL的參數(shù)進(jìn)行解析,獲取計(jì)算可疑度公式,該計(jì)算 公式可動(dòng)態(tài)編輯,通常由用戶指定,且支持加、減、乘、除、乘方、指對(duì)數(shù)、三角等眾多運(yùn)算類 型; (4) 按照可疑度公式以及排序粒度,提取覆蓋信息XML文件中的四元組,計(jì)算對(duì)應(yīng)程序 單元的可疑度值,并對(duì)其進(jìn)行降序排列; (5) 對(duì)獲得的排位表依次索搜錯(cuò)誤所在位置,并將該位置與總行數(shù)之比計(jì)為本次定位 效率,進(jìn)行某一程序全部版本全部錯(cuò)誤的批量實(shí)驗(yàn)時(shí),利用JQuery插件在客戶瀏覽器端繪 制出總體效果折線圖;折線圖對(duì)應(yīng)為定位效率由于某值的單詞實(shí)驗(yàn)的比例。
【文檔編號(hào)】G06F11/36GK104239219SQ201410563408
【公開日】2014年12月24日 申請(qǐng)日期:2014年10月21日 優(yōu)先權(quán)日:2014年10月21日
【發(fā)明者】張龍, 張震宇, 孫文輝, 劉譽(yù)臻 申請(qǐng)人:中國科學(xué)院軟件研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1