我有一个想用 Selenium 测试的 ASP.NET 网站。我想在“登台”虚拟机上设置一个 Jenkins 实例,以自动运行测试。
问题是测试运行非常缓慢 - 比我的开发机器慢几倍。一个简单的测试可能需要 2-3 分钟以上。
我想知道这是否是可以预料的,像我这样的测试设置是否有任何明显的缺陷,以及我是否可以做些什么来分析和提高测试套件的性能。
信息:
测试在具有 Windows 7 64 位的 2.7GHz 2GB Ram 虚拟机上运行。我的开发机器类似,但安装的是 32 位 Win。
以下由詹金斯完成:
- 该网站从源代码管理中签出,并使用自定义 web.config 进行配置。主要区别在于它是在发布模式下编译的,它连接到不同机器上的数据库(也是同一台服务器上的虚拟机)。
- IIS 正在监视网站的目录并自动重新加载更改。
- 运行以下命令(已清理目录): nunit-console Selenium-Project-Dir /labels
- 测试在 Chrome 网络驱动程序上运行。
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 实例。你可以猜到类实例的“Good”静态属性是什么)