An important aspect of the software process is the validation and verification of software. Undoubtely, the most widely used verification method in practice is software testing. However, proper software testing is expensive and labour intensive. One of the reasons for this is that it is often necessary, but difficult, to test specific (parts of) runtime behaviour and to mimic other specific (parts of) runtime behaviour of the software. In this thesis an alternative method of testing, called static testing, is proposed. Static testing is the verification of software using testing, but without the execution of the software by incorporating techniques from the field of static verification, such as the weakest pre-condition calculus. Instead of obtaining the runtime behaviour through execution it is obtained through the weakest pre-condition calculus. Since the specific (parts of) the runtime behaviour under test are represented in a boolean condition, it is easier to manage and test them. This thesis explores the basic principles and design of this approach and should be useful to anyone interested in software verification.