如何自动化我的Windows驱动和二进制文件的抗病毒/WSUS补丁测试?
我所在的公司开发了一款受欢迎的Windows应用程序,但我们一直在测试方面遇到困难——通常只有开发人员在与他们开发时相似的系统上进行测试。当我们向客户推出更新时,部分用户会因为Windows补丁的一些奇怪功能,或者某些过于谨慎的杀毒软件(我指的是你们,Comodo和Kaspersky!)错误地将我们的应用标记为有问题而遇到问题。
我们对70%的用户使用的功能进行手动测试,但这个过程既慢又痛苦,有时候测试的全面性也不够。管理层一直坚持我们需要做得更好,但每当发布时,他们又会推迟这个问题(测试需要多久?直接发布吧,遇到问题的客户我们再发补丁!)。
我想设计一个更好的自动化测试系统,使用虚拟机(VM),但我需要一些关于如何实施的想法,或者如果有现成的产品推荐,那就更好了。我正在编写一个Python脚本,来“运行”我们产品的每个功能,但我不太确定如果出现Windows崩溃该如何测试(除了检查它是否仍在进程列表中),更糟糕的是,如果Comodo因为某些愚蠢的原因将其标记为有问题。
为了最好地模拟测试环境,我尽量保持虚拟机的“纯净”,不在上面安装太多东西,只保留操作系统、杀毒软件和一些常用应用(如Acrobat Reader、Firefox等)。
任何想法都非常感谢!
1 个回答
这是个有趣的问题。有一点要避免,就是不要使用杀毒软件的API来检查你的应用是否会触发它们。你需要在预期的操作系统上,真实地部署你的应用,并且让真正的杀毒软件来监控它。这样,你就能触发那些智能监控和简单的“这段代码是否与这个校验和匹配”的检查。
你没有告诉我们你的应用是用什么写的,但如果你的测试套件能够实际测试应用的各个部分,而不是只测试单一的代码路径,那就不错。理想情况下,你的集成测试套件应该和你用来检查部署目标问题的测试套件是一样的。你的集成测试应该在真实环境中验证每个测试的输入和输出,这样才能发现崩溃等问题。另外,别忘了检查那些运行时间比预期长得多的情况,这也是一个常见的失败模式。最重要的是,你的测试套件需要足够简单,方便编写、修改和改进,这样才能和产品保持同步。那些不能测试所有内容的测试是没用的,而那些不运行的测试就更糟了。如果我们能知道更多关于你程序是怎么工作的情况,我们就能给出更好的自动化建议。
你可能需要在你打算部署的目标上准备一套虚拟机镜像,状态可以是打过补丁的和没打过补丁的。对于某些应用,你可能需要为每个不同版本的IE准备一个单独的虚拟机,因为这会影响系统的其他方面。要非常小心每个虚拟机中组合的内容。不要同时测试多个杀毒软件。在运行测试之前,先更新你快照中的杀毒软件。如果你的镜像中有足够多的组合软件,你可能需要自动化镜像的创建——先构建一个基础系统,更新到最新的补丁级别,然后编写脚本来安装杀毒软件和其他应用的组合。
是的,维护这套虚拟机会很麻烦,但如果你能编写应用的部署脚本,并且有好的快照和补丁更新计划,那么实际的测试套件在合适的硬件上运行起来应该不会太耗时。你需要研究一下虚拟机的解决方案,但我建议你可以从VMWare开始。