簡體   English   中英

測試模擬器

[英]Test an emulator

我們應該如何為模擬硬件(例如vmWare)的程序組織單元測試和系統測試?

背景:

多年來,我們管理着1980年代的計算機以及相關的外圍設備和軟件。 該系統對我們的客戶至關重要,他們不希望更換它。 因此,我們選擇為某些硬件開發仿真器。 問題是,它在成千上萬的打字機書面文本中沒有很好地記錄下來。 因此,這是嘗試和錯誤發展。

問題:

我們目前沒有仿真器的單元測試,並且系統測試非常復雜。 通過在文本終端中鍵入並模擬從外部系統輸入的數據,很難測試復雜的OS是否在所有方面都能正常工作。 我們目前正在測試的唯一方法是(通過X.25)增加來自外部系統的大輸入壓力,並定期自動執行一些繁重的操作。 但是那時候您會非常想念。

我曾經在一家公司工作,做類似的事情。 為了測試我們的系統(實際上是一個動態二進制翻譯器,而不是一個仿真器),我們編寫了一個測試框架,該框架將在本地運行相同的命令並進行翻譯,然后比較結果。 我們從用戶空間程序開始執行此操作,但是在開發更復雜的產品時,我們使用相同的技術來自動化對仿真硬件的測試。 粗略地說,您想編寫一些程序來訪問此硬件並對它進行處理,將所有輸出轉儲到終端或日志中的某個地方。 然后在雙方(真實的和仿真的)上運行這些程序,並比較輸出。 根據模擬的精確程度,您可能需要一些腳本來區分差異時忽略輸出的某些部分,例如地址,主機名等。

模擬硬件時要注意的另一件事是狀態更改:特定命令可能在兩側都提供相同的輸出 ,但是可能以不同的方式更改內部狀態。 這可能很難預料,但是一般來說,您需要確定可能受影響的內部狀態,並將其與每個命令的輸出一起轉儲出去。

在我們購買之前,我們開始進行更聰明的工作,在運行測試時使用內核跟蹤工具逐步監視OS /硬件狀態,然后比較本機運行和翻譯運行之間的一系列步驟。 它從未得到充分開發,但是看起來很有希望。

遺憾的是,所有這些東西都是內部的,並且是封閉源代碼的,所以我無法指出您可以運行和使用的任何東西,但是這個想法非常合理-我們在成千上萬的自動翻譯機上都運行了數千個這樣的自動化測試非常令人滿意的結果。

編輯:我對這個問題的思考越多,我就越熱衷於解決這個問題。 我不認為您的項目是開源的,但如果是這樣,我很樂意參與。 如果可能,請隨時與我聯系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM