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.