Unit testing 硒批评
我只是想从运行Selenium()的人那里得到一些意见。我对WaTiN有很多经验,甚至为它写了一套录音套件。我让它产生了一些结构良好的代码,但只由我维护,似乎我的公司几乎放弃了它 如果您已经运行selenium,您是否取得了很多成功 我将使用.NET3.5,Selenium是否能很好地使用它 生成的代码是干净的还是只是所有交互的列表?() 分布式测试套件的公平性如何 对系统的任何其他抱怨或赞美都将不胜感激 如果您使用生成代码,那么您只需获得selenium将执行的每个操作的列表。对我来说,SeleniumIDE是启动或执行快速“尝试并查看”测试的好方法。但是,当您考虑可维护性和更可读的代码时,您必须编写自己的代码 实现良好的selenium代码的一个好方法是以代码表示您的导航流的方式使用。这是我在(巴西)看到的一个很好的例子:Unit testing 硒批评,unit-testing,selenium,automated-tests,ui-testing,Unit Testing,Selenium,Automated Tests,Ui Testing,我只是想从运行Selenium()的人那里得到一些意见。我对WaTiN有很多经验,甚至为它写了一套录音套件。我让它产生了一些结构良好的代码,但只由我维护,似乎我的公司几乎放弃了它 如果您已经运行selenium,您是否取得了很多成功 我将使用.NET3.5,Selenium是否能很好地使用它 生成的代码是干净的还是只是所有交互的列表?() 分布式测试套件的公平性如何 对系统的任何其他抱怨或赞美都将不胜感激 如果您使用生成代码,那么您只需获得selenium将执行的每个操作的列表。对我来说,Sel
希望这对我有帮助,我正在使用Selenium Remote Control来测试ASP.Net应用程序(我想你也会以它为目标),而且效果很好 如果您从未使用过Selenium,请观看一些关于使用Selenium IDE的介绍。这将使您对“硒”的工作原理有一个很好的了解。IDE是一个firefox插件,基本上可以让您在运行时开发快速录制和播放测试。对于更大的测试套件或编写真正可维护的测试,我建议使用Selenium Remote Control。(如果您刚刚开始使用IDE,那么IDE非常棒。) 允许您使用喜爱的语言和单元测试框架来驱动web浏览器以执行测试。如果您对C#/NUnit最满意,那么您可以用这种方式编写测试,并使用您喜欢的所有NUnit产品。(例如,Test-Driven.net插件)。此外,由于您的测试是用高级语言编写的,因此您可以执行诸如从特定测试类继承之类的操作,您可以使用这些操作使实际的测试方法代码更加清晰。(或者至少这是我编写测试的方式。它让我可以测试复杂的场景,使我的测试方法行数保持在一个合理的数字。) 您提到了分布式测试。不幸的是,我还没有找到一种方法来使用NUnit的项目。Selenium Grid允许您在许多不同的机器和浏览器实例上执行测试套件。因此,不必一个接一个地(即,串行地)运行200个测试方法,您可以将负载分散到一台机器或多台机器上的四个网格实例(即,一次在四个不同的浏览器实例中运行)上,具体取决于您希望得到的分布方式 不过,如果您使用Java或PHP编写测试,您的运气可能会更好。我希望这将通过NUnit提供,NUnit2.5的发布将包括用于并行测试的pNUnit
如果您还有任何关于硒的问题,请澄清您最初的问题,我很乐意尝试帮助您。(Selenium只是我每天使用的工具之一,所以我喜欢帮助新人开始使用它。)我从Selenium IDE和Selenium Core开始。这些绝对是让你开始的好工具。但它们不是很强大,因为您只能使用Selenese,即Selenium基于HTML的逐条命令语言 现在我将Selenium遥控器与Ruby驱动程序一起使用,这使我能够利用Ruby提供的功能。我测试了许多环境:Windows 2000、XP、Vista、Mac 10.4/10.5,对于每一个应用环境,Safari 2/3、Firefox 2/3、Internet Explorer 6/7 Selenium声称与所有这些操作系统和浏览器兼容,尽管我目前在使用Internet Explorer时遇到了问题(实际上,我关于StackOverflow的第一个问题就是关于这一点)。但我不知道还有什么其他工具能如此强大,能与这么多平台协同工作
我使用Selenium遇到的最大问题是DOM解析。JavaScript的childNodes是不可靠的,因为Safari/Firefox忽略空白和注释节点,而Internet Explorer则没有。Internet Explorer中的XPath比SF/FF中的速度慢10-20倍。innerHTML在IE中并不总是可靠的。Selenium是一个相当不错的工具,但需要注意以下几点:
- Selenium IDE和Selenium core不共享100%相同的功能。例如,IDE支持右键单击,但当前的核心版本不支持右键单击。但是,使用他们存储库中的更新版本可以解决这个问题
- 对于ExtJS、gwt等,请确保您的显示元素具有正确的ID,而不是自动生成(随机)的ID
- 维护测试用例。我见过一些案例,在硒测试和良好覆盖率方面投入了大量精力。后来,测试开始失败,因为创建测试的人忙于其他任务,并且没有人想碰它们。但这是管理层的问题,而不是硒
public class GoogleTest {
private Selenium selenium;
@Before
public void setUp() throws Exception {
selenium = new DefaultSelenium("localhost", 4444, "*firefox",
"http://www.google.com/webhp?hl=en");
selenium.start();
}
@Test
public void codingDojoShouldBeInFirstPageOfResults() {
GoogleHomePage home = new GoogleHomePage(selenium);
GoogleSearchResults searchResults = home.searchFor("coding dojo");
String firstEntry = searchResults.getResult(0);
assertEquals("Coding Dojo Wiki: FrontPage", firstEntry);
}
@After
public void tearDown() throws Exception {
selenium.stop();
}
}
public class GoogleHomePage {
private final Selenium selenium;
public GoogleHomePage(Selenium selenium) {
this.selenium = selenium;
this.selenium.open("http://www.google.com/webhp?hl=en");
if (!"Google".equals(selenium.getTitle())) {
throw new IllegalStateException("Not the Google Home Page");
}
}
public GoogleSearchResults searchFor(String string) {
selenium.type("q", string);
selenium.click("btnG");
selenium.waitForPageToLoad("5000");
return new GoogleSearchResults(string, selenium);
}
}
public class GoogleSearchResults {
private final Selenium selenium;
public GoogleSearchResults(String string, Selenium selenium) {
this.selenium = selenium;
if (!(string + " - Google Search").equals(selenium.getTitle())) {
throw new IllegalStateException(
"This is not the Google Results Page");
}
}
public String getResult(int i) {
String nameXPath = "xpath=id('res')/div[1]/div[" + (i + 1) + "]/h2/a";
return selenium.getText(nameXPath);
}
}