Introduction: Terminology, evolving nature of area, Errors, Faults and Failures, Correctness and reliability, Testing and debugging, Static and dynamic testing, Exhaustive testing: Theoretical foundations: impracticality of testing all data, impracticality of testing all paths, no absolute proof of correctness.


Software V & V Approaches and their Applicability: Software technical reviews; Software testing: levels of testing - module, integration, system, regression; Testing techniques and their applicability-functional testing and analysis, structural testing and analysis, error-oriented testing and analysis, hybrid approaches, integration strategies, transaction flow analysis, stress analysis, failure analysis, concurrency analysis, performance analysis; Proof of correctness; simulation and prototyping; Requirement tracing.


Test Generation: Test generations from requirements, Test generation pats, Data flow analysis, Finite State Machines models for flow analysis, Regular expressions based testing, Test Selection, Minimizations and Prioritization, Regression Testing.


Program Mutation Testing: Introduction, Mutation and mutants, Mutation operators, Equivalent mutants, Fault detection using mutants, Types of mutants, Mutation operators for C and Java.

Laboratory Work: Development and implementation of various testing techniques such as cyclomatic complexity, Helstead software equation, branch and statement coverage, etc., and hands on various testing tools like Rational TestRobo, WinRunner, Silk Suite, etc.

Recommended Books

1.      Boris Beizer, Software Testing Techniques, John Wiley & Dreamtech (2002).

2.      William Perry, Effective Methods for Software Testing, John Wiley & Sons, Inc. (2006) 3rd ed.

3.      Aditya P. Mathur, Foundations of Software Testing, Pearson Education (2008).

4.      Glenford J. Myers, The Art of Software Testing, Wiley India Pvt. Ltd 2nd edition (2006) 2nd  ed.