Testing has taken a backseat from the time software development came into existence. For most people, the real appeal was in the actual software or application development – developing solutions to real business problems. Testing was a necessary evil, something required to validate that the business problem was indeed resolved.
Much of the indifference toward testing was a result of the proscriptive nature of software development. Waterfall development required testers to adhere to a rigid approach that validated each requirement, breaking it down into granular Test Conditions and mapping each condition to a requirement in a Requirements Traceability Matrix. There was no creativity, no artistry, and most people felt it was mundane and boring. On the other hand, developers were the ‘artists’, using their creativity to solve thorny business problems.
Fast-forward to the 2010s when the foundations of digital were being laid. The rise of mobility meant that software developers needed to get products into customers’ hands faster than ever. So much so that in 2014, Accenture proclaimed “every company is a digital company”, which meant that every company was incented to evolve software development to enable continuous delivery. But here was the catch: continuous delivery requires continuous testing. And continuous testing requires a different mindset, a different way of thinking about quality.
Accenture’s early focus on digital led to a transformation of our approach to testing. We set out to transform ourselves and our clients to “quality engineering”. But what is quality engineering? According to Tarik King, Director of Quality Engineering at Ultimate Software, “QE encompasses broader ideas around what it takes to develop and deliver a quality product”. It sits at the intersection of testing, Agile development and DevOps (Figure 1).
It is disruptive in the sense that quality engineering seeks to minimize manual testing and scripted testing. It requires significant automation to drive continuous testing as manual testing is simply not fast enough to enable continuous delivery. Quality engineering also requires an understanding of DevOps, the underlying processes that drive the software development process.
What’s more, the quality engineering approach and the role of a quality engineer are far more attractive than conventional testing or the tester role. The role of a quality engineer requires development skills (and the artistry and creativity that goes with it). It requires automation skills. It calls for an understanding of analytics and artificial intelligence. Finally, it fosters a sense of product ownership, casting quality engineers as “owners of quality”.
This, in a nutshell, was our trajectory for the past few years. And it continues to evolve as artificial intelligence and machine learning make inroads into quality engineering, moving beyond automation of repetitive tasks to automate core decision-making activities. Building on our vision for Quality Engineering in the New, we are investing today in the future of quality – a future that will continue to appeal to the top technology recruits in the industry.
I will talk about the truly exciting things we are doing in the quality engineering space with emerging and new technologies (such as AI and ‘self-healing’ techniques) in my next blog. Stay tuned for more.