5

我的(相当小的)公司开发了一个流行的 Windows 应用程序,但我们一直在努力解决的一件事是测试——它通常只由开发人员在与他们开发它的系统相似的系统上进行测试,并且在推送更新时对客户来说,我们的一部分用户由于 Windows 补丁的一些奇怪功能而遇到问题,或者在某些偏执的防病毒应用程序的情况下(我在看着你,Comodo 和卡巴斯基!),他​​们会假- 积极评价我们的应用程序。

我们对 70% 的用户使用什么进行手动测试,但它缓慢而痛苦,有时并不像应有的那样完整。管理层一直坚持认为我们需要做得更好,但他们在发布时一直强调这个问题(测试需要多长时间?只需将其推出,我们就会向遇到问题的客户发布补丁!)。

我想使用虚拟机设计一个更好的自动化测试系统,但可以使用一些关于如何实现它的想法,或者如果那里有 COTS 产品,任何建议都会很棒。我正在编写一个 Python 脚本来“运行”我们产品的每个功能,但我不确定如果我们遇到 Windows 崩溃如何进行测试(除了检查它是否仍在进程列表中),或者更糟糕的是,如果 Comodo 出于某种愚蠢的原因标记了它。

为了最好地模拟测试环境,我试图让虚拟机尽可能“纯净”,而不是在操作系统和防病毒软件以及一些常见应用程序(Acrobat Reader、Firefox 等)之外加载大量垃圾。

任何想法将不胜感激!

4

1 回答 1

1

有趣的问题。要避免的一件事是使用防病毒 API 检查您的应用程序是否触发了它们。您希望在预期的操作系统上真正实时部署您的应用程序,并通过实时 AV 安装对其进行监控。这样,您将触发启发式监视以及 API 使用的简单“此代码是否与校验和匹配”。

您还没有告诉我们您的应用程序是用什么编写的,但是如果您的应用程序测试套件实际运行了应用程序的一部分,而不是测试单个代码路径,那可能是一个好的开始。理想情况下,您的集成测试套件与您用于检查部署目标问题的测试套件相同。您的集成测试应该验证实时环境中每个测试的输入和输出,这应该捕获崩溃等。此外,不要忘记检查花费的时间比应有的时间长得多的事情,这是一种不幸的常见故障模式。最重要的是,您的测试套件需要足够容易编写、更改和改进,以使其实际上与产品保持同步。不测试一切的测试是无用的,不运行的测试更糟糕。

您可能需要一套跨预期部署目标的 VM 映像,处于各种修补(和未修补)状态。对于某些应用程序,您需要为每个 IE 变体使用单独的 VM,因为这会改变系统的其他方面。要非常小心每个 VM 中的内容组合。一次不要测试多个 AV。在运行测试之前更新快照中的 AV。如果您的映像中有足够大的组合软件,您可能需要自动创建映像 - 获取基本系统构建,更新到最新的补丁级别,然后编写 AV 和其他应用程序组合的安装脚本。

是的,维护这个虚拟机群会很痛苦,但是如果您编写应用程序的部署脚本,并且拥有良好的快照以及修补和更新快照的计划,那么实际的测试套件本身应该不会花费那么长时间来运行给定适当的硬件。您需要研究 VM 解决方案,但我可能会从 VMWare 开始。

于 2011-06-01T22:37:48.443 回答