Mike Wager - 16 February 2021
CIOs have a lot on their plate, with 56% saying their main priority is ‘keeping the lights on,’ rather than creating value through innovation. However, adopting new technologies and ways of working is essential to meeting customer demand for better digital products.
Many organizations have implemented agile ways of working and DevOps to help with this challenge, bringing with it a new approach to software development. Test automation is a vital component of DevOps, as it allows software development teams to automate the mundane, repetitive aspects of software testing so that they can concentrate on more value-creating, innovative work.
As more organizations turn to the cloud, an opportunity to further modernize and improve the testing phase in your software development lifecycle (SDLC) becomes apparent: cloud-based test automation.
What is cloud-based test automation?
Cloud-based test automation is an approach to software development that utilizes cloud technology to speed up testing and software releases. This is achieved by 'spinning up' test environments on-demand so that your software development teams can continuously develop, test, and release digital products without the need to provision new infrastructure. Put simply, more test environments = faster test execution.
This is a great way to modernize your software development, but it isn't a one-size-fits-all solution. If you are testing your software on-premises and releasing quickly enough to keep up with user demand, then brilliant, carry on. If your existing infrastructure provides you enough test environments for your teams to fix bugs and release new features at the same time, great. As you were.
Cloud-based test automation is for teams that want to shorten testing cycles and increase release velocity. It has clear benefits but can also throw up some challenges. Whether you move entirely to the cloud, combine it with your existing infrastructure, or decide to keep all testing on-premises, it needs to be considered part of your company's software development strategy. Whichever strategy you ultimately go with, you need to make sure that keeping the lights on isn't done at the expense of innovating and future-proofing your organization.
Moving testing to the cloud should be viewed as a strategic initiative
Developers view testing as the number one cause of delays in software development. Therefore, practical steps towards removing this bottleneck should be a strategic priority for IT leaders. Cloud-based test automation can help.
Delivering fast, secure, and reliable software via on-premises infrastructure is possible if resources match test requirements' demands. But are you failing to keep up? Is your current testing infrastructure a bottleneck to your release schedule? Do you have to prioritize between testing new features and bug fixes on previous versions?
If this sounds familiar, then moving to the cloud or combining this technology with your existing on-premises infrastructure could very well be a strategic masterstroke.
Embracing cloud-based test automation will help shorten feedback loops for every software release dramatically — the holy grail for software development. Your devs and QA teams will consider you the best IT leader they have worked under for achieving this. And your CEO will view you as a genius as quality code flies out of production, delivering flawless user experiences and helping the business meet its goals.
While some organizations and digital-first startups embrace a 100% cloud-based testing strategy, there are advantages to be had by combining cloud technology with existing on-premises infrastructure. How cloud technology is utilized is down to company strategy, but many IT leaders are already embracing the scalability and collaborative aspects that allow for faster software releases.
Benefits of cloud-based test automation
The benefits of cloud-based test automation are primarily linked to using several on-demand test environments to perform automated tests.
To use a simple example, if you have one local machine running tests for 10 hours, you could shorten this to 1 hour if you had simultaneous access to 10 machines in the cloud.
Let's look into detail about what you can gain from cloud-based test automation:
- Faster testing
- Improved collaboration
- Reduced costs
Faster testing means quicker releases
Test automation speeds up software testing, whether on-premises or in the cloud. But cloud-based test automation shortens testing cycles because you can provide a much greater number of test environments. Your software teams can shorten feedback loops by increasing your access to test environments, meaning bugs get fixed, and features are released quicker. Continuously delivering improved software to the market means providing your end-users with a progressively better experience. And the link between good customer experiences and revenue are well-documented.
Exploratory testing is another area that can benefit from running in the cloud. Contrary to popular belief, it is possible to automate exploratory testing. With the help of AI, exploratory testing can be conducted without human intervention, allowing your teams to focus on creating value for the end-user and future-proofing your business.
By its nature, AI-assisted exploratory testing exhaustively tests user journeys through your app, automating tests that you wouldn't think to write test scripts for. The increased access to test environments in the cloud means that you can conduct exploratory testing much faster, which massively increases your test coverage and, ultimately, your confidence that your software is ready to go out into the world.
And by creating faster and easier access to monitor insights, increasing your test coverage, and discovering and fixing ‘unknown unknowns’ becomes that much easier. Introducing exploratory testing with AI ensures auto-generating test cases cover all possible user journeys, something even the best manual tester can't guarantee.
Cloud computing has always supported the ability to scale IT resources up or down as demand changes quickly, generally with minimal disruption. This is the same for cloud-based test automation. As test requirements change, organizations can increase or decrease their testing capabilities by automating the scaling of test execution.
This solves a historical problem in software testing where conflicts arise when teams fight over limited resources. What's more critical — releasing a much-requested feature or fixing an annoying bug that's causing issues with an existing version? When you have a limited number of test environments, this is an all-too-common problem.
Now, teams can spin up test environments at the touch of a button for any story branch and create whatever is needed to test a new feature or fix a bug. Your teams now have testing infrastructure instantly available to them without worrying about the limitations or delays associated with physical hardware or local installation.
The ability to scale test execution is exploited further through cloud-based test automation. Parallelization allows test teams to spin up multiple pre-configured test environments side-by-side that mimic various testing parameters of your systems under test (SUT).
By working this way, different software versions of the same application run on multiple virtual machines. Alternatively, the same piece of software can be run across different devices, browsers, or operating systems. Once tests are completed on any one of these environments, the results are reported back, and the machines can be spun down and destroyed, with no user data being retained.
Test coverage is further optimized and expanded through intelligent exploratory testing. And using a model-based approach, your testers can create one model that can simultaneously execute tests across multiple systems under test (SUT).
Whether your colleagues are down the hallway or halfway around the world, cloud technology helps teams work towards common objectives. By automating test execution in the cloud, your distributed Dev and QA teams can collaborate on the same products in real-time, removing bottlenecks that have defined siloed teams in the past. Cloud-based test automation delivers faster feedback loops, providing your teams with better visibility across the CI/CD pipeline and actionable insights into how your SUTs perform. This accelerates software deployment, so your organization gains a competitive advantage by delivering digital products to market faster than your competitors.
Future-proofing your business
Future-proofing your business relies on your people having the time and energy to think of better ways to deliver superior products to your customers. The problem is that people spend too much time on repetitive tasks that they don't think can be effectively automated. Exploratory testing is one such example, with humans traditionally tasked with testing user journeys outside of the 'happy paths' that your test scripts can automate. Automated exploratory testing guided by AI massively increases test coverage of your app without requiring human intervention.
The increased levels of test automation enabled by testing in the cloud then frees up your teams to work on other, more human-centric testing. Accessibility and usability can be focused on to make sure your applications are fulfilling their potential. You can also spend time on resilience testing, understanding how well your applications and systems respond to and recover from stresses and shocks.
Another benefit to moving your test automation to the cloud can be cost-saving. Purchasing servers, data centers, and other physical hardware yourself are expensive, not to mention associated maintenance and labor costs to keep everything running. And if your organization is growing rapidly, provisioning new servers to cope with ever-growing testing requirements ramps up expenditure even more.
Cloud environments eliminate all of the above. Hardware, infrastructure, and maintenance costs are all shouldered by your cloud service provider, removing prohibitive upfront costs. The ability to create numerous on-demand test environments in the cloud means that you can dynamically adjust your testing capacity in sync with your requirements. The shortened release cycles enabled by cloud-based test automation also increases the efficiency of your teams.
Challenges of cloud-based test automation
Of course, cloud-based test automation isn't a one-size-fits-all solution. It's important to understand that while cloud testing is well suited for web-based application testing, some systems are better accommodated by on-premises testing.
While public cloud infrastructure is the industry standard for many consumer and business applications, some systems won't ever move to the cloud. For example, specific industries' strict regulations and security requirements like healthcare and aerospace often require/necessitate on-prem solutions. Some tests are even done on isolated systems that aren't connected to the internet.
Some companies use private cloud networks to find a balance between the scalability of cloud technology and the security of on-prem solutions. Private cloud could be owned and managed by your company or could exist off-site in a data center where you pay for dedicated machines. This allows you to take advantage of parallelization and containerization to achieve faster software test automation while maintaining more control over the security protocols.
As with any new technology, your teams will need to adjust their workflows to get the most use out of cloud-based test automation. That's why it's essential to ensure that you correctly map out your deployment of this technology, including making sure your people are adequately trained. You'll also need to consider how the testing you're doing in the cloud will sit alongside testing done on-prem to avoid and plan around potential bottlenecks.
While extremely rare, cloud services like AWS, Azure, and Google Cloud do suffer from occasional outages. When conducting a risk assessment of a cloud testing strategy, this should be considered.
Types of testing you can perform in the cloud
Testing linear journeys or "happy paths" is an essential part of testing, but implementing exploratory testing is a necessary step to increase test coverage for your application and uncover hidden defects and bugs. Exploratory testing can and should make use of automation. Artificially intelligent algorithms can auto-generate test cases and make sure that you are truly covering the broadest possible range of user journeys.
By its nature, exploratory testing takes longer than standard linear test execution because the exponential number of complex user journeys. Bringing exploratory testing into the cloud means taking advantage of parallelization, shortening the time it takes to reach 90%+ coverage of your system under test.
Applications are continually being upgraded and updated to improve the user experience. Regression testing ensures that these updates (changes in the code) have not negatively impacted the software's existing features and usability. But with so many updates and versions that need testing, it can be hard to keep up.
Expanding your number of test environments with the help of the cloud means that your QA teams can conduct these regression tests concurrently with other feature and exploratory testing. Cloud technology also increases efficiency by improving accessibility along the CI/CD pipeline to quicken the software release cycle.
Non-invasive testing means that the testing software can interact with the system under test via the UI rather than by analyzing the code. In other words, if a user can see it on the screen, it can be tested. The frequent updates required by many web applications can easily break existing test scripts, which creates a massive headache in terms of test maintenance.
Through image recognition and OCR, frequent UI updates can be tested with ease regardless of changes in underlying functionality and behavior. Cloud-based test automation and its ability to spin-up SUTs on-demand in parallel increases coverage and the overall speed at which you can test.
Web-based application testing
Web-based application testing is the process of testing any web-based application for its performance, functionality, security, and usability. This is essential to understanding how the application behaves and to ensure it delivers a flawless user experience.
Testing web-based applications in the cloud is hugely beneficial to understanding performance across various browsers, types of devices, screen resolution and size, and operating systems. By using cloud-based device farms, organizations can avoid the costs associated with maintaining these devices on-prem.
In situations where the vast majority of your users interact with your application via the web, cloud-based test automation is an ideal fit. Being able to spin up pre-configured test environments at the push of a button means being able to mimic and test real user interactions in your app quickly. Using a model-based approach, your teams also save time by avoiding test script maintenance associated with linear test automation.
Cloud-based test automation removes this inconvenience by spinning up pre-configured test environments to mimic real user interactions. Combined with a model-based approach, your testers save even more time by writing one script which can administer numerous tests across multiple SUTs.
Getting started with cloud-based testing
Figuring out the business case for cloud-based test automation involves modeling the benefits of faster, better software releases against cloud computing costs. Consider the following when getting started with cloud-based testing:
How much quicker could you release software if you had access to more test environments?
As testing is the number one bottleneck to releasing software, increasing the available testing environments should speed things up. Are your teams battling over which feature is updated or bug fixed first? Are your releases being held up because of a lack of testing environments? If so, cloud-based testing automation should alleviate these resource constraints.
Is it financially viable?
Of course, there are going to be costs associated with this. You'll need to understand the pricing structure of using on-demand test environments in the cloud and balance this against the benefits of releasing software faster. Conduct a cost comparison to see whether moving your testing capability to the cloud is financially viable.
To understand the costs associated with on-premises testing, you'll need to consider the upfront costs of buying and installing physical infrastructure, the ongoing maintenance of these on-prem devices and test environments, and the cost of provisioning new test environments should your test demands increase.
Public or private?
Moving to the cloud can be a catalyst for modernizing software development. But before you make that leap, you need to figure out if public or private cloud meets your requirements.
Public cloud gives you the benefits of scalability, parallelization, and improved collaboration, three critical ingredients to faster software releases. However, security could be an issue if your data needs to remain behind your own firewalls.
Private cloud offers an extra layer of security as you manage the network yourself or use third-party hardware dedicated to your organization and your organization only.
However, the total cost of ownership of deploying and maintaining a private cloud network may put this option out of reach for some.
Proof of value
The final step to realizing the benefits of moving your software testing to the cloud is conducting a proof of value. Compared to on-premises testing, calculating evidence of value for cloud adoption tends to be much quicker because of a combination of predictable costs and quicker implementation. The ability to instantly spin up pre-configured test environments during the buying process helps build the business case internally.
Choosing a cloud-based test automation software provider
If your organization decides to make the move, the cloud-based test automation provider you choose should be able to offer:
- Seamless integration with your CI/CD pipeline to support automation, short feedback loops, and fast software delivery.
- The ability to run on public or private cloud networks. To enhance security for private cloud networks, cloud-based test automation software should have the option to be packaged in containers and deployed behind firewalls.
- Integration with existing on-premises testing infrastructure for easier test management and reporting.
- Real-time insights and monitoring capabilities that can be accessed remotely to better understand user journeys and how an application is being used. This is a really important aspect of measuring ROI, because you can directly tie application performance with profitable outcomes.
- Non-invasive testing enabled by intelligent image recognition and OCR to make sure that test scripts survive UI functionality and code changes.
- Automated exploratory testing to maximize coverage of your application — 70% script automation is simply not good enough.
- Pre-configured test environments that can be instantly spun up on-demand.
Discover how you can use Eggplant Cloud to test faster, smarter, and more reliably with AI-powered test automation in the cloud. You can also watch our webinar to see Eggplant’s cloud-based test automation solution in action.