Fundamentals of Testing
Why is testing necessary?
Software systems context - Causes of software defects - Role of testing in software development, maintenance and operations - Testing and quality - How much testing is enough?

What is testing?
General testing principles
Fundamental test process
Test planning and control - Test analysis and design - Test implementation and execution Evaluating exit criteria and reporting - Test closure activities

The psychology of testing
Testing throughout the software life cycle
Software development models
V-model (sequential development model) - Iterative-incremental development models Testing within a life cycle model

Test levels:
Component testing - Integration testing - System testing - Acceptance testing

Test Types
Testing of function (functional testing) - Testing of non-functional software - characteristics (non-functional testing) - Testing of software structure/architecture (structural testing) -Testing related to changes (confirmation testing (retesting) and regression testing.

Maintenance Testing:
Static techniques:
Static techniques and the test process:
Review Process:
Phases of a formal review - Roles and responsibilities - Types of review - Success factors for reviews - Static analysis by tools

Test design techniques
The Test development process
Categories of test design techniques
Specification-based or black-box techniques
Equivalence partitioning - Boundary value analysis - Decision table testing.- State transition testing - Use case testing

Structure-based or white-box techniques
Statement testing and coverage - Decision testing and coverage - Other structure-based techniques.

Experience-based techniques
Choosing test techniques
Test Management
Test organization - Test organization and independence - Tasks of the test leader and tester

Test planning and estimation
Test planning - Test planning activities - Exit criteria - Test estimation - Test approaches (test strategies)

Test progress monitoring and control
Test progress monitoring - Test Reporting - Test control

Incident management
Tool support for testing

Types of Test Tool
Test tool classification - Tool support for management of testing and tests - Tool support for static testing - Tool support for test specification - Tool support for test execution and logging - Tool support for performance and monitoring - Tool support for specific application areas - Tool support using other tools

Effective use of tools: potential benefits and risks
Potential benefits and risks of tool support for testing (for all tools) - Special considerations for some types of tool

Introducing a tool into an organization.
Software Engineering:
Software Engineering Basics - Role of a Tester in Software Engineering

Software Development life cycle – SDLC
Traditional Water Fall Model – V Model - Iterative - Incremental Development Models

Software Testing Fundamentals
Why is Testing Necessary? - Causes of Software Defects - Testing and Quality

Principles of Software Testing
Purpose of Software Testing - Testing Concepts

Software Testing Life Cycle
Requirements Gathering - Test Scenarios - Test Cases - Test scripts / Procedures - Strategies for Software Testing - Black Box Testing

Levels of Testing
Unit (Module) Testing - Module Integration Testing - Build Acceptance (Smoke) Testing System Testing - Regression Testing

Types of Software Testing
Functional Testing - Non Functional Testing - GUI Testing - Testing Related to Change

Block Box Testing Techniques
Equivalence Partitioning - Boundary Value Analysis

Test Case Design
Elements of Test Cases - Test Case Template - Sample Test Cases

Defect Tracking
Defect Life cycle - Defect Tracking - Elements of Defect Report - Sample Defect Report

Software Test Plan
Why Plan - Developing a Test Strategy - Test Documentation - Components of a Test Plan - A Test Plan Template

Testing Deliverables
Multiple Roles of Software Tester
Software Testing Glossary.