The importance of software testing and its implications with respect to software quality cannot be overemphasized.
The development of software systems involves a series of production activities where opportunities for injection of human fallibilities are enormous. Erros may begin to occur at the very inception of the process where the objectives... may be erroneously or imperfectly specified, as well as [in] later design and development stages . . . Because of human inability to perform and communicate with perfection, software development is accompanied by a quality assurance activity.
Software testing is a critical element of software quality assurance and represents the ultimate review of specification, design, and code generation.
The increasing visibility of software as a system element and the attendant “costs” associated with a software failure are motivating forces for well-planned, thorough testing. It is not unusual for a software development organization to expend between 30 and 40 percent of total project effort on testing. In the extreme, testing of human-rated software (e.g., flight control, nuclear reactor monitoring) can cost three to five times as much as all other software engineering steps combined!
What is it?
Once source code has been generated, software must be tested to uncover (and correct) as many errors as possible before delivery to your customer. Your goal is to design a series of test cases that have a high likelihood of finding errors-but how?
That’s where software testing techniques enter the picture. These techniques provide systematic guidance for designing tests that
1) exercise the internal logic of software components, and
(2) exercise the input and output domains of the program to uncover errors in program function, behavior, and performance.
Who does it?
During early stages of testing, a software engineer performs all tests. However, as the testing progresses, testing specialists may become involved.
Why is it important?
Reviews and other SQA activities can and do uncover errors, but they are not sufficient. Every time the program is executed, the customer tests it! Therefore, you have to execute the program before it gets to the customer with the specific intent of finding and removing all errors. In order to find the highest possible number of erros, tests must be conducted systematically and test cases must be designed using disciplined techniques.
What are the steps?
Software is tested from two different perspectives: (1) internal program logic is exercised using “white box” test case design techniques. Software requirements are exercised using “black box” test case design techniques .In both cases, the intent is to find the maximum number of errors with the minimum amount of effort and time.
What is the work product?
A set of test cases designed to exercise both internal logic and external requirements is designed and documented, expected restarts are defined, and actual results are recorded.
How do I ensure that I’ve done it right?
When you begin testing, change your point of view. Try hard to “break” the software! Design test cases in a disciplined fashion and review the test cases you do create for thoroughness.
ERROR CHECK LIST FOR INSPECTIONS
WALK THROUGHS IN TESTING
TESTING FOR SPECIALIZED ENVIRONMENTS PART ONE
TESTING FOR SPECIALIZED ENVIRONMENTS PART TWO
DEBUGGING AND TESTING
DEFECT AMPLIFICATION AND REMOVAL
ITERATIVE SPIRAL MODEL
STANDARD WATER MODEL
CONTROLLED TESTING ENVIRONMENT
RISK ANALYSIS PART ONE
RISK ANALYSIS PART TWO
BACK GROUND ISSUES
SOFTWARE REVIEWS PART ONE
SOFTWARE REVIEWS PART TWO
V MODEL IN TESTING