测试向导应用程序的UI

时间:2012-02-20 23:19:33

标签: selenium junit tdd junit4

我一直在使用Spring Web Flow和JSP / Tiles作为View Technology的Wizard应用程序。我们已经使用webDriver / Selenium编写了UI验证测试来测试特定的页面,但是已经达到了一定的效果。

这是目前的策略......

  1. 登录一次
  2. 转到第1页,在其上运行所有测试
  3. 使用Selenium单击“下一步”
  4. 来到第2页并在第2页上运行所有测试
  5. 正如您所看到的,此策略的问题在于测试的顺序很重要(意味着在未通过第1页之前无法测试第2页)如果我们要独立测试每个页面,我们必须启动每次从登录屏幕开始,这意味着运行所有测试的时间将逐渐增加。

    在页面中,首先运行哪个测试也很重要(通过成功点击某个链接(如果可用),你应该能看到一个弹出窗口)

    使用Junit testSuite,我们只能在一个类中运行所有测试,而不是选择一些。

    所以我的问题是:

    1. 有没有办法只从测试类中获取少量测试并按给定顺序运行它们?
    2. 先谢谢你的帮助......

3 个答案:

答案 0 :(得分:0)

我不知道您使用哪个测试框架来驱动Selenium测试。 如果您使用TestNG,则可能符合您的要求,例如

<test name="test_one" preserve-order="true">
    <classes>
        <class name="org.your.test.testclass">
            <methods>
                <include name="base_login" />
                <include name="navigate_page_one" />
                <include name="test_one" />
            </methods>
        </class>
    </classes>
</test>

<test name="test_two" preserve-order="true">
    <classes>
        <class name="org.your.test.testclass">
            <methods>
                <include name="base_login" />
                <include name="navigate_page_one" />
                <include name="test_two" />
            </methods>
        </class>
    </classes>
</test>

同时,您可以通过更好地组织测试代码来实现这一目标。它与Selenium无关......

  • 将每个步骤提取为单独的方法
  • 调用这些方法......

答案 1 :(得分:0)

您还可以使用PageObject方法,其中每个页面都是新对象。实施例

public class FirstPage{
private WebDriver driver; 
public FirstPage(){
  driver = new FirefoxDriver();
}

public WebDriver getDriver(){
return driver;
}

public void testSomething(){
// some test on first page
}

public SecondPage goToSecondPage(){
return new SecondPage(this)
}

}


public class SecondPage{
private FirstPage firstPage //that way you can access all variables in first page

public SecondPage(FirstPage first){
this.firstPage = first;
}

public void testSometingElse(){
firstPage.getDriver().findElement // thats how you access to the driver for instance
}
}

简而言之 - First页面的每个WebElement都应该在FirstPage类内部,依此类推。您仍然可以通过公共电话访问该驱动程序。我使用类似的方法,这样我知道我在测试中的位置,并确信无论何时我使用SecondPage类的方法,我都在第二页。

答案 2 :(得分:0)

如何让每个小组独立?

  • 第1页套房
    • 一次性设置为suiet:转到第1页
    • 运行所有测试
  • 第2页套房
    • 一次性设置:转到第1页,然后转到第2页
    • 运行所有测试

通过这种方式,您可以在执行时间内权衡测试级别的独立性。现在,如果我想运行一个特定的page2测试X,时间=时间为[转到第1页,然后第2页] + [TestX]

好像你正在使用JUnit,应该工作。我们使用NUnit进行验收测试。如果您正在编写单元测试,但每个测试必须是独立且快速的。