The world of Information Technology (IT) today is flooded with acronyms and terminologies which add to the enigma around our already mysterious sphere of work - 'Software'. If you have tried explaining 'Software' to a farmer as I attempted once, you might empathize with this sentiment.
Quality Assurance (QA) and its subset - Testing - encounters similar buzz words doing the rounds in every industry domain. If you ask me, 'Agile' and 'DevOps' are two such confounding words in QA currently. In this post, I will attempt to address some key questions related to these two topics with respect to QA and highlight the value-add they deliver to the software life-cycle.
'Faster, cheaper and better' - factors referred to as Time to Market, Cost and Quality in the industry - enjoy no letup in today's competitive business landscape. In the software leg of this race between organizations, the benefits gained via collaboration, continuity and agility in QA are emerging as clear factors for differentiation. Most enterprises today, aim to push their products out quicker than their competition, and more consistently into the market; being unable to do so could easily harm, or even kill a company and its products. The Agile methodology aims to address this concern. DevOps - a concept which originated in an Agile environment - with its two key components - 'Continuous Integration and Continuous Delivery/Deployment (CICD)', attempts to take agile processes and best practices to the next level by minimizing time to market and optimizing cost and quality. Here is a brief context of the history and market for Agile & DevOps before looking at their impact on QA:
Here are some key aspects:
Agile and DevOps have impacted all teams in the software lifecycle, including QA. Testing is viewed as one of the main levers for reducing time to market within the Agile and DevOps world. The ask for QA in this new approach is greater agility (reflected in the agile term 'test velocity'), continuity (reflected in the DevOps terms 'Continuous Testing' and 'Continuous Monitoring') and collaboration with developers, operations staff, release engineers, system admins etc. In addition all stakeholders need to put on their testing hat more frequently and continuously to ensure success in this approach. The key challenges for QA in this world are how to deliver value while testing in these shorter timeframes how to manage environment challenges and to how to shift left (predictive testing with developers) and shift right (testing with Ops and real time monitoring). The traditional QA TCoE is evolving into a distributed (as against co-located), co-managed (as against pure managed services by vendor), collaborative (with all teams in SDLC interacting) and hybrid (agile along with traditional waterfall) model.
Is a separate role for performing testing justified? Very much so, when we look at the role of person who is primarily a tester, though his/her basic responsibilities remain the same, the requirements in terms of skillsets have increased. Testers need to better understand development, business operations and customer expectations. Following an Agile and DevOps approach does not mean that a tester is no longer required. As specified above, every team in the lifecycle is required to perform testing due to the continuous nature of integration and delivery. In addition to this, the QA cycle which features 'System Testing' (among other forms of dedicated testing), is still very much required. Once the build is certified in the QA environment, it can be deployed into production (Additional delivery to Acceptance and Staging environments for tests by users and Ops teams respectively are advisable however). Testers in this world need to be able to understand the application, prioritize their testing using predictive analytics where necessary, understand tools including virtualization tools better, use automation effectively and enable continuous delivery and strive to assure quality beyond testing. This explains the emergence of the 'Software development engineer tester' (SDET) or Developer-tester role in some organizations. In this world the roles for testing include core testers, developer testers (with skills like 'test- driven development' (TDD), and 'behavior-driven development' (BDD)), automation testers, specialized (performance, security, data and infra) testers, operations testers and business user testers assuring Quality throughout the Agile and DevOps lifecycle.
Will Manual Testing die as fallout? Due to the nature of integration, continuity and agility involved in the Agile and DevOps life-cycle, repeatability of tests is an expected fallout, and that coupled with shorter timeframes render testing more towards automation. Right from unit tests to integrated build, smoke, acceptance, system and regression tests etc., automating the tests helps teams in each stage to ensure benefits in terms of Cost, time and quality, helps detect defects earlier in the cycle and gives greater control over testing. Shift left techniques for automation testing such as TDD, BDD, API testing are emerging as key levers for agile delivery. This however does not mean manual testing has no role in this model. Exploratory manual testing is still required at every stage of the Agile and DevOps lifecycle and by every team to uncover potential issues. In the System Test phase, traditional manual tests as earlier, are the basis on which functional and non - functional automated tests are decided and executed. Similarly, acceptance tests run by users are still primarily performed in a manual manner, as earlier.
The answers to these questions are not set in stone and are evolving, across organizations, even as you read this blog.
In my next post I will touch upon the various approaches to testing in Agile and DevOps adopted by organizations around the world today.
Srinivas Abhinav Raj- Consultant, Testing Advisory Services (TAS), Wipro Limited
Srinivas Abhinav Raj is a Consultant from the Test Advisory Services (TAS) group in Wipro. He has an experience of nearly thirteen years in different areas from testing to business analysis and development. After completing his B.E. in Computer Science from the National Institute of Engineering in Mysore, he began his career with a campus placement in Infosys Technologies Ltd., where he worked for the Independent Validation Services group for more than three years, and then moved on to pursue his Masters in Information Systems Management from Carnegie Mellon University, U.S.A. Post this, he took up another campus placement in New York with an AXA group company Alliance Bernstein L.P., Where he worked till last year in various roles including Business Analyst, Developer and Senior Test Lead. Abhinav began his journey in Wipro with the TAS group in December 2014.