In the not-so-distant past, the software development pipeline was fairly linear from concept to development to quality assurance (QA). Then, teams embraced the agile development model. With the agile approach, software development became incrementally cyclical in order to implement improvements and new features quicker. The goal was to be more responsive to feedback loops.
Now, teams are enhancing that flexibility with development that is compartmentalized into independent but connected services. Throughout this evolution, the role of quality assurance has transitioned from being a final step for user acceptance to an integrated part of the development process.
In this fragmentation, the touchstone points for quality are divided.
Quality checks are integrated into early stages of development with testing needed for each connected service. These checks extend to anticipating quality assurance needs for both upstream and downstream integration. Testing for core functionality is needed for each integration. In general, quality assurance needs to be more proactive in designing for multiple streams and their interactions.
The traditional, once-prior-to-launch, user acceptance testing can be inadequate.
The role of non-programming quality assurance testers has become less prominent. In its place, there is the more expansive role of quality engineer (QE). The QE role encompasses programming test infrastructure, identifying and mitigating risk, and creating design quality criteria.
A QE works with teams to ensure the software development process is aimed at maintaining quality throughout.
Some companies are moving away from hiring and retaining engineers whose primary focus is quality. Rather than developers focusing exclusively on code creation, they are often expected to acquire the skills for in-situ quality checks or create their own testing protocols. This approach may be enough for small projects with limited complexity.
However, integrating a quality-focused team into the development process has multiple advantages.
Specifically, it does not divide the responsibility for quality. Quality engineers are dedicated to designing and implementing design-for-quality methodologies while developers are focused on creativity. Quality engineers anticipate risks to mitigate bug introduction. Quality engineers coordinate for upstream and downstream testing and integration so developers can maintain focus on their connected service.
The role of “quality assurance” may be considered a holdover from those early linear development days. However, the role of “quality” is ever more important amid fragmented and cyclical software development. As the pace of development continues to increase and teams become more compartmentalized, the services of dedicated quality engineers with skills in coding, risk analysis, test designs and architecture will increase.
Having been in business for 37 years now, we here at Beta Breakers have witnessed first-hand the change in “quality” away from QA and towards QE. Consequently, our approach to quality has changed as well. Today, we employ more QE personnel than we do QA.