Role of Quality Engineering in Digital Transformation Technology Trends
Digital is disrupting every business globally. Once considered by Enterprises as an expensive makeover to package one’s services, Digital today has become critical to stay in business in multiple industries. Digital not only disrupts the way a business operates, but also impacts IT in a big way (applications, infrastructure and products)From an IT perspective, Digital when demystified revolves around two key themes - Customer Experience and Customer Insights. This unique combination decides the fate of an Enterprise in an era where everybody and everything is always connected; there is no lack of affordable processing capabilities and facilities for to collection, storage and analysis of data.
From the usual three to four releases a year, Enterprises today are contemplating daily releases (as some of them are already doing) and this demands an entirely different eco system. Starting with the Software Development Life- Cycle, the waterfall model has already become a thing of yesterday. Today, Agile and DevOps is the name of the game. This has given rise to a big question-what will be the role of Quality in such an eco-system?
With time to market getting shorter and shorter, the role of Quality in Digital engagements has completely shifted from erstwhile “test after development” programs. Almost all Digital engagements today follow the agile methodology or its many variants. While the development team is busy deciding User Stories, the Quality Engineering team should be busy ensuring availability of all that it takes to ensure timely release of builds - be it devices, tools, data, hardware, performance related readiness, cloud solutions, Open source solution setups if any etc. Quality today needs an Engineering approach for speed, ensuring defect prevention, moving away from the traditional, reactive approach. Let’s look at some of the key features that such an approach would sport:
In Digital, automation is the de-facto mantra for successfully ensuring seamless Quality. When I mean Automation, it’s no more the standalone approach where scripts are run by respective leads and individual status reports are collated later. Automation today is Continuous Integration (CI) integrated- It is unattended and is scheduled as jobs to run the moment the build arrives. It is also integrated with Test Management solutions so that the results appear on the dashboard automatically, without a human trigger. With shortened release cycles, time for ensuring Quality also reduces significantly. This demands for in sprint automation capabilities, where Test Automation script development happens in parallel to feature development. This is brought about by stronger collaboration with the development team, specially being on the same page with respect to feature specifics and object properties. The Quality Engineering Automation team should also account for data and environment provisioning, so that there are zero hiccoughs for a timely release. The Quality Engineering team should also be ready to write small pieces of code at times to enable easy integration with frameworks and tools. This is a significant difference when compared to a conventional Software Testing team, which usually consists only of Manual Testers and conventional Automation Engineers. In today’s Digital era, a Quality Engineer should have experience in programming and should be able to write software as the situations demands. While the Development team focuses on continuously improving the application, the Quality Engineering team has an equal responsibility to raise the bar for quality continuously via:
- Optimization of test cases, and improving automation efficiency
- Evaluating and implementing new tools and technologies
- Creating custom automation solutions to address app specific use cases (which cannot automated using standard automation features)
- Create frameworks and accelerators that help scale Quality Engineering across multiple channels, Enterprise wide.
Test Driven Development (TDD) and Behaviour Driven Development (BDD)
TDD BDD are two of the most popular Software Development approaches employed by Digital programs, today. These approaches expect the Developer to unit test the code before she/he commits it for further quality checks. The Quality Engineering team however bears the most load for ensuring Quality via API validation against UI driven test cases to ensure that “Testing” happens in the fastest possible manner. In BDD approach, Quality Assurance (QA) is tightly integrated for acceptance outcomes. The QA steps are outlined by the User Story definition by Business, and the Quality Engineering team via automation scripts implements the same. BDD and TDD models demand closer interaction and collaboration of the Quality Engineering team with the Development and Business teams to ensure that all three are on the same page and are working with the same goal and business outcome in mind. To make meaningful contributions in such an environment, the Quality Engineering team should have better understanding of the product or service, Software Development methodologies and skills, domain knowledge, and code itself.
Digital platforms enable channels for instant and continuous feedback about the application quality, and enterprise offerings. Any aspect of the product, service or even brand, that does not meet customer expectations are dealt with harshly by disappointed customers and end users. This in turn shifts the focus completely on User Experience (UX). In the world of Digital, UX is as important as the application functionality, or at times even more than the functionality itself (market leaders that emerge in the app world have that unique combination of experience infused into and driving the business model). The Quality Engineering team must plan and prepare for UX Assurance. UX is a combination of factors such as Application UI, Application flow, ease of interaction with the MMI, Device capabilities, device state and networks, to name a few. Extended Digital experience depends on third party gear integration and smart devices on which the experience is delivered. In addition to the aforementioned points, accessibility and usability are also crucial areas to address. The Quality Engineering team needs to ensure that Application meets every experience expectation.
Today, online App stores allow users to rate the applications based on their experience with the application. These ratings are dependent on a variety of factors, such as device specifics, usage patterns and network conditions. Users can rate the application on a scale of 1 to 5 (5 being the best or highest) and leave explicit comments as feedback about the application. These comments reveal lot of information about UX, expectations and perceptions, and even comparison with competing applications. The Quality Engineering team should spend sufficient time to analyse these ratings and comments, which in turn can help in improving the quality of the Application experience, and in turn business success in a significant manner. By analysing comments and ratings of competing applications, the Quality Engineering team can even list down the most desired features by the user base of these applications, thereby contributing to product features and its implementation.
Performance of the application is of paramount importance as well. Every crash, outage and even slowing down of the application or processing/ working on a customer request has the potential to directly impact revenue and good will of the app among millennials. It is the responsibility of Quality Engineering team to not only identify such issues, but also work on identifying/isolating the root cause of such problems/trends. This demands a sound understanding of monitoring tools, application architecture, various enterprise sub systems that are catering to the application etc. The Quality Engineering team should be able to provide substantial insights about the problem/ root cause, and how it can be solved in the fastest possible manner.