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.