ISTQB 3: Exploring Static Testing, Dynamic Testing, Verification, and Validation

Home/Articles, ISTQB/ISTQB 3: Exploring Static Testing, Dynamic Testing, Verification, and Validation

Testing is a critical part of software development, ensuring that products meet expectations and work as intended. According to ISTQB (International Software Testing Qualifications Board), testing involves various approaches and concepts, including static testing, dynamic testing, verification, and validation. Let’s break these down into simple terms with examples.

Definition of Testing

Testing is the process of evaluating a system or its components to identify whether it meets specified requirements. It involves executing a program to find defects and assess its quality.

For example, a team tests an e-commerce website by placing orders, verifying payment functionality, and checking for errors in discounts or shipping calculations.

What Is Static Testing?

Static testing involves examining the software or documentation without executing the code. It focuses on identifying defects in design, documentation, or code through reviews, walkthroughs, or static analysis tools.

For example, a peer review of a software requirement specification document might reveal missing details about discount calculations. Similarly, a developer could use a static analysis tool to check for syntax errors in the code before running it.

What Is Dynamic Testing?

Dynamic testing involves executing the code to validate its behavior. It checks how the software works in real time and identifies defects that occur during execution.

For instance, testers might run a shopping cart feature on an e-commerce site to ensure items are correctly added, prices are calculated accurately, and the checkout process works as expected.

Verification vs. Validation

These two terms are often used together but represent different aspects of quality assurance.

What Is Verification?

Verification ensures that the product is being built correctly. It focuses on whether the software design and processes meet specified requirements and standards.

For example, reviewing a design document can ensure it includes all features outlined in the project requirements. Similarly, checking if the database schema follows organizational standards before implementation is a verification activity.

What Is Validation?

Validation ensures that the right product is being built. It checks if the software meets the user’s needs and expectations.

For instance, conducting user acceptance testing (UAT) allows customers to test the software and confirm it solves their problems. Additionally, testing the user interface ensures it is intuitive and meets usability standards.

Key Differences Between Static and Dynamic Testing

Static testing does not involve code execution. It focuses on identifying issues in design or documentation through techniques like code reviews or walkthroughs. For example, a team might review a technical document to ensure completeness and accuracy before coding begins. On the other hand, dynamic testing involves executing the code to observe its behavior in real time. For instance, testers might execute test cases on a login feature to ensure it accepts valid credentials and blocks invalid ones.

Key Differences Between Verification and Validation

Verification ensures the product is built correctly according to specifications and standards. For example, a team might check whether a requirements document aligns with client expectations before development starts. Validation, however, ensures the right product is being built to meet user needs. For instance, during validation, customers may test a prototype to confirm that it addresses their problems effectively.

Testing is a broad field encompassing static and dynamic approaches, as well as verification and validation. By understanding and applying these methods, teams can ensure software quality at every stage of development. Whether you’re reviewing documents, running code, or testing with users, each activity plays a vital role in delivering reliable and effective software.

Photo by Kevin Ku on Unsplash