關於模擬器的嵌入式測試平臺相關軟體比較論文

  模擬器是指以某一系統復現另一系統的功能。與計算機模擬系統***Computer Simulation***的區別在於,模擬器致力於模仿系統的外在表現、行為,而不是模擬系統的抽象模型。以下是小編今天為大家精心準備的:關於模擬器的嵌入式測試平臺相關軟體比較相關論文。內容僅供閱讀與參考!

  關於模擬器的嵌入式測試平臺相關軟體比較全文如下:
 

  1 純硬體形式

  常見的有線上模擬器和邏輯分析儀。線上模擬器可以完全模擬目標晶片的行為,準確度高,執行速度快,但工藝設計複雜,價格昂貴。邏輯分析儀通過監控和取樣匯流排資料執行測試,完備性受限於取樣頻率,而提高取樣頻率則會大幅提高成本。基於硬體的測試工具通常用於計算機硬體的設計和測試,很少用於嵌入式軟體的測試。

  2 純軟體形式

  包括插樁和軟體模擬兩種典型方法。插樁向被測程式的特定位置插入探針,據此獲得程式的執行資訊。優點是實現簡單,缺點是改變了被測程式,無法得到被測程式的精確執行軌跡和執行時間。軟體模擬通過構建目標機的虛擬模擬環境,在宿主機上載入待測程式執行測試***目標機指嵌入式軟體的執行環境,宿主機指嵌入式軟體的開發環境,下同***。優點是可獲得待測程式的精確執行軌跡,缺點是速度較慢。

  3 軟硬結合形式

  綜合了純硬體和純軟體形式的特點,代表工具是 CodeTEST。測試環境接近於真實環境,準確性較高。缺點是硬體依賴性強,靈活性及可移植性差,成本昂貴。

  理論上講,嵌入式軟體測試應在目標機進行,畢竟軟體最終執行在目標機上。但嵌入式系統多采用軟硬體協同開發,在軟體開發過程中,目標機環境很有限,甚至不可用,無法滿足軟體測試的需要。此外,由於目標機的專用性,目標機下的測試工具比宿主機下的同類工具往往昂貴得多。考慮到上述因素,應將盡可能多的測試工作放在宿主機進行。但由於體系結構的差異,目標機軟體一般不能在宿主機直接執行,這就需要建立目標機的模擬環境,即通過軟體模擬進行測試。

  軟體模擬是一種經濟靈活的測試策略,可在沒有目標機硬體的情況下測試,準確性高,可以獲取精確的執行時間,能靈活控制程式的執行狀態。採用軟體模擬測試也可以避免將程式燒錄到目標機 ROM 造成的測試困難,降低開發成本。

  3.1 當前嵌入式測試工具的不足

  不少嵌入式測試工具採用軟體模擬測試。傳統模擬工具的測試流程是:編譯獲得被測程式的可執行程式,載入到模擬器執行,獲得測試結果。這些工具對整合測試和系統測試支援較好,對單元測試的支援不佳,看一個具體例子。

  通過例 1 可得到以下結論:單元測試時很多模組尚未編寫完畢,若採用傳統的嵌入式軟體測試方法,需要編寫大量的樁函式,工作量大。

  測試者需熟悉嵌入式軟體的開發語言,這樣才能編寫樁函式。軟體開發者通常會參與單元測試,這類人員可滿足要求。但為提高軟體質量,一般需安排專門的測試人員測試。嵌入式開發通常採用彙編等底層語言,種類繁多且較難學習,對測試者要求較高。修改樁函式和外部變數後,需重新編譯生成可執行程式,重新載入到模擬器測試。每做一點修改,均需重複上述步驟,測試過程繁瑣。測試的針對性不強,只能載入整個可執行程式測試,無法針對特定的關注單元測試。

  以航天某院為例,儘管購置了CodeTEST、Logiscope等昂貴的測試工具,但上述測試問題仍非常突出,其它工具也普遍存在類似的侷限性。

  本文介紹了一種新的嵌入式軟體測試方法,可以彌補上述不足。其特色和創新體現在三方面:

  1*** 通過自行構建連結器,而不採用預設的連結器完成連結,生成“記憶體映像”***此處的“記憶體映像”與可執行程式類似,但並不完全一致,本文采用該術語以區分二者***,可在程式程式碼不完備的情況下執行測試,能更好地支援單元測試。

  2*** 構建軟體模擬器,載入記憶體映像測試。除具備傳統模擬測試的優點外,還增加了互動式腳

  本處理能力,執行過程中可直接修改樁函式和變數,無需頻繁地編譯、載入,測試更加便捷。普通測試人員可以通過高階指令碼語言編寫測試用例,無需精通嵌入式平臺的專用開發語言。

  3*** 能對指定的關注單元進行測試,支援設定原始碼斷點,支援設定模擬的起止範圍,測試更有針對性,測試效率較高。

  2 基於模擬器的嵌入式測試平臺

  1*** 編譯被測程式生成目標檔案***x86 平臺的.obj 檔案就屬於典型的目標檔案***和連結描述檔案***link description file,後文簡稱 LDF 檔案***。

  2***利用自行構建的連結器分析目標檔案和庫檔案,提取符號表、資料段、程式碼段、可重定位段、行號資訊等,按照 LDF 檔案的說明進行連結,生成記憶體映像、總符號表和行號資訊表。

  3*** 將記憶體映像載入到模擬器測試。測試過程中,可以修改記憶體變數、暫存器值、樁函式等。結合測試用例注入,可實現單元測試和動態測試。

  3.2 連結器構造

  連結器根據 LDF 檔案的說明,提取並拼裝目標檔案中的各個段,得到記憶體映像、符號表和行號資訊表***圖 3***。其中,記憶體映像和可執行程式功能類似;符號表定義了各個符號***包括函式、變數、標號等***的名稱、地址、檔案、作用域等資訊;行號資訊定義了原始檔中行號與記憶體映像中地址的對映關係。關於行號資訊的更多介紹,請參考2.3節。

  目標檔案中的未定義符號在連結時會以UNDEF 標記,只分析本檔案無法解析,需要進一步分析其它檔案。如果在所有檔案中都沒有找到該符號,該符號就無法解析,使用標準的連結器無法連結,不能生成可執行程式進行模擬測試。

  SimAD 自行設計了連結器,可以有效控制連結過程。對於未定義符號,自動分配特殊的記憶體地址,使得這些符號可以通過“解析”,進而構造可被模擬器執行的記憶體映像。這是實現本文測試方法的關鍵所在。這樣的設計思路有以下優點:1*** 單元測試時很多模組不完備,可避免使用嵌入式開發語言編寫大量樁函式。即使存在未定義符號,也可以正常連結,提升了測試效率。

  模擬器執行時可以檢測到未定義符號,並檢查是否定義了樁函式或者進行了變數賦值。這樣,就把樁函式和外部變數的繫結由編譯期調整到了執行期。這帶來了兩個好處:可通過指令碼語言設計樁函式,進行變數賦值,避免了學習嵌入式開發語言的代價。 可實現互動式的樁函式宣告和變數賦值,避免了傳統的“修改樁函式和外部變數→編譯→載入執行”的繁瑣測試流程。

  3.3 模擬器實現

  模擬器完成對目標機的模擬,其基本特徵是行為等價,注重對目標機行為功能的模擬,對內部結構的模擬要求不高。重點關注:真實性、全面性、執行速度、通用性和可擴充套件性等指標。

  SimAD 模擬器實現了以下模擬:①譯碼:包括運算指令譯碼,移位指令譯碼,地址暫存器譯碼,通用暫存器譯碼等;②運算模擬:包括加法器模擬、乘法器模擬及移位器模擬;③控制流處理:包括中斷、迴圈、跳轉、呼叫等;④ 地址產生模擬; 記憶體訪問模擬; ⑤ 模擬:包括外部記憶體方式和串列埠 DMA 方式;定時器模擬。

  在實現功能模擬的同時,模擬器還提供了測試介面和外部互動介面,包括記憶體映像的載入介面、記憶體和暫存器的檢視/修改介面、樁函式的設定/修改介面、資料的輸入/

  輸出介面等。

  對單元測試的良好支援是 SimAD 模擬器的特色之一。單元測試中不可避免地會用到樁函式,模擬器提供了 setstub 樁函式設定介面。設定樁函式後,模擬器查詢其記憶體地址,連同函式名一併儲存到樁函式表中。在執行過程中,模擬器檢查呼叫的函式名是否存在於樁函式表中,若存在則不執行記憶體映像中的函式程式碼,而轉去執行測試指令碼中設定的樁函式。為便於理解上述過程,看一下例2。.......

  4 SimAD 測試工具介紹

  本文方法已在 SimAD 測試工具中實現。該工具目前支援 AD21060 和 AD21020兩類晶片,可實現靜態分析和動態測試。已實現的功能包括:整合測試環境***圖 6***、連結器、模擬器、測試指令碼解釋執行、測試報表生成等。

  圖6 SimAD 整合測試環境對測試指令碼的良好支援是 SimAD 的特色。

  支援新建和儲存測試指令碼,雙擊執行測試指令碼***圖5 中的右側視窗***,批量執行測試指令碼,從而提高了迴歸測試[10]的執行效率。SimAD 還提供了控制檯互動視窗,支援在模擬過程中輸入互動式的測試命令,即時控制測試過程。

  圖7 互動式執行測試命令SimAD 還支援其它測試功能,如語句覆蓋率報表、控制流著色、函式呼叫圖生成等,這些措施對提高測試效果也有裨益。

  5 相關係統比較

  在嵌入式軟體測試領域,國內外使用較多的測試工具是 CodeTEST和 Logiscope。它們與SimAD 的比較見表。

  3 種工具中 CodeTEST 功能最強。動態記憶體分析和效能分析是其主要特點,採用軟硬體結合形式實現,準確度較高,缺點是價格昂貴。使用CodeTEST 必須具備目標機硬體,必須生成執行程式,對單元測試的支援不佳。

  Logiscope 主要用於軟體的質量分析和測試,其突出特點是對軟體全生命週期的支援。採用插裝方式測試,對執行速度和執行結果會造成一定影響,無法獲得精確的執行時間和執行軌跡。

  SimAD 通過軟體模擬測試,不依賴目標機硬體,自行構造的連結器可處理未定義符號,可通過高階語言指令碼編寫測試用例和樁函式,對單元測試的支援較好。.....

  6 結 論

  目前的嵌入式軟體測試工具對單元測試的支援不佳,本文對此進行了研究和探索,提出了相應的解決思路,相關方法已在 SimAD 測試工具中實現,並在航天某院的專案測試中得到實際應用,得到了該院的高度評價。與成熟的嵌入式軟體測試工具相比,SimAD仍有很多地方需要完善。

  未來的主要工作包括:完善模擬器和測試框架的介面,方便第三方模擬器接入,以支援更多的嵌入式平臺軟體測試;針對 COFF、PE 等常用目標檔案開發連結器,使之能分析連結多種平臺的目標檔案;增加自動生成測試指令碼功能,目前純手工編寫指令碼,使用不太方便;增強覆蓋率分析。目前只支援語句覆蓋,需進一步支援判定覆蓋、條件覆蓋等。
 

  參考文獻***References***:

  [1] 國家安全生產監督管理總局.“7 23”甬溫線特別重大鐵路交通事故調查報告[EB/OL]. 北京: 國家安全生產監督管理總局網站, 2011 .

  [2] 薛偉. 利用線上模擬器***ICE***設計微機故障自動診斷系統[J]. 小型微型計算機系統, 1988, 9***6***: 40-44

  [3] 師奕兵, 王厚軍. 高速邏輯分析儀產品化設計的關鍵技術[J].儀器儀表學報, 2002, 23***5***: 38-40

  [4] 李躍飛, 郭君紅, 白成剛, 等. 飛行控制軟體測試中的插樁技術[J]. 北京航空航天大學學報, 2009, 35***5***: 580-583

  [5] 周慶, 劉斌, 餘正偉, 等. 綜合模組化航電軟體模擬測試環境

  研究[J]. 航空學報, 2012, 33***4***: 722-733

  [6] Rihar Marjan. Software Simulator as an Effective Tool for TestingControl Algorithms [J]. Simulation, 1994, 63***1***: 6-14