• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      嵌入式航天軟件匯編代碼覆蓋測(cè)試方案*

      2017-11-21 04:23:15馬云云王金波瞿躍龍
      航天控制 2017年5期
      關(guān)鍵詞:插樁測(cè)系統(tǒng)覆蓋率

      馬云云 張 弛 王金波 瞿躍龍

      中國(guó)科學(xué)院空間應(yīng)用工程與技術(shù)中心,北京100094

      嵌入式航天軟件匯編代碼覆蓋測(cè)試方案*

      馬云云 張 弛 王金波 瞿躍龍

      中國(guó)科學(xué)院空間應(yīng)用工程與技術(shù)中心,北京100094

      從插樁策略、覆蓋率收集方法2個(gè)方面設(shè)計(jì)實(shí)現(xiàn)了一種匯編代碼覆蓋測(cè)試方案,解決了嵌入式航天軟件匯編代碼覆蓋測(cè)試沒有工具支持的問題。針對(duì)嵌入式系統(tǒng)資源緊張、時(shí)序相關(guān)性強(qiáng)的特點(diǎn),在研究匯編語言指令結(jié)構(gòu)的基礎(chǔ)上,制定了一套基于比特位表征方式的匯編插樁策略;提出了一種基于JTAG接口的通用覆蓋率數(shù)據(jù)收集方案,解決了覆蓋信息輸出通道受限問題。實(shí)驗(yàn)結(jié)果及工程應(yīng)用實(shí)例證明了方案的有效性和可行性。

      覆蓋測(cè)試;軟件測(cè)試;嵌入式軟件;代碼插裝

      覆蓋測(cè)試是軟件白盒測(cè)試的主要方法,覆蓋測(cè)試不僅能發(fā)現(xiàn)被測(cè)程序的邏輯結(jié)構(gòu)異常等缺陷信息,更是檢驗(yàn)軟件測(cè)試充分性,保證測(cè)試質(zhì)量的有效方法之一。在高可靠軟件應(yīng)用領(lǐng)域,DO-178B和EN50128 等安全性標(biāo)準(zhǔn)對(duì)軟件測(cè)試的覆蓋率進(jìn)行了詳細(xì)的要求;在國(guó)內(nèi)航空航天、軌道交通等高可靠領(lǐng)域,對(duì)軟件代碼覆蓋率也有明確要求,通常至少應(yīng)達(dá)到代碼語句、分支100%覆蓋的要求。

      嵌入式航天軟件中,匯編與C語言混合編程的方式較為普遍,但目前大多數(shù)覆蓋率測(cè)試工具針對(duì)的是C/C++等高級(jí)語言,針對(duì)匯編語言的工具相當(dāng)少見[1],因而在實(shí)際評(píng)測(cè)過程中,經(jīng)常導(dǎo)致沒有商業(yè)測(cè)試工具支持而無法對(duì)匯編代碼進(jìn)行覆蓋測(cè)試。因此,設(shè)計(jì)一套通用的匯編代碼覆蓋測(cè)試方案,解決現(xiàn)有測(cè)試平臺(tái)對(duì)匯編覆蓋測(cè)試支撐不足的問題,已成為當(dāng)前航天軟件評(píng)測(cè)亟需解決的問題。

      本文在研究匯編語言指令結(jié)構(gòu)的基礎(chǔ)上,結(jié)合嵌入式航天軟件特點(diǎn),設(shè)計(jì)實(shí)現(xiàn)了一種嵌入式匯編軟件覆蓋測(cè)試方案。

      1 匯編覆蓋測(cè)試現(xiàn)狀

      匯編語言是一種結(jié)構(gòu)化較弱的程序設(shè)計(jì)語言,可能出現(xiàn)多入口和多出口的情況,這些特點(diǎn)決定了對(duì)其進(jìn)行覆蓋測(cè)試相當(dāng)困難。雖然在我國(guó)航天型號(hào)嵌入式軟件覆蓋測(cè)試方面取得了一定的成績(jī)[2],但對(duì)于匯編代碼覆蓋測(cè)試仍常出現(xiàn)沒有商業(yè)工具支持,導(dǎo)致測(cè)試工作充分性沒有客觀評(píng)價(jià)和必要質(zhì)量保證的情況。

      目前,商業(yè)覆蓋率收集測(cè)試平臺(tái)主要有Testbed, Logiscope,CodeTest,Cantata,CuttleITE,BullseyeCoverage,PureCoverage和GCOV等,上述測(cè)試平臺(tái)支持對(duì)象主要集中在C/C++語言代碼編程的軟件系統(tǒng)。而對(duì)于匯編代碼,由于其與硬件具有極高的耦合度,不同的嵌入式平臺(tái)匯編指令集各不相同等原因,工具可支持的匯編指令集非常稀少。

      針對(duì)匯編代碼覆蓋測(cè)試少有工具支持的現(xiàn)狀,文獻(xiàn)[3]提出一種基于主機(jī)的嵌入式匯編插樁技術(shù),以序列塊為基本插樁單元,一定程度上降低了代碼的膨脹率;文獻(xiàn)[4]基于Intel8051指令系統(tǒng),設(shè)計(jì)實(shí)現(xiàn)了一種虛擬插樁方案,利用仿真器斷點(diǎn)機(jī)制拋出程序樁點(diǎn)信息,解決某些嵌入式軟件中不易進(jìn)行程序插樁的問題,這一方案主要適用于實(shí)時(shí)性要求不高的被測(cè)系統(tǒng),對(duì)于實(shí)時(shí)性要求苛刻的高可靠控制領(lǐng)域,如航空、航天領(lǐng)域控制軟件,由于斷點(diǎn)處理過程耗時(shí)長(zhǎng),易破壞被測(cè)系統(tǒng)接口時(shí)序關(guān)系,導(dǎo)致功能行為失真,甚至無法進(jìn)入預(yù)期功能分支。文獻(xiàn)[5]提出了一種利用Gcov工具進(jìn)行匯編覆蓋測(cè)試的方案,并在X86平臺(tái)進(jìn)行了原型驗(yàn)證,這一方案的適用場(chǎng)景并未考慮嵌入式系統(tǒng)平臺(tái)資源緊張(內(nèi)存不豐富、可用IO通道少)、時(shí)序相關(guān)性強(qiáng)的特點(diǎn)[6],且對(duì)于沒有文件系統(tǒng)的嵌入式系統(tǒng)生成覆蓋數(shù)據(jù)文件是非常困難。

      在實(shí)時(shí)性要求高的嵌入式航天軟件領(lǐng)域,需要一個(gè)資源、時(shí)序開銷小且相對(duì)通用的匯編代碼覆蓋測(cè)試方案,解決嵌入式匯編軟件難于插樁、覆蓋率數(shù)據(jù)輸出通道受限等問題。

      2 匯編代碼覆蓋測(cè)試方案

      在研究匯編語言指令結(jié)構(gòu)的基礎(chǔ)上,針對(duì)嵌入式平臺(tái)資源緊張、時(shí)序相關(guān)性強(qiáng)的特點(diǎn),從插樁策略和覆蓋率收集方法兩方面設(shè)計(jì)實(shí)現(xiàn)了一套匯編覆蓋測(cè)試方案,具體實(shí)施框架如圖1所示。

      圖1 嵌入式匯編代碼覆蓋測(cè)試框架

      在上位機(jī)中,采用基于比特位表征方式的匯編插樁策略完成代碼插樁;在被測(cè)系統(tǒng)上運(yùn)行插樁后的代碼,并對(duì)產(chǎn)生的樁點(diǎn)數(shù)據(jù)進(jìn)行暫存;利用硬件仿真器JTAG接口建立集成開發(fā)環(huán)境與目標(biāo)CPU之間的硬件實(shí)時(shí)通信通道,進(jìn)行覆蓋率信息收集,在集成開發(fā)環(huán)境中接收查看覆蓋率信息,進(jìn)行覆蓋分析。

      2.1 程序插樁策略

      程序插樁是實(shí)現(xiàn)覆蓋測(cè)試的關(guān)鍵技術(shù)之一,目前大多數(shù)覆蓋測(cè)試工具均采用代碼插樁技術(shù)。傳統(tǒng)的插樁策略是在所有需要插樁的位置插入探針,在程序運(yùn)行過程中收集所有可能用到的程序信息,但這種策略插樁開銷過大,無法滿足嵌入式系統(tǒng)覆蓋測(cè)試需要。針對(duì)上述問題,許多研究學(xué)者提出了一些插樁策略及改進(jìn)方法來降低插樁開銷[7-10],但這些方法的研究對(duì)象主要針對(duì)高級(jí)語言代碼,并未考慮嵌入式匯編代碼的特殊性。

      針對(duì)匯編程序語句、分支覆蓋測(cè)試實(shí)際情況,本文從樁點(diǎn)信息表征方式、樁點(diǎn)插入規(guī)則和樁點(diǎn)輸出函數(shù)實(shí)現(xiàn)3個(gè)方面對(duì)插樁策略進(jìn)行具體介紹。

      2.1.1 樁點(diǎn)信息表征方式

      對(duì)于樁點(diǎn)數(shù)據(jù)采用按比特位表征的方式,使得樁點(diǎn)數(shù)據(jù)在存儲(chǔ)空間、數(shù)據(jù)輸出時(shí)間方面開銷盡可能小,以適應(yīng)嵌入式系統(tǒng)存儲(chǔ)資源匱乏、時(shí)序緊張的特點(diǎn)。

      具體的,每個(gè)樁點(diǎn)以{樁點(diǎn)ID、樁點(diǎn)狀態(tài)}方式唯一表征,其中:

      樁點(diǎn)ID:代表被覆蓋語句分支在代碼中的具體位置。樁點(diǎn)ID編號(hào)時(shí),考慮到匯編程序中往往采用很多條件和無條件跳轉(zhuǎn)指令,結(jié)構(gòu)復(fù)雜,若按照?qǐng)?zhí)行順行對(duì)樁點(diǎn)ID進(jìn)行編號(hào),易出現(xiàn)插樁遺漏情況。本文以源代碼行號(hào)前后次序進(jìn)行編號(hào),假設(shè)源代碼共需插樁n個(gè),則樁點(diǎn)ID按照0,1,2,…,n-1進(jìn)行編號(hào)。對(duì)于收集語句覆蓋率的情況,同一源文件中樁點(diǎn)直接按照源代碼先后順序進(jìn)行編號(hào);對(duì)于需要收集分支的情況,按照真分支樁點(diǎn)編號(hào)為X,假分支編號(hào)為X+1的規(guī)則進(jìn)行編號(hào)。

      樁點(diǎn)狀態(tài):代表樁點(diǎn)的覆蓋情況,采用基于比特位方式表征,0代表未覆蓋,1代表已覆蓋。每個(gè)樁點(diǎn)在內(nèi)存空間中僅占用1比特,對(duì)于同一樁點(diǎn)信息多次被執(zhí)行的情況,不會(huì)額外增加存儲(chǔ)空間,均可通過對(duì)應(yīng)比特位取值表征該樁點(diǎn)是否在測(cè)試過程中運(yùn)行到。采用這種設(shè)計(jì)思路,可以大大降低覆蓋率信息對(duì)存儲(chǔ)空間的占用以及樁點(diǎn)數(shù)據(jù)傳輸對(duì)接口時(shí)序造成的不良影響。例如,對(duì)于語句分支樁點(diǎn)個(gè)數(shù)為200的匯編代碼,僅需要25個(gè)字節(jié)即可存儲(chǔ)全部樁點(diǎn)的覆蓋信息。

      2.1.2 樁點(diǎn)插入規(guī)則

      通過分析匯編代碼結(jié)構(gòu)特征,應(yīng)在以下幾個(gè)特征位置進(jìn)行插裝:條件判斷語句、直接跳轉(zhuǎn)語句、條件跳轉(zhuǎn)、宏定義和標(biāo)號(hào)內(nèi)代碼。

      在樁點(diǎn)插入過程中,以源代碼行號(hào)前后次序在上述位置按照具體插樁策略進(jìn)行,保證在順序執(zhí)行的語句塊的第一條語句前和最后一條語句前均進(jìn)行插樁,且每一個(gè)條件判斷的真假分支均有唯一樁點(diǎn)信息對(duì)應(yīng)。具體樁點(diǎn)插入過程可利用程序自動(dòng)完成,對(duì)于代碼量少的情況也可手動(dòng)插入,具體方式可視實(shí)際情況而定。下面具體介紹插樁規(guī)則。

      1)條件判斷語句

      對(duì)于條件判斷語句,應(yīng)在該語句之前對(duì)條件真假分支分別插入樁點(diǎn),見表1。

      表1 條件判斷語句插樁

      表1中,樁點(diǎn)(x)反映該條件判斷的TRUE分支覆蓋情況;樁點(diǎn)(x+1)反映該條件判斷的FALSE分支覆蓋情況。

      此外,由于樁點(diǎn)(x)及(x+1)插入位置也是條件判斷語句之前的上一程序基本塊的結(jié)束位置,因此樁點(diǎn)(x)及(x+1)也同時(shí)反映了上一程序基本塊的覆蓋情況。

      2)無條件轉(zhuǎn)移指令

      無條件轉(zhuǎn)移指令包含直接跳轉(zhuǎn)語句、子程序調(diào)用指令等,對(duì)于這類指令應(yīng)在無條件轉(zhuǎn)移指令前、后分別設(shè)置樁點(diǎn)。

      表2 無條件轉(zhuǎn)移指令插樁

      表2中,樁點(diǎn)(x)反映轉(zhuǎn)移語句之前順序執(zhí)行的代碼段的語句覆蓋情況,樁點(diǎn)(x+1)反映插入點(diǎn)后的下一個(gè)順序執(zhí)行的代碼段的語句覆蓋情況。

      3)條件轉(zhuǎn)移指令

      條件轉(zhuǎn)移語句應(yīng)在條件跳轉(zhuǎn)前后分別設(shè)置反映條件判斷真、假分支覆蓋情況的樁點(diǎn),插樁方式如表3。

      表3 條件轉(zhuǎn)移指令插樁

      表3中,樁點(diǎn)(x)反映該條件判斷的TRUE分支覆蓋及上一樁點(diǎn)至條件判斷之間語句覆蓋情況;樁點(diǎn)(x+1)反映該條件判斷的FALSE分支以及后續(xù)語句的覆蓋情況。

      4)宏定義

      宏定義代碼,需要在宏定義代碼開始處、結(jié)束處插樁,內(nèi)部語句插樁方式與外部匯編代碼插樁方式類似。

      5)標(biāo)號(hào)

      由于標(biāo)號(hào)內(nèi)代碼可能是順序執(zhí)行地址或跳轉(zhuǎn)后執(zhí)行地址,也可能是子程序入口地址或宏調(diào)用入口。因此對(duì)于標(biāo)號(hào)內(nèi)代碼需在標(biāo)號(hào)內(nèi)代碼執(zhí)行開始位置、結(jié)束位置設(shè)置樁點(diǎn)。對(duì)于標(biāo)號(hào)是子程序入口地址的情況,結(jié)束位置為子程序返回指令前;標(biāo)號(hào)不是子程序入口地址的情況,結(jié)束位置為下一個(gè)標(biāo)號(hào)開始前。標(biāo)號(hào)內(nèi)代碼與基本匯編代碼插樁方式類似,需在條件判斷處、跳轉(zhuǎn)處設(shè)置樁點(diǎn)。

      2.1.3 樁點(diǎn)輸出函數(shù)實(shí)現(xiàn)

      嵌入式航天軟件的匯編代碼具有體量小但安全關(guān)鍵程度較高的特點(diǎn)。因此,樁點(diǎn)數(shù)量與高級(jí)語言編寫的代碼相比非常少,樁點(diǎn)覆蓋信息采用按比特位方式表示后,樁點(diǎn)覆蓋信息所需占用存儲(chǔ)空間則更少。

      鑒于以上特點(diǎn),在樁點(diǎn)輸出函數(shù)設(shè)計(jì)時(shí),將樁點(diǎn)覆蓋數(shù)據(jù)輸出至被測(cè)系統(tǒng)內(nèi)部空閑存儲(chǔ)空間存儲(chǔ),當(dāng)接收到覆蓋數(shù)據(jù)回傳控制命令時(shí),才將覆蓋數(shù)據(jù)輸出至系統(tǒng)外。此外,還應(yīng)盡可能降低樁點(diǎn)輸出對(duì)被測(cè)軟件時(shí)間特性、時(shí)序關(guān)系的影響。樁點(diǎn)輸出函數(shù)實(shí)現(xiàn)流程分為如下5步:

      Step1:為樁點(diǎn)信息分配內(nèi)存空間,并初始化為未覆蓋狀態(tài);

      Step2:寄存器壓棧處理;

      Step3:根據(jù)樁點(diǎn)編號(hào)計(jì)算樁點(diǎn)存儲(chǔ)位置;

      Step4:將存儲(chǔ)位置對(duì)應(yīng)的比特位置為已覆蓋狀態(tài);

      Step5:寄存器出棧處理。

      以TMS320C6000系列DSP運(yùn)行平臺(tái)為例,給出插樁函數(shù)實(shí)現(xiàn)示例如下:

      OUT_PUT .macro ID;也可定義為子程序

      ……;寄存器壓棧處理

      mvkl OUTPUT_ADDR,a7

      mvkh OUTPUT_ADDR,a7

      mv ID,a3

      nop 5

      shr a3, 0x03, b0

      clr a3,3,15, a2

      add a7, b0, a7

      nop 5

      mvk 0x01,a8

      shl a8, a2, a8

      ldb *a7,b8

      nop 5

      or b8,a8,b8

      stb b8,*a7

      nop 5

      ……;寄存器出棧處理

      .endm

      其中,OUTPUT_ADDR為事先定義的覆蓋率數(shù)據(jù)信息存儲(chǔ)起始地址,ID號(hào)為樁點(diǎn)ID。

      2.2 覆蓋率信息收集

      目前,嵌入式系統(tǒng)覆蓋率數(shù)據(jù)收集過程中常遇到以下難題:1)被測(cè)系統(tǒng)上既有接口類型受限;2)覆蓋率數(shù)據(jù)接收設(shè)備的接收處理能力不足。實(shí)時(shí)嵌入式軟件樁點(diǎn)輸出量大,若采用低速通信方式,常無法滿足時(shí)序要求,導(dǎo)致系統(tǒng)功能行為失真;若采用高速接口,則需要專用高速覆蓋率接收設(shè)備。

      為了擺脫對(duì)覆蓋率數(shù)據(jù)專用接收設(shè)備的依賴,并克服被測(cè)系統(tǒng)常無可用輸出通道的問題,需要采用一種相對(duì)通用的覆蓋率數(shù)據(jù)輸出方式,并減輕高速、大數(shù)據(jù)量樁點(diǎn)傳輸對(duì)被測(cè)系統(tǒng)功能行為的影響。通過對(duì)主流嵌入式系統(tǒng)平臺(tái)調(diào)研,目前多數(shù)高級(jí)器件都支持JTAG協(xié)議,如DSP,F(xiàn)PGA,ARM和部分單片機(jī)器件等, 并且JTAG在測(cè)試信號(hào)完整性和嵌入式在線仿真方面都有很好的應(yīng)用。

      本文利用嵌入式在線仿真器與被測(cè)目標(biāo)板JTAG口連接,建立集成開發(fā)環(huán)境與目標(biāo)CPU的硬件實(shí)時(shí)通信通道,將被測(cè)系統(tǒng)動(dòng)態(tài)運(yùn)行過程中產(chǎn)生的樁點(diǎn)數(shù)據(jù)通過JTAG接口輸出至系統(tǒng)外部,由集成開發(fā)環(huán)境所在上位機(jī)接收。

      下面以TI公司的DSP處理器為例,給出具體的覆蓋率數(shù)據(jù)收集方案,見圖2。

      圖2 覆蓋率數(shù)據(jù)收集方案

      被測(cè)代碼插樁后,下載至嵌入式平臺(tái)運(yùn)行;產(chǎn)生的樁點(diǎn)數(shù)據(jù)直接存儲(chǔ)在被測(cè)系統(tǒng)內(nèi)部;在CCS(Code Composer Studio)集成開發(fā)環(huán)境中進(jìn)行覆蓋率信息回傳控制,需要回傳覆蓋率數(shù)據(jù)時(shí)暫停或停止被測(cè)件運(yùn)行,利用GEL(General Extended Language,即通用擴(kuò)展語言)函數(shù)GEL_MemorySave()訪問被測(cè)系統(tǒng)內(nèi)部存儲(chǔ)空間,將暫存的覆蓋率數(shù)據(jù)通過JTAG接口傳回至集成開發(fā)環(huán)境所在上位機(jī),并將覆蓋率數(shù)據(jù)保存為數(shù)據(jù)文件。

      3 實(shí)驗(yàn)結(jié)果

      在TMS320C6000系統(tǒng)嵌入式運(yùn)行平臺(tái)上,以某星載軟件匯編代碼為實(shí)驗(yàn)對(duì)象,搭建實(shí)驗(yàn)平臺(tái)如圖3所示。

      圖3 匯編代碼覆蓋測(cè)試實(shí)驗(yàn)平臺(tái)

      (1)運(yùn)行時(shí)間開銷

      為了驗(yàn)證本文方案在運(yùn)行時(shí)間開銷方面性能,分別對(duì)未插樁星載軟件運(yùn)行時(shí)間、插樁后軟件采用傳統(tǒng)樁點(diǎn)數(shù)據(jù)傳輸方案運(yùn)行時(shí)間、本文方案運(yùn)行時(shí)間進(jìn)行對(duì)比測(cè)試。其中,傳統(tǒng)樁點(diǎn)數(shù)據(jù)傳輸方案使用被測(cè)目標(biāo)板上SPI接口將樁點(diǎn)數(shù)據(jù)逐一輸出。

      本實(shí)驗(yàn)中程序運(yùn)行時(shí)間統(tǒng)計(jì)方法為:使用DSP芯片定時(shí)器Timer0的計(jì)數(shù)器值(CNT)對(duì)程序運(yùn)行時(shí)間進(jìn)行計(jì)時(shí),計(jì)時(shí)精度為0.02μs。在程序開始時(shí),設(shè)置計(jì)數(shù)器周期寄存器為上限值,以保證統(tǒng)計(jì)期間不會(huì)發(fā)生溢出,通過在程序運(yùn)行開始處設(shè)置控制寄存器來啟動(dòng)計(jì)時(shí),在程序運(yùn)行結(jié)束處讀取計(jì)數(shù)器值,得出代碼運(yùn)行的時(shí)間。

      實(shí)驗(yàn)過程中,選取相同測(cè)試用例(均使被測(cè)軟件執(zhí)行201984個(gè)樁點(diǎn)函數(shù)),得到運(yùn)行時(shí)間結(jié)果如表4。

      表4 運(yùn)行時(shí)間開銷對(duì)比

      (2)動(dòng)態(tài)樁點(diǎn)數(shù)據(jù)存儲(chǔ)開銷

      為了驗(yàn)證本文方案在存儲(chǔ)資源開銷方面性能,選取以下3段程序進(jìn)行實(shí)驗(yàn):

      程序1:有限次循環(huán)程序;

      程序2:?jiǎn)未螆?zhí)行程序;

      程序3:無限循環(huán)程序。

      為了便于定量對(duì)比,上述程序中均僅保留一個(gè)樁點(diǎn),分別采用本文方案、傳統(tǒng)方案執(zhí)行相同測(cè)試用例,產(chǎn)生的動(dòng)態(tài)樁點(diǎn)數(shù)據(jù)量統(tǒng)計(jì)如表5。

      表5 動(dòng)態(tài)樁點(diǎn)數(shù)據(jù)存儲(chǔ)開銷對(duì)比

      通過上述實(shí)驗(yàn)數(shù)據(jù)可知,本文方案相對(duì)于樁點(diǎn)數(shù)據(jù)直接傳輸方案,在程序運(yùn)行時(shí)間開銷方面下降97.5%;在動(dòng)態(tài)樁點(diǎn)數(shù)據(jù)存儲(chǔ)開銷方面下降幅度超過96.8%,且樁點(diǎn)數(shù)量越多時(shí),存儲(chǔ)開銷下降幅度越大。

      實(shí)驗(yàn)結(jié)果表明,本文的插樁策略和覆蓋率收集方法相對(duì)傳統(tǒng)方案在降低對(duì)嵌入式軟件時(shí)序影響和減少資源開銷方面的性能大大提升。

      此外,本文方案已成功應(yīng)用于某星載軟件評(píng)測(cè)工程項(xiàng)目,取得良好應(yīng)用效果:在沒有商業(yè)工具支持的情況下,完成了覆蓋測(cè)試,且被測(cè)代碼語句、分支覆蓋率均達(dá)到100%。

      4 結(jié)束語

      設(shè)計(jì)實(shí)現(xiàn)了一種嵌入式匯編代碼覆蓋測(cè)試方案,提出了基于比特位表征方式的匯編插樁策略和基于JTAG接口的通用覆蓋率數(shù)據(jù)收集方案,解決了匯編覆蓋測(cè)試中插樁開銷大、覆蓋信息輸出通道受限等問題。實(shí)驗(yàn)結(jié)果及工程應(yīng)用效果表明本文方案在時(shí)間性能、存儲(chǔ)開銷及通用性等方面相對(duì)傳統(tǒng)方案均有顯著優(yōu)勢(shì)。為嵌入式匯編代碼覆蓋測(cè)試常無法開展的問題提供了一種新的解決方法,下一步還需要對(duì)不同匯編指令集的通用自動(dòng)插樁方法進(jìn)行研究。

      [1] 唐科,向渝,羅光春.匯編程序覆蓋測(cè)試中分支路徑數(shù)的計(jì)算[J].電子科技大學(xué)學(xué)報(bào),2005,34(2): 235-239.(Tang Ke, Xiang Yu, Luo Guangchun, et al. An Algorithm for Calculating the Branch Routes of an Assembly Program in Software Coverage Testing [J]. Journal of UEST of China, 2005, 34(2): 235-239.)

      [2] 張波.基于測(cè)試覆蓋的安全關(guān)鍵軟件測(cè)試策略研究[D]. 長(zhǎng)春:中國(guó)科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,2012.(Zhang Bo. A Study of Strategies about Testing Safety Critical Software Based on Testing Coverage [D]. Changchun: Changchun Institute of Optics, Fine Mechanics and Physics, Chinese Academy of Sciences, China, 2012.)

      [3] Dong Ting ,Wang Zhongmin. Research on Instrumentation Technology for the Embedded Assembly Software Testing Based on Host Computer [C]// 2011 International Conference on Computer Science and Network Technology, Harbin,China, 2011. IEEE Press, 2011,3:1906-1909.

      [4] 王學(xué)東,汪文勇.匯編程序覆蓋測(cè)試中虛擬插樁的實(shí)現(xiàn)[J].計(jì)算機(jī)工程, 2007, 33(7): 87-88.(Wang Xuedong, Wang Wenyong. Implementation of Virtual Instrumentation in Coverage Test of Assembly Code [J]. Computer Engineering, 2007, 33(7): 87-88.)

      [5] 費(fèi)訓(xùn),羅蕾. 利用GNU工具實(shí)現(xiàn)匯編程序覆蓋測(cè)試[J].計(jì)算機(jī)應(yīng)用, 2004, 24(12): 95-98.(Fei Xun, Luo Lei. Implementation of Assembler Program Coverage Testing with GNU Tool [J]. Computer Applications, 2004, 24(12): 95-98.)

      [6] 丁旭,崔吉崗,劉春裕.軍用嵌入式軟件結(jié)構(gòu)覆蓋測(cè)試技術(shù)[J]. 指揮控制與仿真, 2008, 30(3): 120-122.(Ding Xu, Cui Jigang, Liu Chunyu. Test Technology of Procedure Structure Cover for Military Embedded Software [J]. Command Control & Simulation, 2008,30(3): 120-122.)

      [7] Pankumhang T, Rutherford M J. Iterative Instrumentation for Code Coverage in Time-Sensitive Systems[C]//IEEE. International Conference on Software Testing, Verification and Validation.Graz,Austria,April,2015.IEEE Press,2015:1-10.

      [8] 郭銳,李博,彭寶新. 用于覆蓋測(cè)試的代碼插樁程序設(shè)計(jì)與實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程, 2013, 13(30): 9073-9077.(Guo Rui, Li Bo, Peng Baoxin. Design and Implementation of Instrumentor for Coverage Testing [J]. Science Technology and Engineering, 2013, 13(30): 9073-9077.)

      [9] Fischmeister S, Lam P. Time-Aware Instrumentation of Embedded Software[J]. IEEE Transactions on Industrial Informatics, 2010, 6(4): 652-663.

      [10] Arnold M, Ryder B G. A Framework for Reducing the Cost of Instrumented Code[J].Acm Sigplan Notices, 2003, 36(5): 168-179.

      NovelAssembly-LanguageCodeCoverageTestingSchemeforEmbeddedAerospaceSoftware

      Ma Yunyun, Zhang Chi, Wang Jinbo, Qu Yuelong

      Technology and Engineering Center for Space Utilization, Chinese Academy of Science, Beijing 100094, China

      Aneffectiveassembly-languagecodecoveragetestingschemeisdesignedandimplementedtosolvetheproblemthatthereisoftennoavailabletoolsupportsassembly-languagecodecoveragetestingintheaerospaceembeddedsystem.Thisschemeconsistsoftwopartsbycodeinstrumentationstrategyandcoveragedatacollectionmethod.Inviewofthecharacteristicsofembeddedsystem,suchasstricttimingrequirementandlimitedmemoryresources,acodeinstrumentationmethodwithbitbasedcoveragestateinformationexpressionstrategyisproposedonthebasisofresearchonassemblyinstructionstructure,andthenageneralassemblycoverageinformationcollectionmethodbyusingJTAGinterfaceisproposedtosolvetheproblemoflimitedcoverageoutputchannelinembeddedsystem.Theexperimentalresultsandengineeringpracticeshowsthattheschemegivenisfeasibleanduseful.

      Coveragetesting;Softwaretesting;Embeddedsoftware;Codeinstrumentation

      TP311

      A

      1006-3242(2017)05-0068-06

      *載人航天國(guó)家重大專項(xiàng)(Y6140511RN)

      2017-03-24

      馬云云(1982-),女,山東人,碩士, 工程師,研究領(lǐng)域?yàn)楦呖煽寇浖?、嵌入式軟件評(píng)測(cè);張弛(1990-),男,山東人,碩士, 助理工程師,研究領(lǐng)域?yàn)楦呖煽寇浖?、嵌入式軟件評(píng)測(cè);王金波(1979-),男,江蘇人,博士,副研究員,研究領(lǐng)域?yàn)楦呖煽寇浖?;瞿躍龍(1972-),男,云南人,本科,高級(jí)工程師,研究領(lǐng)域?yàn)楦呖煽寇浖?、嵌入式軟件評(píng)測(cè)。

      猜你喜歡
      插樁測(cè)系統(tǒng)覆蓋率
      砂土中樁靴插樁對(duì)臨近筒型基礎(chǔ)的影響研究
      民政部等16部門:到2025年村級(jí)綜合服務(wù)設(shè)施覆蓋率超80%
      我國(guó)全面實(shí)施種業(yè)振興行動(dòng) 農(nóng)作物良種覆蓋率超過96%
      基于TXL的源代碼插樁技術(shù)研究
      基于性能分析的自適應(yīng)插樁框架
      基于噴丸隨機(jī)模型的表面覆蓋率計(jì)算方法
      防洪非工程措施設(shè)計(jì)實(shí)例——嘉興市水文巡測(cè)系統(tǒng)項(xiàng)目設(shè)計(jì)
      電快速瞬變脈沖群對(duì)核測(cè)系統(tǒng)的影響及對(duì)策
      基于廣域量測(cè)系統(tǒng)的電力系統(tǒng)綜合負(fù)荷辨識(shí)模型的研究
      三維標(biāo)測(cè)系統(tǒng)指導(dǎo)下射頻消融治療房顫的護(hù)理觀察
      根河市| 陆河县| 什邡市| 桐梓县| 敖汉旗| 增城市| 抚顺县| 乌兰察布市| 达尔| 浦城县| 巨鹿县| 齐河县| 普兰店市| 东方市| 凤台县| 天津市| 额尔古纳市| 和林格尔县| 南郑县| 渝北区| 剑阁县| 泉州市| 昭通市| 资阳市| 当雄县| 蒙阴县| 林周县| 海南省| 无锡市| 体育| 新宁县| 睢宁县| 乐清市| 塘沽区| 大新县| 烟台市| 自治县| 团风县| 中卫市| 和田县| 顺义区|