Asp.net Selenium在.NET和Jenkins中的性能-如何分析和改进它?

Asp.net Selenium在.NET和Jenkins中的性能-如何分析和改进它?,asp.net,.net,selenium,nunit,jenkins,Asp.net,.net,Selenium,Nunit,Jenkins,我有一个ASP.NET网站,我想用Selenium进行测试。我想在“暂存”虚拟机上设置一个Jenkins实例,以便自动运行测试 问题是测试运行非常慢——比我的开发机器慢几倍。一个简单的测试可能需要2-3分钟以上 我想知道这是否是意料之中的,像我这样的测试设置是否有任何明显的缺陷,以及我是否可以做些什么来评测和改进测试套件的性能 信息: 测试在2.7GHz 2GB Ram虚拟机上运行,该虚拟机具有64位Windows 7。 我的dev机器与此类似,但安装了32位Win 詹金斯完成了以下工作: 该

我有一个ASP.NET网站,我想用Selenium进行测试。我想在“暂存”虚拟机上设置一个Jenkins实例,以便自动运行测试

问题是测试运行非常慢——比我的开发机器慢几倍。一个简单的测试可能需要2-3分钟以上

我想知道这是否是意料之中的,像我这样的测试设置是否有任何明显的缺陷,以及我是否可以做些什么来评测和改进测试套件的性能

信息: 测试在2.7GHz 2GB Ram虚拟机上运行,该虚拟机具有64位Windows 7。 我的dev机器与此类似,但安装了32位Win

詹金斯完成了以下工作:

  • 该网站将从源代码管理中签出,并使用自定义web.config进行配置。主要区别在于它是在发布模式下编译的,并且它连接到不同机器上的数据库(也是同一服务器上的虚拟机)
  • IIS正在监视网站目录并自动重新加载更改
  • 运行以下命令(目录已清理):nunit控制台Selenium项目目录/labels
  • 这些测试在Chrome webdriver上运行
selenium项目使用NUnit和WebRunner。 在所有测试之前,在[SetUpFixture]类内的[SetUp]属性中创建一次驱动程序实例。它们在类的[TearDown]属性中删除一次

示例测试如下所示:

[Test, Combinatorial]
public void AnExistingUserCanLogin(
    [ValueSource(typeof(Drivers), "Good")] 
    IWebDriver driver)
{
    // This function clicks on some buttons and fills in some forms.
    LoginUser(driver); 

    // Make sure the user is now logged in
    Assert.IsTrue(driver.ElementIsPresent(By.ClassName("imgUserAvatar")));
    Assert.IsTrue(driver.ElementIsPresent(By.CssSelector("a.my-profile")));
    Assert.IsTrue(driver.ElementIsPresent(By.CssSelector("a.logout")));
}

(Drivers类包含FF,IE,Chrome的webdriver实例。你可以猜出类实例的“良好”静态属性是什么)

事实上,它是一个VM不应该是一个问题,RAM听起来不错。运行的是什么操作系统?一些Windows操作系统在不同的位版本之间有显著的速度差异(因为对硬件的需求)。这在Vista中尤其明显,但我注意到Windows7和Server2003之间存在差异

我发现,如果运行64位虚拟机的机器是32位机器,则会出现一个巨大的问题。它通常在一段时间内运行良好,然后随着它继续运行,测试速度会减慢。这应该是一个哑巴,但主要的是,可能有太多的虚拟机运行在同一个地方。其他程序将受此影响,如果您的虚拟机位于公司服务器场上,这将有助于解决问题

另一个造成显著差异的因素是,您是否在不同的浏览器上运行测试。IE8和IE9将采用相同的selenium命令,并以不同的速度运行它们。我不知道为什么,我只知道我看到了。确保登台机器具有当前版本的Chrome(或至少与您的开发机器相同)

登台机器与数据库的联网方式可能会有所不同。这似乎是一个非常小的机会,但如果两个虚拟机之间存在防火墙垃圾,可能会对时间产生重大影响

我唯一能想到的另一件事可能是改变时间长度,那就是如果有其他程序同时在登台机器上执行。检查CPU使用情况可能会有所帮助。就我个人而言,我注意到我的虚拟机使用的CPU比我的个人机器多得多。如果是这种情况,到目前为止,我找到的唯一解决方案就是给虚拟机更多的处理能力,或者只运行测试,而不运行其他任何东西


祝你好运

是否已检查虚拟机上的内存使用情况?2GB感觉可能有点低。另外,测试在您的工作站上运行需要多长时间?内存保持在1:11GB左右。测试在我的机器上运行不到10分钟(我没有用秒表检查,但它就在那个区域)。它们在开发机器上需要50分钟。您应该在连接到Jenkins服务器正在使用的数据库的开发机器上运行测试套件。这将排除数据库/数据库服务器的问题。运气不好,它在我的计算机上速度快,在登台计算机上速度慢。可能是因为一台计算机是32位的,另一台是64位的吗?还是因为其中一个是虚拟机?我也不能100%确定selenium浏览器实例的实际可视化位置,因此这可能也是一个因素。