999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

王永孟 馬利東

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

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

引言

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

1目標碼測試的必要性

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

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

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

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

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

2如何實現目標碼測試

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

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

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

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

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

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

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

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

3目標碼測試的好處

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

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

4結束語

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

參考文獻:

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

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

主站蜘蛛池模板: 亚洲人妖在线| 特级做a爰片毛片免费69| 免费国产高清视频| 国产嫩草在线观看| 一区二区无码在线视频| 精品一區二區久久久久久久網站| 素人激情视频福利| 国内丰满少妇猛烈精品播| 日韩国产 在线| 国产综合网站| 国产国拍精品视频免费看| 高清无码一本到东京热| 日本午夜在线视频| 欧美人在线一区二区三区| 亚洲第一国产综合| 欧美精品亚洲日韩a| 欧美色综合久久| 亚洲伦理一区二区| 国产人免费人成免费视频| 午夜a级毛片| 亚洲综合第一页| 中文字幕伦视频| 91在线国内在线播放老师| 97免费在线观看视频| 免费一级成人毛片| 91成人在线观看视频| 亚洲高清无在码在线无弹窗| 91色国产在线| 在线亚洲小视频| 日韩欧美在线观看| 欧美日韩导航| 国产区精品高清在线观看| 在线观看免费国产| 国产高潮流白浆视频| 久久亚洲国产视频| 99手机在线视频| 亚洲欧美成人影院| 亚洲国产成人久久精品软件| 亚洲区视频在线观看| 中文字幕在线欧美| 九九这里只有精品视频| 日韩高清在线观看不卡一区二区| 亚洲欧美色中文字幕| 精品国产自在在线在线观看| 久久性视频| 欧美精品高清| 蜜芽国产尤物av尤物在线看| 女人天堂av免费| 青青草原国产av福利网站| 免费看黄片一区二区三区| 一边摸一边做爽的视频17国产| 中文无码毛片又爽又刺激| 亚洲视频二| 99国产精品免费观看视频| 丰满人妻久久中文字幕| 日本精品视频一区二区| 丰满的熟女一区二区三区l| 亚洲成人精品| 99在线小视频| 亚洲天堂网站在线| 四虎成人精品在永久免费| 国产va在线| 国产精品无码AⅤ在线观看播放| 在线国产综合一区二区三区| 国产另类视频| 久久精品人妻中文视频| 国产制服丝袜91在线| 国产成人无码Av在线播放无广告| 特级精品毛片免费观看| 久热中文字幕在线观看| 五月天天天色| 操国产美女| 亚洲色图欧美一区| 狠狠色成人综合首页| 国产精品999在线| 国产成人亚洲欧美激情| 国内精自视频品线一二区| 呦视频在线一区二区三区| 国产一级妓女av网站| 色视频国产| 美女毛片在线| 欧美a级在线|