We normally follow two approaches in software testing:
1) Static Testing : This is the first kind of software testing and is done to verify the conformance of software system to its specification without executing the code. This is mainly used to test the document related to software testing like “People go through the source code or with certain debugger to find out the syntax error”. Along with this static testing is used to find the missing parts of a specification.
Review, Inspection and Walk-through is the example of Static testing.
2) Dynamic Testing: This kind of testing is used to test the dynamic behavior of Software system. In this we play with the source code and try to execute the source code to see the actual behavior of the software system.
Functional Testing and Structural testing are the examples of Dynamic Testing.