Abstract
Software Testing is the process of evaluating a software program
to ensure that it performs its intended purpose. Software testing
verifies the safety, reliability, and correct working of software. The
growing need for quality software makes software testing a crucial stage
in Software Development Lifecycle. There are many methods of testing
software, however, the choice of method to test a given software remains
a major problem in software testing. Although, it is often impossible to
find all errors in software, employing the right combination of methods
will make software testing efficient and successful. Knowing these
software testing methods is the key to making the right selection. This
paper presents a comprehensive study of software testing methods. An
explanation of Testing Categories was presented first, followed by
Testing Levels (and their comparison), then Testing Techniques (and
their comparison). For each Testing Levels and Testing Techniques,
examples of some testing types and their pros and cons were given with a
brief explanation of some of the important testing types. Furthermore, a
clear and distinguishable explanation of two confused and contradictory
terms (Verification and Validation) and how they relate to Software
Quality was provided.