Getting a product to market quickly and cost effectively, should be at the crux of any product development strategy. But building your reputation within the market, and retaining users once your product is live, will be determined by the quality of the product - it's reliability, accessibility, usability, and how well it meets user needs.
With the average 90 day drop out rate for apps hitting over 70%, it’s more important than ever that you can offer seamless user experiences, fast loading times, and bug-free apps. And to implement this well, quality needs to be an integral part of your development process.
How many testers does it take to ensure that you produce a quality product? The answer varies depending on who you talk to. In some organisations the ratio of developers to testers might be 5:1, in others it will be closer to 2:1. Often, QA Engineers are thought of as the people who just write and run tests, and if you look back at the traditional Waterfall software development model, then it’s easy to understand why.
In this model, testing is a separate and later stage, and development hands over the product to testers once they believe that they have finished with their work. As you can imagine (or might have experienced yourself) there are significant drawbacks to this approach:
As an alternative to the Waterfall approach, Agile practices are often adopted. As Gary Hamel once observed, “You can't build an adaptable organisation without adaptable people - and individuals change only when they have to, or when they want to.” This often means that although an organisation intends to become agile, people often fall back into old habits, and the development process can then resemble an incremental waterfall model. Features are still developed without much interaction and collaboration with the QA Engineers, and handover still happens at the end of the process.
Although this resolves some of the issues of the Waterfall model by shortening feedback loops and bringing feature testing into closer alignment with feature development, there are still issues:
Other interpretations of Agile have led to further advances in bringing QA practices and development closer together, these include:
Both of these processes speed up testing timeframes, and can ensure that testing becomes a more integrated part of the product development process, but neither of them truly integrates QA into a lean product delivery team, or requires the wider team to take on responsibility for overall product quality.
In the International Software Testing Qualifications Board (ISTQB) foundation course the subject of Tester’s and Developer’s mindsets is discussed. It shows that successful developers and testers often have different mindsets.
“A tester’s mindset should include curiosity, professional pessimism, a critical eye, attention to detail, and a motivation for good and positive communications and relationships.”
“A developer’s mindset may include some of the elements of a tester’s mindset, but successful developers are often more interested in designing and building solutions than in contemplating what might be wrong with those solutions.”
Source: ISTQB syllabus
Therefore integrating a QA mindset into product development, first starts with bridging the gap between development and QA practices.
Most problems boil down to communication problems. Overall quality can be improved by looking at when in the software development process developers, QA Engineers and other team members communicate and how they are encouraged to work together.
When we looked at the evolution of QA, we saw that communication was often at the end of a task. When a developer finished their unit of work, they would then communicate with the QA engineer and potentially offer a summary of that unit of work to allow the QA engineer to proceed with their unit of work or vice versa. In order to improve this relationship and communication, a more collaborative approach needs to be adopted, which often starts with reviewing team structures and responsibilities.
In traditional engineering teams you would typically have specialists for each area. A queue of work might go through an architect, a database expert, the front-ender, the back-ender, and then eventually the QA.
By making QAs, or for that matter any role within the team a segregated specialist, you create dividing lines of responsibility, and mental siloes around who should problem solve which element of a project. Individuals are less likely to step outside their comfort zone to help or invest in a wider problem, and quality will also be seen as a separate step or something added on solely by the expertise a QA brings to the team.
A better approach lies in creating small multidisciplinary squads, where individuals are encouraged to be T-shaped. Each team member can still bring expertise or champion a particular area, but they are not solely responsible for this specialism. In teams that function this way, quality - in the same way as everything else - becomes a shared responsibility. QA best practices are built in from the start, and both developers and QAs work simultaneously on enhancing the quality of the product.
A product delivery team will be made up of a small squad of developers, designers and QAs, each offering input and support from their specialisms.
All team members are present throughout the entire life cycle of a feature and so can decide on expected behaviours and outcomes, both happy paths and negative paths. There are no hand-offs or communication bottlenecks, decisions are made quickly, progress is fast.
As behaviours are decided before work has begun, test scenarios are created in the form of Acceptance Criteria, enabling developers to write the functional regression tests (as well as unit and integration tests). The ability to run tests and implement quality checks is held by all, overall product quality is enhanced
QA engineers act as champions for quality, providing guidance, keeping up with QA best practices and enabling all members of the team to learn and develop their own QA skills. You end up with a team that is empowered to make better software development decisions.
The simplest and most cost effective way to ensure the quality of your final product is to integrate QA practices from project kick off. The QA is a specialist role, but they add the most value when working cross-functionally across a wider team, and when quality becomes a shared responsibility, rather than a cause they are left to champion on their own.
Let's connect and explore how we'd make your initiative more successful. What describes your situation best?