在负载下运行Selenium WebDriver测试

时间:2016-04-20 11:53:46

标签: java selenium junit load jmeter

我有一堆Web应用程序的功能测试,这些测试是使用Java,Selenium WebDriver和TestNG编写的。目前我的目标是在负载下测量这些测试中每种方法的时间(例如,10-15个用户同时工作)。有人面对这样的问题,也许有想法怎么做?或者在负载测试的情况下不可能使用WebDriver?

我正在使用jMeter + jUnit搜索解析为jUnitRequest(将我的测试从TestNG重写为jUnit并不难)但据我所知,当一种方法依赖于jUnit时,它不支持此类测试其他一些(TestNG支持这个),我必须将所有方法合并到一个(这是非常愚蠢的想法)。

任何提示如何处理此问题都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

使用TestNG做起来并不难。但是为了并行运行测试,您必须使用线程管理WebDriver。为此,我将使用ThreadLocal创建一个类。使用TheadLocal类,您可以轻松管理每个线程的对象。有这样一个类的例子:

public class DriverManager {

    private static ThreadLocal<WebDriver> driver = new ThreadLocal<WebDriver>();

    public static WebDriver getDriver() {
        return driver.get();
    }

    public static void setWebDriver(WebDriver driver) {
        driver.set(driver);
    }
}

每当你必须使用你的驱动程序时,你只需要这样称呼它:

DriverManager.getDriver().doSomething

然后,使用testNG,您可以在不同的线程中执行测试。

答案 1 :(得分:0)

我建议不要用硒进行负载测试。使用浏览器进行负载测试没有意义。测试客户端性能应仅测试运行的1/2浏览器的性能,因为客户端将只运行应用程序的1/2实例。他们永远不会打开10-15个浏览器并针对您的应用程序运行。如果要加载测试服务器端代码,则应使用Jmeter并与用户并行访问API,以确定服务器无法响应之前服务器可以处理多少并行操作。