我有一个ASP.NET网站,我想用Selenium进行测试。我想在“临时”虚拟机上设置Jenkins实例,以自动运行测试。
问题是测试运行速度非常慢 - 比我的开发机器慢几倍。一次简单的测试可能需要2-3分钟。
我想知道这是否是预期的,如果我的测试设置有任何明显的缺陷,并且我可以做任何事情来分析和改进测试套件的性能。
在Windows 7 64bit的2.7GHz 2GB Ram虚拟机上运行测试。 我的开发机器类似,但安装了32位Win。
以下是由Jenkins完成的:
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的lazily-instances webdriver实例。你可以猜出类实例的“好”静态属性)
答案 0 :(得分:0)
它是一个虚拟机的事实不应该是一个问题,RAM听起来好像。什么操作系统正在运行?某些Windows操作系统在不同位版本之间存在显着的速度差异(因为对硬件的要求)。这在Vista中尤为明显,但我注意到Windows 7和Server 2003之间存在差异。
我发现运行64位虚拟机的机器是32位机器时存在很大问题。它似乎经常运行一段时间,然后继续运行测试将减慢。哪个应该是duh但主要的是可能有太多的VM从同一个地方运行。其他程序将受此影响,如果您的VM位于公司服务器场,则可以帮助您进行故障排除。
另一个产生重大影响的因素是,如果您针对不同的浏览器运行测试。 IE8和IE9将采用相同的selenium命令并以不同的速度运行它们。我不知道为什么会这样,我只知道我已经看过了。确保登台机器具有当前版本的Chrome(或至少与您的开发机器相同)。
暂存机如何与数据库联网可能会产生重大影响。这似乎是一个非常小的机会,但如果两个VM之间存在可能对时间产生重大影响的防火墙垃圾。
我能想到的另一件事可能是改变时间长度,如果在登台机器上同时执行其他程序。检查CPU使用率可能会有所帮助。就个人而言,我注意到我的VM使用的CPU比我的个人机器多得多。如果是这种情况,我到目前为止找到的唯一解决方案是为VM提供更强大的处理能力,或仅运行测试而不是其他任何方法。
祝你好运!