Testing 如何有效地针对多个服务器运行测试自动化以进行验证?

Testing 如何有效地针对多个服务器运行测试自动化以进行验证?,testing,automation,webserver,watin,Testing,Automation,Webserver,Watin,场景:具有相同Web应用程序的25个Web服务器 我们正在使用VisualStudio和WatiN进行自动化,现在我们有三个基本的测试可以运行。在测试中,当它运行时,它会遍历每个服务器 测试:签名 ForEach服务器 获取服务器x 运行测试 在这种情况下,该测试将运行25个时间循环,如果每个测试运行2分钟,则验证时间几乎为一个小时。太长了!!!:( 我希望能够将这项工作作为多个测试代理进行传播 问题是此测试只能在一个代理上运行,因为它是一个测试 我正在避免的方法是,创建一个特定于每个服务器的测

场景:具有相同Web应用程序的25个Web服务器

我们正在使用VisualStudio和WatiN进行自动化,现在我们有三个基本的测试可以运行。在测试中,当它运行时,它会遍历每个服务器

测试:签名 ForEach服务器 获取服务器x 运行测试

在这种情况下,该测试将运行25个时间循环,如果每个测试运行2分钟,则验证时间几乎为一个小时。太长了!!!:(

我希望能够将这项工作作为多个测试代理进行传播

问题是此测试只能在一个代理上运行,因为它是一个测试

我正在避免的方法是,创建一个特定于每个服务器的测试,并避免可能导致的重复

测试:登录服务器1 在服务器1上运行测试

测试:登录服务器2 在服务器2上运行测试

以此类推,25次


我希望有人能分享他们在这类设置中的实现。

如果您并行运行这些测试,您应该能够同时运行它们,并在2分钟内完成所有测试


我们所做的是在selenium网格上使用mbUnit和selenium测试(并行运行它们)(selenium网格实际上可以并行执行这些测试).

在同一台机器上并行运行测试肯定是一个很酷的选择。但是对于Watin,它可能会带来问题,因为多个IE实例同时打开,访问同一个网站,可能会相互干扰

我建议您尝试同时启动两个Watin测试,看看浏览器是否混淆(即,第二个浏览器是否重复使用与第一个浏览器相同的cookie/state/etc并中断测试)

如果他们没有问题,那么您可以尝试扩展到5次、10次或机器可以承受的并发运行次数,并且可能正在进行中。:)

但是,如果浏览器确实相互干扰,您可能会想办法让Watin以保持浏览器状态独立的方式启动浏览器(我认为Watir的人在这方面做了一些工作,所以Watin可能会这样做。)

完全不同的选择:

如果您有多台客户机要运行测试,您可以使用Jenkins或Hudson计划Watin测试

即使是两台或三台同时运行同一测试套件的机器,也会大大缩短测试运行时间

詹金斯已经成为我测试过程中非常宝贵的一部分。我发现它是一个很好的工具,可以安排测试作业在一天中的固定时间运行,或者在源代码管理发生变化时运行


假定有一些方法可以将参数传递给Jenkins作业(例如您的案例中的服务器地址和登录凭据),因此您可能可以利用这些方法来避免重复。如果做不到这一点,您可以尝试为要运行测试的每台服务器创建一个Jenkins作业。

您查看过Microsoft测试控制器和代理吗?如果您使用MSTest运行“WatiN”测试,这将类似于运行单元测试

在单元测试中使用测试控制器和测试代理

一旦安装了测试控制器和一个或多个代理,您就可以 然后可以指定在测试中使用远程执行 运行负载时使用的测试设置中的控制器 测验。此外,还可以指定数据适配器和诊断适配器 与测试中与代理关联的角色一起使用 背景有关详细信息,请参见如何:为 分布式负载测试、设置机器和收集 使用测试设置的诊断信息


另一方面,您可以在最新的WatiN中使用jquery选择器。

我有这种设置,但我使用的是NUnit。我拥有的测试基础设施由一个测试控制器组成,该控制器构建测试程序集(.dll)并将它们复制到web服务器。然后使用PSEXEC,在所有web服务器上远程调用测试。 NUnit安装在web服务器上,但是,我不认为这是一个要求,您可以在没有安装的情况下从xcopied版本使用NUnit测试运行程序

除了测试程序集之外,还有另一个可执行文件从测试控制器复制到web服务器,它将结果发布到HP Quality Center,并发送包含测试结果的电子邮件通知


因为您使用的是MSTest(我猜您提到的VisualStudio是用来运行测试的),所以您可能需要经历一下这个过程。

我已经在一个项目上工作了一年多,这个项目就是这样做的

我们有大约400个nunit测试,使用watin测试我们公司的网站。该项目的第一个版本使用了10个虚拟机来运行测试(因此可以运行10个并发测试)

新版本将使用我发现的名为Sandboxie-的应用程序。此应用程序允许您在沙箱中运行应用程序(这意味着一个测试的cookie不能干扰另一个测试的cookie)。它有一个.net包装(我在底部添加了动态链接的版本)——

经过一番胡闹之后,我意识到sandboxie在VM上不能很好地工作(在虚拟机上运行虚拟应用程序空间?!?Derp)。现在我们有4台物理机,其中(目前)有10个沙盒(因此现在可以运行40个并发测试)。以下是该项目的概述:-

Web UI.  Requests test to be run by...
-> Test Server (windows service on server).  Adds requests to database and passes on to...
   -> Test controller 1 (windows service on client 1)
      -> Test runner (console app on client 1) in Sandbox 01
      -> ...
      -> Test runner (console app on client 1) in Sandbox 10
   -> Test controller 2 (windows service on client 2)
      -> Test runner (console app on client 1) in Sandbox 01
      -> ...
      -> Test runner (console app on client 1) in Sandbox 10
   -> Test controller 3 (windows service on client 3)
      -> Test runner (console app on client 1) in Sandbox 01
      -> ...
      -> Test runner (console app on client 1) in Sandbox 10
   -> Test controller 3 (windows service on client 4)
      -> Test runner (console app on client 1) in Sandbox 01
      -> ...
      -> Test runner (console app on client 1) in Sandbox 10
如果你有任何问题,我很乐意帮忙


菲尔

我希望不必改用硒。但如果这是唯一的解决方案,我会尝试使用selenium网格和xpath的额外功能。谢谢这个奇怪的想法,但是在IE中运行一半的测试,在Firefox中运行一半的测试怎么样?