Every organization on the planet is engaged in quality engineering, whether they know it or not. The very act of creating a product or service implies wrestling with the challenge of delivering high quality. Ignoring quality has almost always led to disastrous results.
In fact, in the US alone, the cost of poor quality software in 2018 was $2.8 trillion. That’s the net worth of Bill Gates x5 + Jeff Bezos x6 + Elon Musk x4 + a couple of Larry Pages and Ellison’s thrown in for good measure (obsessive-compulsive readers will have verified this computation by now 😉)!
Everyone is looking for the holy grail of quality products and services: more customers and growth, lower costs, and increased profit margins. The discipline of quality engineering is a result of that search, which is by no means complete.
Formally, quality engineering is a set of methodologies, processes, and principles that help an organization improve its business processes to achieve a certain level of quality for its products or services. As a smart quality assurance professional, you will have noticed the circular definition involving the word quality, which brings us to the next question:
What is quality? What are the aspects of Quality?
Quality is not easy to define since it has several aspects that are subjective. In fact, philosopher-author Robert Pirsig wrote a whole book on quality: “Zen and the Art of Motorcycle Maintenance” where he stated his Metaphysics of Quality. Interestingly, his book was rejected by 121 publishers who thought it was low quality. Pirsig persisted, however, and publisher #122 felt that “This book is brilliant beyond belief, it is probably a work of genius…” and published it, after which it sold over 5 million copies.
Pirsig may have been on to something when he said that quality is hard to define, but we all understand it intuitively. However, as engineers, we cannot and will not leave it well enough alone and will attempt to provide a list for the aspects of quality.
Worldwide, the manufacturing industry uses various quality standards and approaches to better standardize quality such as ISO 9001, Six Sigma, Total Quality Management.
Quality Engineering In Software: A New Paradigm
The software industry has realized that the corrective approach prescribed by quality assurance and quality control – finding and fixing bugs after the fact – has gone as far as it can. Quality engineering offers a way forward with a proactive, preventive approach to implementing quality systems that solves the quality problem confronting software development in general and product development in particular.
Functional Quality which deals with the functional aspects of a software product or solution: Does it do what is expected? Does it conform to a design specification?
Structural Quality which deals with the non-functional aspects of software: Is it robust? Secure? Highly available? Easy to maintain?
The Evolution & Lifecycle Of Quality Engineering In Software
Software quality engineering has been undergoing a renaissance with organizations pulling out at all stops to prevent defects or catch them as early as possible. This has led to a slew of new tools and methods including test automation, shift-left testing, DevOps, DevSecOps, Continuous Integration and Continuous Deployment (CI/CD), SDET, Test Driven Development (TDD) and Behaviour Driven Development (BDD), risk management, and artificial intelligence.
All these combined form an emerging approach to quality engineering.
The Role Of Data And Metrics In Quality Engineering
Today, it is possible to get a lot more data than we know what to do with and it’s easy to drown in this veritable ocean. Therefore, it is important to figure out what data and measurements are relevant. To paraphrase The Rt. Hon. Rumsfeld, “Beware of unknown unknowns!”
I’m going to go out on a limb here and say that metrics that measure final outcomes and results are the most telling of all. After all, quality engineering initiatives must result in a stronger and better business. This includes metrics like:
Product sales volume
Customer satisfaction – specifically customer recommendations to others
Support request volume and type
However, arriving at these metrics can take anywhere from a few months to a couple of years after implementation, and Ain’t nobody got that much time!
To help us keep track of quality improvement as it happens, we use metrics like:
The cost of quality
Performance and release metrics
Productivity, efficiency, and effectiveness metrics.
Ultimately, all data and metrics should help quality engineering leaders to identify risk in advance, minimize defects and technical debt, and increase agility and time-to-market.
Why Quality Engineering Matters: The Story Of A. Aardvark, The Most Hardworking Employee At “Frustrated Financial Consultants Inc.”
TRUE STORY: Early on in my career, I was managing a software team delivering solutions for customers. One fine day, I went on a pre-sales call to a prospective customer – let’s call them “Frustrated Financial Consultants Inc.” – who wanted a time and expense billing web application. Frustrated had over 1,000 consultants working for their various clients.
I met with their CTO and he explained that they were fed up with their existing bespoke timesheet solution, that someone had taken 9 months to develop, and was exhibiting some peculiar behavior. Whenever any employee clicked on a link to fill in a timesheet record, they got to see a form that looked like this:
Now, as a smart QA engineer, you will doubtless have noticed the Grand Canyon-sized problem in this form.
Why on earth should a user have to pick their own name from an employee list!?
Many users, with better things to do, would forget to select their own name from the list, leaving it at its default value of Amy Adams, who had the misfortune of being the first name in the sorted list.
But it gets even better. Poor Amy Adams was terribly unhappy with this state of affairs, so it was fixed by creating a fictitious employee named A. Aardvark! I kid you not!
So now, every week, the billing manager would find that A. Aardvark had bubbled to the top of the productivity list with no less than 300 to 500 odd hours billed! This poor lady had to spend half a day of her precious time every week locating and chasing down folks who had made this error and getting them to fix it.
And that is how A. Aardvark became the hardest working employee of the month for several months running with a productivity of 6x to 10x! I swear, I couldn’t have made up this stuff if I wanted…
Anyway, the story has a happy conclusion for the employees of Frustrated. In a couple of months, we developed a state-of-the-art timesheet application, that did not require employees to select their own names from a list, and they all lived happily ever after!
And there you have it, folks, why quality engineering matters.
What Does A Quality Engineer Do?
Software quality engineers are an integral part of the software design and quality team. They oversee the software development process, from ideation to execution, to ensure that software meets predetermined quality standards.
Certified quality engineers use continuous improvement techniques and various quality control tools to ensure quality. Measures like corrective actions and preventive actions are used to eliminate any gaps in quality.
To meet the varying and demanding needs of today’s software organization, software quality engineers play a variety of roles, including design, SDET, testing, and more. Typically, this is a challenging role that requires multiple skill sets to perform well, including problem-solving, troubleshooting, statistical process control, software testing, automation, and quality control.
The move from quality control and quality assurance towards quality engineering is well and truly underway. Quality engineering has changed the way software is created, and it is still in the process of evolution.
An exciting journey awaits the intrepid quality engineers who boldly venture into areas few testing professionals have gone before!