3

我试图找到一种可靠的方法来测试 webapp 以获得某些性能指标。webapp 主要使用 Javascript 来执行其各种操作/请求等。

我想要做的是测量两个特定事件之间的时间,例如,在我登录到网站后,某物出现在用户面前所花费的时间——目前我可以使用 Selenium Webdriver 来近似这一点,如下所示:

WebElement element4 = driver.findElement(By.linkText("Login"));
element4.click();

long start = System.currentTimeMillis();
WebElement element5 = wait3.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("New")));

long finish = System.currentTimeMillis();
long time = finish - start;
System.out.println("Time taken for New element to load: " + time + "ms");

或使用:

WebElement element6 = driver.findElement(By.linkText("New"));  

代替

wait3.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("New")));

然而,这将给出的结果通常并不准确。我想知道是否有办法使用 Selenium 更准确地做到这一点,或者是否有另一种工具可以用来可靠地以可管理的格式获取这些数据?

谢谢

4

1 回答 1

0

您需要多少准确度?总会有一个误差范围,您必须为您的场景定义可接受的范围。

在这种情况下,可能会有一些开销,例如由于 Selenium 本身(特别是如果您正在运行远程 WebDriver)。我会假设可能还有其他随机的外部因素影响它。

也就是说,您可以通过运行“校准”测试来提高准确性,这将帮助您确定您自己的测试环境/设置固有的误差范围。

您的校准可能如下所示:

  1. 打开正在测试的页面
  2. 等到一切都加载完毕
  3. 测量wait.until()您知道已经存在的元素需要多长时间
  4. 重复(3)多次以获得一些统计意义

最后你有一个测量列表。获取例如它的中值,您就会知道以后在运行实际测试时必须从测量的延迟中减去多少。或者,您可以简单地将误差范围和标准偏差作为附加信息添加到性能测试结果中。

请注意,在 Selenium 的情况下,您使用哪种方法在页面上查找元素也会有所不同(例如,通过 ID 查找可能比通过“linkText”查找更快),因此您可能需要增强上面的步骤 3 来测量所有不同元素查找机制的wait.until()错误。

于 2014-02-07T12:34:58.243 回答