我有一个ASP.NET网站,我想用Selenium进行测试。我希望在“暂存”虚拟机上设置Jenkins实例,以便自动运行测试。
问题是测试运行得非常慢--比在我的开发机器上慢几倍。一个简单的测试可能需要超过2-3分钟.
我想知道这是否是意料之中的,像我这样的测试设置是否存在明显的缺陷,以及我是否可以做些什么来分析和提高测试套件的性能。
信息:
测试运行在带有Windows 7 64位的2.7GHz 2GB Ram虚拟机上。我的开发机器类似,但有32位的Win安装。
以下是詹金斯所做的工作:
selenium项目使用NUnit和WebRunner。驱动程序实例在所有测试之前,在SetUp类中的SetUpFixture属性中创建一次。它们只在类的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")));
}(“驱动程序”类包含FF、IE、Chrome的懒惰实例webdriver实例。您可以猜测类实例的“好”静态属性是什么)
发布于 2013-04-26 15:26:28
事实上,它是一个VM不应该是一个问题,和RAM听起来是好的。但是运行的操作系统是什么呢?一些Windows操作系统在不同的位版本之间有显著的速度差异(因为对硬件的需求)。这在Vista中尤其明显,但我注意到了Windows 7和Server 2003之间的区别。
我已经发现,如果运行64位虚拟机的机器是32位机器,那么存在一个巨大的问题。它似乎经常工作一段时间,然后,随着它继续运行,测试将放慢速度。这应该是个废话,但最主要的是,可能有太多的VM在同一个地方运行。其他程序将受此影响,如果您的VM位于公司场中,这将有助于排除故障。
另一个产生重大影响的因素是,您是否正在针对不同的浏览器运行测试。IE8和IE9将使用相同的selenium命令,并以不同的速度运行它们。我不知道这是为什么,我只知道我看到了。确保暂存机具有当前版本的Chrome (或至少与开发机器相同)。
如何将暂存机联网到数据库可能会产生影响。这似乎是一个非常小的机会,但如果有防火墙垃圾之间的两个VM,可以有重大影响的时间。
我唯一能想到的另一件事可能是改变时间长度,如果同时在暂存机上执行其他程序的话。检查CPU的使用情况可能有帮助。就我个人而言,我注意到我的VM使用的CPU比我的个人机器多得多。如果是这样的话,到目前为止,我找到的唯一解决方案是给VM更多的处理能力,或者只运行测试,而不是其他任何东西。
祝好运!
https://stackoverflow.com/questions/11561443
复制相似问题