Continuous Testing Infrastructure for Cloud Delivery
Continuous Delivery- The new normal
Continuous Delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. It aims at building, testing, and releasing software faster and more frequently.
Benefits of continuous delivery
- Accelerated Time to Market
- Building the Right Product
- Flexible and Reliable release
- Improved Product quality and customer Satisfaction
Testing : The final barrier for Continuous Delivery
- CI- Developers integrate code into a shared repository and verify each check-in with an automated build, enabling the rapid detection and resolution of problems.
- CT- As software changes over time, the number of tests required to ensure its quality increases significantly. IT organizations do not have the time or manpower to run all the necessary tests every time a new feature is added.
- CD – IT teams automate the deployment process, greatly improving deployment time and reducing human error, while minimizing the need for manual work.
Continuous Delivery without continuous testing
A Continuous Delivery Scenario
Engineering teams develop software modules and commit their code regularly into a version control tool like GitHub.
“Devop” teams use a Continuous Integration solution such as Jenkins to run daily builds, including various post-build tests, to validate the quality of the build.
QA testers validate release candidates prior to their deployment in production with a handful of automation tools (e.g. JMeter, Loadrunner).
Operations validate releases that were just deployed in production, and monitor the application further in a post-production environment.
How Continuous testing facilitates Continuous Delivery
When we have Continuous Integration and Continuous Delivery in practice, why not we have Continuous Testing?
Currently in DevOps only Continuous Integration infrastructure exist where mainly low level test are being executed but specialized test are being done only end of the release which increases risk of finding critical regression issues in later point of time.
To ensure Continuous Delivery a concept has been produced as Continuous testing for complete automated End to End scenario, End User Acceptance Test, Performance test, cross browser to support Continuous Delivery where all specialized Test are running next to Continuous Integration infrastructure based on everyday changes being introduced by Developers.
Continuous Testing in Practice
A successful continuous testing process requires the right tools and processes to be adopted across the various teams within the organization.
- Tools, Scripting and Overall Test Creation
- Provisioning & Resources
- On-Demand Testing and Re-Running Failed Use Cases
- Modules, Builds, Release Candidates, Releases and Production
- Version Control Friendly Incremental Testing
- Automatic ‘Failure’ Alerts
This is how a working architecture look like,
The only viable solution for Cloud Delivery model is to integrate a fully automated Continuous Testing process into their Software Development Life cycle. There is no room in agile processes for manual hand offs and quality compromises, Continuous Testing will become increasingly critical as an inherent piece of any successful Continuous Delivery process.