Basics of Software Testing and Examples:
Basic definitions, Test cases, Insights from a Venn diagram, Identifying test cases, Error and fault taxonomies, Levels of testing. Examples: Generalized pseudocode, The triangle problem, The NextDate function, The commission problem, The SATM (Simple Automatic Teller Machine) problem.
Decision Table-Based Testing:
Decision tables, Test cases for the triangle problem, Test cases for the NextDate function, Test cases for the commission problem, Guidelines and observations.
Data Flow Testing:
Definition-Use testing, Slice-based testing, Guidelines and observations.
Levels of Testing:
Traditional view of testing levels, Alternative lifecycle models, The SATM system, Separating integration and system testing.
Integration Testing:
A closer look at the SATM system, Decomposition-based, call graph-based, Pathbased integrations, Case study.
System Testing:
Threads, Basic concepts for requirements specification, Finding threads, Structural strategies and functional strategies for thread testing, SATM test threads, System testing guidelines, ASF (Atomic System Functions) testing example.
Interaction Testing:
Context of interaction, A taxonomy of interactions, Interaction, composition, and determinism, Client/Server Testing,.
Issues in Object-Oriented Testing:
Units for objectoriented testing, Implications of composition and encapsulation, inheritance, and polymorphism, Levels of object-oriented testing, GUI testing, Dataflow testing for objectoriented software, Examples.
Class Testing:
Methods as units, Classes as units
Object-Oriented Integration Testing:
UML support for integration testing, MM-paths for object-oriented software, A framework for object-oriented dataflow integration testing.
GUI Testing:
The currency conversion program, Unit testing, Integration Testing and System testing for the currency conversion program.
Object-Oriented System Testing:
Currency converter UML description, UML-based system testing, Statechart-based system testing.
Exploratory Testing:
The context-driven school, Exploring exploratory testing, Exploring a familiar example, Exploratory and context-driven testing observations.
Testing:
Testing based on models, Appropriate models, Use case-based testing, Commercial tool support for model-based testing. Test-Driven Development: Test-thencode cycles, Automated test execution, Java and JUnit example, Remaining questions, Pros, cons, and open questions of TDD, Retrospective on MDD versus TDD.