测试模拟器



我们应该如何为模拟硬件的程序(如vmWare(组织单元测试和系统测试?

背景:

多年来,我们一直管理着1980年代的计算机以及相关的外围设备和软件。该系统对我们的客户至关重要,他们不想更换它。因此,我们选择为某些硬件开发仿真器。问题在于,它在数千页的打字机书面文本中记录得很差。因此,这是尝试和错误开发。

问题:

我们目前没有模拟器的单元测试,系统测试非常附加。很难通过在文本终端中键入并模拟来自外部系统的数据输入来测试复杂的操作系统是否在各个方面都有效。我们现在测试的唯一方法是增加来自外部系统的大量输入压力(通过 X.25(,并定期自动执行一些繁重的操作。但是你错过了这么多。

我曾经在一家公司工作,做一些类似的事情。为了测试我们的系统(它实际上是一个动态二进制转换器,而不是模拟器(,我们编写了一个测试框架,它将在本地运行相同的命令并进行翻译,然后比较结果。我们开始使用用户空间程序来做到这一点,但随着我们开发更复杂的产品,我们使用相同的技术来自动测试模拟硬件。粗略地说,你想编写一些程序来访问这个硬件并对其做一些事情,将所有输出转储到终端或某处的日志。然后在两端(真实和模拟(上运行这些程序,并比较输出。根据仿真的精确程度,您可能需要一些脚本来在差异时忽略输出的某些部分 - 地址、主机名等。

模拟硬件时要注意的另一件事是状态更改:特定命令可能在两端提供相同的输出,但可能会以不同的方式更改内部状态。这可能很难预测,但通常您需要确定可能受影响的内部状态,并将其与每个命令的输出一起转储。

在我们被收购之前,我们开始研究更聪明的东西,使用内核跟踪工具在运行测试时逐步监控操作系统/硬件状态,然后比较本机运行和转换运行之间的一系列步骤。这从未完全开发过,但看起来非常有前途。

可悲的是,所有这些东西都是内部和闭源的,所以我不能指出任何你可以运行和玩的东西,但这个想法非常合理 - 我们在翻译人员的每个版本上运行了数千个这样的自动化测试,结果非常令人满意。

编辑:我对这个问题思考得越多,我就越渴望解决这个问题。我不认为你的项目是开源的,但如果是,我很乐意参与。如果可能的话,请随时与我联系。

最新更新