如何自动执行Windows驱动程序和二进制文件的防病毒/ WSUS补丁测试?

Phi*_*ter 5 python testing automation cots functional-testing

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

我们对70%的用户使用进行了手动测试,但这种测试既缓慢又痛苦,有时并不像应有的那样完整.管理层坚持认为我们需要做得更好,但是在发布时他们会继续解决这个问题(测试会花费多长时间?只需推出它,我们就会向遇到问题的客户发布补丁!).

我想设计一个更好的使用虚拟机自动化测试系统,但可以使用一些关于如何实现它的想法,或者如果有一个COTS产品,任何建议都会很棒.我正在一起攻击一个"运行"我们产品的每个功能的Python脚本,但我不确定如果我们遇到Windows崩溃(除了检查它是否仍在进程列表中)之后如何进行测试,或者更糟糕的是,如果Comodo因为一些愚蠢的原因而举报它.

为了最好地模拟测试环境,我试图让VM尽可能"纯粹",并且不会在操作系统和防病毒软件以及一些常见应用程序(Acrobat Reader,Firefox等)之外加载大量垃圾.

任何想法将非常感谢!

Pau*_*lan 1

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

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

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

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