What is Testing?
Definition, objectives, key concepts, techniques, test types and levels, plus the 7 testing principles according to ISTQB.
Based on the ISTQB Syllabus v4.0.1
In software development, testing is a set of activities that seek to verify and validate that an application meets its requirements and works correctly, helping to prevent defects and minimize risks.
Objectives
- Evaluate requirements, user stories, designs and code.
- Trigger failures and find defects.
- Ensure the necessary coverage of the test object.
- Reduce risks and costs associated with production failures.
- Verify that specified, contractual, legal and regulatory requirements are met.
- Provide information to stakeholders so they can make informed decisions.
- Build confidence in the quality of the test object.
- Validate that the test object is complete and works as stakeholders expect.
Key concepts
Defect (Bug)
An imperfection in a system that can cause failures. E.g.: a code error produces unexpected behavior.
Failure
An event in which a system does not perform a required function. E.g.: with certain data, the system stops working.
Error
A human action that produces an incorrect result. E.g.: misinterpreting a requirement and coding the wrong condition.
Test plan
A document describing the scope, approach, resources and schedule of the planned test activities.
Test coverage
Percentage of the product that has been tested. It does NOT guarantee quality: it shows WHAT was tested, not HOW WELL.
Test case
A set of conditions designed to verify the system.
Test techniques
Black box
Specification-based, without knowing the code. Focused on inputs and outputs. E.g.: testing login with valid and invalid credentials.
White box
Based on internal structure, logic and code flow. E.g.: testing all branches of a conditional (if/else).
Experience-based
Rely on the tester’s knowledge and experience. E.g.: exploring an app without predefined cases, looking for failures.
Functional
Evaluate whether the system meets functional requirements. E.g.: verifying the cart total updates when adding products.
Non-functional
Evaluate how the system behaves: performance, security, usability. E.g.: measuring response time with 1,000 concurrent users.
Test types
Smoke testing
An initial set of tests to verify that the system’s critical functions work correctly.
Sanity testing
A quick, focused check ensuring a specific function or a fixed defect works as expected.
Regression testing
Confirm that changes have not introduced new defects in other areas of the software.
Exploratory testing
The tester designs, executes and learns about the system simultaneously, adapting tests as they discover.
Performance testing
Evaluate response time and system stability under a defined load.
Stress testing
Analyze system behavior beyond its normal limits, up to the point of failure.
Test levels (by SDLC)
Unit
Test individual components in isolation, usually by developers. E.g.: verifying a function calculates an order total.
Integration
Evaluate interfaces and interaction between modules or systems. E.g.: checking the payments module connects to PayPal.
System
Validate the complete, integrated system against requirements. E.g.: testing an e-commerce: search, cart, payment and confirmation.
Acceptance
Confirm the system meets business criteria and user needs.
The 7 testing principles
- Testing shows the presence of defects, not their absence.
- Exhaustive testing is impossible: use techniques, prioritization and risk-based testing.
- Early detection is cheaper: finding defects early reduces cost and time.
- Defects tend to cluster: a few modules usually contain most of them.
- Tests wear out: repeating the same tests makes them less effective over time.
- Testing is context-dependent: it must adapt to the project and its goals.
- Absence-of-errors fallacy: defect-free software is not successful if it does not satisfy the user.
Save or share this content
Download it as PDF or Markdown to save or share it.
