English 中文(简体)
如何自动化Windows驱动程序和二进制程序的防病毒/WSUS补丁测试?
原标题:How can I automate antivirus/WSUS patch testing of my Windows driver and binary?

我的(相当小的)公司开发了一个流行的Windows应用程序,但有一件事我们一直在努力测试——它经常只由开发人员在与他们开发的系统相似的系统上进行测试,当更新被推送给客户时,我们的一部分客户会因为Windows补丁的一些奇怪功能而遇到问题,或者在某些偏执的防病毒应用程序的情况下(我看着你,科莫多和卡巴斯基!),他们会在我们的应用程序上出现假阳性。

我们对70%的用户使用的内容进行手动测试,但测试过程缓慢而痛苦,有时甚至没有达到应有的完整性。管理层一直坚持认为我们需要做得更好,但在发布时,他们一直在这个问题上争论不休(测试需要多长时间?只需推出它,我们就会向遇到问题的客户发布补丁!)。

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

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

任何想法都将不胜感激!

最佳回答

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

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

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

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

问题回答

暂无回答




相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签