我曾经在一家公司工作,做类似的事情。为了测试我们的系统(它实际上是一个动态二进制翻译器,而不是一个模拟器),我们编写了一个测试框架,它将在本地运行相同的命令并翻译,然后比较结果。我们开始使用用户空间程序来做这件事,但是随着我们开发更复杂的产品,我们使用相同的技术来自动测试仿真硬件。粗略地说,您想编写一些程序来访问该硬件并对其进行处理,将所有输出转储到终端或某处的日志中。然后在两边(真实的和仿真的)运行这些程序,并比较输出。根据您的模拟的精确程度,您可能需要一些脚本来在区分时忽略输出的某些部分 - 地址、主机名等。
模拟硬件时要注意的另一件事是状态更改:特定命令可能会在两侧提供相同的输出,但可能会以不同的方式更改内部状态。这可能很难预料,但通常您需要识别可能受到影响的内部状态并将其与每个命令的输出一起转储。
在我们被收购之前,我们开始研究更聪明的东西,在我们运行测试时使用内核跟踪工具逐步监控操作系统/硬件状态,然后比较原生运行和翻译运行之间的一系列步骤。这从未完全开发,但看起来很有希望。
遗憾的是,所有这些东西都是内部的和封闭源代码的,所以我不能指出你可以运行和使用的任何东西,但这个想法非常合理——我们在每个版本的翻译器上运行了数千个这样的自动化测试非常满意的结果。
编辑:我对这个问题想得越多,我就越想解决这个问题。我不认为您的项目是开源的,但如果是,我很乐意参与。如果有可能,请随时与我联系。