Within the testing and software development world there seems to be a confusion about Quality Assurance, Quality Control, Checking and Testing. I will show you the differences through my eyes and experience.
Let’s get first a the same feeling about quality:
- Quality is not an act, it is a habit (Aristotle 384-322 BC)
- Quality is never an accident; it is always the result of intelligent effort (John Ruskin 1819-1900)
- Quality means doing it right when no one is looking (Henry Ford 1863 -1947)
- Cultural resistance to change was one of the biggest problems in reforming quality (Joseph Juran 1904-2008)
- Quality is everyone’s responsibility and we never have to stop getting better (Edwards Deming 1900-1993)
- Be a yardstick of quality. Some people aren’t used to an environment where excellence is expected (Steve Jobs 1955-2011)
Quality is difficult to define and explain. It relays to two key elements: perspective and time. Quality lays in the eyes of the beholder. The way you see and perceive it will play a significant role. Your expectations are also important (take into account that expectations are difficult to state and define) It is also through the perspective of time that you should look at quality. What was a quality attribute a few years ago might be so trivial today that you don’t even take it into account (just think about the difference between an iPod and a Walkman from the ‘90s; would you buy a music player that is at least 10 times larger and heavier with less autonomy than a iPod?).
Since quality plays an important part in the selling and buying of goods and services there are always attempts to quantify it. To determine its components in order to be able to replicate it over and over again. This is the job of the standards. Standards give you a way to assess if your activities comply with a standard set of processes that are considered best practices.
In many situation, when dealing with quality, the focus moves towards the process in detriment of the people that do those activities. It is perceived that a good process is something that can be followed by anyone. Although this might be true in some industries, I strongly believe that dues to the creativity component this does not apply for software development, especially to testing.
But what is Quality Assurance? Quality Assurance consists of a means of monitoring the software engineering processes and methods used to ensure quality.
In order to ensure quality you need to have a system. This system is usually called Quality Management System. Such a system consists of 3 main parts (written with red letters):
The Quality Assurance part is usually defined starting form a Quality Policy, a document that bears the signature of the CEO. Yes, it should always be the executive that clearly defines what are the processes and standards that have to he followed (this is present in CMMI and ISO standards). You should see Quality Assurance as “what the company expects you to do in terms of processes and standards”.
Quality Planning is a natural step when a new project or requirements arises. Not all the rules should apply to every situation. Everything is context dependent and the tailoring has to be done at a conscious level. You should not only ignore things that do not apply but you also have to state it and make it transparent to every stakeholder.
Quality Control. Just because it’s define it does not mean it is used. People often disregard processes (and for good reasons). You need to have champions that make sure the process are used and when they are inefficient change and adapt them. Once thing Quality Control should aim for is prevention: if you do something in an unexpected way the thing is done already. All you can do is take a lessons learned and mitigate the damage. Quality Control should create not a checking after is done system but a prevention and alarm system.
Besides checking that processes are respected (understood, used properly) quality control is also responsible for checking the product standards. Checking that the product respects certain standards is one of the reasons why sometimes testing is referred as Quality Control. Quality Control is performed by the use of checks.
Checking can be viewed as “the process of making evaluations by applying algorithmic decision rules to specific observations of a product.” I don’t know how this sounds for you but for me it does not sound like testing. It is not all that I do when I am testing. Testing is much more. It is “exploration, discovery, investigation, and learning”.
It is true that almost anyone can follow a checklist. You can take all the requirements and make checks for each statement. But Testing is much more. Testing is craft.
I am sure that looking at testing as a craft might be difficult. A craft cannot be steered only by a processes. A craft can be only be learned, in time with patience. Testing also presents a big challenge: practice. How can you practice for the next build? Is there a way? Testing is also based on experience, on heuristics. Heuristics that make you find the unfindable, that guide you towards that scenario or situation that no one else has thought of.
It might also be difficult to understand testing as a craft because craftsman cannot be “produced” quickly. It takes passion, commitment, knowledge and patience to become a good tester.
The definition of testing that I like the most comes from James Bach “Testing is the process of evaluating a product by learning about it through exploration and experimentation, which includes to some degree: questioning, study, modeling, observation, inference, etc.”
This brings us to the question how can you spot a good tester? You will find him/her at testing conferences and local meet ups. When you have a passion you will always try to find others that feel the same way that you do. You will see them never giving up, trying to imagine the unthinkable. You will always count on their commitment. You will always see them reading books, magazines or articles about testing.
I would like to believe that once you have reached this part of the article you can see, as I and many other do, that there are differences between Quality Assurance, Quality Control, Checking and Testing.
We as testers are the last in the “production chain”. We see the final product. We see all the things that could have been better. We might receive sometimes the Quality Assurance Engineer title because once we see what went wrong we fight for it never to happen again. But this is only one part of what Quality Assurance is about.
So what is testing in the end? It’s craft. It’s a craft that takes parts of Quality Assurance, Quality Control, Checking and mixes them with “exploration, discovery, investigation, and learning” questioning, study, modeling, observation, inference.”