亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式軟件目標碼測試分析

        2009-06-20 03:11:28王永孟馬利東
        科技經濟市場 2009年4期

        王永孟 馬利東

        摘要:為了更好的保證軟件產品的質量,本文介紹了目標碼測試的必要性,測試工具的原理及運用的約束條件。目標碼測試需要工具的支持及對實現方法的摸索。

        關鍵詞:目標碼;語句分支覆蓋

        引言

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

        1目標碼測試的必要性

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

        通過上表可以看出,要想完全實現所有高級語言源代碼和目標碼的一一對應是件困難的事情,并且編譯選項給目標代碼帶來的變化也是非常明顯。

        軟件測試通過對語句和分支的覆蓋率指標從一個方面來評估軟件測試的充分性,下面再舉一個Keil C51例子說明源代碼和目標碼測試時語句和分支覆蓋率統(tǒng)計的差異。

        在進行測試時C語言的語句有2條,而匯編會有17條;分支C語言也是2條,而匯編語言就是由4條,JZ和JC語句分別有2個分支。在進行源代碼測試時只需要2個測試用例即可完成測試,而目標碼測試則需要3個測試用例來完全覆蓋分支的各種情況。上面這個例子可看出目標碼測試要比源代碼測試的難度更大一些。

        從這兩個例子可以看出,源代碼通過編譯器之后帶來的變化,雖然不能得出不進行目標碼測試,軟件的質量就有問題或是對任務存在影響。但作為測試充分性的考量指標,源代碼和目標碼的覆蓋率指標所反映的內容還是存在一定的差距。對于高級語言編寫的可重用模塊,如果編譯器不同,模塊重用就存在了一定的風險。

        2如何實現目標碼測試

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

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

        根據上述原理完成目標碼覆蓋率測試會有很多制約因素,比如:

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

        ◇采集設備的運行速度與CPU運行速度;采集設備的速度一定是被采設備的倍數;現在CPU運行的速度越來越快,高速采集設備在抗干擾等方面要求很高;采集設備需要被測件提供可連接的接口;

        ◇被測軟件是否運行在內部存儲區(qū);如果在內部存儲區(qū)就無法獲取被測軟件的運行情況;

        ◇對應不同的匯編語言,測試工具要對應不同的分析軟件或分析軟件所調用的信息庫不同。

        通過上述方法實現目標碼測試只是目前的一種,是否還有更好的方法還有待研究。因為源代碼語句和分支覆蓋率的統(tǒng)計都是通過插樁的方法實現,目標碼是否也可以運用類似的方法來實現?或是有更好的方法。

        3目標碼測試的好處

        沒有提出目標碼測試的概念之前,軟件測試充分性一般通過源代碼的語句和分支覆蓋情況進行考量,更嚴格的還有條件覆蓋,條件組合覆蓋,路徑覆蓋等,對于后三種情況只是理論的考量方法實際工作中是很難完成的。為了進一步提高語句和分支覆蓋,驗證編譯器沒有對代碼帶來未知的影響,所以通過目標碼語句和分支的覆蓋率測試來確保測試的充分性。

        某型號軟件就發(fā)生過由于對目標碼沒有進行徹底分析而造成質量問題的案例,也發(fā)生過對編譯器選項配置不一致而造成質量問題的情況。隨著問題的被發(fā)現,對測試的要求越來越高。在不斷的積累和探索中,必將會發(fā)現更好的方法,使開發(fā)和測試人員完全清晰掌握運行在CPU上目標碼的任何細節(jié)。

        4結束語

        目標碼測試為提高軟件質量,使軟件設計師和測試人員更充分掌握運行代碼的確切情況是非常有幫助的。但無論是源代碼還是目標碼的覆蓋率測試對工具的依賴是非常大的,沒有好的工具支撐是無法完成這項工作的。

        參考文獻:

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

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

        日本一区二区三区视频免费观看| 新中文字幕一区二区三区| 日本一区二区三级在线| 内射人妻无套中出无码| 日韩国产成人无码av毛片蜜柚| 国产成+人欧美+综合在线观看 | 亚洲一区二区三区蜜桃| 日韩aⅴ人妻无码一区二区| 丝袜足控一区二区三区| 欧美日韩性视频| 日本一极品久久99精品| 亚洲中字永久一区二区三区| 手机在线观看日韩不卡av| 超清精品丝袜国产自在线拍| 精品亚洲日韩国产一二三区亚洲| YW亚洲AV无码乱码在线观看| 久久露脸国产精品WWW| 亚洲一区二区三在线播放| 中文字幕精品人妻丝袜| 成人艳情一二三区| 欧美性色黄大片手机版| 国产主播福利一区二区| 亚洲成aⅴ人片在线观看天堂无码| 中文字幕久久人妻av| 我和隔壁的少妇人妻hd| 精品久久久久久无码中文野结衣| 国产在线精品一区二区在线看| 少妇人妻偷人精品无码视频| 完整在线视频免费黄片| 中文字幕av熟女中文av| 波多野结衣av一区二区全免费观看| 国产极品女主播国产区| 国产午夜福利片| 中文字幕久无码免费久久| 国产成人AV乱码免费观看| 日本中文字幕官网亚洲| 亚洲av无码一区东京热久久| 中国丰满大乳乳液| 久久久精品国产亚洲AV蜜| 在线观看视频国产一区二区三区 | 欧美性猛交xxxx免费看蜜桃 |