加速Web自动化测试

一. 问题背景

Web自动化测试,主要花费的时间在于UI自动化验收测试。特别是对于一些有工作流的Web应用来说,一个测试用例单次执行超过20分钟很正常。因此,如何去加速我们的测试用例执行,是每个测试人员必须要认真考虑的问题。

二. Headless浏览器方案

为了加快浏览器执行自动化命令的速度,我们选择Headless浏览器, phantomjs来作为自动化执行的浏览器,phantomjs不需要对页面进行渲染。因此可以大幅加快命令执行的速度。

三. 技术选型

我们基于selenium grid技术,来搭建phantomjs测试执行环境。

  • selenium-hub
  • selenium-node-phantomjs

这里我们利用docker来创建我们的上述环境。我们可以用docker compose来编排我们的环境。也可以独立创建。为了使大家更清楚,我们一步一步来创建phantomjs执行环境。

第一步

通过docker启动selenium hub服务
> docker run -d -P --name selenium-hub selenium/hub
启动后,进入http://localhost:4444/grid/console# ,查看hub的情况。

第二步

通过docker启动selenium-node-phantomjs节点,并注册到hub上。
> docker run -d --link selenium-hub:hub --name node-phantomjs akeem/selenium-node-phantomjs

这样,我们就完成了基本的selenium phantomjs执行环境的创建了。

加速Web自动化测试_第1张图片
node-phantomjs

执行测试用例

如下所示,test.py是一个基本的测试用例执行文件。

from selenium.webdriver.remote.webdriver import WebDriver

from time import sleep

import py.test

SELENIUM_HOST = "localhost"

SELENIUM_PORT = "4444"

def test_get_url():
    sleep(10)
    TEST_URL = "http://httpbin/html"
    driver = WebDriver("http://%s:%s/wd/hub" % (SELENIUM_HOST,     SELENIUM_PORT),desired_capabilities={"browserName": "phantomjs"})
    driver.get(TEST_URL)
    elem = driver.find_element_by_tag_name("h1")
    assert "Moby-Dick" in elem.text

运行

> python test.py

总结

Headless浏览器能够加速我们的测试用例执行,同时phantomjs是webkit内核,因此和利用chrome浏览器执行是效果一致的。
如果不是对页面渲染有很高要求的测试业务,推荐大家采用phantomjs方案。

你可能感兴趣的:(加速Web自动化测试)