Within the testing and software development world, there seems to be a confusion about what Quality Assurance, Quality Control, Checking and Testing refer to. I will show you the differences through my eyes and experience.
Aristotel (384-322 BC) Quality is not an act, it is a habit
John Ruskin (1819-1900) Quality is never an accident; it is always the result of intelligent effort
Henry Ford (1863 -1947)Quality means doing it right when no one is looking
Joseph Juran (1904-2008) Cultural resistance to change was one of the biggest problems in reforming quality
Edwards Deming (1900-1993) Quality is everyone's responsibility and we never have to stop getting better
Steve Jobs (1955-2011) Be a yardstick of quality. Some people aren't used to an environment where excellence is expected.
Quality is difficult to define and explain. It relates two key elements: perspective and time. Quality lies 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 defined as a quality trait/feature a few years ago might be so trivial today that you no longer take it into account. You just have to 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 an 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. Standards must fill this job. 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 the detriment of the people that perform those activities. It is generally believed that a good process is something that can be followed by anyone. Although this might be true in some industries, I strongly believe that good processes are the result of creativity.
But what is Quality Assurance? Quality Assurance consists of a means of monitoring the software engineering processes and of the 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: Quality Assurance, Quality Planning, Quality Control.
The Quality Assurance part is usually defined starting from a Quality Policy, a document that bears the signature of the CEO. Yes, it should always be the executive that clearly defines what the processes and standards that have to be followed are. Quality Policy is present in CMMI and ISO standards. You should consider 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 requirement 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. You also have to state and make them transparent for every stakeholder.
Quality Control. Just because something is defined, it does not mean it is used. People often disregard processes (and for good reasons). You need to have champions who make sure the process are used, or changed and adapted when they are inefficient. One thing Quality Control should aim for is prevention: if you do something in an unexpected way, the thing is already done. All you can do is apply the lessons you learned and mitigate the damage. Quality Control should not create 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 to as Quality Control. Quality Control is performed by the use of checks.
Checking can be viewed as "the process of making evaluations by applying algorithm decision rules to specific observations of a product." I don't know how this sounds to you, but, for me, it does not sound like testing. It is not what I do when I am testing. Testing is so 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 one process. A craft can only be learned in time, with patience. Testing also poses a big challenge: practice. How can you practice for the next build? Is there a way? Testing is also based on experience, on heuristics, the heuristics that makes you find the unfindable, that guides you towards that scenario or situation that no one else has ever 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 following question: How can you spot a good tester? You will find them 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, having reached this part of the paper, 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 sometimes be labelled Quality Assurance Engineers, because, once we see what went wrong, we strive 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 is craft. It is a craft that takes parts of Quality Assurance, Quality Control, Checking and mixes them with "exploration, discovery, investigation, and learning" as well as "questioning, study, modeling, observation, inference."
James Bach Testing and Checking Refined
Michael Bolton Exploratory Testing: Design, Execute, and Learn.
by Vlad Ciurca
by Marius Span
by Cristina Juc
by Mircea Vădan