Static testing is reviewing the program code without executing it. Its focus is mostly the following:
- Code maintainability, ie making code more readable by humans;
- Finding out typos and other silly mistakes in code (like typos in variable names, off-by-one errors, etc);
- Reviewing algorithms used by programmer.
While static testing only is insufficient, it is a great technique to prevent bugs early in development cycle.