2009-11-20 78 views
3

我想在使用其他我没有代码的库时仔细检查我的代码是如何操作的。虽然我可以在线执行此操作(即使用SysInternals的FileMon,RegMon和TCPView),但我想知道是否有一个很好的离线方法可以让我在虚拟机中运行代码,关闭虚拟机并对整个虚拟机映像?软件测试时的清洁房间

回答

5

由于对系统的持续修改要么在注册表中的文件系统中,您可以使用一个小程序来列出硬盘驱动器上的所有文件并转储注册表。
然后,你也可以在程序运行后做一个简单的文件比较。 如果您使用的是virtualbox,我认为您可以脱机挂载磁盘映像(即虚拟机不运行)。然而,从脱机文件转储注册表可能会更困难。 请参阅google上的“Mount vdi”。

+0

我不明白你如何理解你的发现。例如,一个数据库将您的数据分成多个页面,更新索引,更新内部统计信息。你区分磁盘内容......这是不同的......这种差异很好吗?你甚至不能保证两次运行会产生相同的结果。 – djna 2009-11-21 07:14:18

+0

这是非常真实的。但是,只要你没有安装程序的内部知识就可以了。 当然,如果第三方使用加密的数据存储,例如,你运气不好。我不确定OP想达到什么目的。 – slurdge 2009-11-21 09:41:04

5

所有集成测试肯定会使用您没有源代码,您的框架库,数据库驱动程序,数据库,通信库。其中的一些甚至可能不在您的代码所在的同一台机器上。我不清楚你希望达到的目标。你打电话给一个排队系统,它会做各种秘密松鼠的事情。你前后分歧,现在你能说什么?你知道那里的数据格式应该代表你的请求吗?

我看到测试是根据我正在使用的库和系统的已发布行为来定义的。数据库示例:我执行一些应该创建订单的业务操作。我知道我定义的订单,它们是否出现在数据库中?在定义我的测试时,我可以根据数据库中的记录指定显式预期结果。然后,我甚至可以自动化测试 - 将数据库中的摘录与预期结果进行比较。