Selenium has been around for nearly two decades and is starting to show its age. Yet the thought of replacing Selenium with a new solution can be a daunting one.
Your organization may well have invested almost as much time building their automation framework as using the scripted automation tool. But applications nowadays are changing so frequently that test maintenance takes up a majority of testers’ time.
The benefits of replacing Selenium with a more modern, efficient solution are well worth the effort to transition. But contrary to popular belief, a full “rip and replace” of your existing technology may not be necessary. Indeed, it may not even be wise. At Functionize, we believe that customers should decide for themselves how best to transition. It may even be that you end up keeping some of your legacy tests because it’s simply easier. Read on to learn all you need to know when planning your migration to modern AI-powered testing.
Should I keep some tests in Selenium?
We get it, you may have spent years building up and maintaining your tests in Selenium. You might feel pangs of guilt leaving your tests behind and replacing them with something new. It may even be that your team no longer quite understands some of your tests and you are worried in case you break something. But let’s look at some of the issues you need to consider when deciding whether to keep a test in Selenium or not.
The biggest pain point with scripted UI testing is the test maintenance burden. As soon as your application changes, your test scripts break. Fixing the scripts is not only time consuming, but it’s a vicious cycle that repeats with new application changes. We believe in the age-old saying, “If it ain’t broken, don’t fix it.” But if it keeps breaking, maybe it’s time to finally fix it! But before you just wholesale migrate your tests, check with your team. Chances are, some tests don’t break that often, or are only run occasionally. If so, there’s no point migrating the tests just yet.
Static areas of your application
Perhaps there are areas of your application that are less likely to change. Talk to your product owners about your product roadmap. The goal is to understand which areas of the product are less likely to change. Product owners will have an idea of which application areas are due for end-of-life or have very few customer enhancement requests. These areas of your application are not worth transitioning into a new automation solution since your maintenance effort will be lower or at least short-lived.
What should I test manually?
Of course, not all tests can or should be automated. So what should you consider before deciding to automate a test in the first place?
Tests that should not be automated
Tests that are run infrequently should never be automated. Perhaps there are low-risk edge cases that are introduced during the sprint. Or one-off testing for a feature that never makes it to production. You’ll end up spending way more effort on automating these tests than you save on running them. Another area where you may prefer to test manually is usability or UX tests. The user experience of a page or feature can be nuanced. So, you may wish to test pages with rich UX with a manual set of eyes, especially if the tests are not time-consuming or need to be run repeatedly.
Tests that cannot be automated.
Equally, some tests can’t be automated—ad hoc testing really has to be done manually and relies on the skills of your manual test team. Or, if you have tests with unpredictable outcomes which would cause a logic nightmare for your test engineers. In general, test automation works best for tests that:
- Are run regularly, or at least more than a handful of times
- Have predictable and repeatable results
- Check features that have already been developed
If your tests don’t pass those checks, probably best to keep them manual.
Tests that are best moved to Functionize
People often ask us which tests are best suited for AI-powered solutions such as Functionize. There’s two parts to answering this. First, you need to understand the strengths of Functionize and how it compares with other solutions. Then you need to look at your own priorities for migration.
The value of Functionize
Functionize’s biggest value proposition is the reduction in test maintenance. This has always been our primary focus because it is the biggest source of test debt for most teams. If you compare Functionize with Selenium, we cut maintenance time by at least 80% (and more if you design your tests carefully). As a result, you will get the most “bang for your buck” by using Functionize for tests that are difficult to maintain. Your team likely already knows which tests are most likely to cause false positives in Selenium today. The tests can break for a variety of reasons, including application changes, compatibility issues with Selenium libraries, or problems with the test environment. If this sounds like you, then for certain Functionize can help your team.
You likely also have some tests that need to be run at-scale to test for load and performance. These tests not only require reporting, but will also require support from DevOps engineers to provide adequate infrastructure. Speaking of test environments, if you have tests that need to be run across geographies for localized testing, you’re going to need a test cloud. Setting up and maintaining a test cloud also requires significant DevOps support. All of these problems can be solved using Functionize’s Test Cloud.
Last but not least, when planning which tests to transition to Functionize, you should consider your product roadmap. Knowing which areas of your product will frequently see UI changes will help with your planning process as well. Functionize copes much better with changes and new features than Selenium and other scripted solutions.
Four approaches to implementing AI
Embarking on a journey using new technology can be scary. Before you set out, you should decide which tests you want to prioritize for AI test automation. Here are four “tried and true” approaches to implementing AI-powered testing for the first time.
- Start by automating your regression suite using AI. We get it—after a while, it may be tough to rely on your existing regression suite. Scripted automation requires heavy maintenance, and if you’re not able to keep tests up to date, false positives will lead you to question all your results. Sometimes, it’s better to start fresh. This can also be a perfect opportunity to verify whether you need all your regression tests still.
- Begin with automating new tests using AI. One of the benefits of Functionize is how easy it is to create new tests. That makes it quick and simple to start your AI transformation by automating tests for new features as they reach QA. You’ll soon see for yourself how much less maintenance these tests need. Moreover, they will be able to take advantage of advanced Functionize features like test data generation and visual verification.
- First automate the most maintenance heavy tests using AI. Maintenance is often a big problem for scripted test frameworks. It’s not uncommon for teams to spend half their time fixing old tests rather than analyzing test results or automating new ones. Take a step back and identify the tests that repeatedly need maintenance. Rather than putting that time into maintaining the test, instead use it to migrate the test to Functionize.
- Automate tests that require manual checks using AI. Often we see teams that have adopted a hybrid testing strategy where the results of an automated test still have to be manually verified. Or where key user flows can’t be tested automatically. A great example is 2-factor authentication. Testing that with Selenium is somewhere between hard and impossible. But with Functionize you simply have to click a couple of buttons to set it up. Functionize also allows you to do smart visual verifications of your whole UI. This picks up on things that have changed without you needing to specifically tell it to test that.
Which strategy is best for you will depend on your situation. If you want some expert guidance, feel free to quiz our team during a demo!