Selenium testing…

1Requires skilled developers or test engineers to create and debug the test scripts.

2Is slow since scripts have to be manually created or modified. Test recorders do exist, but these still require the user to debug the script after.

3Uses a number of selector types to specify an element. However, if your UI changes, it can often select the wrong element.

4Is bad at coping with modern UIs that use nested DOMs and dynamic content.

5Requires scripts to be (manually) updated for every browser/OS/device combination e.g. Google Chrome, Firefox, Microsoft Edge, etc.

What’s required for Selenium testing?

The Selenium framework uses the Selenium web driver and a domain specific language (Selenese) along with a number of different scripting languages (including JavaScript and Python). It needs to be run on a dedicated server. Selenium Grid allows you to run several servers at the same time, all controlled from a central node. There are a few services that allow you to run Selenium tests in the cloud, but these still require you to develop and debug your own tests.

Problems with Selenium

Selenium problems, traditional functional testing
  • Selenium automation testing is fraught with problems.
  • Probably the biggest of these is test maintenance.
  • Test engineers can find themselves spending half their time on maintaining existing tests.
  • When you couple that with the time to analyze test results, they are left with little time to actually create new tests.
  • This means you don’t get the benefits of full test automation coverage.
Slow Manual Test Maintenance
Test Maintenance

Scripts written for Selenium are extremely brittle. Any update to your UI risks breaking most of your Selenium-based tests. Every change makes it harder for the script to select the right element. Even a simple CSS change can cause all the selectors on a page to change.

If the script fails to find the element at all it will fail instantly. However, sometimes it will actually select the wrong element. This causes major problems as it leads to failures that don’t show up until many steps later. In the worst cases, it could invalidate the test altogether. In both cases, you have to manually fix the test script.

Slow Test Creation with Selenium
Slow to create test scripts

The Selenium software is not user-friendly. Test scripts are hard to write, requiring skilled Test Automation Engineers or Developers in Test to get them right. Even a simple test script takes hours to write and debug.

Test recorders can simplify this process, but the scripts they produce are more brittle. They also still require manual debugging and improvement by testers.

Hidden DOM selectors
Hidden Selectors

Modern websites use nested DOMs to import content from 3rd parties. Things such as a PayPal Buy Now button, or a newsletter sign up. These Domain Object Models (DOMs) are the logical containers within your web application’s UI. Third party widgets exist inside their own DOM embedded inside your application. Sometimes, DOMs can be nested many layers deep.

Unfortunately, Selenium scripts can only reliably interact with objects within their own DOM. The only way to access embedded objects is to use complex XPath queries. And if the embedded object changes at all that breaks the test.

Cross-browser Test Failure
Hard to adapt for cross-browser

UI tests need to work cross-browser (and cross-platform). Adapting Selenium scripts for this is painstaking and slow. Essentially, the script has to be modified for every different combination of platform and browser.

Taken with the slowness of producing the initial script, it can easily take a team of competent test engineers days to produce just a few scripts that work cross-browser.

functional testing

So, what is the alternative to using a Selenium testing tool? How can you avoid the issues with slow test creation, test maintenance, etc.? The answer is to use an Intelligent Test Agent (ITA). Functionize’s ITA is able to act as the perfect regression tester: focussed, accurate, and tireless.

Functionize’s Natural Language Processing allows you to create tests directly from test plans written in English. Our ML Engine then models your site, learning how the UI is meant to work. In effect, your test plans are telling the engine how you expect the site to function. Tests automatically run cross-browser and cross-platform with no need to adapt them. All tests are run in the Functionize Test Cloud, allowing thousands of tests to be completed in parallel.

All this means that with Functionize, you can easily automate all your functional testing. You don’t need an army of Developers in Test to write new tests for you. Because we leverage the power of cloud computing, your testing completes far faster. And because our system understands how your site is meant to work, tests can self-heal when you make changes. For more complex changes, Root Cause Analysis is able to track down the trigger for any failure. It then tests the most likely causes of the failure and presents the best solutions for you to choose from. The result? Productivity is increased tenfold compared to using a Selenium tool.

Automated Test Creation

Download Datasheet

AI-Powered Testing

Functionize is the industry’s most advanced enterprise AI-powered testing. We help teams break through testing barriers and enable organizations to release faster.

Learn how Functionize intelligent testing platform can help you:

  • Create AI-powered tests using Architect or plain English via natural language processing
  • Reduce test maintenance time by 85% with self-healing tests
  • Scale test execution and run cross-browser tests in parallel