添加客服微信
400 035 7887
021-60725088-8054
利用 Selenium WebDriver 自动化部分 Web 应用程序测试方法。
测试登录或搜索似乎很简单。单击,键入,单击,键入,等待,查看。但是,在您的第一个功能的初始测试和完善的应用程序之间会发生一些事情,该应用程序具有许多功能,跨许多浏览器和设备。事情总是变得非常复杂。幸运的是,如果您正确利用 Selenium WebDriver,它可以为您处理很多这种复杂性。
多平台部署和稳健的测试一直是天敌。在整个 2000 年代中期,软件提供商只是坚持支持一个流行的浏览器。内部 Web 应用程序保证只能与 Windows XP 上的 Internet Explorer 6 一起使用。如果您想在 Internet Explorer 7 发布时使用它,他们不做任何保证,服务台也不会支持呼叫。至于像新贵 Firefox 这样的异国情调的东西,忘掉它。
组织这样做不是为了惹恼他们的用户;他们只是想尽量减少测试和支持的成本。这说明测试 Web 应用程序变得多么困难和耗时。
让我们更详细地了解它是如何在如此广泛的用户群中发挥作用的。Selenium WebDriver 的架构使其具有令人难以置信的可扩展性和灵活性。
如果您使用过面向对象语言,那么您可能听说过所谓的“四人组”设计模式。其中之一称为桥接模式。它的描述通常听起来令人生畏:将抽象与其实现分离。但这实际上是一个相当简单但强大的概念。想想你家里的电灯开关。开关是您的抽象(或接口),而灯的打开或关闭是实现。
您希望能够更换灯泡而无需关心是否有按钮或翘板开关。而且您还希望能够从按钮开关更改为摇杆,而无需关心是黄色灯泡还是白色灯泡。您想这样做是为了将灯泡/电灯开关组合问题变成加法问题而不是乘法问题。并且 Selenium WebDriver 的架构以完全相同的方式工作。
首先,您有一组绑定代表您的脚本语言选择(例如 C#、Java 等)。然后你有一组代表不同浏览器的驱动程序。中间是 Web Driver API。您现在可以独立添加绑定和浏览器驱动程序,从而获得难以置信的深度支持。如果某个新浏览器出现并且有人为它编写驱动程序,那么使用任何绑定的人都可以使用它。同样,如果有人为新的编程语言添加绑定,他们将立即使用所有可用的驱动程序。
让我们更详细地了解它是如何在如此广泛的用户群中发挥作用的。Selenium WebDriver 的架构使其具有令人难以置信的可扩展性和灵活性。
如果您使用过面向对象语言,那么您可能听说过所谓的“四人组”设计模式。其中之一称为桥接模式。它的描述通常听起来令人生畏:将抽象与其实现分离。但这实际上是一个相当简单但强大的概念。想想你家里的电灯开关。开关是你的抽象,灯的打开或关闭是实现。
您希望能够更换灯泡而无需关心是否有按钮或翘板开关。而且您还希望能够从按钮开关更改为摇杆,而无需关心是黄色灯泡还是白色灯泡。您想这样做是为了将灯泡/电灯开关组合问题变成加法问题而不是乘法问题。并且 Selenium WebDriver 的架构以完全相同的方式工作。
首先,您有一组绑定代表您的脚本语言选择(例如 C#、Java 等)。然后你有一组代表不同浏览器的驱动程序。中间是 Web Driver API。您现在可以独立添加绑定和浏览器驱动程序,从而获得难以置信的深度支持。如果某个新浏览器出现并且有人为它编写驱动程序,那么使用任何绑定的人都可以使用它。同样,如果有人为新的编程语言添加绑定,他们将立即使用所有可用的驱动程序。
让我们使用一些代码来看看这实际上是什么样子。出于示例目的,我将使用 Java,但您可以轻松地将此处的想法外推到您的首选语言。这个想法只是为了展示一个特定的绑定如何使用 API 来允许在不同的驱动程序之间轻松使用。
public void SeeWhatHappens() {
GoogleYourself("Joe Smith");
}
public void GoogleYourselfAcrossBrowsers(String name) {
GoogleYourself(name, new FirefoxDriver());
GoogleYourself(name, new InternetExplorerDriver());
GoogleYourself(name, new ChromeDriver());
}
public void GoogleYourself(String name, Driver driver){
driver.get("http://google.com");
WebElement searchText = driver.findElement(By.name("q"));
searchText.sendKeys(name);
searchText.submit();
driver.quit();
}
它由三种不同的方法组成,第一种方法很简单。在该方法中,我调用 GoogleYourselfAcrossBrowsers 并提供一个非常通用的名称。GoogleYourselfAcrossBrowsers 然后使用它实例化的三个不同的驱动程序调用 GoogleYourself。
就其本身而言,GoogleYourself 正是这样做的。它允许您看到一些 API 的运行情况。检索google的主页,然后找到“q”元素(用于查询)。然后将名称的击键发送到该元素并在退出之前执行提交。
总的来说,这段代码将依次使用 Firefox、Internet Explorer 和 Chrome 搜索相关名称。现在,想象一下未来会出现一些新的浏览器。您可以通过添加适当的驱动程序依赖项,然后添加一行代码将其添加到您的测试策略中。
上面的代码稍微抽象了;它使用简写来让 new() 方法可读。在实践中,传入浏览器并在传入的内容上执行的想法,或从命令行给出浏览器的名称,或任何其他方法都可以实现大量重用。
传统的测试自动化让测试人员用某种“脚本”语言编写代码,可能是由供应商创建的。程序员用 C#、Ruby、Python、Java 或其他一些语言编写他们的生产代码,但从来没有看到或接触过测试代码。通常在其他系统中跟踪测试代码。
使用与生产代码相同的语言(或至少是生产程序员精通的语言)编写测试代码使生产程序员有可能获得测试代码的一些所有权。将它放在同一个版本控制系统中并将测试置于持续集成下可以将反馈循环从数周缩短到数小时。一些团队甚至对由于更改而失败的测试进行维护,这是生产程序员的责任。因此,“在所有测试运行之前,故事还没有完成。”
如果您在没有这种测试自动化的情况下生活过,希望您开始了解它的力量。您可能有单元级别的测试,也可能有自动化系统和集成测试。但是,如果没有 Selenium WebDriver,您很有可能不会在测试金字塔的顶端进行自动化。
如果您没有体验到这种能力,那么您可能正在手动执行此操作。而且,在 Web 应用程序和跨多个设备的多个浏览器的多个版本的世界中,您可能会进行大量高度重复的测试。或者,如果你不是,那么你可能在信仰上付出了很多。
使用 Selenium WebDriver,您可以真正解决测试策略中的严重盲点。给 QA 一个巨大的活页夹,里面装满了重复的测试用例,并要求他们在每次发布时进行验证,这会产生令人麻木的工作,不如将其花在其他事情上。这是一项糟糕的投资,它在金钱上几乎没有发现令人震惊的缺陷。
考虑利用 Selenium WebDriver 来自动化这部分测试方法,特别是因为它非常适合自动化。免费 QA 将更多精力放在探索性测试和其他需要更多人工判断的方法上。
现在让我们更具体地了解 Selenium WebDriver 的实际用例。希望您现在明白它可以改造您的测试策略,同时使其更加全面。但是,总的来说,让我们看看您可以使用 Web 自动化框架做什么。
在多种浏览器中重复使用 GUI 测试。
每天执行几次核心回归测试。
为您的应用程序生成功能或验收测试的非常明显的显示。利益相关者实际上可以观察测试的运行情况。
改进开发人员和测试人员之间的协调。
创建系统演示作为测试过程的免费副产品,也可以作为“预期行为”的文档。
加强测试策略的特点较为突出。这种形式的自动化可以帮助进行回归、功能和验收测试。但您也可以实现一些额外的好处。为了擅长自动操作 GUI,您需要深入了解 GUI 的元素。测试人员和将测试作为一项活动执行的人员将了解“幕后”发生的事情,例如 API 和 Javascript 如何交互。而且,您可以使用自动化向产品所有者和用户或其他利益相关者演示功能。
您可能可以在我未在此处列出的独特情况中提出额外的价值。这是一个强大的工具。
总的来说,这有助于改进Web应用程序并使您的商店更好地完成它的工作。自从 Internet Explorer 6 主导市场以来,我们已经走了很长一段路。浏览器激增,人们拥有比以往更多的选择,同时拥有比以往更高的期望。您可以通过在交付高质量 Web 应用程序的同时跟上这种激增的步伐来让自己与众不同。但是没有帮助,你不能做到这一点。您的工具带中需要工具,而 Selenium WebDriver 是强大的工具之一。
推荐阅读:
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-60725088-8054),我们将立即处理,马上删除。