Static code analysis is a general term for many different techniques. There are analyses of program syntax, semantics, control and data flow. These analyses can help you pinpoint problems that aren't easy to do with manual testing because they are able to generate scenarios than you could do by hand. They can also be used to identify portions of code that are potential bottlenecks or error prone. Overflow, underflow, rounding errors, and array bounds checking are all items that you may not face in tests, but become immediately evident when real usage begins.