Listen on the go!
Quality Assurance has always been an evolving discipline in software development. With the emerging trends in IT industry, the need to better understand, manage, and adopt the QA activities is increasing. With the onset of agile and lately DevOps, the way organizations develop software has changed, and so have the ways to enforce QA. Our previous blog by Moin Syed, Associate Director – Advisory & Transformation Services at Cigniti Inc. explained How DevOps Transformed Software Testing.
Software development cycles have become short and quick. With this QA teams face new challenges as they work to keep pace. The advantages of overcoming the challenges include quality, optimization, process improvement and higher productivity. In this blog, Moin discusses the QA challenges in DevOps and how to overcome them.
Understanding QA in DevOps Landscape
DevOps advocates good principles and practices that help improve communication and collaboration between the organizational silos. This also implies to QA organization and their development counterparts. But in a DevOps scenario, the walls will be eliminated and this helps facilitate knowledge sharing, experience, and specialized skills to deliver quality systems. In the era of DevOps, the focus of QA teams will be more on preventing defects than finding them.
Challenges faced by QA teams
QA culture – In the context of DevOps, quality requires a change in how it is being conducted. This also implies an intense transference in the organizational culture as well. It is very important and also challenging to think of innovative ways of identifying unique techniques to test the software quickly and efficiently. This will enable to continuously ensure quality while also growing and evolving the QA services provided.
Facilitation of quality – From a DevOps perspective, QA team needs to understand the business for the system being verified. For this to happen, the QA team should partner with business experts, including the product owner, to understand how the system being tested needs to function in order to support the business. QA teams will be disabled if not involved in those initial discussions. This involvement helps QA to become the facilitator of quality.
Collaboration – QA is the binding entity between development and operations. So, the QA team should be involved right from the early stages of development. This will enable them to collaborate to have software developed and supported more effectively. Also, QA should be considered as the responsibility of the entire project team rather than the responsibility of the dedicated QA team.
Early testing – One of the main objectives of testing in DevOps is early detection of defects in the development cycle. For this to happen testing must begin very early in the cycle. QA should begin testing with whatever code is available even if the features are not complete. This requires a lot of maturity in documenting self-sufficient user stories that do not depend on another for testing.
Build verification – As DevOps encourages frequent builds, there is a higher possibility of code breaking existing features. For this reason, it is not practical to have testers do this verification manually. It is recommended to rely on automated testing for these smoke tests.
Test coverage – In DevOps, there is a rush to deliver software quickly with the techniques like continuous integration and deployment. Also, because of rapidly changing requirements, there is a possibility to miss testing critical functions. To overcome this challenge, a thorough and detailed traceability of requirements to test functions should be maintained.
DevOps guiding principles like test first, free communication and seamless collaboration help resolve some of the QA challenges and also enable the QA team to take their deliverables to the next level. In DevOps testing is a continuous process and supports the process of incorporating continuous feedback to enable better quality. If the challenges discussed above are addressed, then QA in DevOps can play a critical role in accelerating development and release schedules.