日韩欧美国产极速不卡一区,国产手机视频在线观看尤物,国产亚洲欧美日韩蜜芽一区,亚洲精品国产免费,亚洲二区三区无码中文,A大片亚洲AV无码一区二区三区,日韩国语国产无码123

您好,歡迎來到維庫電子市�(chǎng)�(wǎng) 登錄 | 免費(fèi)注冊(cè)

代碼插樁
閱讀�8786�(shí)間:2011-01-19 10:55:57

  代碼插樁是實(shí)�(xiàn)覆蓋�(cè)試的�(guān)鍵技�(shù)之一,而高效的插樁技�(shù)�(duì)�嵌入式軟�的測(cè)試來說又是至�(guān)重要的。在�(duì)CodeTeST 中插樁技�(shù)研究的基�(chǔ)�,以GCC 作為開發(fā)平臺(tái),應(yīng)用并�(shí)�(xiàn)了新的插裝器,采用增加一�(gè)詞法語法分析器的方法,提高了插樁的效率。經(jīng)過實(shí)�(yàn)證明新的插裝器具有代碼膨脹率�,插樁速度塊的�(yōu)�(diǎn),在一定程度上做到了高效插��

概述

  在實(shí)�(xiàn)覆蓋�(cè)試的過程�,往往需要知道某些信�,如:程序中可執(zhí)行語句被�(zhí)行(即被覆蓋)的情況,程序執(zhí)行的路徑,變量的引用、定義等。要想獲取這類信息,需要跟蹤被�(cè)程序的執(zhí)行過�,或者是由計(jì)算機(jī)在被�(cè)程序�(zhí)行的過程中自�(dòng)記錄。前者需要人工�(jìn)�,效率低下且枯燥乏味;后者則需要在被測(cè)程序中插入完成相�(yīng)工作的代�,即代碼插樁技�(shù)。如今大多數(shù)的覆蓋測(cè)試工具均采用代碼插樁技�(shù)�

  在對(duì)普通應(yīng)用的軟件�(jìn)行測(cè)試時(shí),由于現(xiàn)在電腦的配置越來越高,電腦的�(yùn)行速度越來越快,代碼插樁所引起的問題還不是很明顯或者說是在可以接受的范圍之�(nèi)。但是對(duì)于嵌入式軟件來說這卻是致命的問題。因?yàn)榍度胧杰浖南到y(tǒng)資源有限(內(nèi)存較�、I/O 通道較少等),過大的代碼膨脹率將使得程序不能在嵌入式系統(tǒng)中運(yùn)行;同時(shí)嵌入式軟件通常具有很強(qiáng)的實(shí)�(shí)�,程序的輸出只在有限的時(shí)間內(nèi)有效,遲到的“正確的”結(jié)果是無用的甚�?xí)兂慑e(cuò)誤的、有害的�

  代碼插樁技�(shù)�(huì)破壞程序的時(shí)間特性等,導(dǎo)致軟件執(zhí)行的�(cuò)�。因此我們需要更高效的代碼插樁技�(shù)來完成覆蓋測(cè)�,尤其是嵌入式軟件的覆蓋�(cè)��

方式比較

  由于程序插樁技�(shù)是在被測(cè)程序中插入探�,然后通過探針的執(zhí)行來獲得程序的控制流和數(shù)�(jù)流信�,以此來�(shí)�(xiàn)�(cè)試的目的。因�,根�(jù)探針插入的時(shí)間可以分為目�(biāo)代碼插樁和源代碼插樁�

 ?�?)目�(biāo)代碼插樁的前提是�(duì)目標(biāo)代碼�(jìn)�

  行必要的分析以確定需要插樁的地點(diǎn)和內(nèi)�。由于目�(biāo)代碼的格式主要和操作系統(tǒng)相關(guān),和具體的編程語言及版本無�(guān),所以得到了廣泛的應(yīng)用,尤其是在需要對(duì)�(nèi)存�(jìn)行監(jiān)控的軟件�。但是由于目�(biāo)代碼中語�、語義信息不完整,而插樁技�(shù)需要對(duì)代碼詞法語法的分析有較高的要�,故在覆蓋測(cè)試工具中多采用源代碼插樁�

  �2)源代碼插樁是在�(duì)源文件�(jìn)行完整的�

  詞法分析和語法分析的基礎(chǔ)上�(jìn)行的,這就保證�(duì)源文件的插樁能夠�(dá)到很高的�(zhǔn)確度和針�(duì)性。但是源代碼插樁需要接觸到源代�,使得工作量較大,而且隨著編碼語言和版本的不同需要做一定的修改。在后面我們所提到的程序插樁均指源代碼插樁�

�(shè)�(jì)

 ?�?)插樁位置:

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

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

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

 ?�?)插樁策略:

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

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

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

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

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

�(shí)�(yàn)

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

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

代碼插樁相關(guān)技�(shù)資料更多>>

維庫電子�,電子知�(shí),一查百��

已收錄詞�161791�(gè)