在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            關(guān) 閉

            新聞中心

            EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 覆蓋測(cè)試中高效代碼插樁技術(shù)的研究

            覆蓋測(cè)試中高效代碼插樁技術(shù)的研究

            作者: 時(shí)間:2010-12-21 來(lái)源:網(wǎng)絡(luò) 收藏


            由于插樁技術(shù)中插樁點(diǎn)識(shí)別過(guò)程中的詞法、語(yǔ)法分析只需要識(shí)別有限的程序結(jié)構(gòu)特征即可,而對(duì)程序中所有的詞法語(yǔ)法進(jìn)行分析是因?yàn)橛芍虚g生成匯編時(shí),需要以詞法語(yǔ)法分析作為基礎(chǔ),識(shí)別出所有的程序結(jié)構(gòu)特征。由此可以知道滿(mǎn)足插樁技術(shù)要求的詞法語(yǔ)法分析器可以比中間代碼生成的詞法語(yǔ)法分析器簡(jiǎn)單。生成滿(mǎn)足插樁點(diǎn)識(shí)別的詞法語(yǔ)法分析器的詞法語(yǔ)法分析程序的輸入為預(yù)處理后的源代碼文件,輸出是插樁后的源代碼文件(如圖1 所示的灰色部分)。由于新增加的詞法語(yǔ)法分析程序僅僅是針對(duì)插樁所需識(shí)別的詞法、語(yǔ)法進(jìn)行分析,故而需要植入的探針比較少,代碼膨脹率自然減小,插樁速度加快,進(jìn)而整個(gè)編譯過(guò)程就會(huì)加快。

            2.3 插樁程序的設(shè)計(jì)

            探針的設(shè)計(jì)解決了插樁內(nèi)容的問(wèn)題,而插樁程序的設(shè)計(jì)是用來(lái)確定插樁位置和插樁策略的,即回答“在哪插”和“如何插”的問(wèn)題。

            (1)插樁位置:

            探針的植入要做到緊湊精干,才能保證在做到收集的信息全面而無(wú)冗余,減少代碼的膨脹率。因此,在確定插樁位置時(shí),要將程序劃分,基本的劃分方法是基于“塊”結(jié)構(gòu)。

            按照塊結(jié)構(gòu)的劃分,探針的植入位置有以下幾種情況:

            a. 程序的第一條語(yǔ)句;b. 分支語(yǔ)句的開(kāi)始;c. 循環(huán)語(yǔ)句的開(kāi)始;d. 下一個(gè)入口語(yǔ)句之前的語(yǔ)句;e. 程序的結(jié)束語(yǔ)句;f. 分支語(yǔ)句的結(jié)束;g. 循環(huán)語(yǔ)句的結(jié)束;除此之外,根據(jù)覆蓋要求的不同,插樁的位置除了上面所說(shuō)的幾種情況外,也會(huì)隨著覆蓋要求的不同有所變化。

            (2)插樁策略:

            插樁策略是解決“如何插”的問(wèn)題。傳統(tǒng)的插樁策略是在所有需要插樁的位置插入探針,在程序運(yùn)行過(guò)程收集所有可能用到得程序信息,將其寫(xiě)入數(shù)據(jù)庫(kù)進(jìn)行分析和處理。這種方法對(duì)于大型的程序來(lái)說(shuō),將會(huì)造成相當(dāng)大的工作量,效率很低,且會(huì)造成很大的代碼膨脹率。而我們會(huì)根據(jù)不同的要求,每次插入不同的探針,采用相應(yīng)的插樁策略,這樣就減少了代碼的膨脹率,保證了程序執(zhí)行的效率。下面簡(jiǎn)單介紹幾種探針的插樁策略。

            語(yǔ)句覆蓋探針(基本塊探針):在基本塊的入口和出口處,分別植入相應(yīng)的探針,以確定程序執(zhí)行時(shí)該基本塊是否被覆蓋。

            分支覆蓋探針:C/C++語(yǔ)言中,分支由分支點(diǎn)確定。對(duì)于每個(gè)分支,在其開(kāi)始處植入一個(gè)相應(yīng)的探針,以確定程序執(zhí)行時(shí)該分支是否被覆蓋。

            條件覆蓋探針:C/C++語(yǔ)言中,if, swich,while, do-while, for 幾種語(yǔ)法結(jié)構(gòu)都支持條件判定,在每個(gè)條件表達(dá)式的布爾表達(dá)式處植入探針,進(jìn)行變量跟蹤取值,以確定其被覆蓋情況。

            根據(jù)不同測(cè)試要求采用不用的插樁策略,每次在不同的位置植入相應(yīng)的探針,使得每次只是植入有限的探針,這就更大大減少了代碼的膨脹率和插樁的速度。

            3 實(shí)驗(yàn)

            本文采用了一個(gè) 1000 行的程序作為被測(cè)程序,分別采用使用整體插樁的工具和我們自己開(kāi)發(fā)的工具進(jìn)行測(cè)試,結(jié)果發(fā)現(xiàn)前者插樁的時(shí)間和代碼膨脹率分別為3s 和35%,后者插樁的平均時(shí)間和平均的代碼膨脹率為1s 和8%,插樁時(shí)間得到明顯提升,代碼膨脹率明顯減少。

            采用以上的程序插樁技術(shù),除了常用的覆蓋測(cè)試策略外,我們還可以實(shí)現(xiàn)MC/DC 和LCSAJ 測(cè)試。

            4 結(jié)束語(yǔ)

            本文詳細(xì)介紹了覆蓋測(cè)試中的高效代碼插樁技術(shù),由此可以看出在實(shí)際中覆蓋測(cè)試分析采用的覆蓋策略的多樣性決定了程序插樁時(shí)需要識(shí)別程序的特征的復(fù)雜性。同時(shí)在軟件覆蓋測(cè)試工具的開(kāi)發(fā)中,如果從軟件的分析開(kāi)始,就有合理的程序劃分、適當(dāng)?shù)倪x定插樁位置和插樁策略,就可以滿(mǎn)足多種測(cè)試要求,使得測(cè)試能夠合理又快速的實(shí)現(xiàn)。如果再加上自動(dòng)化測(cè)試工具的支持,那就可以大大提高測(cè)試的效率。

            本文引用地址:http://www.biyoush.com/article/202489.htm

            上一頁(yè) 1 2 3 下一頁(yè)

            關(guān)鍵詞: 測(cè)試 代碼

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉