The fundamentals of software testing.
Why do we test? What is a bug? What are the 7 principles of testing and the fundamental process? The solid foundations on which to build a quality approach.
In 5 minutes, understand what software testing is, the 7 ISTQB principles and the main levels of testing.
00 - Summary
1. What is testing?
2. The 7 principles of testing (ISTQB)
3. The fundamental process of software testing
4. Levels and types
5. The human aspect testing
6. Key points to remember
01 - Definitions
What is testing?
Software testing
A set of activities aimed at evaluating a product or service and determining whether it meets specified requirements. Testing detects defects, provides information on quality, and reduces the risk of production failure.
Test objectives
-
Detecting defects before production
-
Gaining trust in the quality of the software
-
Provide information for decision-making (go/no-go)
-
Preventing defects through reviews and early reflection
-
Verify compliance with regulatory requirements
Defect, error and failure
Human error introduces a defect (bug) in the code. If this defect is executed under certain conditions, it causes an observable failure. Testing aims to uncover defects before they become failures.
Quality and QA vs QC
Quality Assurance (QA) refers to all the activities that ensure processes are suitable for producing a quality product. Quality Control (QC) includes testing and verifying the final product. Testing is therefore a component of QC, which itself serves QA.
02 - The 7 principles
The 7 principles of software tesitng (ISTQB).
These principles guide any testing strategy. Understanding them helps avoid common pitfalls and justify choices to teams and management.
01
Testing reveals the presence of defects
Testing proves that software contains bugs, never that it doesn't. A flawless test doesn't guarantee perfection.
02
Exhaustive testing is impossible
We cannot test all combinations. Testing focuses on risk analysis and business priorities.
03
Early testing saves money
Detecting a defect early reduces the cost of correcting it. Reviews and tests from the specification stage onward pay more than final tests.
Defects cluster together
A small number of modules hold the majority of bugs (Pareto principle). Focusing efforts on these areas is more effective.
05
The pesticide paradox
Repeating the same tests eventually leads to a lack of new defects. It is necessary to regularly review and diversify the test cases.
06
Testing depends on the context
Critical medical software is not tested like an internal application. The techniques, tools, and rigor are adapted to the context.
07
The absence of error is an illusion
The idea is that successful tests do not prove the absence of defects; they only show that, under the tested conditions, no problems were observed.
03 - The process
The fundamental process of software testing.
A structured process ensures that the test is planned, documented, and repeatable. Each step produces verifiable deliverables.
Planning
Define the scope, resources, schedule, and exit criteria of the test.
Analysis
Identify the elements to be tested, the risks, the test conditions and the necessary data.
Conception
Write test cases, procedures and data sets. Prepare the environment.
Implementation
Execute test cases, log results, report and analyze anomalies.
Report & Conclusion
Evaluate the exit criteria, write the test report and archive the deliverables.
Functional
They check what the system does (black box): tests based on requirements, user scenarios, business processes.
Non-functional
They check how the system does it: performance, security, ease of use, compatibility, reliability.
Structural
They check the internal structure (white box): code coverage, branches, conditions, control flow.
Regression
They verify that a modification has not introduced new defects in previously validated features.
Common types of tests
The 4 levels of testing
04 - Levels & types
Levels and types of tests.
Unit testing
Checks an isolated unit of code (function, method). Fast, repeatable, often automated by developers.
Integration testing
Checks interactions between components or systems. Detects interface and data flow problems.
System testing
Verifies the complete system in its target environment. Validates functional and non-functional requirements.
Acceptance testing
Validates that the system meets business needs. Performed by users or the client (UAT, alpha, beta).
05 - Psychology
The human aspect of testing.
The tester is not the developer's adversary. Their role is to provide objective information to improve the product.
Test independence
The more independent the tester is from the development team, the more likely they are to detect defects with an external perspective. However, complete independence can disconnect the test from the business context.
Constructive communication
A well-written bug report doesn't criticize the person but describes the problem factually. A neutral tone and reproducibility help maintain collaboration between testers and developers.
Curiosity and skepticism
A good tester is curious: they ask "what if?" at every stage. They are a professional skeptic: they don't believe it works, they want to verify it.
06 - Key points
In short:
-
Testing helps to reveal flaws, not to prove that a software is perfect.
-
We can't test everything; we have to prioritize according to the risks.
-
Early testing improves quality and reduces costs.
-
A good testing approach combines methodology, appropriate test types, and clear communication.