7 Principles of Testing

ISTQB Foundation Level: Chapter 1 - Testing Principles

An overview of the basic notions that govern the field of software testing according to ISTQB's standards.

Principle 1: Testing Shows Presence of Defects

Testing can reveal faults, but cannot prove that the software is error-free.

Early Testing

Implement testing from the early stages of software development.

Exhaustive Testing Is Impossible

Testing all possible data combinations is impractical.

Defect Clustering

Bugs tend to be concentrated in small areas of the application.

Pesticide Paradox

The same tests repeated over time will no longer find new defects.

Principle 2: Exhaustive Testing Is Not Possible

It is neither feasible nor cost-effective to test everything.

Risk-Based Testing

Prioritize testing based on risk assessment of the software components.

Test Coverage

Determine which parts of the application have been tested by a set of tests.

Prioritization of Test Cases

Order test cases by their importance and likelihood to catch bugs.

Use of Test Techniques

Adopt techniques such as equivalence partitioning or boundary value analysis to optimize test cases.

Principle 3: Early Testing

Testing should start as early as possible in the software development lifecycle.

Shift-Left Approach

Incorporating testing activities early in the development phases (shift-left).

Continuous Testing

Integrating testing into the continuous integration/deployment pipeline.

Role of Reviews

Using reviews to assess quality even before testing begins.

Principle 4: Defect Clustering

Bugs are often found in groups rather than evenly distributed.

Pareto Principle

Applying the 80/20 rule, where 80% of issues come from 20% of the modules.

Focus on High-Risk Areas

Concentrating testing on modules with the highest risk of failure.

Historical Data

Analyzing defects from the past to predict defect hotspots.

Principle 5: Pesticide Paradox

Regularly revising tests is necessary to find new bugs.

Test Case Variation

Altering test cases to uncover different defects.

Test Case Review and Maintenance

Periodically reviewing and updating test cases to maintain effectiveness.

Exploratory Testing

Employing unplanned testing to discover previously undetected defects.

Principle 6: Testing Is Context Dependent

Testing approaches vary based on context, such as type of system or regulatory compliance.

Application Type

Adapting testing to the specific type of application, e.g., web, mobile, embedded.

Regulatory Standards

Meeting industry-specific regulatory standards through testing.

User Expectations

Considering user needs and expectations in defining test scenarios.

Principle 7: Absence-of-Errors Fallacy

Finding and fixing defects does not necessarily mean the software is ready to be shipped.

User Satisfaction

Ensuring that the product meets user requirements and not only testing for defect removal.

Delivering Value

Focusing on delivering a product that provides value to the customer.

Fit for Purpose

Testing the software against its intended purpose and use.

ISTQB Foundation Level Syllabus

Understanding the fundamental concepts in software testing methodologies as described by ISTQB.

Software Testing Fundamentals

Key principles and terminology within the testing domain.

Why is Testing Necessary?

Validation of software against user needs and defect detection to ensure product quality.

Testing Principles

The core ideas that guide effective and efficient testing practices.

Fundamental Test Process

The basic steps of planning, preparation, execution, and closure in testing.

Psychology of Testing

Understanding tester and developer mindsets to improve test results.

Testing Throughout the Software Life Cycle

How testing interacts with different stages of software development.

Software Development Models

An overview of models like Waterfall, V-model, Agile, and how testing fits in.

Test Levels

Different stages of testing: unit, integration, system, acceptance.

Test Types

Various focuses of testing, such as functional, non-functional, and maintenance.

Maintenance Testing

Testing changes to an operational system or the impact of a changed environment.

Static Testing Techniques

Testing that doesn't involve executing the software.

Static Testing Basics

The definitions and goals of static testing in the software lifecycle.

Review Process

Understanding different types of reviews and their objectives.

Static Analysis by Tools

Using automated tools to perform static analysis to detect potential flaws.

Dynamic Testing Techniques

Testing that involves executing the code.

Test Identification

Creating test cases and using techniques to validate software functions.

Black Box Techniques

Testing without knowledge of the internal structure of the component or system.

White Box Techniques

Testing based on an analysis of the internal structure of the component or system.

Experience-Based Techniques

Techniques based on the tester's experience, error guessing, and exploratory testing.

Test Management

The organization and control of the testing process.

Test Organization

Understanding roles, responsibilities, and the landscape of test organization.

Test Planning and Estimation

The processes involved in planning tests and estimating their effort and resources.

Test Monitoring and Control

Activities to supervise and manage test activities against planned objectives.

Configuration Management

Keeping track of the status of software and documentation through life cycle.

Risk and Testing

Identifying and managing risks that can impact the testing process.

Tool Support for Testing

Application of software tools in testing processes.

Types of Test Tools

Describing different categories of tools used in software testing.

Effective Use of Tools

Considering potential benefits and risks associated with tool usage.

Introducing a Tool into an Organization

Understanding the process for deciding and implementing a test tool.