• 
    

    
    

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

      嵌入式軟件目標(biāo)碼測(cè)試分析

      2009-06-20 03:11:28王永孟馬利東
      關(guān)鍵詞:測(cè)試工具編譯器源代碼

      王永孟 馬利東

      摘要:為了更好的保證軟件產(chǎn)品的質(zhì)量,本文介紹了目標(biāo)碼測(cè)試的必要性,測(cè)試工具的原理及運(yùn)用的約束條件。目標(biāo)碼測(cè)試需要工具的支持及對(duì)實(shí)現(xiàn)方法的摸索。

      關(guān)鍵詞:目標(biāo)碼;語(yǔ)句分支覆蓋

      引言

      航天型號(hào)軟件的高可靠性、高安全性要求,促使軟件在各開(kāi)發(fā)階段都需要經(jīng)過(guò)完整的測(cè)試,如:?jiǎn)卧獪y(cè)試、組裝測(cè)試、配置項(xiàng)測(cè)試、系統(tǒng)測(cè)試等。隨著航天飛行器的發(fā)展,航天產(chǎn)品功能越來(lái)越多強(qiáng)大,其軟件設(shè)計(jì)越來(lái)越復(fù)雜,越來(lái)越多的軟件采用C語(yǔ)言或高級(jí)語(yǔ)言編制。隨著C語(yǔ)言和其他高級(jí)語(yǔ)言編制的軟件越來(lái)越多,源代碼與目標(biāo)代碼差異可能產(chǎn)生的問(wèn)題的幾率就越來(lái)越大。編譯器不同、編譯選項(xiàng)的不同都會(huì)產(chǎn)生的不同目標(biāo)代碼。人們開(kāi)始遇到對(duì)目標(biāo)代碼分析不徹底而出現(xiàn)的質(zhì)量問(wèn)題,對(duì)編譯選項(xiàng)認(rèn)識(shí)的不了解而產(chǎn)生的質(zhì)量問(wèn)題;越來(lái)越多的人開(kāi)始擔(dān)心實(shí)際運(yùn)行的目標(biāo)代碼是否會(huì)隱藏著潛在的危害,當(dāng)誘因成熟會(huì)對(duì)我們的產(chǎn)品帶來(lái)災(zāi)難的后果。所以目標(biāo)碼語(yǔ)句和分支的覆蓋率測(cè)試被提上了日程。目標(biāo)碼測(cè)試可以理解為真實(shí)運(yùn)行在CPU上的二進(jìn)制代碼所對(duì)應(yīng)的匯編代碼的執(zhí)行情況。

      1目標(biāo)碼測(cè)試的必要性

      首先舉個(gè)簡(jiǎn)單的例子。C語(yǔ)言a [i] = i是一條非常簡(jiǎn)單的賦值語(yǔ)句,在Keil C51的編譯環(huán)境下,對(duì)編譯選項(xiàng)開(kāi)關(guān)“don't use absolute register accesses”進(jìn)行了簡(jiǎn)單的對(duì)比,產(chǎn)生的匯編指令如下表1所示。

      通過(guò)上表可以看出,要想完全實(shí)現(xiàn)所有高級(jí)語(yǔ)言源代碼和目標(biāo)碼的一一對(duì)應(yīng)是件困難的事情,并且編譯選項(xiàng)給目標(biāo)代碼帶來(lái)的變化也是非常明顯。

      軟件測(cè)試通過(guò)對(duì)語(yǔ)句和分支的覆蓋率指標(biāo)從一個(gè)方面來(lái)評(píng)估軟件測(cè)試的充分性,下面再舉一個(gè)Keil C51例子說(shuō)明源代碼和目標(biāo)碼測(cè)試時(shí)語(yǔ)句和分支覆蓋率統(tǒng)計(jì)的差異。

      在進(jìn)行測(cè)試時(shí)C語(yǔ)言的語(yǔ)句有2條,而匯編會(huì)有17條;分支C語(yǔ)言也是2條,而匯編語(yǔ)言就是由4條,JZ和JC語(yǔ)句分別有2個(gè)分支。在進(jìn)行源代碼測(cè)試時(shí)只需要2個(gè)測(cè)試用例即可完成測(cè)試,而目標(biāo)碼測(cè)試則需要3個(gè)測(cè)試用例來(lái)完全覆蓋分支的各種情況。上面這個(gè)例子可看出目標(biāo)碼測(cè)試要比源代碼測(cè)試的難度更大一些。

      從這兩個(gè)例子可以看出,源代碼通過(guò)編譯器之后帶來(lái)的變化,雖然不能得出不進(jìn)行目標(biāo)碼測(cè)試,軟件的質(zhì)量就有問(wèn)題或是對(duì)任務(wù)存在影響。但作為測(cè)試充分性的考量指標(biāo),源代碼和目標(biāo)碼的覆蓋率指標(biāo)所反映的內(nèi)容還是存在一定的差距。對(duì)于高級(jí)語(yǔ)言編寫(xiě)的可重用模塊,如果編譯器不同,模塊重用就存在了一定的風(fēng)險(xiǎn)。

      2如何實(shí)現(xiàn)目標(biāo)碼測(cè)試

      任何代碼的覆蓋率測(cè)試都離不開(kāi)工具的支持,除非微小型的軟件,花費(fèi)大量的人力完成統(tǒng)計(jì)。目前所了解到的測(cè)試工具能夠支持目標(biāo)碼測(cè)試的也是非常有限,其工作原理如下:測(cè)試工具通過(guò)對(duì)數(shù)據(jù)線和地址線上進(jìn)行采集,存儲(chǔ);之后對(duì)數(shù)據(jù)進(jìn)行分析,得出軟件運(yùn)行的情況。總線上的數(shù)據(jù)都是二進(jìn)制的機(jī)器代碼,而每條匯編語(yǔ)句也對(duì)應(yīng)著一個(gè)二進(jìn)制機(jī)器代碼。如51匯編語(yǔ)言“MOV A,0x09”對(duì)應(yīng)的目標(biāo)代碼就為“E5 09”;如果數(shù)據(jù)總線上存在“E5 09”則認(rèn)為CPU執(zhí)行了這樣一條語(yǔ)句。

      測(cè)試工具原理圖如圖1所示。其中,采集頭與被測(cè)環(huán)境根據(jù)實(shí)際情況進(jìn)行連接,采集設(shè)備主系統(tǒng)負(fù)責(zé)存儲(chǔ)和分析。采集設(shè)備與被測(cè)軟件之間沒(méi)有交互信息,不影響軟件的運(yùn)行情況。

      根據(jù)上述原理完成目標(biāo)碼覆蓋率測(cè)試會(huì)有很多制約因素,比如:

      ◇CPU是否存在Catch;如果存在CPU就有預(yù)取功能,那么如何判別總線上出現(xiàn)的指令是否執(zhí)行就成了關(guān)鍵問(wèn)題;需要一套完成的算法來(lái)識(shí)別出代碼執(zhí)行情況;

      ◇采集設(shè)備的運(yùn)行速度與CPU運(yùn)行速度;采集設(shè)備的速度一定是被采設(shè)備的倍數(shù);現(xiàn)在CPU運(yùn)行的速度越來(lái)越快,高速采集設(shè)備在抗干擾等方面要求很高;采集設(shè)備需要被測(cè)件提供可連接的接口;

      ◇被測(cè)軟件是否運(yùn)行在內(nèi)部存儲(chǔ)區(qū);如果在內(nèi)部存儲(chǔ)區(qū)就無(wú)法獲取被測(cè)軟件的運(yùn)行情況;

      ◇對(duì)應(yīng)不同的匯編語(yǔ)言,測(cè)試工具要對(duì)應(yīng)不同的分析軟件或分析軟件所調(diào)用的信息庫(kù)不同。

      通過(guò)上述方法實(shí)現(xiàn)目標(biāo)碼測(cè)試只是目前的一種,是否還有更好的方法還有待研究。因?yàn)樵创a語(yǔ)句和分支覆蓋率的統(tǒng)計(jì)都是通過(guò)插樁的方法實(shí)現(xiàn),目標(biāo)碼是否也可以運(yùn)用類似的方法來(lái)實(shí)現(xiàn)?或是有更好的方法。

      3目標(biāo)碼測(cè)試的好處

      沒(méi)有提出目標(biāo)碼測(cè)試的概念之前,軟件測(cè)試充分性一般通過(guò)源代碼的語(yǔ)句和分支覆蓋情況進(jìn)行考量,更嚴(yán)格的還有條件覆蓋,條件組合覆蓋,路徑覆蓋等,對(duì)于后三種情況只是理論的考量方法實(shí)際工作中是很難完成的。為了進(jìn)一步提高語(yǔ)句和分支覆蓋,驗(yàn)證編譯器沒(méi)有對(duì)代碼帶來(lái)未知的影響,所以通過(guò)目標(biāo)碼語(yǔ)句和分支的覆蓋率測(cè)試來(lái)確保測(cè)試的充分性。

      某型號(hào)軟件就發(fā)生過(guò)由于對(duì)目標(biāo)碼沒(méi)有進(jìn)行徹底分析而造成質(zhì)量問(wèn)題的案例,也發(fā)生過(guò)對(duì)編譯器選項(xiàng)配置不一致而造成質(zhì)量問(wèn)題的情況。隨著問(wèn)題的被發(fā)現(xiàn),對(duì)測(cè)試的要求越來(lái)越高。在不斷的積累和探索中,必將會(huì)發(fā)現(xiàn)更好的方法,使開(kāi)發(fā)和測(cè)試人員完全清晰掌握運(yùn)行在CPU上目標(biāo)碼的任何細(xì)節(jié)。

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

      目標(biāo)碼測(cè)試為提高軟件質(zhì)量,使軟件設(shè)計(jì)師和測(cè)試人員更充分掌握運(yùn)行代碼的確切情況是非常有幫助的。但無(wú)論是源代碼還是目標(biāo)碼的覆蓋率測(cè)試對(duì)工具的依賴是非常大的,沒(méi)有好的工具支撐是無(wú)法完成這項(xiàng)工作的。

      參考文獻(xiàn):

      [1][美]Bart Broekman,Edwin Notenboom.嵌入式軟件測(cè)試.北京:電子工業(yè)出版社.

      [2][美]Parl C.Jorgensen.軟件測(cè)試(原書(shū)第二版).北京:機(jī)械工業(yè)出版社.

      猜你喜歡
      測(cè)試工具編譯器源代碼
      邊緣智力兒童及其智力測(cè)試工具的研究進(jìn)展
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      基于TXL的源代碼插樁技術(shù)研究
      基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
      Http并發(fā)連接測(cè)試工具
      軟件源代碼非公知性司法鑒定方法探析
      揭秘龍湖產(chǎn)品“源代碼”
      福祿克推出先進(jìn)的連接式測(cè)試工具系統(tǒng)
      通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
      編譯器無(wú)關(guān)性編碼在微控制器中的優(yōu)勢(shì)
      荥阳市| 郸城县| 大兴区| 乌拉特中旗| 桃江县| 安泽县| 龙口市| 麻江县| 咸宁市| 五峰| 精河县| 手游| 定兴县| 东乌珠穆沁旗| 芦溪县| 海盐县| 丽水市| 安溪县| 望奎县| 沁源县| 巍山| 绵竹市| 舒城县| 南汇区| 台东市| 扶绥县| 安化县| 且末县| 钦州市| 中山市| 化州市| 十堰市| 吴江市| 玉溪市| 通州市| 平阴县| 西吉县| 奉贤区| 乐安县| 精河县| 清原|