Role of QA in DevOps
If you are reading this article, chances are that you are part of the QA or DevOps team.
DevOps is taking over the IT market effectively, so it has more or less influences on the expectation from Developers, Ops and testers. Nearly every organization when DevOps comes into the project, the managers look for people who have expertise in it, which costs the project an arm and a leg, but the truth is with a bit of preparation and supervision Testers can help to implement DevOps strategy.
Now the question is “How to make it happen?” and what kind of training needs to be provided so that a functional automation tester can contribute to DevOps life cycle stages with ease. Therefore, before answering the above question, we need to know why we need testers to be part of DevOps and what benefits we are going to get out of this integration.
Why do we need to integrate Testing with DevOps?
DevOps basically helps to build better, faster, and more responsive software by bringing Development, Operations and Testers teams together. It will remove the barriers between the teams and meet the need for shorter and more frequent software deliveries. However, to get a quality software product, the incredibly important pillar is testing, to get high quality and stable release we need to integrate the expertise of testing into DevOps.
Nevertheless, the process is not so easy, as the role of QA needs to revise before they can get more involvement in DevOps.
How does QA contribute to every phase of DevOps?
Let’s try to understand the role of QA in the DevOps pipeline. We will discuss each phase of the DevOps cycle and try to figure out how can a QA make things more efficient:
1. Continuous Development
Rather than developing software in a single batch, updates are made continuously, in multiple units, enabling software code to be delivered to customers as soon as it is completed and tested. Testers cannot write code for development but they need to take care of code review and coverage by integrating tools like SonarQube and jacoco, so that the quality of code will not be compromised.
- Continuous Testing
Continuous testing is the process of executing automated tests as part of the software delivery pipeline to obtain instant feedback on the business risks associated with a software release. This phase needs ownership by the QA team completely and getting the highest coverage with automation script will be a game-changer.
- Continuous Integration
During Continuous integration, developers regularly merge their code changes into a central repository like GIT, after which automated builds and tests execute to validate the code and check quality with coverage.
Testers need to take care of creating a perfect pipeline by using tools like Jenkins so that after every code push to GIT, all the deployment and testing pipeline jobs should be properly executed. QA can keep track of the jobs and perform fixes whenever required.
- Continuous Delivery
Continuous delivery has become a fundamental component for teams doing iterative and incremental software delivery. It is a process of delivering the software to production in smaller increments, ensuring that the software is ready for release at any time.
The QA team needs to make sure that every delivery should be properly tested and as the delivery of the product is happening in sprints, so proper tracking needs to be done with artifacts.
- Continuous Monitoring
Continuous monitoring refers to the process and technology required to incorporate monitoring across every phase of DevOps and IT operations lifecycles. In this phase, testers should take initiative and learn some of the most used monitoring tools like Nagios, and help the team to set up the notification system for infrastructure issues.
How to make your QA team up and ready for DevOps?
A larger role for QA:
- For all the testers to be part of the DevOps require some additional skill sets apart from the traditional automation testing. QA team needs to take responsibility for quality across the entire development lifecycle and focus on reducing the build test times.
- Testers need to take care of build deployments, automation suite design, containerization, orchestration and cloud so that with doing traditional testing they can contribute to the quality check for all DevOps stages.
- The technical skills required from QA is quite different from the traditional testers (see the Section below for more detail):
- Source Code management (Git, Bitbucket, Svn)
- Continuous Integration (Jenkins, Bamboo, VSTS )
- Infrastructure Automation (Puppet, Chef, Ansible)
- Deployment Automation (Jenkins, VSTS)
- Container Concepts (Docker)
- Orchestration (Kubernetes, Swarm)
- Cloud (AWS, Azure, GCP)
- API and UI Automation
- Dependency Management(Maven, Gradle)
- Basic networking knowledge
- Basic Unix/Shell scripting, e.g. bash, python
- Performance testing tools such as JMeter or Gatling
- Generate code coverage reports (Jacoco).
- Provide mocks, spies, and stubs ( Jasmine, Enzyme, Jest).
Automation Testing expertise
– It is very important to find a bug during the early stage of the development phase. So in DevOps lifecycle situations will be quite risky if bug logging happens in later stages. To avoid any kind of bug leakage or delay in bug reporting it is very important to make sure that all the features are part of the automation suites. Therefore, the automation framework needs to be robust and easily integrate with test data management, reporting, retry analyzer, and pipeline.
– To have a successful strategy, you need to enhance the automation scope by adding automation in all testing types. This includes functional tests, UI Automation, API automation, performance testing, integration test automation, and unit code coverage.
– At the end of every testing activity, the most important test deliverables are the execution reports. The report should be precise, accurate, self-explanatory with necessary error logs and screenshots so that the developers can figure out the root cause of failures faster and work on its resolution.
Cloud Exposure & Environment Setup
– For several organizations, DevOps heavily depends on cloud infrastructure, which provides DevOps automation with a standard and centralized platform for testing, deployment, and production. The cloud platform resolves many problems with distributed complexity.The tester needs to learn any of the cloud technology, which will help them to pace up with the current market requirement and take active participation for DevOps.
– Apart from the right automation scripts, the QA team needs to have a proper environment that simulates the end-user conditions, and that includes relevant test or production data.While performing testing we need to validate the load and stress during peak times with parallel users using any performance tool. These constraints are a huge drawback to DevOps productivity and checking the load is a very important aspect to make sure that when the application will get deployed in production it will not give any performance or usability issues.
– Testers need to know how to do the environment setup and able to perform load tests whenever required.
Test Suite integration with CI-CD
– Automation suite integration with the CICD pipeline is the core of Agile and DevOps. Therefore, to make sure that the CICD pipeline works correctly we need to give more importance for a stable test automation suite with maximum coverage.
– Automation test execution will give confidence to the build changes, which will get deployed in UAT. Testers need to know the pipeline creation and execution by using any tools like Jenkins, bamboo.
– The test automation suite should properly be divided into Smoke, Sanity, BVT (build verification test), Regression, and Business Components. All the test scripts need to get through peer review and maintained at regular intervals.
The testing team helps to achieve the maximum quality as specialized code analysis and coverage tools integrate with the pipeline along with automation test scripts. As critical bugs are identified in the initial phases which give more stability and quality to the product.
QA is integral to the DevOps process and by bringing the best of both worlds, we can make a quality product on time. Continuous development and delivery are quite impossible without a complete QA/testing strategy.
Also, visit his blog https://automationreinvented.blogspot.com/ for more such articles.