QA ROLE AND BEST PRACTICES OF QA IN DEVOPS
We know the importance of testing, testing every line of code, testing every time and testing at different stages and it is almost impossible to run all of the designed tests each time manually when a line of code is updated into version control. To achieve such speed and agility, it is important to automate all the testing processes and configure them to run automatically when the deployment is completed in the QA environment. Specialized Automation Testing tools and continuous integration tools are used to achieve this integration.
This also necessitates the building of a mature Automation Testing framework through which one can quickly script new test cases.
Benefits of CT:
· Quality and speed are the huge benefits of CT.
· Faster and quicker feedback on the code.
· Boosts the confidence of the team and encourages them to improve continuously.
Continuous Tools for DevOps:
Microsoft TFS, Selenium, Jenkins, Docker, Jira, GitHub are few tools that are available in the market to design the CI-CD pipeline.
QA Role in DevOps:
• QA are required to align their efforts in the DevOps cycle.
• They have to make sure that all their test cases are automated and achieve near 100% code coverage.
• They need to make sure that their environments are standardized and the deployment on their QA boxes is automated.
• All their pre-testing tasks, cleanups, post-testing tasks, etc. are automated and aligned with the Continuous Integration cycle.
DevOps Testing Strategy:
- The test cases that are required to be executed for a particular build need to be identified.
- The test execution should essentially be lean.
- The QA and Dev need to sit together and identify the areas affected due to a particular build and execute those related test cases plus a sanity test pass.
- You also need to configure specialized code analysis and coverage tools to make sure that you achieve near 100% code coverage.
- The concept of executing all regression test cases for a test pass is soon becoming obsolete.
- The strategy around testing new features needs to be formalized and the interim builds can be supplied to QA who would, in turn, create test scripts and run these automation tests on the interim builds till the code becomes stable enough to be deployed onto the Production environment.
- All the environments required for testing need to be standardized and the deployments have to be automated.
- Using various automation techniques, QA should be able to perform Automation Testing runs across various cross-platform (and cross-browser in case of web applications) environments.
- Parallel execution of tests helps in reducing time-to-live, which in turn is the crux of a successful DevOps implementation.
- Exit criteria need to be set for each run so that when the results of the tests are fed back to the chain, a go/no-go decision to Production is taken.
- Blocker or Critical bugs found need to be reported & fixed and passed through the same chain of events before the code is deployed in the Production environment.
DevOps Roadmap :
Creating POCs with different tools and technology. After completion, QA team will share the code with the DevOps Team for creating a pipeline to integrate the POCs with CI/CD process. Below tools and technologies for UI and API POC: -
1. Selenium java for TDD framework. (For Web Application)
2. Selenium Java for BDD framework using Cucumber. (For Web and APIspec flow. (For Web Application))
3. Selenium C# for TDD framework. (For Web Application)
4. Selenium C# for BDD framework
For each POC separate backlog is available in VSTS. Also, for Selenium Java, we should integrate with Jenkins and for Selenium C#.
Best Practices of QA in a DevOps:
- QA and testing teams should be part of technical teams. They have to move beyond manual functional testing, and should focus their efforts on automation, and testing strategies. QA becomes the enabler of quality across SDLC.
- Quality needs to be well-defined in order to meet requirements. Rather than trying to achieve perfection in software, QA should move towards focusing on accomplishing satisfying user experience within the given time frame.
- Metrics that measure quality have to be laid down and measured. Such metrics should detect software defects early in the development cycle.
- Goals of individual and teams need to be optimized. Organizations need to strengthen necessary behavior and cultural shift by incentivizing quality assurance.
- Requirements need to be specific. QA teams should proactively involve in the requirements process to help and guide development teams towards proper direction.
- QA & testing should focus more on automated regression testing on critical areas such as key software functionality.
- QA & testing has to move towards leveraging automation tools to automate testing wherever possible.
- Development, operations, and QA teams should be facilitated and encouraged to communicate, collaborate, and optimize their efforts.
- Continuous integration is the key to identifying defects early in the development lifecycle. For continuous integration to be implemented effectively, all the stakeholders have to integrate their work often on a day-to-day basis.
- A fully automated continuous testing process needs to be integrated into the SDLC for a successful continuous delivery process that minimizes risks, reduces costs, and accelerates time to market by frequent releases.
Please contact at Manpreet.dargan@technossus.com to know more about DevOps QA and competency.
Next Blog will be TestOps: How to Automate your software pipeline.
Very well explained 👍🏻