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.