Static testing is a form of software testing where the software isn't
actually used. This is in contrast to Dynamic testing. It is generally not
detailed testing, but checks mainly for the sanity of the code, algorithm, or
document. It is primarily syntax checking of the code or and manually reading of
the code or document to find errors. This type of testing can be used by the
developer who wrote the code, in isolation. Code reviews, inspections and
walkthroughs are also used.
From the black box testing point of view, static testing involves review of
requirements or specifications. This is done with an eye toward completeness or
appropriateness for the task at hand. This is the verification portion of
Verification and Validation.
Bugs discovered at this stage of development are less expensive to fix than
later in the development cycle.