Software testing is not software quality assurance!
At least twice a month I have an argument with somebody about differences between software testing and software quality assurance. So I decided to write up a permanent piece about this. What bothers me is that lots of people use these two terms interchangeably without understanding the major differences between them. Even worse, I’ve been noticing myself starting using these terms interchangeably ;-(
But that’s not the point. When it comes to software testing there are usually number of names which come immediately to everyone’s mind: Boris Beizer, Cem Kaner, Glenford J. Myers, James A.Whittaker etc. All these people are very well known authorities, but for me personally Myers’s "The Art of Software Testing" is the book. Possibly because of the name it reminds me Knuth's work about programming ;-) So, how Myers defines testing? Very simply ("The Art of Software Testing", Chapter 2 - "The Psychology and Economics of Program Testing", page 5):
Testing is the process of executing a program with the intent of finding errors.
That does it for me. For alternative definitions you can check all your favorite software engineering manuals and this FAQ. The best book discussing the definitions of testing I’ve found so far is Edward Kit’s "Software Testing in the Real World: Improving the Process". It provides eight different historical definitions of testing and also IEEE/ANSI definitions. Chapter 4, if anybody is interested.
This brings us back to a second part of this riddle - what is software quality assurance? I borrowed this from FAQ because I’m too lazy to type in paragraphs of text from some thick software engineering manual:
Software quality assurance involves the entire software development process - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with.
There are lots of things in software world which are close, but are not the same thing if you dig deeper. For example: { JavaScript and JScript, Linux and Unix, HTML and XHTML }. My friends tell me that I’m wasting my time and worrying too much about little things like this instead of trying to enjoy life and reduce my stress level ;-) Probably they’re right, but it takes while to change one’s personality.
P. S. Some cool provoking discussions from Wiki: QualityAssuranceIsNotQualityControl and QualityAssuranceIsNotResponsibleForQuality.