A Journey through Quality Engineering
Software testing and engineering, along with the various models and methodologies have certainly evolved over the past 20 years. We have seen cycles of transition between decentralized, to centralized, to agile, (dedicated centralized teams) to DevOps (dedicated cross-functional teams). With this, we have moved from Waterfall Methodology, to RUP (Rational Unified Process Methodology), some forms of Iterative Development Methodology, to agile, agile at scale (SAFe®), and finally comes the pursuit of DevOps. Through all of this change, the Quality Analyst (QA) must continue to advance as well.
Twenty years ago, software testing was just a role. For those people who had a passion for the field of testing, they adopted and perfected a craft of testing. Each tester had developed their own mental model of how to test software. Success depended on the experience and skill level of the individual tester. At the time, large corporations had multiple business units that focused on a particular vertical line of business. In this structure, each business unit had their own dedicated QA. These units lacked a consistent measurement of quality (if, they were measuring quality at all?).
Next, we enter into the era of the professional Software Quality Engineer (SQE), the emergence of the Test Center of Excellence (TCoE), and the rise of Software Test Automation Engineers. Organizations figured out how to measure quality and automate their tests. QA learned all manner of testing techniques across a broad landscape of software applications, middleware and backend systems. A strong and proud testing community emerged across the industry and world and still thrives today. Their focus, continuously hone their craft, to collaborate, learn and help others in the community of software quality. Through these centers, standardized processes, procedures, techniques were refined and improved upon. QA organizations grew and thrived in their pursuit of building quality into the Software Development Life Cycle (SDLC).Another critical success factor was having quality leader’s work alongside other organizational leaders educating, advocating and collaborating around quality initiatives while keeping aligned with organizational strategic imperatives and goals.
The latest movement towards DevOps (Development + Operations), is really all about continuous everything, which requires automating everything. This includes many of the activities of testing
The Pursuit to Agile
Overtime, these large organizations had to contend with the rise of agile startup companies who were producing innovative products targeting their users. Startup success enticed consumers away from the traditional large corporations who had massive software platforms and legacy systems to maintain and manage. Soon, organizations realized they had to adapt while they focused on speed and quality. Thus, comes the pursuit of agile. With this change, comes the end to the era of the dedicated TCoE.
Very suddenly, the QA role moved out of the TCoE to dedicated agile teams and the QA organization faded away. In the meantime, development communities adopted new agile techniques, methodologies, new tools and design patterns. The software industry advanced, teams began to collaborate on how to develop smaller bits of code faster, and continuously.
However, the standards and practices established by the QA organization are immediately gone with the dissipation of the QA organization. The tester no longer has the support of the TCoE. They must rely on the techniques of the craft of testing that they have learned and work to adapt that knowledge into new approaches that work within the agile team and that which brings value to the project.
Up to this point in the evolution of software development, the role of QA has been seen by many (not all) as a necessary evil. QA took the heat for stopping progress when they felt the software was not correct, not fully developed, not fully tested, or defects not addressed. In the drive to deliver on time, and under budget many forces contend with a tester’s objective to ensure quality. Without the support of the QA organizations, its leadership or executive level reports and metrics, testers are pressured into cutting out important steps in the testing process.
Shifting (Quality) Left
The entire organization must place quality at the center of what they do as opposed to leaving it up to a role and moving it to the end of the SDLC process. Each role has their part in the embracing of quality, but the tools and practice of the quality analyst are still vital to the success of software development projects. Methodologies such as Behavior Driven Development (BDD) came about in order to integratebusiness analysis, development and quality analysis from the very start of a project. Regardless of the methodology used, waterfall versus agile, for example, test strategies must be developed, planning and design for what and how to test need to be established, and analysis and execution performed. Even in waterfall methodologies, the results of good quality analysis starting at the front-end of projects can positively shape architectural and software design decisions that will save time, money and improve quality throughout the project.
Quality = Test Strategy + Planning + Design + Execution + Analysis
Test planning includes the conception of a test strategy specific to a project. The plan incorporates the different environments from development through to production. A model is establishedfor defect analysis, beyond meeting requirements to include measurementsof testability, availability, scalability, usability, etc. Other activities such as feedback loops, measuring against historical baselines, how to monitor risk, and establishing goals are also included.
QA Organizations packaged the above items into standard strategy templates, processes, procedures, and metrics while developing and/or acquiring new tools to support the quality initiative. Massive amounts of tests were createdto cover as much functionality as possible and QA departments set out to automate as much of them as is feasible. The Test Automation Engineer worked to automate, firstthe manual tests and then advanced to automate any manual processes within the SDLC that brought benefit to the project.
The Emergence of DevOps + the new Quality Analyst
The software industry is rapidly evolving, and the software quality practitioner must evolve too. It is not enough to be an expert of testing processes, procedures and techniques. Testers must be able to understand software architectural concepts, coding and development practices, and must certainly be able to program in various scripting and programming languages. This includes having the abilitywork with complex databases, to automate at the infrastructure layer and system integration points below the user interface layer.
The latest movement towards DevOps (Development + Operations), is really all about continuous everything, which requires automating everything. This includes many of the activities of testing. Ultimately, testers must be able to transform their expertise of test evaluation, analysis, data flow, and especially proof of correctness into automation solutions, a.k.a. automated software.
Statements of fact and opinion in this article are my own and not of any present or past employer. No representation, express or implied, is made of the accuracy of the material in this article. The reader should make his or her own evaluation of the accuracy and appropriateness of its content.