BLOG

Use case: testing complex web applications with Functionize

Some applications are inherently complex, and testing them can be a real challenge. Take AI platforms for instance. These allow anyone to create AI models and embed them into their business logic. But how can you test the platform UI properly? This is when smart automated testing comes to the fore.

The challenge of testing complex applications

Nowadays, modern web applications can be as complex as the monolithic office suites we saw two decades ago. The problem is, users are more discerning, have more choices available, and are much less loyal than they used to be. This means ensuring software quality is more important than ever. But how can you do that for these massive online web applications like AI platforms? These platforms are the replacement for robotic process automation (RPA). They allow you to create AI models from your company data and embed these into your business logic. Need an intelligent support bot? Just train one on an AI platform and embed it in your site. Need super-accurate sales forecasts for your online store? Just feed in your historical data and create a custom model.
But testing these platforms is remarkably challenging. They often have complex UIs, for instance offering an “advanced” view for data science professionals. They are constantly evolving to keep up with the fast pace of this new sector. That means you need to constantly create new tests to keep up.

Why Selenium isn’t enough

Clearly, your only hope is to turn to test automation. Traditionally, that has meant using Selenium, or one of the many frameworks it has spawned. But let’s look at the problems it brings:

Slow test creation

Selenium uses test scripts to tell it what the test should do. The script identifies elements in the UI, interacts with them, and then checks the result. Each script is its own software project. It needs to be written, tested, debugged, and then specialised for each platform or browser you need to test. This takes skilled test engineers hours or even days to get right, and is beyond the ability of most people. As a result, most teams struggle to automate the majority of their tests.

Excessive test maintenance

Your test script interacts with the application under test via Selenium WebDriver. This relies on “selectors” to identify which UI elements you are trying to interact with. For instance, which button do you want to press, which form field are you trying to complete. The problem is, these selectors are defined when you write the script, but are very prone to changing at runtime. And they invariably break if you make even minor UI changes. That means you then need to debug all your tests and update the selectors. This is known as “test maintenance”, a benign-sounding term for a task that eats up half your QA team’s time!

Reliance on your own infrastructure

There’s another issue with Selenium—it’s still really designed to run locally on your own servers. That means you are stuck in a time-warp, maintaining local server infrastructure just to run your tests. This is far from ideal, since it means you end up relying on your SysAdmins and DevOps teams any time something goes wrong. There are companies that allow you to run Selenium tests in the cloud, but that is an extra expense.

How Functionize helps

Our mission at Functionize is to transform test automation using AI. Our platform is built on top of multiple forms of AI, from machine learning and natural language processing to image processing. The platform makes it really easy to create tests, run them, and analyse the results. Moreover, it helps you almost completely avoid test maintenance.

Test creation

Functionize Architect is a point-and-click AI-powered test recorder. It allows you to model new tests by directly interacting with your application. It’s deceptively simple to use—under the hood it packages all the advanced features a test engineer needs. For instance, you can use test data management to power complex test cases. Or use the built-in test data generator functions to populate forms. You can even save variables to be reused in this test or globally across tests. All in all, this gives you the ability to create tests of even the most complex web applications.

Test maintenance

Customers tell us that Functionize tests virtually eliminate routine maintenance for them. This is especially due to two features:

Self Heal ensures that tests don’t break every time your application changes. This is a marked contrast to Selenium, where even minor UI changes break all your tests. Self Heal relies on the advanced application model that the Functionize platform builds. This records millions of data points about the application and uses these to work out the correct element to interact with.

SmartFix helps you when tests break as a result of some change to application logic, or when there is any ambiguity about what the test should do next. You are presented with a list of possible suggestions that might fix the test. You simply choose the correct one, and it’s immediately updated.

Test cloud

All our tests run in the Functionize Test Cloud. Every test is run in a unique virtual server with its own IP address and ID. That means the testing is remarkably realistic. You can make it even more realistic by launching tests from locations all over the world. This is great for testing aspects like internationalization (i18n). It also means no more relying on your own infrastructure. Even better, our system stores data for every run of every test you ever make. It needs this to power its AI. But it also provides you with a valuable resource if you are trying to track down a particularly tricky bug.

Seeing Functionize in practice

You might think we’re just talking up the capabilities of our system. So, we have produced a series of case studies showing you how Functionize has helped real QA teams transform their testing. For instance, you can read how Functionize has helped TOTVS Labs to test Carol, their AI platform.

“Without Functionize, we would have had to grow our test team significantly, and also the team who supports QA. When you combine this with the reduced impact on the development team as a whole, this marks at least a 5-6 fold increase in efficiency.” Vicente Goetten, Executive Director of TOTVS Labs.

And the benefits don’t end there. Functionize is so easy to use that it makes it easy for TOTVS to on-board new test engineers. Moreover, they don’t need to have prior expertise with Selenium or other test automation frameworks. Functionize is easy enough that anyone can create smart tests with almost no training. If you want to try Functionize for yourself, why not take advantage of our free trial?