
The biggest challenge faced by today’s digital tech teams is to get effective software products to the market faster. In this blog, we will discuss how using Node Spinner can enable tech teams to speed up the development life cycle (from hours to minutes) and achieve continuous integration, delivery, and deployment at a faster rate.
An effective continuous deployment system makes your engineering team more efficient by giving them automatic, quick feedback on their changes, and by providing a platform on which the entire organization can automate frequent operations, such as merges and deploys.
The aim of an Agile project is to deliver a basic working product as quickly as possible and then to go through a process of continual improvement. The challenging part lies in getting the automated test results as quickly as possible.
The Challenge
The execution of the automation test suite has always been an issue when it comes to continuous integration or continuous delivery.
We can consider any small, standard Web portal application consisting of 15 to 20 pages. We will find at least 200+ test cases. Even if we automate the test cases, it may take a minimum of approximately six hours of execution time, assuming each test will take up around two to three minutes of execution time.
If the automation suite takes six hours to complete, then any commit that happens during this time will not be visible in the test environment, because the next deployment will happen only after six hours. This is not productive and the feedback cycle is super slow.
To perform parallel execution, you might think of increasing the number of physical nodes or virtual machines by using a Grid and CI tool. This can cut down execution time exponentially based on the number of VMs or nodes you integrate.
Even if we deploy a static selenium grid setup, say with four nodes, we can bring down the execution time to one and a half hours.
But by using the static grid setup you will face these challenges:
- Initial csost and maintenance of hardware/infrastructure
- Automation Execution Time would be still in hours
- Maintain the immutable infrastructure (Dedicated boxes for Grid Hub & Node)
- Need resources to maintain hardware/infrastructure
- Isolation of running builds on infrastructure
- Challenges with dependency management
- Infrastructure is underutilized which makes it expensive
- Selenium nodes go out of memory (JAVA heap space issues)
The Solution
By spinning dynamic nodes equal to the number of tests in the test suite by integrating Docker, Grid and Cloud; we can create a customizable, flexible test environment that enables us to run the tests in parallel with minimal hardware/infrastructure.
So, consider your test suite has 200 test cases and builds shell scripts to trigger Docker service so that we can create 100 nodes over multiple hubs on some cloud service like AWS, and start the parallel execution.
In this way, we can execute the entire test suite of 200 test case in just two to three minutes.
Benefits of implementing the solution:
- Ships newest code to production faster
- Received alerts quickly when tests fail
- Reduces the number of systems needed
- Improves parallel testing workflow
- Faster than starting a virtual machine (milliseconds vs. minutes)
- You don’t have to maintain the hardware and save the code
Conclusion
With this approach, we can complete automation execution in less than five minutes and ship the newest code to production at a much faster rate.