Traditionally, most people use their own infrastructure in testing. And QA teams usually get the cast-off servers from production. Such setups are fine for manual testing, but when you want to run automated testing at scale, they fall flat. This is where cloud-based testing comes into its own.
Cloud has been a genuine disruptor in the software industry. Its benefits are obvious. You get infinite scalability, so Cloud lets startups start small and scale fast. You are only charged for what you use, so you retain control over your budget and avoid wasted investment. Someone else is responsible for the hardware, which lets you outsource the risks of managing servers.
So, why is it that so many companies still use their own infrastructure for testing? In this blog, I look at why cloud-based testing can transform your QA processes and helps drive faster CI/CD (continuous integration and continuous delivery or deployment).
The Selenium approach to scalability
Selenium was the first general-purpose testing framework to achieve wide-spread adoption because it enabled test engineers to automate even the most complex tests. With Selenium, you can create scripts that interact with your user interface (UI) exactly as a human would. Selenium lets you use external data sources to drive data-driven testing. You can even create complex conditional paths in your tests.
However, Selenium is far from perfect. Its core problems are well-known. First, Selenium scripts are fragile. They rely on selectors to choose which elements to interact with on the UI. Every change to the UI risks changing these selectors, leading to broken tests that need to be fixed. For another thing, creating scripts is a skilled job, and even the best test engineers can find it hard to write complex scripts. Then there’s the issue of scalability. Selenium was first created over 15 years ago. It was initially designed to run on a single browser at a time. To run multiple tests, you needed to set up multiple servers individually. The answer to this issue was Selenium Grid, which allows multiple instances of Selenium to run at once, all controlled from a single server.
Cloud-based testing with Selenium
You usually install Selenium Grid on your local infrastructure. Indeed, many companies still use it this way. But nowadays it’s increasingly used to power cloud-based testing services. Of course, being cloud-based, these services offer Testing as a Service, running your Selenium scripts at scale on the company's cloud infrastructure.
This brings many of the benefits of cloud to the realm of testing:
Scalability. Some cloud services allow you to run hundreds of tests in parallel. For a cost, of course. This is at least an order of magnitude more than you could achieve with your own infrastructure.
Economy. By outsourcing the infrastructure you improve business efficiency. You save the costs of owning and maintaining your infrastructure and get more predictable costs that are related to your actual demand.
Simplicity. Moving testing to the cloud simplifies your life no end. You can be certain that tests are being run on the latest browser versions. Storing the test results is a cinch. And you avoid the need to maintain and update your servers.
So far, so good. Cloud-based testing with Selenium is a good thing! But you are still faced with the inherent problems with creating and maintaining tests.
A different approach to cloud-based testing
Here at Functionize, we have taken testing to a new level. With our system, you get all the benefits of cloud-based testing, but without the issues with Selenium scripts. Our approach relies on a combination of machine learning, natural language processing, and computer vision. We provide you with an intelligent test agent that helps you with test creation, maintenance, and analysis.
Our Natural Language Processing system permits you to write test plans written in plain English, and then it converts them into fully-functional tests. For more complex scenarios, you can edit and augment the tests with full control. We even make it easy to create mini-apps to run complex orchestrations and to embed custom instrumentation within your tests.
This approach combines the power of Selenium scripts with the simplicity of using natural language. As a result, we enable cloud-based testing for your entire team, regardless of skill level and experience.
At the heart of our system lies our ML Engine. This machine learning model knows exactly how your system works. Functionize tests are robust against UI changes and updates. Every UI element is fingerprinted, so AEA can cope with elements moving on screen, being restyled, and even being renamed. Overall, this means that Functionize can slash test maintenance tenfold.
Our visual testing approach brings the power of computer vision to cloud-based testing. We capture screenshots before, during, and after every test step. The system then compares these with the expected outcome. If it spots a discrepancy, it highlights this on screen and lets you know. It also uses the AEA engine to allow it to ignore fields that are dynamic, such as time and date. This reduces false positives and lets you focus on the actual test failures.