Static testing is a type of software testing methodology that focuses on finding defects in the software system without executing the application or running the system. It is a type of testing performed in the early stages of software development to avoid failures as defects can be easily found using static testing techniques and are much cheaper and easier to fix at this stage of the software development lifecycle. Static testing employs 2 major techniques detailed as follows:  Reviews - involves reviews of requirements, design, and code and can be done using  Informal discussions  Walkthrough of documentation  Peer Review of documentation/code  Inspection  Static Analysis - involves tool-based evaluation of code written by engineers  Data flow  Control flow  Cyclomatic complexity