Static Testing and Dynamic Testing are two approaches used to evaluate software quality. Static testing examines software work products without running the software, whereas dynamic testing evaluates an executable system by observing its behavior during execution.
- Static testing can identify issues before software execution.
- Dynamic testing reveals issues that appear when the software runs.
- Together, they provide complementary ways to evaluate software quality.

Static Testing
Static Testing is the process of evaluating software without executing the code. It focuses on reviewing documents, code, and design to find defects early.
- Done without running the program
- Includes reviews, inspections, and walkthroughs
- Detects defects early during requirements, design, and coding phases.
Example: Reviewing source code to identify incorrect logic or coding issues before running the application.
Dynamic Testing
Dynamic Testing is a software testing technique in which the application is executed to evaluate its behavior, functionality, and performance. It involves validating the actual output against expected results and helps identify defects during runtime.
- Involves actual execution of the software using Black Box, White Box, or Gray Box testing techniques.
- Helps identify runtime errors, functional defects, integration issues, and non-functional issues such as performance, security, and usability problems.
- Ensures the software meets both functional and non-functional requirements.
Example: Entering valid and invalid credentials on a login page and checking whether the application responds as expected.
Static Testing Vs Dynamic Testing
| Parameter | Static Testing | Dynamic Testing |
|---|---|---|
| Definition | Examines software work products without executing the software. | Evaluates software by executing it and observing its behavior. |
| Primary Purpose | Find defects in requirements, designs, documentation, and code before or without execution. | Find failures and defects that become observable during execution. |
| When Performed | Can begin from the requirements and design stages and continue during development. | Begins when an executable component or application is available. |
| Execution | Software execution is not required. | Software execution is required. |
| Techniques | Reviews, walkthroughs, inspections, and static analysis. | Black-box, white-box, gray-box, functional, and non-functional testing techniques. |
| Issues Identified | Requirement gaps, design issues, documentation errors, and coding issues detectable without execution. | Functional failures, runtime errors, integration issues, and non-functional problems observable during execution. |
| Resources | Primarily uses software artifacts and may use review or static analysis tools. | May require test environments, test data, and test execution tools. |
| Verification / Validation | Commonly associated with verification activities. | Commonly associated with validation activities. |
| Example | Reviewing source code for defects. | Executing a login test and checking the result. |