Testing is a process that occurs throughout the software development lifecycle to evaluate products and determine that requirements are met. It includes both static testing such as document review and dynamic testing by executing code. The goals of testing are to determine if products satisfy requirements, demonstrate they are fit for purpose, and detect defects. Both static and dynamic testing methods are used to thoroughly test products, requirements, designs, code and related documents. Finding defects through testing improves product quality and provides feedback to strengthen development processes.